即使我使用abortBroadcast(),我的廣播接收器截獲的短信正在發送到我的收件箱。這個問題只在我使用unRegisterReceiver()時纔會出現。如果我不取消註冊,abortBroadcast可以正常工作。任何想法如何中止,然後取消註冊成功?下面是代碼:取消註冊已接收短信的廣播接收器
在我的主要活動中,我已經宣佈的廣播接收器對象:
SmsReceiver BR_smsreceiver = null;
然後我註冊的廣播接收器,並在主要活動的函數內發送短信:
public Boolean sendVerificationSms(String number) {
BR_smsreceiver = null;
BR_smsreceiver = new SmsReceiver();
BR_smsreceiver.setMainActivityHandler(this);
IntentFilter fltr_smsreceived = new IntentFilter(
"android.provider.Telephony.SMS_RECEIVED");
registerReceiver(BR_smsreceiver, fltr_smsreceived);
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(number, null, "hi", null, null);
}
廣播接收機截取SMS和主活動中調用一個函數:
public class SmsReceiver extends BroadcastReceiver {
MainActivity main = null;
void setMainActivityHandler(MainActivity main){
this.main=main;
}
@Override
public void onReceive(Context context, Intent intent) {
Bundle pdusBundle = intent.getExtras();
Object[] pdus=(Object[])pdusBundle.get("pdus");
SmsMessage messages=SmsMessage.createFromPdu((byte[]) pdus[0]);
if(messages.getMessageBody().contains("hi")){
abortBroadcast();
main.verifyPhoneNumber("hi");
}
}
}
功能註銷廣播接收器,並進行一些處理:
public void verifyPhoneNumber(String number) {
unregisterReceiver(BR_smsreceiver);
...
}
此止跌」 t服務於我的目的,因爲我需要在廣播接收器被觸發後取消註冊,而不是在應用程序暫停後註銷。 – faizal