Telecom からデータ SMS を受信するアプリケーションがあります。私のコードでは、Activity 内に動的 Broadcastreceiver を登録しました。正常に動作しますが、いくつかの SMS メッセージが失われることがあり、その理由がわかりません。これは私のコードです
IntentFilter mFilter = new IntentFilter(
"android.intent.action.DATA_SMS_RECEIVED");
mFilter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
mFilter.addDataAuthority("localhost", "my port");
mFilter.addDataScheme("sms");
if (smsReceiver == null)
smsReceiver = new SmsReceiverBroadcast();
context.registerReceiver(smsReceiver, intentFilter);
ブロードキャストをアクティビティに登録した後、60秒待ちます
long time = 0;
int delay = 200;
while (!Variable.getMessage && !finish
&& !Util.isTimeout(time, Timer)) {
Util.sleep(delay);
time += delay;
}
そして私のBroadCastReceiver:
Bundle bundle = intent.getExtras();
SmsMessage[] msgs = null;
String str = "";
if (bundle != null && bundle.containsKey("pdus")) {
Object[] pdus = (Object[]) bundle.get("pdus");
if (pdus != null) {
String pduString = toHexString((byte[]) pdus[0]);
LogParams.pdu = (byte[]) pdus[0];
msgs = new SmsMessage[pdus.length];
for (int i = 0; i < msgs.length; i++) {
msgs[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
if (msgs[i].getMessageBody() != null) {
str += msgs[i].getMessageBody().toString();
Variable.isReadPdu = true;
} else {
PduParser pduparser = new PduParser();
Pdu pdu = pduparser.parsePdu(pduString);
str += pdu.getDecodedText();
Variable.isReadPdu = true;
}
私のコードの何が問題になっていますか?