我的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"/>
我还清除了缓存,以防止用户提供的任何先前拒绝对此产生影响。
我希望弹出一个对话框,要求用户授予或拒绝对位置服务的许可,但它不会显示。
答案 0 :(得分:6)
变化:
<uses-permission android:name="android.permission.ACCESS_COURSE_LOCATION"/>
为:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
许可适用于&#34;粗略&#34;位置数据(即,不是细粒度的),而不是&#34;当然&#34;位置数据(例如,某些大学班级被举办的地方)。
答案 1 :(得分: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();
}
}