私はアンドロイドの権限にいくつかの問題があります。問題は、onResumeがonRequestPermissionsResultが呼び出されるたびに呼び出されるということです。なぜonResumeはonRequestPermissionsResultの後に呼び出されますか?
例:
@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に移動してみてください。 –