Android 从目录';文件描述符
我有来自其他应用程序共享意图的目录的内容uri。由此我可以创建FileDescriptor并打开InputStream。但是我如何检查它是否是目录,如果它是目录,如何获取文件呢? 谢谢 我有来自其他应用程序共享意图的目录的内容uri 没有“目录的内容uri”这类东西,就像没有“目录的RESTURL”一样 在某些情况下,我们可能有一个协议,Android 从目录';文件描述符,android,file-descriptor,android-file,android-contentresolver,android-fileprovider,Android,File Descriptor,Android File,Android Contentresolver,Android Fileprovider,我有来自其他应用程序共享意图的目录的内容uri。由此我可以创建FileDescriptor并打开InputStream。但是我如何检查它是否是目录,如果它是目录,如何获取文件呢? 谢谢 我有来自其他应用程序共享意图的目录的内容uri 没有“目录的内容uri”这类东西,就像没有“目录的RESTURL”一样 在某些情况下,我们可能有一个协议,Uri表示内容的集合(例如,Contacts合同.Contacts.content\u Uri,一个通过ACTION\u OPEN\u文档树检索的Uri)。在标
Uri
表示内容的集合(例如,Contacts合同.Contacts.content\u Uri
,一个通过ACTION\u OPEN\u文档树
检索的Uri
)。在标准Android中,通过ACTION\u SEND
交付的“目录内容uri”没有这样的协议
由此,我可以创建FileDescriptor并打开InputStream
可能吧。这完全取决于Uri
实际代表的内容
但是我如何检查它是否是目录,如果它是目录,如何获取文件呢
一般来说,你不能
如果此Uri
恰好由文档提供程序支持,并且Uri
恰好表示一个内容树,DocumentFile.fromTreeUri()
将允许您列出该树中的文档,类似于File
上的API
否则,欢迎您查看Uri
的MIME类型。如果MIME类型以vnd.android.cursor.dir/
开头,那么它应该是一个Uri
,您可以query()
,尽管没有关于列的规则。如果MIME类型是其他类型,则没有关于内容是什么以及如何使用它的规则
对于特定的应用程序,您可以联系该应用程序的开发人员,并询问他们“嘿,当您给我一个类似于此的Uri
时,我如何使用它?”
TL;DR:如果通过ACTION\u SEND
给你一个Uri
,其中Uri
指向任何不是内容的东西,则发送应用程序有一个bug