【发布时间】:2020-12-03 23:23:13
【问题描述】:
我正在创建一个需要检查运行时权限的库。我的运行时权限工作正常,并且可以毫无问题地理解用例。
但是,我想确认使用我们库的开发人员已将权限添加到他们的清单中。
该库是基于位置的库,开发人员可以在清单中输入ACCESS_FINE_LOCATION 或ACCESS_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+ 中还有其他方法可以做到这一点吗?
【问题讨论】:
-
你可以这样做 --- (int hasFineLocation = checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION); if (hasFineLocation == PackageManager.PERMISSION_GRANTED) { .... )
-
这种方法似乎与我列出的方法相同?
-
哦,是的,抱歉,它不适用于 Android 6.0
-
好的,如果你检查这个库 (EasyPermissions) github.com/googlesamples/easypermissions --- this (public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { ) 创建一个数组从清单请求的权限。所以它必须在 API 23 中通过代码实现。深入研究演示代码,看看它是如何完成的 --- 哈,我在你接受下面的答案之前写了这个 :))
-
谢谢你,但是 PackageInfo 有我需要的所有信息,只是不知道。
标签: android android-permissions