我对新的Android Marshmallow版本有疑问:
是否可以通过Intent或类似方式显示特定应用程序的权限屏幕?
可以使用以下代码显示应用程序设置 - 是否有直接打开权限屏幕的模拟解决方案?
startActivity(new Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS,
Uri.fromParts("package", getPackageName(), null)));
Run Code Online (Sandbox Code Playgroud)
我已经对此做过一些研究,但我无法找到合适的解决方案 - 我将非常感谢您的帮助!
我正在使用新的UsageStatsManagerAPI来获取 Android 5.0 Lollipop中的当前前台应用程序.要使用此API,用户必须在Settings->Security->Apps with usage access屏幕中启用该应用程序.
我使用此Intent将用户直接发送到此屏幕:
startActivity(new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS));
Run Code Online (Sandbox Code Playgroud)
现在,我想验证用户启用我的应用程序.我想这样做,就像我验证用户启用我的应用程序使用NotificationListenerService但我不知道什么是String键,如果它甚至存在.
Settings.Secure.getString(contentResolver, "enabled_notification_listeners");
// Tried Settings.ACTION_USAGE_ACCESS_SETTINGS as key but it returns null
第二种方法是查询使用情况统计信息并检查它是否返回结果(当应用程序未启用时返回一个空数组)并且它大部分时间都有效,但有时即使我的应用程序启用也会返回0结果.
UsageStatsManager mUsageStatsManager = (UsageStatsManager) context.getSystemService("usagestats");
long time = System.currentTimeMillis();
List stats = mUsageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_DAILY, time - 1000 * 10, time);
if (stats == null || stats.isEmpty()) {
// Usage access is not enabled
}
Run Code Online (Sandbox Code Playgroud)
有没有办法检查我的应用程序是否启用了使用权限?