我遇到了一些與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。 –