Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 访问API 23中的用户位置会引发安全异常,尽管授予了权限_Android_Android 6.0 Marshmallow_Android Permissions_Android Location - Fatal编程技术网

Android 访问API 23中的用户位置会引发安全异常,尽管授予了权限

Android 访问API 23中的用户位置会引发安全异常,尽管授予了权限,android,android-6.0-marshmallow,android-permissions,android-location,Android,Android 6.0 Marshmallow,Android Permissions,Android Location,在API 23中尝试获取位置更新时,我不断遇到安全异常。系统似乎认为我没有适当的权限: java.lang.SecurityException: Client must have ACCESS_COARSE_LOCATION or ACCESS_FINE_LOCATION permission to perform any location operations. 但是,如果我在调用位置服务之前检查用户位置权限,并且精细位置和粗略位置都返回已授予的权限,\u: private boolean

在API 23中尝试获取位置更新时,我不断遇到安全异常。系统似乎认为我没有适当的权限:

java.lang.SecurityException: Client must have ACCESS_COARSE_LOCATION or ACCESS_FINE_LOCATION permission to perform any location operations.
但是,如果我在调用位置服务之前检查用户位置权限,并且精细位置和粗略位置都返回已授予的权限,\u:

 private boolean locationPermissionsGranted(Context context){
    int fineLocation = ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION);
    int coarseLocation = ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_COARSE_LOCATION);
    return ((fineLocation == PackageManager.PERMISSION_GRANTED) || (coarseLocation == PackageManager.PERMISSION_GRANTED));
}
我在运行时通过系统对话框提示用户授予权限来设置权限:

ActivityCompat.requestPermissions(
            this,
            new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION},
            Permissions.ACCESS_FINE_LOCATION.getPermission());
在授予权限后,我会得到异常,因为我对位置是否有访问权限的布尔检查返回true,但系统不允许我访问位置。我正在一个OnePlus上测试这个,我开始想也许隐私保护会搞糟一些事情,但我已经设置了它,允许访问位置,所以我不确定为什么这个错误会持续

从Android 6.0(API级别23)开始,用户在应用程序运行时授予应用程序权限,而不是在安装应用程序时。这种方法简化了应用程序安装过程,因为用户在安装或更新应用程序时不需要授予权限


您需要在应用程序运行时请求访问位置权限并处理请求响应

什么是您的
targetSdkVersion
?minSdkVersion 11 targetSdkVersion 23是否已将适当的
元素添加到AndroidManifest.xml中?就我而言,这听起来很愚蠢,但我看到人们越过了显而易见的事实,撕毁了一切。请不要生气。你是否对你的项目进行了干净的构建?请阅读帖子。我在运行时请求并处理响应。正在授予权限。问题是,即使检查权限返回已授予的权限,我仍将获得安全许可。