Как добавить флаги с моим намерением в файле манифеста

мы знаем, что есть флаги, которые мы можем добавить к нашему намерению, используя метод addFlags() в нашем java-коде. Есть ли способ добавить эти флаги в самом файле манифеста, вместо того, чтобы писать это в java-коде. Мне нужно добавить флаг REORDER_TO_FRONT для одного из моих действий в манифесте.

Как это сделать?

Ответ 1

В файле манифеста вы не можете добавлять флаги Intent. Вам нужно установить флаг в Intent, который вы передаете startActivity. Вот пример:

Intent intent = new Intent(this, ActivityNameToLaunch.class);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent);

Ответ 2

Чтобы ответить на исходный вопрос, так как это отображается как первый ответ в поиске Google, это может быть сделано, поскольку уровень API 3 (введенный в 2009 году) с добавлением android:noHistory="true" к определению активности в файле манифеста, как описано здесь: http://developer.android.com/guide/topics/manifest/activity-element.html#nohist.

Пример:

<activity
   android:name=".MainActivity"
   android:label="@string/app_name"
   android:noHistory="true">
  <intent-filter>
      <action android:name="android.intent.action.MAIN"/>
      <category android:name="android.intent.cataegory.LAUNCHER"/>
  </intent-filter>
</activity>

Ответ 3

У меня была аналогичная проблема и я хотел установить флаги

Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK

чтобы всегда активировать активность.

В этом случае решение должно установить атрибут

android:launchMode="singleInstance"

в манифесте.

Как правило, в манифесте Android есть много атрибутов для активности, и вы можете играть с ними, чтобы получить аналогичные эффекты, как с флагами.

Ответ 4

Вы можете легко достичь этого, используя android:launchMode="singleTop" в манифесте <activity> node, например:

<activity
    android:name=".ui.activities.MainActivity"
    android:launchMode="singleTop">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
</activity>

Обратите внимание, что android:launchMode="singleInstance", как это задано @jörg-eisfeld, не рекомендуется использовать для общего использования, как указано в официальной документации: https://developer.android.com/guide/topics/manifest/activity-element.html (см. раздел android: launchMode)