Android 有权查看使用权限的应用
Android 大约 2054 字有权查看使用权限的应用
Android5.0
版本后获取栈顶应用的方法getRunningTask
方法被Google
给屏蔽掉了。
使用UsageStatsManage
r获取,但是这种获取方法需要用户在手机上赋予APP
权限才可以使用,就是在安全-高级-有权查看使用情况的应用。
- 权限
<uses-permission
android:name="android.permission.PACKAGE_USAGE_STATS"
tools:ignore="ProtectedPermissions" />
- 判断当前设备中有没有“有权查看使用权限的应用”这个选项
private boolean hasUsageAccessSettingsOption() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
PackageManager packageManager = getPackageManager();
Intent intent = new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS);
List<ResolveInfo> list = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
return list.size() > 0;
} else {
return false;
}
}
- 判断调用该设备中“有权查看使用权限的应用”这个选项的
APP
有没有打开
private boolean isUsageStatsServiceOpen() {
List<UsageStats> queryUsageStats = null;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) {
UsageStatsManager usageStatsManager = (UsageStatsManager) getSystemService(Context.USAGE_STATS_SERVICE);
queryUsageStats = usageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_BEST, 0, System.currentTimeMillis());
}
if (queryUsageStats == null || queryUsageStats.isEmpty()) {
return false;
}
return true;
}
startActivityForResult
打开“有权查看使用情况的应用”页面
private void startUsageAccessSettingsActivity() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Intent intent = new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS);
startActivityForResult(intent,100);
}
}
onActivityResult
再作判断
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 100) {
boolean serviceOpen = isUsageStatsServiceOpen();
if (!serviceOpen) {
Toast.makeText(getApplicationContext(), "请在设置界面开启", Toast.LENGTH_SHORT).show();
} else {
//TODO 已打开
}
}
}
阅读 5472 · 发布于 2019-04-13
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb扫描下方二维码关注公众号和小程序↓↓↓

昵称:
随便看看
换一批
-
网页文字不能复制解决方法阅读 2333
-
PostgreSQL 修改数据库拥有者阅读 2841
-
Java 并发编程之 ConcurrentSkipListMap阅读 1061
-
OpenResty 中使用 pgmoon 连接 PostgreSQL阅读 5403
-
Java FutureTask 源码解析阅读 1598
-
Java WebSocket The remote endpoint was in state [TEXT_FULL_WRITING] which is an invalid state for called method阅读 3069
-
设计模式之模板方法模式阅读 1912
-
MySQL 查看配置文件路径阅读 2512
-
JMeter 提取 JSON 字段用于下一个请求阅读 1133
-
Android 给按钮添加水波纹效果阅读 3825