当我的应用程序成功发送sms时,我正在尝试接收通知。我使用BroadcastReceiver作为通知。我在onResume()注册,在onPause()中取消注册.但它不通知,即使短信是发送出去。我在BroadcastReceiver循环中设置了断点,没有任何通知。有什么问题吗?我的代码如下。
@Override
public void onResume() {
super.onResume();
//---create the BroadcastReceiver when the SMS is sent---
smsSentReceiver = new BroadcastReceiver(){
@Override
public void onReceive(Context arg0, Intent arg1) {
switch (getResultCode())
{
case Activity.RESULT_OK:
Toast.makeText(getBaseContext(), "SMS sent",
Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
Toast.makeText(getBaseContext(), "Generic failure",
Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_NO_SERVICE:
Toast.makeText(getBaseContext(), "No service",
Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_NULL_PDU:
Toast.makeText(getBaseContext(), "Null PDU",
Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_RADIO_OFF:
Toast.makeText(getBaseContext(), "Radio off",
Toast.LENGTH_SHORT).show();
break;
}
}
};
//---create the BroadcastReceiver when the SMS is delivered---
smsDeliveredReceiver = new BroadcastReceiver(){
@Override
public void onReceive(Context arg0, Intent arg1) {
switch (getResultCode())
{
case Activity.RESULT_OK:
Toast.makeText(getBaseContext(), "SMS delivered",
Toast.LENGTH_SHORT).show();
break;
case Activity.RESULT_CANCELED:
Toast.makeText(getBaseContext(), "SMS not delivered",
Toast.LENGTH_SHORT).show();
break;
}
}
};
//---register the two BroadcastReceivers---
registerReceiver(smsSentReceiver, new IntentFilter(SENT));
registerReceiver(smsDeliveredReceiver, new IntentFilter(DELIVERED));
}
@Override
public void onPause() {
super.onPause();
//---unregister the two BroadcastReceivers---
unregisterReceiver(smsSentReceiver);
unregisterReceiver(smsDeliveredReceiver);
}发布于 2013-03-30 14:47:13
我不确定你的用例。这些文档表明,您在onPause中注销了接收方,但是当应用程序处于后台时,如果它被发送,您就会忽略它的意图。如果您想在背景中接收意图,您有两个选项:
文档说
注意:如果在Activity.onResume()实现中注册接收器,则应该在Activity.onPause()中注销它。(暂停时不会收到意图,这将减少不必要的系统开销)。
还要确保操作字符串("android.provider.Telephony.SMS_RECEIVED")没有任何错误,并且具有正确的权限("android.permission.RECEIVE_SMS")。
编辑请参阅(特别是CommonsWare的答案)
...CommonsWare说:“当安卓发送短信时,并没有播放的意图。这很可能是出于隐私原因。”
https://stackoverflow.com/questions/15717823
复制相似问题