Android getRunningTasks和getRunningAppProcesses失效
Android 5.0以上的getRunningTasks失效,该方法可以获得在前台运行的系统进程。可以用getRunningAppProcesses方法暂时替代。
android6.0以上的getRunningAppProcesses也失效,系统关闭了三方软件对系统进程的访问,出于安全考虑。
参考资料:
- http://blog.csdn.NET/hyhyl1990/article/details/45700447
- http://www.cnblogs.com/luoyangcn/p/4936830.html
替代方案
可以通过以下两种方式得到topActivity的信息:
1、利用ActivityManager.getRunningAppProcesses();获得当前正在运行的所有应用程序的进程。然后根据当前进程信息里的importance和processState来确定当前在顶部的进程。不过这里得到的进程信息里只有被载入当前进程的所有包名pkgList,所以只能判断当前列表有没有你需要监控的包名。
private String[] getActivePackages(Context context) {
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
final Set<String> activePackages= new HashSet<String>();
final List<ActivityManager.RunningAppProcessInfo> processInfos = am.getRunningAppProcesses();
for(ActivityManager.RunningAppProcessInfo processInfo : processInfos) {
if (processInfo.importance ==ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND
&& processInfo.processState == ActivityManager.START_TASK_TO_FRONT){
activePackages.addAll(Arrays.asList(processInfo.pkgList));
Log.d(TAG,"====processInfo.processState " + processInfo.processState + processInfo.processName);
}
}
return activePackages.toArray(new String[activePackages.size()]);
}
2、利用UsageStatsManager,并且调用他的queryUsageStats方法来获得启动的历史记录,调用这个方法需要设置权限“Apps withusage access”。但是这个queryUsageStats只能查询一段时间内的使用状态,如果时间间隔较短,并且一段时间不使用手机,获得的列表就可能为空。
static class RecentUseComparator implements Comparator<UsageStats>
{
@Override
public int compare(UsageStats lhs,UsageStats rhs) {
return (lhs.getLastTimeUsed() > rhs.getLastTimeUsed()) ? - : (lhs.getLastTimeUsed()== rhs.getLastTimeUsed()) ? : ;
}
}
private StringgetTopPackage(Context context) {
long ts = System.currentTimeMillis();
RecentUseComparator mRecentComp = new RecentUseComparator();
UsageStatsManager mUsageStatsManager =(UsageStatsManager) context.getSystemService("usagestats");
//查询ts-10000 到ts这段时间内的UsageStats,由于要设定时间限制,所以有可能获取不到
List<UsageStats> usageStats =mUsageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_BEST,ts - , ts);
if (usageStats == null) return "";
if (usageStats.size() == ) return "";
Collections.sort(usageStats,mRecentComp);
Log.d(TAG,"====usageStats.get(0).getPackageName()"+ usageStats.get().getPackageName());
return usageStats.get().getPackageName();
}
Android getRunningTasks和getRunningAppProcesses失效的更多相关文章
- Android开发(十六)——Android listview onItemClick事件失效的原因
参考: Android listview onItemClick事件失效的原因.http://blog.csdn.net/wangchun8926/article/details/8793178
- Android卡片设置透明度失效问题
最近在做蓝牙电话项目,需要支持双路通话,涉及到通话卡片透明度调节,当正在通话中,有新的来电时,原来的通话卡片需要做成30%的透明度,本来很简单的一个小改进,但通过 setAlpha()接口总是失效! ...
- Android ListView点击失效
item中存在 ImageButton 等可以点击的组件,这会抢先获得ListView的焦点. 从而导致item点击失效
- android 学习过程中登陆失效的个人理解
今天在学习的过程中,要做登陆失效的功能,所以就找了些资料.好好看了一下.研究了一番,慢慢的做出来了! 比方:你在一个手机端登陆了账号,在另外的一个手机端也登陆了账号,此时.前一个手机端的账号会提示登陆 ...
- android studio中文乱码的解决方法【转】
一. 在android的源文件中的乱码问题 Android Studio安装后发现所有的中文,不管是界面上的还是输出的log中的中文都变成小框框,具体的解决方法如下, 可以肯定是字体的问题 解决:菜单 ...
- 前端之Android入门(3):MVC模式(上)
很多Android的入门书籍,在前面介绍完布局后就会逐个介绍组件,然后开始编写组件使用的例子.每每到此时小伙伴们都可能会有些疑问:是否应该先啃完一本<Java编程思想>学点 Java 知识 ...
- Android 常用动画之RotateAnimation
前两天接到任务做一个UI,有用到动画,于是抽空看了下Android动画相关知识. Android Animation共有四大类型,分别是 Alpha 透明度动画 Scale 大小伸 ...
- Android Studio 2.3.3 出现Error:(26.13) Fail to resole: com.android.support.appcompat永久解决方法
Android Studio 出现Error(26.13):Fail to resole:com.android.support.appcompat-v7.28_ Install Repository ...
- Android:MVC模式(上)
很多Android的入门书籍,在前面介绍完布局后就会逐个介绍组件,然后开始编写组件使用的例子.每每到此时小伙伴们都可能会有些疑问:是否应该先啃完一本<Java编程思想>学点 Java 知识 ...
随机推荐
- vue.js学习笔记(二)——vue-router详解
vue-router详解 原文链接:www.jianshu.com 一.前言 要学习vue-router就要先知道这里的路由是什么?为什么我们不能像原来一样直接用<a></a> ...
- linux学习3(vim)
一.文档编辑 1. vi和vim命令 Vim的打开文件的方式(4种,要求掌握的就前三种): 1. vim 文件路径 ...
- 读书笔记 - 《毛X东传》
这个书名重复太多,这本的作者是迪克威尔逊.这本书很有意思,可以看出是一个局外人根据残缺不全的资料所写的出来的,而且是结合心理分析的手法主要描述政治历程.总体来说作为传记不够全面,但对于一个中国人来说可 ...
- python模块之openpyxl扩展
主要是对openpyxl扩展进行扩展,使用归类等 1. 安装 pip install openpyxl 想要在文件中插入图片文件,需要安装pillow,安装文件:PIL-fork-1.1.7.win- ...
- 问题:jQuery中遍历XML文件时候,获取子节点children不支持的情况(已解决)
问题描述: 今天在写一个基于 jquery 的读取xml文件的程序时候,需要遍历xml的节点. 代码片段如下: function parse_xml_node(parent,result){ // r ...
- 下载,安装oracle数据库以及navicat连接数据库
一.学习时所遇问题: 1.在下载之前以为oracle不是免费的,但是后来才知道oracle对于个人学习时是免费的,可以到官网下载安装.在下载时由于要注册oracle官网,所以尝试了好几遍,才成功下载o ...
- python csv.reader参数指定
- maya 安装失败/出错/卸载 2018/2017/2016/2015/2013/2012
AUTO Uninstaller 更新下载地址 1.选择软件 2.选择版本 3.点击[开始卸载]
- Unity 将一个类序列化并以 ".asset" 类型存储在 Resources 文件夹下
概念: 序列化 (Serialization)将对象的状态信息转换为可以存储或传输的形式的过程.在序列化期间,对象将其当前状态写入到临时或持久性存储区.以后,可以通过从存储区中读取或反序列化对象的状态 ...
- UGUI 哪些显示在前方的问题
1.对于一个场景里不同的Canvas来说,越最后创建的或者越最后激活的Canvas,越显示在前方. 2.对于同一个Canvas里的UI来说在Hierarchy面板越靠下越显示在前方.