Код: Выделить всё
if(DocumentsContract.isTreeUri(uri))
uri = DocumentsContract.buildDocumentUriUsingTree(uri, DocumentsContract.getTreeDocumentId(uri));
Но есть одна проблема: очевидно, isTreeUri просто проверяет, встречается ли что-то вроде /tree/ в URI, а затем возвращает true, что приводит к множеству ложных срабатываний, например предположим, я хочу проверить подкаталог foo в дереве документов, указанном uri, с помощью ContentResolver.query, поэтому сначала я делаю что-то вроде этого, чтобы добавить подкаталог foo к дереву документов uri, который был возвращен ACTION_OPEN_DOCUMENT_TREE:
Код: Выделить всё
DocumentFile targetUri = DocumentFile.fromTreeUri(this, uri);
DocumentFile subDir = targetUri.findFile("foo");
Uri subDirUri = subDir.getUri();
Код: Выделить всё
content://com.android.externalstorage.documents/tree/primary%3AMyDir/document/primary%3AMyDir%2Ffoo
Подробнее здесь: https://stackoverflow.com/questions/798 ... ument-tree
Мобильная версия