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 知识 ...
随机推荐
- LCA 【bzoj 4281】 [ONTAK2015]Związek Harcerstwa Bajtockiego
[bzoj 4281] [ONTAK2015]Związek Harcerstwa Bajtockiego Description 给定一棵有n个点的无根树,相邻的点之间的距离为1,一开始你位于m点. ...
- java.lang.Exception: No tests found matching(Junit测试异常)
java.lang.Exception: No tests found matching [{ExactMatcher:fDisplayName=save], {ExactMatcher:fDispl ...
- Android模拟器手动设置经纬度坐标
第一种方式可以在eclipse的DDMS中的Emulator control中设置,如下图 另一种是在cmd中输入telnet localhost 5554(注:5554是模拟器在本机的端口,有可能不 ...
- C语言中结构、联合、枚举的说明
复杂的数据类型 一般的步骤: 1.声明模板 2.定义变量,分配内存空间 3.初始化 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ...
- poj3111 选取物品(二分+贪心)
题目传送门 题意就是,n个物品,从中选取k个,要按照那个公式所取的值最大. 思路:最大化平均值的时候首先想到的就是二分, 我们设G(x) 为单位的重量不小于X, 我们的目标就是要找到满足条件的最大的X ...
- 江西财经大学第一届程序设计竞赛 A
链接:https://www.nowcoder.com/acm/contest/115/A来源:牛客网 题目描述 "挤需体验五番钟,里造会挨上这款游戏!" 怎么可能嘛!当我是傻子吗 ...
- day29 进程
1..操作系统知识 顾名思义,进程即正在执行的一个过程.进程是对正在运行程序的一个抽象. 进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一.操作系统的 ...
- HTTP无状态协议
http://baike.baidu.com/view/4551466.htm HTTP协议是无状态协议. 无状态是指协议对于事务处理没有记忆能力.缺少状态意味着如果后续处理需要前面的信息,则它必须重 ...
- win10下Anaconda3在虚拟环境python_version=3.5.3 中配置pyspark
1. 序经过了一天的修炼,深深被恶心了,在虚拟环境中配置pyspark花式报错,由于本人实在是不想卸载3.6版的python,所以硬刚了一天,终于摸清了配置方法,并且配置成功,不抱怨了,开讲: 2. ...
- SpringBoot中使用Servlet
1.在入口Application类上加入注解@ServletComponentScan @SpringBootApplication @ServletComponentScan public clas ...