Политика миграции для доступа к хранилищу с android 10 на android 11

Проблема: до Android 10 мы могли использовать прямой доступ к файлам. В Android 10 Google подтолкнул нас к использованию доступа SAF и Uri. В Android 11 Google говорит: «Хорошо, вы снова можете получить доступ к (некоторым) необработанным путям к файлам». Создание обратно совместимого приложения - это немного беспорядок. Что я сделал между Android 9 и Android 10, так это изменил доступ к файлам с прямого доступа к SAF. Поскольку моему приложению нужен доступ ко всем файлам, я просто использовал ACTION_OPEN_DOCUMENT_TREE для корневого каталога. Однако с Android 11 это больше не работает. Есть новое разрешение MANAGE_EXTERNAL_STORAGE, но я уверен, что Google ограничит его использование каким-то файловым менеджером, поэтому это не вариант. Резюме: есть ли какой-либо совместимый API для использования приложения в нескольких версиях Android? Какая стратегия лучше всего в этом случае?


person greywolf82    schedule 29.05.2020    source источник
comment
Почему бы просто не проверить версию системы и не сделать соответственно? У вас есть код для Android 10-. Я бы оставил это, напишу новую логику для Android 11. + один оператор if, и готово. Я бы придерживался своей оболочки для работы с файлами - гораздо больше свободы. Не знаю про боевое API для файлов. Это действительно меняется с каждой версией, и Google оставляет вас решать это самостоятельно.   -  person RevakoOA    schedule 29.05.2020
comment
Не так просто, как я уже сказал, я перенес весь свой код из файлов в uri, чтобы он был совместим с Android 10 и был обратно совместим с предыдущими версиями. Теперь у меня проблема, что доступ Uri через Saf больше не может быть использован, действительно беспорядок.   -  person greywolf82    schedule 29.05.2020
comment
Взгляните на мой ответ здесь - stackoverflow.com/a/60917774/5550161   -  person HB.    schedule 03.06.2020
comment
К сожалению, невозможно установить для атрибута legacy значение true, если вы уже опубликовали приложение с false: /   -  person greywolf82    schedule 03.06.2020
comment
@ greywolf82 Почему вы не можете добавить его в следующем обновлении?   -  person HB.    schedule 04.06.2020
comment
Политика Google, вы не можете вернуться с ложного на истинное, только с истинного на ложное   -  person greywolf82    schedule 04.06.2020
comment
Since my app needs all file access I just used the ACTION_OPEN_DOCUMENT_TREE to the root directory. При обновлении вы все равно можете выбрать свою папку, если это подкаталог корневого каталога. Также графический интерфейс позволяет пользователю создавать новые каталоги в корне внешнего хранилища.   -  person blackapps    schedule 27.08.2020
comment
@blackapps Определенная подпапка не является вариантом   -  person greywolf82    schedule 27.08.2020
comment
Почему нет? Что бы вы сделали в корне? migrated all my code from files to uri ? Понятия не имею, что вы имеете в виду под этим. that Uri access via Saf can't be used anymore,? Понятия не имею, что вы имеете в виду.   -  person blackapps    schedule 27.08.2020
comment
With Android 10 Google pushed us to use SAF and Uri access. Я знаю SAF, но что вы имеете в виду под доступом Uri? И вы не забываете о MediaStore?   -  person blackapps    schedule 27.08.2020