Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用Xamarin跟踪新的SMS消息_Android_Xamarin - Fatal编程技术网

Android 使用Xamarin跟踪新的SMS消息

Android 使用Xamarin跟踪新的SMS消息,android,xamarin,Android,Xamarin,我正在尝试用Xamarin在Android上处理新的短信。 我用的是真实的设备,不是虚拟的。 我的经纪人是: public class SmsBroadcastReceiver : BroadcastReceiver { ... } 我通过以下方式在主活动中以编程方式注册receiver: RegisterReceiver(new SmsBroadcastReceiver(), new IntentFilter("android.provider.Telephony.SMS_RECEIVED"

我正在尝试用Xamarin在Android上处理新的短信。 我用的是真实的设备,不是虚拟的。 我的经纪人是:

public class SmsBroadcastReceiver : BroadcastReceiver
{
...
}
我通过以下方式在主活动中以编程方式注册receiver:

RegisterReceiver(new SmsBroadcastReceiver(), new IntentFilter("android.provider.Telephony.SMS_RECEIVED"));
在我的代码中,我将优先权添加到intent 10k+上,在没有此功能的情况下尝试。我也尝试过通过配置注册。 听筒没响。 但如果我注册了耳机插头事件,它将毫无问题地启动。 权限是:

<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
你能试一下吗

[BroadcastReceiver]
[Android.App.IntentFilter(new []{ SMS_RECEIVER })]

public class SmsBroadcastReceiver : BroadcastReceiver
{
    private const string SMS_RECEIVER = "android.provider.Telephony.SMS_RECEIVED";
    ...
}

顺便说一句,我还没有测试过,但我相信它会起作用的。请告诉我进展情况:

试试这个应该可以:

[BroadcastReceiver(Enabled = true, Label = "SMS Receiver")]
[IntentFilter(new[] { "android.provider.Telephony.SMS_RECEIVED" })] 
public class SMSBroadcastReceiver : BroadcastReceiver
{

    private const string Tag = "SMSBroadcastReceiver";
    private const string IntentAction = "android.provider.Telephony.SMS_RECEIVED"; 

    public override void OnReceive(Context context, Intent intent)
    {
        Log.Info(Tag, "Intent received: " + intent.Action);

        if (intent.Action != IntentAction) return;

        SmsMessage[] messages=Telephony.Sms.Intents.GetMessagesFromIntent (intent);

        var sb = new StringBuilder();

        for (var i = 0; i < messages.Length; i++)
        {

            sb.Append(string.Format("SMS From: {0}{1}Body: {2}{1}", messages[i].OriginatingAddress,
                Environment.NewLine,messages[i].MessageBody));
        }

    }
}