Для Android 6 и выше, добавление разрешений в манифесте недостаточно, вы должны запросить разрешение во время выполнения. Например, для разрешения внешнего хранилища вы должны сделать это:
if (checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
// permission granted, you can write external storage
}
Если не предоставлено, вы должны запросить разрешение:
final int READ_STORAGE_PERMISSION_REQUEST_CODE = 1212;
ActivityCompat.requestPermissions((Activity) context, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
WRITE_EXTERNAL_STORAGE);
}
Для чтения с внешнего хранилища необходимо заменить WRITE_EXTERNAL_STORAGE
на READ_EXTERNAL_STORAGE
РЕДАКТИРОВАТЬ:
Переопределить onRequestPermissionsResult в вашей деятельности:
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] results) {
super.onRequestPermissionsResult(requestCode, permissions, results);
if(PackageManager.PERMISSION_GRANTED == grantResults[0]){
//The user accepted the permissions requests, you can do your stuffs here
}
}
Вы можете найти больше информации здесь