Android 5.1.1上未自动授予访问位置

Android 5.1.1上未自动授予访问位置,android,android-permissions,android-5.1.1-lollipop,Android,Android Permissions,Android 5.1.1 Lollipop,我正在检查应用程序是否因为Android m而获得了访问\u粗略\u位置权限。据我所知,版本低于Marshmallow的设备在安装时会自动授予所有权限 但是,如果我添加这段代码,它将在Android 5.1.1上返回false if (ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) 是因为我用于

我正在检查应用程序是否因为Android m而获得了
访问\u粗略\u位置
权限。据我所知,版本低于Marshmallow的设备在安装时会自动授予所有权限

但是,如果我添加这段代码,它将在Android 5.1.1上返回
false

if (ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED)

是因为我用于测试的设备完全禁用了所有应用程序的位置访问吗?

实际上,Android minimum sdk版本21-22即5.0不需要检查权限,但我们必须在不同的手机上测试我们的应用程序,例如minimum sdk版本23即棉花糖上。您需要在应用程序外部检查权限

在开始活动中编写以下代码

//requesting Permission
private void requestingPermission(){
    if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.ACCESS_NETWORK_STATE)){
        //Exaplian here why you need this permission
    }
    //Ask for the permission
    ActivityCompat.requestPermissions(this,new String[]{ 
            Manifest.permission.ACCESS_NETWORK_STATE, },STORAGE_PERMISSION_CODE);
}
现在添加另一个

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);

    //checking the request code of Permission request
    if (requestCode == STORAGE_PERMISSION_CODE){
        if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){//Toast.makeText(getApplicationContext(),"Permission Granted",Toast.LENGTH_SHORT).show();
        }else{
            Toast.makeText(getApplicationContext(),"Permission Denied",Toast.LENGTH_SHORT).show();
        }
    }
}
不要忘记在activity onCreate()方法中调用下面的方法

与此相反:

if (ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_COARSE_LOCATION)
 == PackageManager.PERMISSION_GRANTED)
使用以下命令:

if (ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION)
 == PackageManager.PERMISSION_GRANTED)

对于低于6.0的设备,如果您检查粗略位置,您将获得权限拒绝(-1)。

权限访问粗略位置是否在清单中,目标API是否在API 23或更高版本上?它在清单中,targetSdkVersion为25,minSdkVersion为15Hmm非常奇怪。我不知道没有更多的代码,但作为一项工作,如果(Build.VERSION.SDK_INT设备中得到解决谢谢您的响应,但我知道如何请求权限。我只是不明白为什么我没有在安卓5.1上自动授予权限。1@JakubGruber我已经说过,在安卓5.1.1上,我们不需要单独处理权限,它将自行处理。。但是在棉花糖上,我们必须告诉Android sdk我们将在我们的应用程序中使用xyz权限是的,但是我的手机上没有授予这个权限,我想找出原因。因为它应该be@JakubGruber请点击这个链接,他是正确的。5.1中的粗略位置表示默认情况下拒绝和不授予。你找到解决办法了吗
if (ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION)
 == PackageManager.PERMISSION_GRANTED)