我在使用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());

    }
}

最佳答案

我将在调试器下运行您的应用程序,并像您提到的那样将其挂起,然后手动闯入应用程序,查看执行的位置。这可能会给你一个可能的原因提示。
另外,您可以设置IDE来解析框架源代码,然后实际调试到getextras()调用中,以找出问题所在。

关于java - Android编程:Intent.getExtras()似乎以某种方式停止执行流,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10099891/

10-10 06:29