Разрешение MANAGE_EXTERNAL_STORAGE

#android #flutter #google-play

Вопрос:

playstore пришлите мне эту новость

 We've detected that your app contains the requestLegacyExternalStorage flag in the manifest file of 1 or more of your app bundles or APKs.

Developers with apps on devices running Android 11  must use Scoped Storage to give users better access control over their device storage. To release your app on Android 11 or newer after May 5th, you must either:

Update your app to use more privacy friendly best practices, such as the Storage Access Framework or Media Store API
Update your app to declare the All files access (MANAGE_EXTERNAL_STORAGE) permission in the manifest file, and complete the All files access permission declaration in Play Console from May 5th
Remove the All files access permission from your app entirely.
For apps targeting Android 11, the requestLegacyExternalStorage flag will be ignored. You must use the All files access permission to retain broad access.

Apps requesting access to the All files access permission without a permitted use will be removed from Google Play, and you won't be able to publish updates.
 

Я не понимаю, что мне нужно делать…

Я использую плагин, позволяющий пользователю отображать картинку из своей галереи. Разрешение MANAGE_EXTERNAL_STORAGE отображается при первом запуске плагина пользователем.

Как я могу быть уверен, что мое приложение не будет удалено 5 мая

Редактировать: вот манифест единственного пакета, которому требуется разрешение на хранение в eternet, я не нашел RequestLegacyExternalStorage

 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="io.flutter.plugins.imagepicker">
   <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
   <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

    <application>
        <provider
            android:name="io.flutter.plugins.imagepicker.ImagePickerFileProvider"
            android:authorities="${applicationId}.flutter.image_provider"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/flutter_image_picker_file_paths"/>
        </provider>
    </application>
</manifest>
 

Спасибо

Комментарии:

1. support.google.com/googleplay/android-developer/answer/10467955

2. если я понимаю, мне оныл нужно добавить MANAGE_EXTERNAL_STORAGE»/> в мой манифест ? Мне это не совсем понятно ( плохой английский), и я просто хочу быть уверенным, что мое приложение не удалят

3. Вам не нужно УПРАВЛЯТЬ ВНЕШНИМ ХРАНИЛИЩЕМ для отображения изображений из галереи.

4. Я не понимаю, что мне действительно нужно сделать, Т_Т

5. Нет. Не требуется для ваших собственных файлов.

Ответ №1:

Если ваше приложение предназначено для Android 10 (уровень API 29) или ниже, вы можете временно отказаться от хранилища с областью действия в своем производственном приложении. Однако, если вы нацелены на Android 10, вам необходимо установить значение requestLegacyExternalStorage true в файле манифеста вашего приложения:

 <manifest ... >
  <!-- This attribute is "false" by default on apps targeting
       Android 10. -->
  <application android:requestLegacyExternalStorage="true" ... >
    ...
  </application>
</manifest>
 

Комментарии:

1. Отчасти это верно, потому что, если вы будете ориентироваться на 30-й уровень Api, этот requestLegacyExternalStorage больше не будет работать, и вам нужно реализовать решение с помощью SAF или MediaStore