[英]Multiple Intent flags for starting a new Activity in Android
我试图在Intent上添加更多标志,以在BroadcastReceiver内启动新的Activity,以响应从应用程序另一部分发送的特定Intent。 正如我从LogCat消息中注意到的那样,我已经添加了我创建的Intent的FLAG_ACTIVITY_NEW_TASK
标志,然后添加了其他标志,但是在LogCat中我得到了与FLAG_ACTIVITY_NEW_TASK
相同的错误。
这是代码:
public class actReceiver extends BroadcastReceiver {
...
public void onReceive(Context context, Intent intent) {
...
else if (intent.getAction().equals("something")) {
Intent prefAct = new Intent(context, PreferencesActivity.class)
prefAct.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
.setFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS)
.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY)
.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(prefAct);
}
... }
... }
以及特定的LogCat错误:
Caused by: android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
setFlags
只是分配参数,如您在代码段中所见
public Intent setFlags(int flags) {
mFlags = flags;
return this;
}
因此,根据您的情况,您只分配了最后一个。 要修复它,请放在或
prefAct.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS | Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_SINGLE_TOP);
或使用执行相同功能的addFlags
public Intent addFlags(int flags) {
mFlags |= flags;
return this;
}
使用addFlags()
而不是setFlags()
来添加其他标志。
http://developer.android.com/reference/android/content/Intent.html#addFlags(int)
setFlags()
设置要使用的完整标志集,因此您必须|
在此使用的所有标志。 addFlags()
可以多次调用,并且|
为您的标志。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.