My app is not responding if I click on deny read_external_storage dialog pop-up.
Вот мой код:
public Boolean isStoragePermissionGranted() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (checkSelfPermission(android.Manifest.permission.READ_EXTERNAL_STORAGE)
== PackageManager.PERMISSION_GRANTED) {
Log.v(TAG,"Permission is granted");
return true;
} else {
Log.v(TAG,"Permission is revoked");
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 1);
return false;
}
}
else { //permission is automatically granted on sdk<23 upon installation
Log.v(TAG,"Permission is granted");
return true;
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if(grantResults[0]== PackageManager.PERMISSION_GRANTED){
Log.v(TAG,"Permission: "+permissions[0]+ "was "+grantResults[0]);
//resume tasks needing this permission
return;
}
}
// Вот основное занятие
public void onCreate (Bundle icicle){
super.onCreate(icicle);
isStoragePermissionGranted();
Boolean isAnswered = true;
while(isAnswered){
if (ActivityCompat.checkSelfPermission(getApplication(), Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED ) {
Log.d("isanswered", String.valueOf(isAnswered));
// finishAffinity();
}
else{
isAnswered = false;
Log.d("isanswered", String.valueOf(isAnswered));
}
}
if( checkSelfPermission(android.Manifest.permission.READ_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED ){
finishAffinity();
}
если я не использую цикл while, то происходит сбой приложения. Я хочу выйти из приложения, если разрешение отклонено. Как правильно обрабатывать разрешение, в котором отказано?
Есть ли способ проверить разрешение внутри основной деятельности?