関数inRequestPermissionsResultのダイアログビルダーで[はい]ボタンを押した後に私のコードが押されてしまいました。私がyes.Alsoを押すと、いいえ、私のアプリの終了を押した後、私は再びそれを開いたとき、それはあなたがそうで任意のものを設定しhaventはので、それはノークリックした後、再びポップアップダイアログビルダーに関数inRequestPermissionsResultのダイアログビルダーでyesボタンを押した後にinfinteループでスタックしてしまいました
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull final int[] grantResults) {
switch (requestCode) {
case 0: {
boolean anyPermissionDenied = false;
boolean neverAskAgainSelected = false;
for (int i = 0; i < grantResults.length; i++) {
if (grantResults[i] != PackageManager.PERMISSION_GRANTED) {
anyPermissionDenied = true;
}
}
if (!anyPermissionDenied)
{
getConfigFromServer();
} else {
String message = "";
if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.ACCESS_FINE_LOCATION) ||
ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)
|| ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
requestPermission();
}
else
{
message = "You have to give all permission to continue";
}
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
alertDialogBuilder.setMessage(message);
alertDialogBuilder.setPositiveButton("yes",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
requestPermission();
}
});
alertDialogBuilder.setNegativeButton("No",new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
});
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
}
}
break;
default:
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
要求許可のためのコード
void requestPermission() {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED
|| ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED
|| ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.CAMERA,
Manifest.permission.ACCESS_FINE_LOCATION}, 0);
} else {
getConfigFromServer();
//navigateToNextActivity();
}
}
私は再び質問しないで入力するとアプリケーションがクラッシュする –
私の状況はどんな状況でもクラッシュしていません。エラーログをここに追加してください。 –
E/AndroidRuntime:致命的な例外:メインプロセス:ops.hungerbox.com.hungerboxops、PID:11348 java.lang.ArrayIndexOutOfBoundsException:length = 3;インデックス= 3 –