以编程方式确定Android应用程序是否具有系统级权限

时间:2015-06-28 12:11:51

标签: android permissions

我正在构建一个应用程序,用于收集和显示使用android.app.usage.UsageStatsManager系统服务的详细使用情况统计信息(科学!)。此服务需要系统级权限android.permission.PACKAGE_USAGE_STATS

用户需要在“设置”下明确授予系统级权限。当应用程序启动时,我想以编程方式确定该应用程序是否已被授予此权限。如果没有,我想显示如下提示:

Permission prompt

要检查应用是否具有所需权限,我通常会执行以下操作:

if (PackageManager.PERMISSION_DENIED == checkCallingOrSelfPermission("android.permission.PACKAGE_USAGE_STATS")) {
    // display prompt
}

// keep going

提示会启动Settings.ACTION_USAGE_ACCESS_SETTINGS意图:

final Intent intent = new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS);
startActivity(intent);

App clearly has permission

但是,即使应用程序已获得此权限,对checkCallingOrSelfPermission(String)的调用也会一直返回PackageManager.PERMISSION_DENIED(a.k.a -1)。

是否有检查系统级权限的特殊方法,或者我是否在做其他错误的操作?

0 个答案:

没有答案