我一直在玩弄如何从我的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");
}
}
答案 0 :(得分:1)
您创建intentMain
,但应该添加intent.putExtra("com.xxx.xxx.MSG", "test2");
intentMain.putExtra("com.xxx.xxx.MSG", "test2");
。