Могу ли я сделать общую папку в Android для нескольких пользователей? - PullRequest
1 голос
/ 28 апреля 2020

В Android 29 я хочу иметь возможность обмениваться большими файлами между несколькими Android пользователями. Можно ли создать общий каталог, к которому смогут получить доступ пользователи? И можно ли сделать этот каталог доступным для просмотра приложениями, которые установили пользователи?

Или, может быть, у одного пользователя есть исходный каталог и файлы, а у других пользователей есть каталог mount / symlinked?

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

Я перемещался по файловой системе Android и пытался разобраться: /mnt/user/0, /storage/emulated/0 и /data/media/0/ но я не вижу способа сделать символическую ссылку в домашнем каталоге другого пользователя на папку в этих каталогах.

1 Ответ

1 голос
/ 28 апреля 2020

Каталог, который вы ищете, на самом деле /storage/emulated/0 в вашем случае. Я имею в виду, что единственным каталогом, который может использоваться / доступен всем другим приложениям, является внешнее хранилище.

Однако, начиная с Android Q (targetSDKVersion 29), разрешение на внешнее хранение имеет довольно много изменений.

Я бы рекомендовал изучить документацию из getExternalStoragePublicDirectory, если у вас версия Android, которая меньше Android Q.

Для Android Q и выше, я бы рекомендовал изучить документацию из getExternalFileDir.

Кроме того, есть замечательная статья @CommonsWare об этом. Пожалуйста, загляните сюда в его блоге . Я цитирую его блог здесь.

Для Android Q вы можете добавить android:requestLegacyExternalStorage="true" к вашему <application> элементу в манифесте. Это переключит вас на устаревшую модель хранения, и ваш существующий код внешнего хранилища будет работать.

Технически это понадобится вам только после обновления targetSdkVersion до 29. Приложения с более низкими значениями targetSdkVersion по умолчанию выбирают устаревшее хранилище, и для отказа потребуется android:requestLegacyExternalStorage="false".

...