从BroadcastReceiver getExtras启动活动为空

时间:2016-01-07 04:10:20

标签: android android-intent

我一直在玩弄如何从我的BroadcastReceiver在我的主要课程中开始新的意图。值得庆幸的是,经过多次尝试和SO的一些帮助我成功触发了onNewIntent()。但是,我需要将数据传递给intent,以便我可以使用它。下面你将看到我的BroadcastReceiver中启动intent的代码和处理来自main类的intent的代码。预期的结果是打印出BroadcastReceiver传递的值,相反,我得到一个null异常。我已经设置了一个断点,并且可以验证intent和getIntent(它应该是原始意图而不是从BroadcastReceiver传入的意图)都具有null附加功能。任何帮助都会被贬低。

广播接收器:

Intent intentMain = new Intent(context.getApplicationContext(), MainActivity.class);
intentMain.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.putExtra("com.xxx.xxx.FROM", "test");
intent.putExtra("com.xxx.xxx.MSG", "test2");
context.startActivity(intentMain);

onNewIntent():

@Override
    protected void onNewIntent(Intent intent) {
        Log.d("SmsReceiver", "entered onNewIntent");
        super.onNewIntent(intent);
        if (intent.getExtras() != null) {
            String from = intent.getExtras().getString("com.xxx.xxx.FROM");
            String msg = intent.getExtras().getString("com.xxx.xxx.MSG");
        }
    }

1 个答案:

答案 0 :(得分:1)

您创建intentMain,但应该添加intent.putExtra("com.xxx.xxx.MSG", "test2"); intentMain.putExtra("com.xxx.xxx.MSG", "test2");