3

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());

    }
}
4

1 に答える 1

0

あなたのアプリケーションをデバッガーで実行し、あなたが言ったように「ハング」させてから、手動でアプリケーションに侵入し、実行がどこにあるかを確認します。これにより、何が原因であるかのヒントが得られる場合があります。

おまけとして、フレームワークのソース コードを解決できるように IDE を設定し、実際に getExtras() 呼び出しにデバッグして、何が問題なのかを突き止めることができます。

于 2012-04-11T06:15:00.670 に答える