android - 用于在 Android 中启动新 Activity 的多个 Intent 标志

标签 android android-intent android-activity broadcastreceiver flags

我正在尝试在 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 只是分配参数,正如您从代码 fragment 中看到的那样

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;
}

关于android - 用于在 Android 中启动新 Activity 的多个 Intent 标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29127578/

相关文章:

Android - 防止 Activity 在停留在后台后重新启动

java - GamePlay 类型未定义方法 getString(int)

java - jsoup - 如何使用 Jsoup 提取此图像?

android - Android中的分布式应用

java - 在指定日期之前在 Android 中通知

Android gmail 未出现在 Nexus 设备(平板电脑和手机)上的邮件 Intent 共享列表中

Android RecyclerView 和 DrawerLayout 互相覆盖

java - 多个 ImageButton OnClicklistener

android - broadcastreceiver onReceive问题 ACTION_MEDIA_BUTTON Android

java - 在 Activity 之间传输 TextView 数据?