我在stackoverflow上搜索了这个问题,找到了两篇文章:
Android, Detect when other apps are launched 和
Reliable way to detect application launch from home / desktop? ,这两篇文章有一些回答我的问题,但还不够。
我想做什么
我想创建一个小部件/应用程序,向设备用户显示最近使用过的应用程序列表和最常用的应用程序列表。
问题
如何获得准确的应用程序数据,以便建立最常用的应用程序列表。
基本信息
- 我正在编译自己的Android OS(基于4.2),所以我可以访问所有内容。
- 我也正在开发启动器。
- 它需要通过CTS并获得Google批准。
- 我可以使用系统权限创建该应用程序。
- 我知道这可能是对Google的安全问题。
最近使用的应用程序可以通过ActivityManager的getRecentApps方法找到,因此没有问题。
我已经在网上搜索了这个问题,并找到了以下解决方案:
- 使用服务每X秒查询activityManager的getRunningTasks方法,并构建列表(不准确的信息,还会耗费很多电池)。
- 使用logcat获取此信息(对我来说似乎是一种黑客方式,需要系统权限)
- 更改activityManager本身,以提供此信息(很可能无法通过CTS测试)
- 使用启动器验证已启动的应用程序(无法检测在其他应用程序内部启动的应用程序)
还有其他我错过的吗?
谢谢, Tiago Costa
(ActivityManager)this.getSystemService(ACTIVITY_SERVICE);
。 - srf