调试时授予位置权限,但在android系统上未授予

时间:2017-01-16 03:13:32

标签: android android-permissions

这是检查ACCESS_FINE_LOCATION权限的调试结果,这意味着已为ACCESS_FINE_LOCATION授予了权限

This is the debugging result for the check of the ACCESS_FINE_LOCATION permission, this means that the permission has been granted for the ACCESS_FINE_LOCATION

现在当我尝试使用位置服务时,我没有得到任何结果,所以我在调试后检查了android系统本身,并发现在调试时已经授予了该位置的权限

the permission has not been granted to the location

可能是什么问题?

4 个答案:

答案 0 :(得分:0)

我在尝试向现有应用添加运行时权限时无法获得同样的问题(无法让请求对话框显示...)。代码看起来不错但无法在真实设备上获得对话框。

我的问题是我的目标SDK低于Android 6.0(API级别23)。您需要至少定位API级别23才能使用运行时权限(在this article的第一部分中指定)。

不确定您的问题是否相同,但我希望它可以提供帮助:)

答案 1 :(得分:0)

使用此库https://github.com/ParkSangGwon/TedPermission

非常有用!!!

答案 2 :(得分:0)

对于Android Version >= M,您必须同时要求Permission - ACCESS_FINE_LOCATION and ACCESS_COARSE_LOCATION获取位置服务。一般Runtime Permission询问代码:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {

    if (ActivityCompat.checkSelfPermission
            (this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED
            &&
            ActivityCompat.checkSelfPermission
                    (this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED)
    {
        requestPermissions(new String[]{
                Manifest.permission.ACCESS_COARSE_LOCATION,
                Manifest.permission.ACCESS_FINE_LOCATION
        }, 1); // 1 is requestCode
        return;

    }
    else{
         //permission already granted enable your location here
    }
}

处理请求:

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

    case 1:
        if (grantResults[0] != PackageManager.PERMISSION_GRANTED){
            Toast.makeText(your_activity.this,"PERMISSION_DENIED",Toast.LENGTH_SHORT).show();
          }
          else {
                Toast.makeText(your_activity.this,"PERMISSION_GRANTED",Toast.LENGTH_SHORT).show();
               // permission granted do something
          }
       break;
   }
}

答案 3 :(得分:0)

我的问题已经解决但是我仍然不知道问题出在哪里,如果有人知道请让我知道,解决方法是我使用了一个名为https://github.com/hotchemi/PermissionsDispatcher的库,它成功请求了权限,它还使用简化代码的注释。