我遇到了一些与Android权限有关的问题。问题是每次onRequestPermissionsResult被调用时,即使用户已经说过“永远不会再问”,onResume也会被调用。为什么在onRequestPermissionsResult之后调用onResume?
一个例子:
@Override
public void onResume() {
super.onResume();
startLocationProvider();
}
private void startLocationProvider() {
if (!locationService.requestLocationPermission(this, 0)) {
return;
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
if (requestCode == 0) {
if (grantResults.length == 1 && grantResults[ 0 ] == PackageManager.PERMISSION_GRANTED) {
startLocationProvider();
}
}
它正常工作,直到用户选择“不再询问”和否认。我不知道为什么onResume被一次又一次地调用,尽管没有向用户显示对话框。
onResume在onRequestPermissionResult之后调用,以允许您的活动考虑用户选择(授予或拒绝的权限)并相应地执行代码。但现在真正的问题是,为什么当用户选中“永不再问”并拒绝一个许可时,onRequestPermissionsResult被无限期调用?如果你发现了什么,请让我知道! –
尝试将代码移出onResume并放入onStart。 –