发送短信时如何获取信息?

时间:2019-04-23 13:45:45

标签: c# xamarin.android broadcastreceiver sms

我希望在用户接收/发送SMS时获得此信息。为此,我创建了一个SmsWatcher类。

using AeroMobile.Utility.Helper;
using Android.App;
using Android.Content;
using Android.Provider;

[BroadcastReceiver]
[IntentFilter(new[] { "android.provider.Telephony.SMS_RECEIVED", "android.intent.action.SENDTO", "android.provider.Telephony.SMS_DELIVER" }, Priority = (int)IntentFilterPriority.HighPriority)]
public class SmsWatcher : BroadcastReceiver
{

public override async void OnReceive(Context context, Intent intent)
{
    if (intent.Action != null)
    {
        if (intent.Action.Equals(Telephony.Sms.Intents.SmsReceivedAction))
        {
            var msgs = Telephony.Sms.Intents.GetMessagesFromIntent(intent);
            foreach (var msg in msgs)
            {
                //incoming message
            }
        }
        if (intent.Action.Equals(Telephony.Sms.Intents.SmsDeliverAction))
        {
            var msgs = Telephony.Sms.Intents.GetMessagesFromIntent(intent);
            foreach (var msg in msgs)
            {
                //outgoing message
            }
        }
    }
}

}

然后我在MainActivity中注册此广播服务,如下所示:

    //starting SMS watcher service
    var smsWatcherIntent = new Intent(ApplicationContext, typeof(SmsWatcher));
    SendBroadcast(smsWatcherIntent);

以上代码完全适用于传入消息,但不适用于传出消息。当用户发送SMS时,您能帮我获取信息吗,例如我收到的传入消息的信息?

1 个答案:

答案 0 :(得分:1)

根据this answer的灵感

setup.cfg中读取传出消息似乎并不容易。因此,读取SMS的最佳方法是通过Cursor从Android数据库中获取。

下面是BroadcastReceiver的代码段:

Xamarin.Android