Подтвердить что ты не робот

Как удалить приложение из списка последних приложений?

Я предполагаю, что Android не позволит людям делать это, потому что они считают, что у них идеальная ручка для задачи/приложений. Однако мне действительно нужно сделать это в моем случае.

У меня есть действие A, действующее как точка входа моего приложения. В этой деятельности он читает предпочтение и решает, какую деятельность начать, скажем, B или C. После этого он заканчивается. Таким образом, активность A никогда не появляется пользователям.

Мое приложение хранит вещи на SD-карте и постоянно читает ее. Таким образом, когда SD-карта размонтирована, мне нужно отобразить сообщение пользователю о том, что sdcard недоступен, вместо того, чтобы открывать B или C. Я установил проверку в A, чтобы отобразить это сообщение, когда SD-карта недоступна. Когда это сообщение отображается, A не будет пытаться запустить B или C.

Все работает отлично, если пользователь только вводит мое приложение из панели запуска приложений. Однако я обнаружил, что пользователь может также ввести мое приложение, долгое нажатие на дом и выбрать его из недавнего списка приложений, если он недавно открыл его. Когда пользователь делает это, он пропускает A и переходит непосредственно к B или C. У меня нет проверки в обоих из них, поэтому при попытке доступа к sdcard возникает исключение, а всплывающее диалоговое окно принудительного закрытия.

Я могу просто перенести свой чек на B и C, чтобы исправить эту проблему. Но в будущем количество мероприятий, начинающихся с A, будет увеличиваться. Если их 6, мне нужно скопировать эту проверку на 6 мест. Излишне говорить, что это выглядит очень уродливо, и это кошмар для обслуживания.

Итак, лучшим решением должно быть удаление моего приложения из списка последних приложений, когда sdcard унаследован. Однако я не могу найти, как это сделать. Даже убивая процесс или используя ActivityManager.restartPackage, он по-прежнему отображается в списке. Может ли кто-нибудь сказать мне, как удалить его из списка?

4b9b3361

Ответ 1

попробовать

<activity android:name=".MainActivity"
        android:excludeFromRecents="true" ...

в объявлении активности AndroidManifest.xml.

Ответ 2

Другие атрибуты могут помочь вашей активности изолировать от других действий в одном пакете.

<activity 
android:name=".aActivity"
android:excludeFromRecents="true"
android:taskAffinity=""
android:launchMode="singleInstance">

Ответ 3

просто добавьте android:excludeFromRecents="true" в свой тег активности в файле манифеста.. легко:

Ответ 4

Вам нужно установить AndroidManifest.xml:

<activity>
  ...
  android:excludeFromRecents="true"
  ...
</activity>

или начать эту операцию с

intent.setFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);

а также в AndroidManifest.xml

<activity>
  ...
  android:label=""
  ...
</activity>

Установка метки как пустой позволит этой активности НЕ отображаться в списке недавних приложений.

Ответ 5

Я бы не рекомендовал этого, но я бы попробовал следующие варианты:

Вариант 1:

В B и C добавьте:

protected void onPause() {
  finish();
}

Вариант 2:

Добавьте в B и C следующее в AndroidManifest:

android:noHistory= "true"

Ответ 6

Удаление приложения из списка последних приложений, вероятно, невозможно, и, безусловно, не лучшее решение. Это просто путает пользователя, который ожидает, что все приложения будут вести себя аналогичным образом.

Несмотря на это, я не думаю, что это решит вашу проблему. Если пользователь нажимает "Дом" во время действия "В", затем выбирает ваше приложение с домашней страницы, он снова запустит Activiy B.

Существует множество способов решения реальной проблемы. Одним из простых может быть создание базовой операции, которая выполняет проверку карты SD, и все ваши действия простираются от нее. Таким образом, проверка выполняется только в одном месте.

Ответ 7

Хорошо, я знаю, что это можно сделать в 2.3.4. Приложение Lock Toddler Lock при открытии очищает список последних приложений, поэтому, когда вы "блокируете" свой телефон, если вы долго нажимаете клавишу "домой", список пуст. К сожалению, я не нашел, как это сделать. Так что для тех, кто ищет и читает постф, которые говорят, что это невозможно, не сдавайтесь. Я, конечно, не знаю.

Ответ 8

если вы хотите выйти из приложения на кнопке, нажмите этот код:

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
startActivity(intent);

Чтобы убить полное приложение и удалить его из списка Runningapp, убейте приложение через его pid (его противный)... используйте эти строки перед кодом выше.

int pid = android.os.Process.myPid();
android.os.Process.killProcess(pid);