3

私はACCESS_FINE_LOCATIONのアクセス許可を要求しています。これは、ユーザーがこのアクセス許可を承認しない限り意味がないため、ユーザーがこれを拒否した場合、私はアクティビティを終了します。問題は、ユーザーが「再度質問しない」オプションを選択して要求を拒否すると、その状態をリセットして、ユーザーが自分の考えを変えた場合に、今後再度尋ねる方法がわかりません。事前に任意の助け「もう一度やり直してください」オプションを使わずに許可ダイアログを要求するにはどうすればよいですか?

private void loadLocPredictions() { 
    //ToDo clean the permission thingy up. 
    if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 

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

     return; 
    } 
// Do stuff... 
} 


@Override 
public void onRequestPermissionsResult(int requestCode, 
             String permissions[], int[] grantResults) { 
    switch (requestCode) { 
     case PERMISSIONS_REQUEST_FINE_LOCACTION: { 
      if (grantResults.length > 0 
        && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
       loadLocPredictions(); 
      } else { 
       finish(); 
      } 
      return; 
     } 
    } 
} 

enter image description here

enter image description here 感謝。私はおそらく、ここではなかなか些細なもの、あるいはただのコーヒーが欠けているでしょう。そのような場合は、私には下線を引いてください。

答えて

1

これはユーザーによって完全に制御されているため、意味があればコードでリセットすることはできません。

ユーザーがいずれかの

clear data (Settings > Apps > your app > Storage > Clear Data) 

または

uninstalling/re-install the app 
1

マシューの答えが正しいです。ありがとう。

誰にも役立つ場合:これは、ユーザーが権限を恒久的に拒否したときにGoogleマップとInstagramが行うことです。

enter image description here enter image description here

enter image description here

関連する問題