requestLegacyExternalStorage не работает в Android 11 — API 30

В неожиданном шаге Google только что выпущенный Первая бета-версия Android 11 раньше, чем ожидалось. В этом посте мы рассмотрим несколько ранних деталей и покажем, как устанавливать Android 11 прямо сейчас на вашем устройстве Google Pixel 2 через Pixel 4 XL.

ответа

Лучший ответ

Но теперь, когда я нацелен наSdkVersion 30, это больше не работает

Это верно. Android 11 (API 30+) requestLegacyExternalStorage=true ничего не делает, и вы больше не можете «отказаться». Он был доступен в Android 10, чтобы дать разработчикам переходный / льготный период для перехода на модель хранения с ограниченным объемом.

Вариант 1. Перенесите данные в свое приложение, по-прежнему ориентируясь на API 29, тогда, когда вы перенесете данные, совместимые с хранилищем с ограниченным объемом, вы сможете выпустить обновление, ориентированное на API 30 — #scoped-storage.

Это может иметь свои собственные проблемы, если пользователи пропускают эту версию и обновляются напрямую с предыдущей версии до последней, и вы застряли с неперенесенными данными, к которым вы не можете получить доступ.

Вариант 2. Похоже, что Google видит это очевидное предостережение и включил опцию preserveLegacyExternalStorage=true при настройке API 30, чтобы вы могли переносить данные. # preserveLegacyExternalStorage

В дальнейшем вы можете ссылаться на эту таблицу, чтобы решить, какую «структуру» хранения использовать в зависимости от варианта использования: https : //-storage

Существует вероятность того, что некоторые приложения просто не смогут успешно выполнить миграцию, в зависимости от того, как они взаимодействовали с File api, поскольку решение Google не будет охватывать все текущие сценарии использования, и может не быть пути миграции.

Читайте также:  LG QNED против Samsung Neo QLED. Что выбрать в 2021 году?

Например, пару лет назад я выпустил приложение, которое позволяло пользователям обновлять обложки альбомов с помощью MediaStore и ContentResolver для обновления данных для изображения обложки альбома — они хранились в общем хранилище. При просмотре исходного кода Android 10+ aosp MediaProvider кажется, что приложения, которые раньше использовали MediaStore для обновления обложки альбомов, чтобы указать на файл данных, больше не работают просто потому, что MediaProvider внутренне создает свои собственные изображения в скрытой папке .thumbnails, просматривая файлы mp3 и используя MediaExtractor, и никогда не ссылается на ContentValues, которые были вставлены для ссылки на изображения. Таким образом, даже если вы можете обновить иллюстрацию самостоятельно, запросите ее в MediaStore и увидите ее, другие приложения должны использовать ContentResolver#loadThumbnail в api 29+, который не ссылается на ваши обновленные значения и либо лениво создает иллюстрацию , или выбирает уже созданный файл в папке .thumbnails. Очевидно, что ничего из этого не задокументировано, и я получил массовую реакцию на свое приложение с отрицательными отзывами, но эти изменения были критическими изменениями и полностью вышли из-под моего контроля, и заставили меня просмотреть исходный код AOSP, чтобы обнаружить, что Android фундаментально изменил поведение.

(Это не была напыщенная речь, а пример того, как эти изменения не предлагали пути миграции из-за фундаментального недокументированного поведения AOSP).

Mark Keen 11 Авг 2020 в 19:40

Как указано в есть некоторые изменения относительно хранилища на Android 11:

  • Устройства Android 10
    • requestLegacyExternalStorage будет продолжать работать независимо от целевого SDK
  • Устройства Android 11
    • новая установка, нацеленная на SDK 29: значение requestLegacyExternalStorage соблюдается
    • новая установка с таргетингом на SDK 30: requestLegacyExternalStorage всегда равно false
    • обновление с таргетинга sdk 29 на 30: если preserveLegacyExternalStorage установлено, тогда requestLegacyExternalStorage равно true (это чистый случай миграции, и это состояние не будет сохранено, если пользователь удалит / переустановит приложение)
Читайте также:  PS5 vs PS5 Digital: Какую версию лучше купить?

На этом этапе вы в значительной степени вынуждены реализовать хранилище с ограниченным доступом. Если вы не готовы к миграции, просто продолжайте нацеливать sdk 29, поскольку нет способа принудительно использовать устаревшее хранилище на устройствах Android 11 с целевым sdk 30.

1 Pawel 11 Авг 2020 в 19:45

Новые API для SDK

В Android 11 добавлены новые API (Application Programming Interface), что позволит разработчикам внедрить дополнительные функции в приложения.

Отключение звука и вибрации уведомлений

Новые API для SDK

API камеры setCameraAudioRestriction разрешает приложениям отключать звук и вибрацию входящих уведомлений пока запущено приложение камеры. Функция активируется пользователем по желанию в настройках приложения камеры, в разделе системных настроек. Благодаря этому в процессе съемки видео на запись не попадет звук мелодии или вибрации внезапного входящего уведомления.

Интерактивная область экрана

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

Neural Network API 1.3

Новые API для SDK

В Android 11 разработчики получат расширение существующих инструментов для развития машинного обучения. В частности добавлены новые операции и элементы управления, что помогут в оптимизации существующих и будущих разработок.

Устранение проблем со Spotify на Android 11

Одно из самых установленных и используемых музыкальных приложений в мире — Spotify, у которого много проблемы с приходом Android 11 . Когда мы начинаем играть, кажется, что ошибки нет, но как только мы блокируем мобильный или выходим из приложения, музыка останавливается. Эта ошибка Spotify напрямую связана с Android 11, и сама Spotify это подтвердила.

Хотя обе компании знают об этой проблеме, они не могут ее исправить, что иногда можно решить с помощью следующих шагов:

  • Выберите «Настройки»> «Приложения»> «Spotify».
  • Очистите кеш, данные и принудительно закройте приложение.
  • После установки приложения.
  • Теперь мы заходим в Google Play и устанавливаем его.

Если это не сработает, вариант, который, кажется, имел наибольший успех, находится в Spotify. Чтобы использовать его, нам нужно будет войти в Spotify> Настройки и найти опцию «Состояние излучения устройства». Это позволит другим приложениям узнать о воспроизведении и, похоже, позволит избежать закрытия.

Обновление Android на OnePlus

OnePlus всегда быстро выпускал обновления, и тенденция сохранится с Android 11. Компания выпустила открытую бета-версию Oxygen OS 11 на базе Android 11 для OnePlus 8 и 8 Pro в первый же день. Пока неизвестно, когда будет выпущена стабильная версия, но, судя по предыдущим годам, мы ожидаем, что она станет доступной к концу месяца или в начале октября.

Читайте также:  Как обновить Виндовс 10 до последней версии?

Хотя это и не подтверждено, мы ожидаем, что все телефоны OnePlus от OnePlus 6 получат последнюю версию Android. После OnePlus 8 следующие телефоны, которые могут получить обновление, скорее всего, это OnePlus Nord и серия OnePlus 7T.

Обновление Android на OnePlus

Открытая бета-версия Android 11 доступна для загрузки для OnePlus 8 и 8 Pro – скачайте ее здесь.

Ожидаемая дата выхода Android 11 для OnePlus: сентябрь/октябрь 2020 года

Современная техника - портал Миникод