检测android Activity启动

Tia*_*sta 11 java android launcher android-activity

我已经在stackoverflow中搜索了这个问题并发现: Android,检测其他应用程序何时启动以及 从家庭/桌面检测应用程序启动的可靠方式?哪种回答我的问题,但仍然不够.

我想做什么 我想创建一个小部件/应用程序,向设备用户显示最近的应用程序列表和最常用的应用程序列表.

问题 如何获得有关应用程序的准确数据,以便构建最常用的应用程序列表.

基本信息

  • 我正在编译自己的Android OS(基于4.2)代码,所以我可以访问所有内容.
  • 我也正在开发发射器.
  • 它需要通过CTS并获得Google批准.
  • 我可以使用系统权限制作应用程序.
  • 我知道这可能是Google的安全问题.

一些解决方案

最近的应用程序可以通过ActityManager,getRecentApps方法找到,所以现在问题就在那里.

我在网上搜索了这个,并且已经找到了以下解决方案:

  1. 使用服务每X秒查询一次activityManager,getRunningTasks方法并构建列表(使用大量的batery来获取信息).
  2. 使用logcat获取此信息(对我来说似乎是一个黑客,需要系统权限)
  3. 更改activityManager本身以提供此信息(很可能无法通过CTS测试)
  4. 使用启动器验证已启动的应用程序(错过在其他应用程序中启动的应用程序)

我错过了什么?

在此先感谢Tiago Costa

Akh*_*hil 1

Android 默认的最近应用程序对话框实现是您最好的参考,请看这里..检查 reloadButtons()

final ActivityManager am = (ActivityManager)
                context.getSystemService(Context.ACTIVITY_SERVICE);
        final List<ActivityManager.RecentTaskInfo> recentTasks =
                am.getRecentTasks(MAX_RECENT_TASKS, ActivityManager.RECENT_IGNORE_UNAVAILABLE);
Run Code Online (Sandbox Code Playgroud)

你可以用类似的方法尝试一下..