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

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

Как этого добиться?


person Ankit    schedule 11.07.2011    source источник


Ответы (4)


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

Intent intent = new Intent(this, ActivityNameToLaunch.class);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent);
person Vineet Shukla    schedule 14.07.2011
comment
Привет, Ричи, да, я знаю эту вещь, но проблема в том, что я не запускаю это действие явно из другого действия. В моем случае действие, которое нужно запустить, является основным / средством запуска, и оно предназначено для запуска, когда пользователь закрывает другие действия, нажимая кнопку «Назад», и, наконец, переходит на этот экран (который также является начальным экраном) - person Ankit; 15.07.2011

Чтобы ответить на исходный вопрос, поскольку это отображается как первый ответ в поиске 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>
person JDL    schedule 03.10.2013

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

Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK

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

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

android:launchMode="singleInstance"

в манифесте.

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

person Jörg Eisfeld    schedule 12.08.2015
comment
Отличный намек, спасибо! Вместо того, чтобы просто поиграться, можно также проверить документацию по элементу ‹activity›: developer.android.com/guide/topics/manifest/ - person Robin; 11.01.2017

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

<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 > раздел)

person konata    schedule 26.09.2017