как использовать expo-image-picker с хранилищем android 11?

Я использовал expo-image-picker в моем собственном приложении с управляемой реакцией expo. Он работал нормально. Мне просто нужно было использовать камеру, чтобы сделать новую фотографию и выбрать фотографию из галереи для моего приложения. Для этого я использовал следующие API

ImagePicker.requestMediaLibraryPermissionsAsync()
ImagePicker.requestCameraPermissionsAsync()

ImagePicker.launchImageLibraryAsync()
ImagePicker.launchCameraAsync()

для Android мой массив разрешений в файле app.json был следующим

"permissions": [
        "CAMERA",
        "CAMERA_ROLL",
        "READ_EXTERNAL_STORAGE",
        "WRITE_EXTERNAL_STORAGE",
        "LOCATION"
      ]

Теперь гугл отправил мне это письмо

Мы обнаружили, что ваше приложение содержит флаг requestLegacyExternalStorage в файле манифеста одного или нескольких ваших пакетов App Bundle или APK.

Разработчики приложений на устройствах под управлением Android 11+ должны использовать Scoped Storage, чтобы предоставить пользователям лучший контроль доступа к хранилищу своего устройства. Чтобы выпустить приложение на Android 11 или новее после 5 мая, вам необходимо:

Обновите свое приложение, чтобы использовать передовые методы обеспечения конфиденциальности, такие как Storage Access Framework или Media Store API. Обновите свое приложение, чтобы объявить разрешение на доступ ко всем файлам (MANAGE_EXTERNAL_STORAGE) в файле манифеста, и заполните объявление разрешения на доступ ко всем файлам в Play Console с 5 мая Полностью удалите из приложения разрешение на доступ ко всем файлам. Для приложений, ориентированных на Android 11, флаг requestLegacyExternalStorage будет проигнорирован. Вы должны использовать разрешение на доступ ко всем файлам, чтобы сохранить широкий доступ.

Приложения, запрашивающие доступ ко всем файлам без разрешения на использование, будут удалены из Google Play, и вы не сможете публиковать обновления.

Кто-нибудь может мне помочь, как это исправить? Мне нужно что-то изменить в моем API средства выбора изображений? Или мне нужно что-то добавить / удалить из моего массива разрешений? Пожалуйста, помогите мне ... Пожалуйста ...


person Habibur Rahman    schedule 24.04.2021    source источник
comment
Вы уверены, что это средство выбора изображений вызывает проблемы? А потом .. зачем вы используете такую ​​подборку изображений, если есть ACTION_GET_CONTENT или ACTION_OPEN_DOCUMENT?   -  person blackapps    schedule 24.04.2021
comment
We've detected that your app contains the requestLegacyExternalStorage flag in the manifest file Хорошо. Так что это будет проблемой. А потом читаем the requestLegacyExternalStorage flag will be ignored. хорошо .. тогда в чем проблема?   -  person blackapps    schedule 24.04.2021
comment
@blackapps, не могли бы вы поделиться любым рабочим фрагментом, показывающим использование ACTION_GET_CONTENT и ACTION_OPEN_DOCUMENT?   -  person Habibur Rahman    schedule 26.04.2021
comment
Вам лучше принять меры самостоятельно, так как в Интернете, а также на этом сайте полно примеров использования.   -  person blackapps    schedule 26.04.2021
comment
О ... отлично ... спасибо ... вы очень помогли ... @blackapps   -  person Habibur Rahman    schedule 26.04.2021
comment
Что ж ... github.com/expo/expo/issues/12603 Это лучшее, что я получил в ИНТЕРНЕТЕ до сих пор. :)   -  person Habibur Rahman    schedule 27.04.2021
comment
Там говорят о For SDK 40 . Очень забавно.   -  person blackapps    schedule 27.04.2021


Ответы (1)


Есть решение. На самом деле с моим кодом проблем нет. Это гугл меня запутал. Вот подробности https://github.com/expo/expo/issues/12603#issuecomment-827600227

person Habibur Rahman    schedule 12.05.2021