问题
I am using sms broadcast receiver in my application. When i send first sms it popups one message as sms sent. when i sent second request the popup message get doubled. In third time it tripled and so on. I am using following code for sending and receiving the broadcast.
private void sendRequest()
{
String SENT = "SMS_SENT";
String DELIVERED = "SMS_DELIVERED";
PendingIntent sentPI = PendingIntent.getBroadcast(this, 0,
new Intent(SENT), 0);
PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0,
new Intent(DELIVERED), 0);
//---when the SMS has been sent---
registerReceiver(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(), "Invalid PhoneNumber",
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;
}
}
}, new IntentFilter(SENT));
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(sms_phonenumber, null, sms_message, sentPI, null);
I am not sure y this is happening. I am sending sms message from mainactivity.
Thanks for your help guys..
回答1:
looks because every time you call sendRequest
you register BroadcastReceiver
one more time ........
you should register the BroadcastReceiver
once only and that should be unregistered before living the activity........
do register and unregistered work once only in onStart
and onStop
as in link
来源:https://stackoverflow.com/questions/11031151/sms-broadcast-receiver-receives-many-times