Android: программно откройте диалоговое окно "Недавние приложения"
Я хотел бы иметь возможность открыть диалог "Недавние приложения" из моего приложения. Это диалоговое окно, открытое длинным нажатием кнопки "Домой". Я программирую для Android 4.1 или ранее. Я нашел способ сделать это, выполнив специальный AccessibilityService и вызвав AccessibilityService.performGlobalAction(GLOBAL_ACTION_RECENTS), но для этого требуется возможность доступности на телефоне, что не очень желательно. Есть ли другой способ открыть это диалоговое окно из приложения?
Спасибо за помощь!
Ответы
Ответ 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)