我为android.provider.Telephony.SMS_RECEIVED
注册了BroadcastReceiver。为什么有时SMS BroadcastReceiver被调用两次?
有时BroadcastReceiver onReceive
在同一个SMS上被调用两次。
这是为什么?
我做错了什么?
private void initSmsReceivers() {
smsReceiver = new SmsReceiver();
getActivity().registerReceiver(smsReceiver,
new IntentFilter("android.provider.Telephony.SMS_RECEIVED"));
}
public class SmsReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// ---get the SMS message passed in---
Bundle bundle = intent.getExtras();
SmsMessage[] msgs = null;
String str = "";
if (bundle != null) {
// ---retrieve the SMS message received---
Object[] pdus = (Object[]) bundle.get("pdus");
msgs = new SmsMessage[pdus.length];
for (int i = 0; i < msgs.length; i++) {
msgs[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
// str += "SMS from " + msgs[i].getOriginatingAddress();
// str += " :";
str += msgs[i].getMessageBody().toString();
}
// ---display the new SMS message---
String output = CryptoUtils.decrypt(str);
Toast.makeText(context, output, Toast.LENGTH_LONG).show();
try {
parsemessage(output);
} catch (JSONException e) {
// TODO Auto-generated catch block
Log.e("JSON2", e.toString());
}
}
}
}
你有没有注册这个接收器或者叫'initSmsReceivers()'别的地方在你的代码? –
你怎么知道它被调用两次? – mangusta
@Lisa Anne你修好了吗?我现在也面临同样的问题.. – Ranjit