Android: Programmatically open “Recent Apps” dialog

前端 未结 3 1571
梦毁少年i
梦毁少年i 2020-12-05 11:42

I would like to be able to open the \"Recent Apps\" dialog from my application. This is the dialog that is opened by long-pressing the home button. I am programming for Andr

相关标签:
3条回答
  • 2020-12-05 12:23

    This code won't work on Nougat or later

    It is possible to trigger the recent apps activity.

    The StatusBarManagerService implements an public method which you can use through reflection.

    You can use the following code:

    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);
    

    Have fun

    0 讨论(0)
  • 2020-12-05 12:37

    This can be done using the 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);
    

    Note Package would be changed basis on Api level. See here.

    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)
    
    0 讨论(0)
  • 2020-12-05 12:42

    You cannot access that. However, it isn't super hard to roll your own. The getRecentTasks() method returns a list of recently run apps. Simply take the list and add your own UI to it.

    One advantage to this is that the default one, at least on older versions of Android, only shows you about 8 apps. If you roll your own can show as many as you want.

    0 讨论(0)
提交回复
热议问题