我从其他应用的共享意图中获得了目录uri。从这里我可以创建FileDescriptor并打开InputStream。但是如何查看它的目录并获取文件(如果它的目录)? 谢谢!
答案 0 :(得分:0)
我从其他应用的分享意图中获得了目录uri的目录
目录"中没有"内容uri,而不是目录"的" REST URL。
在某些情况下,我们可能会有一个协议,其中Uri
表示内容集合(例如,ContactsContract.Contacts.CONTENT_URI
,Uri
通过ACTION_OPEN_DOCUMENT_TREE
检索。在标准Android中,目录"内容uri没有这样的协议,通过ACTION_SEND
传送。
从这里我可以创建FileDescriptor并打开InputStream
可能。这完全取决于Uri
实际代表的内容。
但是如何查看目录和获取文件的目录?
一般来说,你不能。
如果此Uri
恰好由文档提供程序支持,并且Uri
恰好代表内容树,DocumentFile.fromTreeUri()
将允许您列出该树中的文档,类似到File
上的API。
否则,欢迎您查看Uri
的MIME类型。如果MIME类型以vnd.android.cursor.dir/
开头,那么它应该是Uri
,您可以query()
,尽管没有关于哪些列的规则。如果MIME类型是其他任何内容,则没有关于内容是什么以及如何使用它的规则。
对于特定的应用,您可以联系该应用的开发者并问他们嘿,当您给我一个Uri
看起来像这样的时候,我该如何使用它?"。
TL; DR:如果您通过Uri
获得ACTION_SEND
,Uri
指向任何非内容的内容,则发送应用都有错误。< / p>