onRequestPermissionsResult立即返回拒绝权限

问题描述 投票:5回答:2

我的Android应用需要请求位置服务权限。我这样做:

ActivityCompat.requestPermissions(this, new String[]{
                            Manifest.permission.ACCESS_COARSE_LOCATION},
                            REQUEST_CODE_ACCESS_COARSE_LOCATION);

但是在调用此函数后立即返回onRequestPermissionsResult,并且拒绝权限:

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

        }
    }
}

权限列在清单中:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COURSE_LOCATION"/>

我还清除了缓存,以防止用户提供的任何先前拒绝影响此。

我希望弹出一个对话框,要求用户授予或拒绝对位置服务的许可,但它没有显示。

android permissions
2个回答
6
投票

更改:

<uses-permission android:name="android.permission.ACCESS_COURSE_LOCATION"/>

至:

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>

许可是针对“粗略”位置数据(即,不是细粒度的),而不是“课程”位置数据(例如,正在举行某些大学课程的地方)。


0
投票
private int PERMISSIONS_REQUEST_ACCESS_COARSE_LOCATION = 100;  
private void checkPermission() {
     if (checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION)
             != PackageManager.PERMISSION_GRANTED) {
          requestPermissions(newString[{Manfest.permission.ACCESS_COARSE_LOCATION},
                  PERMISSIONS_REQUEST_ACCESS_COARSE_LOCATION);
      } else {
          doShowLocation();
      }
  }

  @Override
  public void onRequestPermissionsResult(int requestCode, String[] permissions,
          int[] grantResults) {
      if (requestCode == PERMISSIONS_REQUEST_ACCESS_COARSE_LOCATION
              && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
          showContacts();
     }
  }
© www.soinside.com 2019 - 2024. All rights reserved.