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