私は最近アンドロイド6.0で開発を開始しました - ランタイム許可要求。Android 6.0:「shouldShowRequestPermissionRationale」が何回呼び出されるのですか?
shouldShowRequestPermissionRationale()
メソッドが呼び出される回数を知りたいと思っていました。ここで
は私のコードです:
@Override
protected void onResume() {
super.onResume();
if ((ContextCompat.checkSelfPermission(LaunchActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE)
== PackageManager.PERMISSION_GRANTED)){
dbOperation();
if (NetworkUtil.isServiceReachable(this)){
checkAppVersion();
} else {
startApplication();
}
} else {
if (!ActivityCompat.shouldShowRequestPermissionRationale(LaunchActivity.this,Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
showMessageOKCancel("You need to allow access to Storage/Media for storing your Records.",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
ActivityCompat.requestPermissions(LaunchActivity.this,new String[] {Manifest.permission.WRITE_EXTERNAL_STORAGE},
PermissionConstants.WRITE_EXTERNAL_STORAGE_PERMISSION);
}
});
return;
}
ActivityCompat.requestPermissions(LaunchActivity.this,new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},PermissionConstants.WRITE_EXTERNAL_STORAGE_PERMISSION);
return;
}
}
そして私はコールバックメソッド内:このシナリオでは
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
// super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode){
case PermissionConstants.WRITE_EXTERNAL_STORAGE_PERMISSION:{
if (grantResults.length>0 && grantResults[0]== PackageManager.PERMISSION_GRANTED){
dbOperation();
// Permission is granted Read and Write external storage.
if (NetworkUtil.isServiceReachable(this)){
checkAppVersion();
} else {
startApplication();
}
}else {
if (!ActivityCompat.shouldShowRequestPermissionRationale(LaunchActivity.this,Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
showMessageOKCancel("You need to allow access to Storage/Media for storing your Records.",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
ActivityCompat.requestPermissions(LaunchActivity.this,new String[] {Manifest.permission.WRITE_EXTERNAL_STORAGE},
PermissionConstants.WRITE_EXTERNAL_STORAGE_PERMISSION);
}
});
return;
}else {
ActivityCompat.requestPermissions(LaunchActivity.this,new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},PermissionConstants.WRITE_EXTERNAL_STORAGE_PERMISSION);
}
//break;
}
}
break;
default:super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
。ユーザーが選択せずに許可を拒否した場合、再度尋ねるとアンドロイドは要求許可ダイアログを2回表示してから無限ループに入ります。
私は、ユーザーが
don't ask again
チェックボックスを選択せずに複数回を要求拒否した場合に何が起こるかを知りたいと思いましたか?ユーザーが
don't ask again
チェックボックスをオンにしてリクエストを拒否するとどうなりますか?
shouldShowRequestPermissionRationale()
メソッドはこのシナリオで呼び出されますか?
はいの場合、何回ですか?
いいえなぜですか?
ご協力いただければ幸いです。
これは1回だけ呼び出されます。 –