Как добавить флаги с моим намерением в файле манифеста
мы знаем, что есть флаги, которые мы можем добавить к нашему намерению, используя метод 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)