11

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

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

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

基地信息

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

一些解决方案

最近的应用程序可以通过 ActityManager、getRecentApps 方法找到,所以现在问题出现了。

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

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

还有什么我错过的吗?

在此先感谢蒂亚戈·科斯塔

4

1 回答 1

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

你可以试试类似的方法。。

于 2013-04-24T18:51:35.923 回答