检测android Activity启动

时间:2013-04-16 10:33:52

标签: java android android-activity launcher

我在stackoverflow中搜索了这个问题,发现: Android, Detect when other apps are launchedReliable way to detect application launch from home / desktop?,哪种回答我的问题,但仍然不够。

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

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

基本信息

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

一些解决方案

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

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

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

    提前致谢, Tiago Costa

1 个答案:

答案 0 :(得分:1)

Android默认的最新应用对话框实施是您的最佳参考, look here..check reloadButtons()

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

您可以尝试类似的方式..