从 API 21 开始,ANDROID 废弃了 ActivityManager.getRecentTasks() 方法,所以要判断手机当前是否处于桌面,只能别寻它途。
它就是 API 21 新增的接口 android.app.usage 。这个API用于统计手机上所有APP的使用情况。
如何使用
- 通过下面这段代码,可以获得最近一分钟内使用过的APP的统计数据
-
将这些数据按 “最后使用时间” 降序排列后,第一个元素即为当前在最顶层的APP
(然后将其与系统中的 Launcher App对比,即可确定手机是否处于桌面)
-
检查当前APP是否已经开启了“统计APP使用情况权限”(用于弹框,提示用户去设置中开启权限)
注意事项
执行上述代码需要特殊的权限
<uses-permission android:name="android.permission.PACKAGE_USAGE_STATS" />
声明了权限还不够,还需要在手机的 “设置 - 安全 - 有权查看使用情况的应用” 中,将自己的APP所在项开启。
自动跳转到权限设置界面:
startActivity(new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS));