我还有一个问题。我做了一些关于如何正确地将一个intent从BroadcastReceiver发送到一个活动的研究。每个人都建议做以下事情:
构造一个intent并使用接收器中提供的上下文来启动该intent。但是,在尝试这样做时,我总是会收到错误
AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
因此,当我搜索该错误时,人们似乎建议您要为意图添加特定标志。但即使有这个标志,我也会遇到同样的错误。任何帮助都会受到赞赏。
Intent intentMain = new Intent(context.getApplicationContext(), MainActivity.class);
intentMain.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
intentMain.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.putExtra("com.hennessylabs.xxx.FROM", senderNum);
intent.putExtra("com.hennessylabs.xxx.MSG", message);
context.startActivity(intentMain);
答案 0 :(得分:1)
Intent intent = new Intent(context,MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
然后在清单文件中 在主要活动
launchmode= singleTask
或根据您的要求,您也可以使用其他一些组合
答案 1 :(得分:1)
您似乎正在尝试从BroadcastReceiver启动MainActivity.class。那样就好。虽然我不知道你为什么要在添加标志时提供的第2和第3行中做了什么。为什么不这样做:
intentMain.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
所以你的整个代码块应如下所示:
Intent intentMain = new Intent(context.getApplicationContext(), MainActivity.class);
intentMain.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra("com.hennessylabs.xxx.FROM", senderNum);
intent.putExtra("com.hennessylabs.xxx.MSG", message);
context.startActivity(intentMain);