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

Android: программно откройте диалоговое окно "Недавние приложения"

Я хотел бы иметь возможность открыть диалог "Недавние приложения" из моего приложения. Это диалоговое окно, открытое длинным нажатием кнопки "Домой". Я программирую для Android 4.1 или ранее. Я нашел способ сделать это, выполнив специальный AccessibilityService и вызвав AccessibilityService.performGlobalAction(GLOBAL_ACTION_RECENTS), но для этого требуется возможность доступности на телефоне, что не очень желательно. Есть ли другой способ открыть это диалоговое окно из приложения?

Спасибо за помощь!

4b9b3361

Ответ 1

Вы не можете получить доступ к этому. Тем не менее, это не слишком сложно катиться самостоятельно. Метод getRecentTasks() возвращает список недавно запущенных приложений. Просто возьмите список и добавьте в него свой собственный интерфейс.

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

Ответ 2

Этот код не будет работать на нуге или позже

Можно активировать недавнюю активность приложений.

StatusBarManagerService реализует открытый метод, который можно использовать с помощью отражения.

Вы можете использовать следующий код:

Class serviceManagerClass = Class.forName("android.os.ServiceManager");
Method getService = serviceManagerClass.getMethod("getService", String.class);
IBinder retbinder = (IBinder) getService.invoke(serviceManagerClass, "statusbar");
Class statusBarClass = Class.forName(retbinder.getInterfaceDescriptor());
Object statusBarObject = statusBarClass.getClasses()[0].getMethod("asInterface", IBinder.class).invoke(null, new Object[] { retbinder });
Method clearAll = statusBarClass.getMethod("toggleRecentApps");
clearAll.setAccessible(true);
clearAll.invoke(statusBarObject);

Веселись

Ответ 3

Это можно сделать, используя TOGGLE_RECENTS Intent.

Intent intent = new Intent ("com.android.systemui.recent.action.TOGGLE_RECENTS");
intent.setComponent (new ComponentName ("com.android.systemui", "com.android.systemui.recent.RecentsActivity"));
startActivity (intent);

Примечание. Пакет будет изменен на уровне Api. Посмотреть здесь.

Android 4.1: "com.android.internal.policy.impl.RecentApplicationsDialog"
Android 4.2 - 4.4: "com.android.systemui.recent.RecentsActivity"
Android 5.0 - 7.1: "com.android.systemui.recents.RecentsActivity" ("s" letter was added)