0

私は他のアプリの共有の意図からディレクトリのURIを持っています。これからFileDescriptorを作成し、InputStreamを開くことができます。しかし、それがディレクトリかどうかを確認し、ディレクトリの場合はファイルを取得する方法はありますか? ありがとう!ディレクトリのFileDescriptorからファイルを取得

答えて

0

私は、「ディレクトリのコンテンツURI」、「ディレクトリのREST URL」があるよりも、それ以上のようなものはありません、他のアプリの株式意図

からディレクトリのコンテンツURIを持っています。特定の場合において

、我々はUriコンテンツのコレクション(例えば、ContactsContract.Contacts.CONTENT_URIACTION_OPEN_DOCUMENT_TREE介して取得Uri)を表すプロトコルを有してもよいです。 ACTION_SENDを介して配信される「ディレクトリのコンテンツURI」のプロトコルは、標準のAndroidにはありません。このことから

私はおそらくのFileDescriptorと開いたInputStream

を作成することができます。それは実際にUriが何を表しているかに完全に依存します。

しかし、それがディレクトリであるかどうかを確認し、それがディレクトリの場合はファイルを取得できますか?

一般に、あなたはできません。

このUriは、文書プロバイダによってバックアップされるように発生し、Uriは、コンテンツのツリーを表現するために発生した場合、DocumentFile.fromTreeUri()はあなたがFile上のAPIに似ているツリー内の文書を、一覧表示できるようになります。

それ以外の場合は、UriのMIMEタイプを参照してください。 MIMEタイプがvnd.android.cursor.dir/で始まる場合は、であることができるUriである必要がありますが、どの列があるかに関する規則はありません。 MIMEタイプが他のものである場合、コンテンツの内容と使用方法に関する規則はありません。

特定のアプリについては、アプリのデベロッパーに連絡して、「ねえ、私にこのような外観のUriを教えてもらえますか?」と尋ねることができます。

TL; DR:あなたはどこそのUriポイントコンテンツの一部ではないものに、ACTION_SEND経由Uriを与えられている場合、送信アプリはバグがあります。

関連する問題