c# - WakefulBroadcastReceiver Xamarin 不起作用
问题描述
我写了一个程序,当收到短信时它会响铃。但它只有在程序运行时才有效,当程序关闭时它不起作用。
我应该怎么办?
public class MainActivity : Activity
{
SampleReceiver receiver;
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.Main);
receiver = new SampleReceiver();
IntentFilter intentFilter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED");
intentFilter.Priority = 1000;
RegisterReceiver(receiver, intentFilter);
// Code omitted for clarity
}
}
[BroadcastReceiver(Enabled = true, Exported = true)]
public class SampleReceiver : WakefulBroadcastReceiver
{
private const string IntentAction = "android.provider.Telephony.SMS_RECEIVED";
public override void OnReceive(Context context, Intent intent)
{
try
{
Android.Net.Uri uri = RingtoneManager.GetDefaultUri(RingtoneType.Ringtone);
Ringtone ringtone = RingtoneManager.GetRingtone(context, uri);
ringtone.Play();
if (intent.HasExtra("pdus"))
{
var smsArray = (Java.Lang.Object[])intent.Extras.Get("pdus");
foreach (var item in smsArray)
{
var sms = SmsMessage.CreateFromPdu((byte[])item);
string address = sms.OriginatingAddress;
string smsText = sms.MessageBody;
Toast.MakeText(context, "Massage from : " + address + " Says : " + smsText, ToastLength.Long).Show();
}
}
}
catch (System.Exception ex)
{
//Toast.MakeText(context, ex.Message, ToastLength.Long).Show();
}
}
}
肿瘤坏死因子
解决方案
推荐阅读
- amazon-dynamodb - 使用相同的 DynamoDB 属性作为 HASH 和 RANGE 键
- php - 两个面板之间的php会话问题
- javascript - Leaflet map not updating view
- javascript - Promise.All 用于图像列表
- facebook-graph-api - facebook 图形 api 页面 发布消息
- html - 在表单中按 Enter 未按预期提交
- android - RecyclerView OnItemClick 根据查询的来源打开不同的活动
- java - 如何确保 switch/case 语句具有使用枚举等所有选项?
- html - 为什么我的响应式网站在移动设备上放大了?
- scala - Scala类型不匹配的除法