Подтвердить что ты не робот

Модель разрешения Android Marshmallow на OS 4.0 READ_EXTERNAL_STORAGE разрешение всегда не предоставляется

У меня возникла проблема при запуске моего приложения на Android OS 4.0 и запросе разрешения READ_EXTERNAL_STORAGE с помощью:

ActivityCompat.requestPermissions(ctx, requestedPermissions, requestCode);

Я всегда получаю обратный вызов

public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
        @NonNull int[] grantResults) { 

grantResults != PackageManager.PERMISSION_GRANTED

Проверка разрешения с помощью ActivityCompat.checkSelfPermission всегда возвращает permissionDenied.

Он хорошо работает на ОС 6.0, запрашивая разрешение с системным диалогом. Android OS 4.x исключает 4.0, разрешение всегда предоставляется. OS 4.0 другие разрешения (камера, календарь, контакт, телефон) ведут себя хорошо, кроме READ_EXTERNAL_STORAGE, вызывающих эту проблему.

Возможно, проблема с ОС?

4b9b3361

Ответ 1

Что ActivityCompat.requestPermissions() делает:

  • перейдите к реальному requestPermissions(), если вы находитесь на Android 6.0+ или

  • используйте PackageManager, чтобы узнать, сохраняете ли вы требуемые разрешения для более старых версий Android

Проблема с READ_EXTERNAL_STORAGE заключается в том, что она была добавлена ​​в API Level 16 (Android 4.1). Вы не можете держать его в старых версиях Android по той простой причине, что его не было.

Или:

  • Установите minSdkVersion на 16 или

  • Поставьте свою собственную логику для обработки этого случая, признав, что READ_EXTERNAL_STORAGE не имеет значения до уровня API 16