Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从广播接收器向活动发送意图_Android_Android Intent - Fatal编程技术网

Android 从广播接收器向活动发送意图

Android 从广播接收器向活动发送意图,android,android-intent,Android,Android Intent,我还有一个问题。我对如何正确地将意图从广播接收器发送到活动进行了一些研究。每个人都建议做以下几点: 构建意图并使用接收方提供的上下文启动该意图。然而,当我这么说的时候,我总是会出错 AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want? 所

我还有一个问题。我对如何正确地将意图从广播接收器发送到活动进行了一些研究。每个人都建议做以下几点:

构建意图并使用接收方提供的上下文启动该意图。然而,当我这么说的时候,我总是会出错

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);
然后在清单文件中 主要活动

launchmode= singleTask

或者根据您的要求,您也可以使用一些其他组合。看起来您正在尝试从您的广播接收器启动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);
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);