码迷,mamicode.com
首页 > 移动开发 > 详细

getRunningTasks接口在Android LL上的使用

时间:2015-05-13 23:20:48      阅读:360      评论:0      收藏:0      [点我收藏+]

标签:android   api   

 

最近在做的一个小项目中,需要实时获取Activity栈顶以及它所属的App Process

根据之前的了解,知道Android API有提供一个接口

 

public List<ActivityManager.RunningTaskInfo> getRunningTasks (int maxNum)

 

可以得到系统当前正在运行的Task列表,用maxNum限制要获取的数量(最近使用的最先取出)。

 

实际运行程序时,发现并不能实时获取当前的Activity栈顶。

(使用的是Android L的机器进行调试)

 

原因:

Android L开始,Google开始对getRunningTasks接口进行限制使用。

默认情况下,普通的三方应用(非系统应用不能使用该接口)

 

之前,使用该接口需要 android.permission.GET_TASKS

即使是自己开发的普通应用,只要声明该权限,即可以使用getRunningTasks接口。

但从L开始,这种方式以及废弃。

应用要使用该接口必须声明权限android.permission.REAL_GET_TASKS

而这个权限是不对三方应用开放的。(在Manifest里申请了也没有作用)

系统应用(有系统签名)可以调用该权限。

 

同时,查阅了ActivityManager里该接口的源码,对于普通的三方应用,应该只是允许eng版本的debug使用,而且google不建议在应用的核心逻辑里使用该接口。

 

Android LL版本上使用该接口出现问题的话,可以参考以上内容。

Google这样做的原因还是出于安全考虑,对普通应用开发该接口可能会造成用户的隐私泄露。

 

getRunningTasks接口在Android LL上的使用

标签:android   api   

原文地址:http://blog.csdn.net/hyhyl1990/article/details/45700447

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!