Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了android – 如何在使用后台工作的间隔中查找用户访问的应用程序列表?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我想从后台工作中找出用户特定时间间隔(例如:5分钟)访问的应用程序列表?
这是否可以在无根的 Android手机上?如果可能,我非常有兴趣知道答案,因为这将是一个伟大的学习关于android.

解决方法

更新:

代码例:

private void listTasks() throws PackageManager.NameNotFoundException {
  Activitymanager mgr = (Activitymanager)getSystemservice(Context.ACTIVITY_serviCE);
  List<Activitymanager.AppTask>  tasks = mgr.getAppTasks();
  String packagename;
  String label;
  for (Activitymanager.AppTask task: tasks){
    packagename = task.getTaskInfo().baseIntent.getComponent().getPackagename();
    label = getPackageManager().getApplicationLabel(getPackageManager().getApplicationInfo(packagename,PackageManager.GET_Meta_DATA)).toString();
    Log.v@R_772_10374@,packagename + ":" + label);
  }
}

原始答案:

介绍

Activitymanager类提供了两种返回此类信息的方法.选择getRecentTasks或getRunningTasks方法是合适的,因为返回的任务列表不是我们的目标.但是,它将被用作确定所需列表的路上的参点.

代码例:

Activitymanager activitymanager = (Activitymanager) getSystemservice(Context.ACTIVITY_serviCE);
List<RecentTaskInfo> activitys = activitymanager.getRecentTasks(Integer.max_value,Activitymanager.RECENT_IGNORE_UNAVAILABLE);
for (int i = 0; i < activitys.size(); i++) {
    RecentTaskInfo activity = activitys.get(i);
    activity.baseIntent.getComponent().getPackagename();
}

过滤:此列表包括所有类型的任务,包括系统任务.

代码例:

if (activity.baseIntent.getCategories().contains(Intent.CATEGORY_LAUNCHER)) {
    // This is an application.
    getPackageManager()
        .getApplicationLabel(getPackageManager()
        .getApplicationInfo(activity.baseIntent.getComponent()
        .getPackagename(),PackageManager.GET_Meta_DATA)); // application name
}

这是与长按主屏幕按钮相同的列表.

抽象方法:(说明稍后)

为例说明这个方法

>虑任何应用程序将是一个好主意.出现在你的应用程序之前在稍后提取的列表中重新启动应用程序.因为当我们开始运行时,这是从应用程序的内部,你的应用程序.列在名单上.

>但是,你的应用程序可以从顶部下来,并在间隔时间内恢复. (Facebook> Twitter>您的应用程式).

>在以后获取的列表中,另一个应用程序.可能会上升.将其作为参,也将因您的应用程序出现同样的原因而失败.失败作为参.

获奖方式:

所有的应用程序在fosl重新启动之前,不仅是什么是应用程序.而且,可以很容易地证明.没有办法重新排列fosl之上的应用程序,其中一些可能在没有fosl被改变的情况下被重新启动(更大的包括更多的应用程序).你可以锻炼身体

即使用户删除了一些应用程序,fosl方法也会起作用.从列表中手动在间隔内.只有在以前的时间间隔内没有检测到删除的应用程序才会被检测到.但是,它不会影响列表中其余部分的fosl方法.如果用户清除所有列表,只有清除的应用程序,同样的事情.将不会检测到,而不是在相同的间隔内启动的.

为什么间隔?因为这么长时间的用户可以打开并重新启动应用程序.然后,清除列表或删除一些.

较小的间隔也会使用户难以打开任何顶级子列表,同样的顺序,这是fosl方法的唯一弱点.

示例代码:(fosl)

public int geTindexOfFirstAppBeforeFOSL(ArrayList<App> recentApps) {
    int i=prevIoUsRecentApps.size()-1,j = recentApps.size()-1;
    for (; i>=0 && j>=0 ; i--) {
        App app = prevIoUsRecentApps.get(i);
        if (app.equals(recentApps.get(j))) {
            j--;
        } else {
            // this application got re-launched and therefore it changed it place in list.
            // or removed manually by user.
        }
    }

    return j;
}

我为应用程序创建了一个GitHub project.检查出来,并报告错误(如果有的话).

缺少检测一个或两个应用程序,我们提到的弱点真的会影响您收集应用程序的研究结果.从大量用户发布.如果你还在干什么呢否则,你的应用程序.可以经常得到新推出的应用程序并通知用户它.

大佬总结

以上是大佬教程为你收集整理的android – 如何在使用后台工作的间隔中查找用户访问的应用程序列表?全部内容,希望文章能够帮你解决android – 如何在使用后台工作的间隔中查找用户访问的应用程序列表?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。