2つの受信者を動的に登録して、送信されたSMSの結果と配信ステータスをコードで取得します。新しいクラスを作成できません。これは、既存のクラス(ダイアログを拡張する)で行う必要があります。受信者の登録を解除するにはどうすればよいですか。
私は他の投稿を読みましたが、それらは役に立ちません。それらは別のクラスを持っているか、xmlマニフェストにレシーバーを登録します。
これが私のコードです
private void sendSMS(String keyword, String msisdn) {
String SENT = "SMS_SENT";
String DELIVERED = "SMS_DELIVERED";
PendingIntent sentPI = PendingIntent.getBroadcast(mContext, 0,
new Intent(SENT), 0);
PendingIntent deliveredPI = PendingIntent.getBroadcast(mContext, 0,
new Intent(DELIVERED), 0);
mContext.registerReceiver(new BroadcastReceiver(){
@Override
public void onReceive(Context arg0, Intent arg1) {
switch (getResultCode())
{
case Activity.RESULT_OK:
break;
case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
sendEventLog("Failed(Generic failure)");
break;
case SmsManager.RESULT_ERROR_NO_SERVICE:
sendEventLog("Failed(No service)");
break;
case SmsManager.RESULT_ERROR_NULL_PDU:
sendEventLog("Failed(Null PDU)");
break;
case SmsManager.RESULT_ERROR_RADIO_OFF:
sendEventLog("Failed(Radio off)");
break;
}
}
}, new IntentFilter(SENT));
//---when the SMS has been delivered---
mContext.registerReceiver(new BroadcastReceiver(){
@Override
public void onReceive(Context arg0, Intent arg1) {
switch (getResultCode())
{
case Activity.RESULT_OK:
break;
case Activity.RESULT_CANCELED:
sendEventLog("Failed(SMS not delivered)");
break;
}
}
}, new IntentFilter(DELIVERED));
SmsManager MySmsManager = SmsManager.getDefault();
MySmsManager.sendTextMessage(msisdn, null, keyword, sentPI, deliveredPI);
}