2

Я пытаюсь добавить больше флагов в Intent для запуска нового действия внутри BroadcastReceiver, отвечая на конкретный намерение, отправленное из другой части приложения. Я добавил, поскольку по сообщениям LogCat я заметил флаг FLAG_ACTIVITY_NEW_TASK в созданном мной Intent, а затем другие, но я получаю ту же ошибку в LogCat, что и FLAG_ACTIVITY_NEW_TASK.Несколько флагов Intent для запуска новой активности в Android

Вот код:

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? 

ответ

3

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

использование addFlags() вместо setFlags(), чтобы добавить дополнительные флаги.

http://developer.android.com/reference/android/content/Intent.html#addFlags(int)

setFlags() устанавливает полный набор флагов, которые будут использоваться, так что вам придется | все флаги, которые будут использоваться здесь. addFlags() можно назвать несколько раз, и для вас есть | флагов.

0

простой способ сделать это с Котлин и АНКО см фрагмент see example snapshot

startActivity (intentFor () .clearTask(). newTask(). noHistory())

надеюсь, что это поможет

 Смежные вопросы

  • Нет связанных вопросов^_^