大佬教程收集整理的这篇文章主要介绍了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,请注明来意。