Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 检测android活动启动_Java_Android_Android Activity_Launcher - Fatal编程技术网

Java 检测android活动启动

Java 检测android活动启动,java,android,android-activity,launcher,Java,Android,Android Activity,Launcher,我已在stackoverflow搜索此问题,并发现: 及 ,这类回答了我的问题,但仍然不够 我想做什么 我想创建一个小部件/应用程序,向设备用户显示最新应用程序列表和最常用应用程序列表 问题 我如何获得有关应用程序的准确数据,以便建立最常用应用程序的列表 基本信息 我正在编译自己的安卓操作系统(基于4.2)代码,以便访问 一切 我也在开发发射器 它需要通过CTS并获得谷歌的批准 我可以使用系统权限创建应用程序 我知道这可能是谷歌的安全问题 一些解决方案 最近的应用程序可以通过Activity

我已在stackoverflow搜索此问题,并发现: 及 ,这类回答了我的问题,但仍然不够

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

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

基本信息

  • 我正在编译自己的安卓操作系统(基于4.2)代码,以便访问 一切
  • 我也在开发发射器
  • 它需要通过CTS并获得谷歌的批准
  • 我可以使用系统权限创建应用程序
  • 我知道这可能是谷歌的安全问题
一些解决方案

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

我在网上搜索了一下,已经找到了以下解决方案:

  • 使用服务每X秒查询一次activityManager、getRunningTasks方法并构建列表(在准确的信息中,也使用了大量数据)
  • 使用logcat获取此信息(对我来说似乎是一种黑客行为,需要系统权限)
  • 更改activityManager本身以提供此信息(很可能会使CTS测试失败)
  • 使用启动器验证已启动的应用程序(错过在其他应用程序中启动的应用程序)
  • 还有什么我错过的吗

    提前感谢,,
    蒂亚戈·科斯塔(Tiago Costa)

    Android默认最新应用程序对话框的实现是您的最佳参考,

    final ActivityManager am = (ActivityManager)
                    context.getSystemService(Context.ACTIVITY_SERVICE);
            final List<ActivityManager.RecentTaskInfo> recentTasks =
                    am.getRecentTasks(MAX_RECENT_TASKS, ActivityManager.RECENT_IGNORE_UNAVAILABLE);
    
    final ActivityManager am=(ActivityManager)
    getSystemService(context.ACTIVITY\u服务);
    最近任务的最终列表=
    am.getRecentTasks(最大最近的任务,ActivityManager.RECENT忽略不可用);
    

    你可以用类似的方法试试

    通过列出所有4个选项,您基本上做到了这一点。我的首选是使用
    (ActivityManager)this.getSystemService(ACTIVITY\u服务)谢谢你的回答,我将尝试所有的答案,看看哪一个效果最好。再次感谢。除非您具有root权限,否则logcat不适用于Android 4.2及更高版本,请参阅感谢您的提醒,我知道对于4.2,您有这个问题,忘了在logcat解决方案中提及,将对其进行更新。谢谢您的评论,我已经尝试了所有的4个步骤,并在启动器中捕获StartApplication调用。它有几乎完美的信息,没有额外的处理。你能指定“几乎完美”吗?您缺少什么?在其他活动中启动的应用程序不是我的启动器。由于大多数人通过启动器启动活动,这符合我的目的。我遇到了完全相同的问题,并且尝试了很长一段时间。你能详细说明一下你是如何在启动器中捕获startapplication调用的吗。一些代码将不胜感激。谢谢