0

У меня есть содержание uri из каталога с намерением поделиться другим приложением. Из этого я могу создать FileDescriptor и открыть InputStream. Но как я могу проверить, если это каталог и получить файлы, если это каталог? Спасибо!Получить файлы из файла FileDescriptor в каталоге

ответ

0

У меня есть содержание УИРА каталога от доли намерения другого приложения

Там нет такого понятия, как «содержание УИР директории», не больше, чем есть «REST URL директории».

В некоторых случаях мы можем иметь протокол, где Uri представляет коллекцию контента (например, ContactsContract.Contacts.CONTENT_URI, A Uri извлеченную с помощью ACTION_OPEN_DOCUMENT_TREE). Нет такого протокола для «content uri of directory», который поставляется через ACTION_SEND, в стандартном Android.

Из этого я могу создать FileDescriptor и открытый InputStream

Возможно. Это полностью зависит от того, что фактически представляет собой Uri.

Но как я могу проверить, если это каталог и получить файлы, если это каталог?

В общем, вы не можете.

Если Uri случается при поддержке со стороны поставщика документа, а Uri происходит представлять дерево содержания, DocumentFile.fromTreeUri() позволит вам список документов, в том дереве, похожее на API на File.

В противном случае, вы можете посмотреть тип MIME Uri. Если тип MIME начинается с vnd.android.cursor.dir/, тогда он должен быть Uri, что вы можете query(), хотя для каких столбцов нет правил. Если тип MIME - это что-то еще, нет правил для содержимого и того, как вы можете его использовать.

Для конкретных приложений вы можете связаться с разработчиками приложения и спросить их «эй, когда вы дадите мне Uri, который выглядит так, как я могу его использовать?».

TL; DR: если вы получаете Uri через ACTION_SEND, где что Uri указывает на что-либо, что не является частью контента, отправка приложение имеет ошибку.