ЧТЕНИЕ или ЗАПИСЬ ВНЕШНЕГО ХРАНИЛИЩА: ПОЧЕМУ НЕТ ОШИБКИ?

Да, я не получаю ошибку.

Я определил разрешения в AndroidManifest.xml.

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

Я собираю изображения из внешнего хранилища, используя Android-Image-Cropper, и все работает нормально. .

Я сбит с толку, потому что он работает, даже если я не написал никакого кода, чтобы получить разрешение на выполнение во внешнем хранилище.

Информация о протестированном устройстве: - Samsung J8, ОС - Andorid 9 Pie, - Эмулятор Nexus 5X = ОС - Andorid 9 Pie

Есть ли изменения в политике разрешений? Почему это работает?


person Pratik Butani    schedule 24.07.2019    source источник
comment
на каком устройстве/эмуляторе вы тестируете свое приложение?   -  person Umair    schedule 24.07.2019
comment
1. Samsung J8, ОС — Andorid 9 Pie, 2. Эмулятор Nexus 5X = ОС — Andorid 9 Pie   -  person Pratik Butani    schedule 24.07.2019
comment
WRITE_EXTERNAL_STORAGE не требуется, потому что он ничего не записывает во внешнее хранилище. В основном он использует getCacheDir для записи, я думаю. Для остальных вы можете проверить исходный код этой библиотеки.   -  person ADM    schedule 24.07.2019
comment
посмотрите на проблему с библиотекой: github.com/ArthurHub/Android-Image-Cropper/ вопросы/421   -  person Arash GM    schedule 24.07.2019
comment
То есть вы хотите сказать, что папка кеша не требует никаких разрешений? @АДМ   -  person Pratik Butani    schedule 24.07.2019
comment
Да это не AFAIK ..   -  person ADM    schedule 24.07.2019


Ответы (1)


Здесь Я нашел ответ в документация:

Начиная с Android 4.4 (API level 19), для чтения или записи файлов в частном каталоге внешнего хранилища вашего приложения, доступ к которому осуществляется с помощью getExternalFilesDir(), не требуются разрешения READ_EXTERNAL_STORAGE или WRITE_EXTERNAL_STORAGE.

Это не требуется для моего проекта, потому что мой минимальный уровень API - 19.

Поэтому, если ваше приложение поддерживает Android 4.3 (API level 18) и ниже, и вы хотите получить доступ только к частному каталогу внешнего хранилища, вы должны объявить, что разрешение запрашивается только в более ранних версиях Android, добавив атрибут maxSdkVersion:

<manifest ...>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
                     android:maxSdkVersion="18" />
    ...
</manifest>

Спасибо.

person Pratik Butani    schedule 24.07.2019