如何启动最近应用程序菜单中的Android?(How do I launch the recent

2019-09-22 06:58发布

我想推出,显示最近使用的应用程序菜单。

我试着看logcat的同时击中按钮希望有一些意向性我可以启动,但没有运气。

我知道,在某些手机上它是一个专门的按钮,它也可以通过长按home键发生。 有没有办法,我可以通过编程启动它什么办法?

编辑:更新了标题,以更准确

Answer 1:

不,这是不可能的(主要是由于许多方面,这是各种深奥的Android操作系统之间处理)。 但是,你可以得到正在运行的进程的列表,让你自己最近的应用程序列表。 (也许, 这个答案还是这一次会帮助你。)



Answer 2:

当您按下“最近访问的应用”按钮,以下消息logcat的将输出:

568-716/system_process I/ActivityManager﹕ START u0 {act=com.android.systemui.recent.action.TOGGLE_RECENTS flg=0x10800000 cmp=com.android.systemui/.recent.RecentsActivity} from pid 627
    --------- beginning of /dev/log/main
568-582/system_process I/ActivityManager﹕ Displayed com.android.systemui/.recent.RecentsActivity: +215ms

因此,我们可以通过编程模拟这种操作。 (不要忘了标志设置为0x10800000):

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

有关更多资料RecentsActivity ,请阅读源代码在这里 。



Answer 3:

就像什么@Floerm后,这段代码仅低于Android的N功,Android的N有改变IStatusBarService API,我们不能像这样访问。

private void openRecentApps() {
try {
    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);
} catch (Exception e) {
    e.printStackTrace();
}}

如果你想在推出Android的n个最近使用的应用,你需要使用AccessibilityService。

accessibilityService.performGlobalAction(AccessibilityService.GLOBAL_ACTION_RECENTS);


文章来源: How do I launch the recent apps menu in android?