2016-11-01 4 views
0

は、私は経由して外部ファイルを選択していたとしますファイルURIとcontentprovider URIを区別する方法は?

Intent i = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
startActivityForResult(i, GALLERY_REQUEST_CODE); 

と結果に異なるフォーマットにすることができonActivityResult

Uri file = data.getData(); 

これを介して返されます。コンテンツリゾルバクエリが必要かどうかを判断するためのここでのコンベンションは何ですか?ファイルURIがファイルパスfile:///または//package.example/...のようなアプリURIである場合。

私はuriにfile:///という接頭辞が付いているかどうかを確認できますが、それは少しハッキリしているようです。私はちょうどファイルパスが必要です。

+0

です。「私はファイルパスが必要です」 - 次に、Uriインスタンスから 'getPath()'が必要です。 – Enzokie

答えて

1

ここで、コンテンツリゾルバクエリが必要かどうかを判断するための規約は何ですか。 ContentResolverハンドルfile方式及びcontentスキームの両方で

openInputStream()

私はURIがファイルがある場合、私がチェックできる知っている:///接頭辞が、それがあの

ビットハックようだが、まあ、 Uria getScheme() methodを持っています。

ファイルパスが必要です。コンテンツをファイルとして保存する必要がないよう

は、contentUriには、「ファイルパス」はありません。

+0

これは多くの助けになりました、ありがとうございます:-) –

1

ちょうど賛辞CommonsWareの答えです。 CommonsWareの答えに記載されているように、たとえばgetScheme()メソッドを使用して、URIのスキームを調べることができます。コンテンツプロバイダのURIスキームはcontent://ですが、ファイルURIスキームはfile://

関連する問題