3

我在搞乱 Android SDK,并注意到在接收 SMS 消息的示例之一中,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 回答