错误
Activity has leaked IntentReceiver that was originally registered here.
Are you missing a call to unregisterReceiver()?
代码
public void sendSMS(String phoneNumber, String message) {
String SENT = "SMS has been sent";
String DELIVERED = "SMS has been delivered";
PendingIntent sentPI = PendingIntent.getBroadcast(this, 0, new Intent(SENT), 0);
PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0, new Intent(DELIVERED), 0);
registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context arg0, Intent arg1) {
switch (getResultCode()) {
case Activity.RESULT_OK:
Log.e("","=== RESULT_OK_1");
break;
case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
Toast.makeText(
getBaseContext(),
"Generic failure. May be insufficient balance into SIM 1",
Toast.LENGTH_SHORT).show();
linlaHeaderProgress.setVisibility(View.GONE);
onCreate(savedInstanceState);
break;
case SmsManager.RESULT_ERROR_NO_SERVICE:
Toast.makeText(getBaseContext(), "No service", Toast.LENGTH_SHORT).show();
linlaHeaderProgress.setVisibility(View.GONE);
onCreate(savedInstanceState);
break;
case SmsManager.RESULT_ERROR_NULL_PDU:
Toast.makeText(getBaseContext(), "Null PDU", Toast.LENGTH_SHORT).show();
linlaHeaderProgress.setVisibility(View.GONE);
onCreate(savedInstanceState);
break;
case SmsManager.RESULT_ERROR_RADIO_OFF:
Toast.makeText(getBaseContext(), "Radio off", Toast.LENGTH_SHORT).show();
linlaHeaderProgress.setVisibility(View.GONE);
onCreate(savedInstanceState);
break;
}
}
}, new IntentFilter(SENT), null, null);
registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context arg0, Intent arg1) {
switch (getResultCode()) {
case Activity.RESULT_OK:
Log.e("","== delivered BroadcastReceiver called now ==");
if (GlobalConfig.user_verification) {
Log.e("","== user_verification== true ");
/* isInternetPresent = di.isConnectingToInternet();
if (!isInternetPresent) {
CustomObjects.CustomAlert(SignUpScreen.this, "Please enable internet ").show();
} else {
Log.e("","=== user verified");
if (flag == 0) {
flag = 1;
Log.e("","== user register start");
new Thread(waitThread).start();
}
}*/
} else {
CustomObjects
.CustomAlert(SignUpScreen.this, "User verification failed !")
.show();
onCreate(savedInstanceState);
}
break;
case Activity.RESULT_CANCELED:
linlaHeaderProgress.setVisibility(View.GONE);
setContentView(R.layout.sign_up_screen);
Toast.makeText(getBaseContext(), "SMS not delivered", Toast.LENGTH_SHORT).show();
break;
}
}
}, new IntentFilter(DELIVERED), null, null);
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI);
}
答案 0 :(得分:1)
您错过了对unregisterReceiver()
的来电,因为我看不到。
当Activity
停止时,您应该拨打此电话。也许是这样的:
private BroadcastReceiver broadcastReceiverSent = ...;
private BroadcastReceiver broadcastReceiverDelivered = ...;
... {
registerReceiver(broadcastReceiverSent);
registerReceiver(broadcastReceiverDelivered);
}
@Override
void onStop() {
unregisterReceiver(broadcastReceiverSent);
unregisterReceiver(broadcastReceiverDelivered);
}