android - 使用 Android 23+ 确定 list 中是否存在权限

标签 android android-permissions

我正在创建一个需要检查运行时权限的库。我的运行时权限运行良好,并且可以毫无问题地理解用例。

不过,我想确认使用我们库的开发人员已将权限添加到他们的 list 中。

该库是一个基于位置的库,开发人员可以在 list 中输入 ACCESS_FINE_LOCATIONACCESS_COARSE_LOCATION,我需要能够确定他们使用了哪些(或两者)在运行时。

我虽然使用包管理器来检查权限是可行的,但是这似乎总是失败:

PackageManager pm = getPackageManager();
int granted = pm.checkPermission(
                      Manifest.permission.ACCESS_COARSE_LOCATION, 
                      getPackageName() );
if (granted == PackageManager.PERMISSION_GRANTED)
{
    // Use coarse for runtime requests
}
// granted is always PackageManager.PERMISSION_DENIED 

在 Android v23+ 中还有其他方法可以做到这一点吗?

最佳答案

即兴发挥,取回 PackageInfo通过 PackageManager and getPackageInfo(getPackageName(), PackageManager.GET_PERMISSIONS) .然后,看the requestedPermissions arrayPackageInfo对于所有 <uses-permission> -请求权限。

关于android - 使用 Android 23+ 确定 list 中是否存在权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39401699/

相关文章:

java - 捕获安卓屏幕并以编程方式创建视频

android - 代码风格/正确结构android

android - 运行时权限异常

Android onRequestPermissionsResult 不适用于我的 fragment

android - 如何从 Sqlite 获取最后一条记录?

Android - IllegalStateException : map has zero size

android - Android Nexus 7 上的 StageVideo 显示黑色方 block

android - MY_PERMISSONS_REQUEST 未定义?

java - 在 Android 上将大文件从 SD 卡复制到内部存储器

android - java.lang.SecurityException : Permission Denial: opening provider 错误