Как получить уникальный путь из файлового менеджера в Android - PullRequest
1 голос
/ 07 июля 2019

Я хочу открыть проводник в моем приложении и позволить пользователю выбрать какой-либо путь и сохранить его в моей базе данных.после того, как пользователь выбрал путь, я хочу получить Uri и сохранить его в базе данных.этот Ури должен быть уникальным для всех путей.проблема в том, что пользователь может выбрать один путь с двумя путями, и я получу 2 Uri для того же пути.

Я использую +21 для минимального API.

Я открываю проводник, используя приведенный ниже код.

Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
    intent.addCategory(Intent.CATEGORY_DEFAULT);
    startActivityForResult(Intent.createChooser(intent, "Choose directory"), 78);

вот результат моей папки загрузки.(У меня нет внешнего хранилища в телефоне, но есть путь к внешнему хранилищу)

Я регистрирую это с помощью uri.toString ()

content: // com.android.externalstorage.documents / tree / primary% 3A content: //com.android.providers.downloads.documents/tree/downloads

для первого, который я открываю блок навигации в проводнике файлов ивыберите загрузки.для второго я открываю блок навигации в проводнике и выбираю свое внутреннее хранилище, а затем выбираю папку загрузок.

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

1 Ответ

2 голосов
/ 07 июля 2019

Это невозможно.

Пользователи могут иметь любое количество установленных поставщиков документов. Они могут публиковать деревья документов, используя любую структуру Uri, и они могут указывать на любые данные, которые нужны поставщикам документов. Насколько вам известно, у данного пользователя может быть 1000 различных возможных значений Uri для данного местоположения. И любой из них может быть возвращен ACTION_OPEN_DOCUMENT_TREE, в зависимости от того, что пользователь выберет в пользовательском интерфейсе Storage Access Framework. У вас даже нет надежного способа определить, что два значения Uri указывают на одно и то же местоположение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...