内推
【长期有效】欢迎加入字节跳动我的团队:内推链接
Android 6.0以来对权限管理加强。
在5.0以下通过ActivityManager类的getRunningTasks()获取当前打开的所有应用程序 。
在5.0版本之后废弃了getRunningTasks()方法,意味着我们在5.0以后不能通过该方法获取正在运行的应用程序,google在5.0又提供类新的api,可以通过ActivityManager的getRunningAppProcesses()方法获取正在运行的应用程序 。
然后在5.1的版本发布后getRunningAppProcesses()已经获取不到正在运行的服务,在5.0版本google提供了一个UsageStatsManager类,通过这个类可以获取到应用程序的运行情况,该类的使用方法如下:
1.在AndroidManifest文件中添加权限:
uses-permission android:name=“android.permission.PACKAGE_USAGE_STATS”
2.启动授权页面,需要用户授权
Intent intent = new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS);
context.startActivity(intent);
调用相关代码获取正在运行的服务:
UsageStatsManager usm = (UsageStatsManager) context.getSystemService(Context.USAGE_STATS_SERVICE);
Calendar calendar = Calendar.getInstance();
long endTime = calendar.getTimeInMillis();
calendar.add(Calendar.Y

本文介绍了自Android 6.0以来如何获取栈顶Activity和应用使用情况,包括5.0后废弃`getRunningTasks()`方法,转而使用`getRunningAppProcesses()`和`UsageStatsManager`。同时提供了在AndroidManifest中添加权限和启动授权页面的方法。还提到了一个开源库AndroidProcesses,用于6.0及以下版本获取运行程序,并分享了一种获取栈顶元素的不完全准确方法。
最低0.47元/天 解锁文章
2万+

被折叠的 条评论
为什么被折叠?



