我在stackoverflow上搜索了这个问题,发现: Android,检测其他应用程序何时启动以及 检测应用程序从家庭/桌面启动的可靠方式?,哪种回答了我的问题,但仍然不够。
我想要做什么 我想创建一个小部件/应用程序,向设备用户显示最近的应用程序列表和最常用的应用程序列表。
问题 如何获得有关应用程序的准确数据,以便构建最常用应用程序的列表。
基地信息
- 我正在编译我自己的 Android 操作系统(基于 4.2)代码,所以我可以访问所有内容。
- 我也在开发发射器。
- 它需要通过 CTS 并获得 Google 批准。
- 我可以使用系统权限制作应用程序。
- 我知道这可能是谷歌的一个安全问题。
一些解决方案
最近的应用程序可以通过 ActityManager、getRecentApps 方法找到,所以现在问题出现了。
我已经在网上搜索了这个并且已经找到了以下解决方案:
- 使用服务每隔 X 秒查询一次activityManager、getRunningTasks 方法并构建列表(不准确的信息,也使用了大量的电池)。
- 使用 logcat 获取此信息(对我来说似乎是 hack,需要系统权限)
- 更改 activityManager 本身以提供此信息(很可能无法通过 CTS 测试)
- 使用启动器验证已启动的应用程序(错过在其他应用程序中启动的应用程序)
还有什么我错过的吗?
在此先感谢蒂亚戈·科斯塔