Android SDKをいじっていたところ、SMSメッセージを受信する例の1つで、onReceiveの実行がIntent.getExtras()を超えていないことに気付きました。念のため、その行の前後にログを追加しました。getExtrasが実行された後はログがありません。Androidエミュレータのバージョンは4.0.3です。誰かが私が見ていないこのコードのいくつかの欠陥を指摘したり、この一見ランダムでイライラする問題の回避策や解決策を提供したりできますか?
public class SmsReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
Log.i("smsreceiver", "Intent: " + intent.getAction()); //Shows up in LogCat normally
Bundle bundle = intent.getExtras();
Log.i("smsreceiver", "after"); //this is never reached, and nothing after this is executed
Object messages[] = (Object[]) bundle.get("pdus");
SmsMessage smsMessage[] = new SmsMessage[messages.length];
for (int n = 0; n < messages.length; n++)
{
smsMessage[n] = SmsMessage.createFromPdu((byte[])messages[n]);
}
Log.i("smsreceiver", "Message: " + smsMessage[0].getMessageBody());
}
}