我的应用程序的targetSDKversion为21(不能超过21)。
它使用位置服务,但我已经能够测试以确保启用了系统级别位置权限,但在安装了6.0的设备上,您可以关闭应用程序级别位置权限。我还没能确定是否已启用此级别的权限。
我现在打电话给以下人员:
locationMode = Settings.Secure.getInt(activity.getContentResolver(),
Settings.Secure.LOCATION_MODE);
returnVal = (locationMode != Settings.Secure.LOCATION_MODE_OFF);
由于locationMode为3(即已启用),因此返回真值,即使应用程序级别的位置已被禁用。
我在网上发现的很多参考文献都使用API 21中没有的API调用(我们现在还不能这样做。)
任何人都可以给我一些我可以在新设备上查看的东西,看看是否启用了应用程序级别权限,但仍然可以使用targetSDKVersion 21进行此测试。我将测试Build.VERSION是在进行此测试之前,> = 23。或者这甚至可能吗?
答案 0 :(得分:0)
您可以使用它来查看应用程序级别权限是打开还是关闭。它还会根据API级别进行检查,因此可以安全地在所有设备上使用。
boolean hasApplicationLevelLocationPermission(Context context) {
return Build.VERSION.SDK_INT < Build.VERSION_CODES.M || ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED;
}