Api 23 ile gelen "runtime permission" olayı hataya sebebiyet verebilir ama logları görmeden kesin birşey söylemek zor,
adb ile logları toplayıp buraya eklersen daha iyi olur hatayı görmek açısından,
runtime permission hatası ise aşağıdaki metodları kullan:
private static final int PERMISSION_REQUEST_CODE = 1;
// ANA kullanacağın fonksiyon bu
public void islemiYap() {
if (checkPermission()) {
// invoke etmek istediğin fonksiyonu burda çağır
} else {
requestPermission();
}
}
private boolean checkPermission() {
int result = ContextCompat.checkSelfPermission(Settings.this, android.Manifest.permission.READ_EXTERNAL_STORAGE);
return result == PackageManager.PERMISSION_GRANTED;
}
private void requestPermission() {
if (ActivityCompat.shouldShowRequestPermissionRationale(Settings.this, android.Manifest.permission.READ_EXTERNAL_STORAGE)) {
Toast.makeText(Settings.this, "Read External Storage permission allows us to do store log files. Please allow this permission in App Settings.", Toast.LENGTH_LONG).show();
} else {
ActivityCompat.requestPermissions(Settings.this, new String[]{android.Manifest.permission.READ_EXTERNAL_STORAGE}, PERMISSION_REQUEST_CODE);
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
switch (requestCode) {
case PERMISSION_REQUEST_CODE:
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Log.e("value", "Permission Granted, Now you can use local drive .");
// izin alındı şimdi yapmak istediğin işlemi yapabilirsin
// invoke etmek istediğin fonksiyonu burda çağır
} else {
Log.e("value", "Permission Denied, You cannot use local drive .");
}
break;
}
}
+ Manifest'e eski usül READ_EXT... permission'ı eklemeyi unutma