2017-12-26 31 views
0

コンテンツタグのためにuriをパスに変換する際に問題があります。だから私はAndroidストレージから任意のファイルタイプを選択しようとしています。ファイルを選択することはできますが、データを取得して文字列パスに変換しようとするとアプリがクラッシュします。 URIに変換するために私のコードはcontent:// uriをファイルパスに変換します

String path = data.getData().getPath(); 

のように見えます

私の周り見てきたし、いくつかは、コンテンツプロバイダとコンテンツリゾルバを使用するように言うが、私はそれらを使用するかどうかはわかりません。どんな助けでも大変感謝しています。

s3バケットに表示/アップロードします。私がそれを表示することを意味するとき、それはそれが写真やビデオであればそれを表示することを意味し、オーディオファイルであればそれを再生でき、PDFなどの他のファイルと同じものを再生できるようにしたいと考えています。

+0

としてPathを返しますか?なぜあなたはその道を必要としますか? – LordRaydenMK

+0

s3バケットに表示/アップロードします。私がそれを表示することを意味するとき、それはそれが写真やビデオであればそれを表示することを意味し、オーディオファイルであればそれを再生でき、PDFなどの他のファイルと同じものを再生できるようにしたいと考えています。 – k3j123

答えて

0

この方法は、ファイルをどうするかをしようとしているString

private String getPath(Uri uri) { 

      String[] projection = { MediaStore.Images.Media.DATA }; 
      Cursor cursor = getContentResolver().query(uri, projection, null, null,null); 

      int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
      cursor.moveToFirst(); 

      return cursor.getString(column_index); 
     } 
+0

上記のコードを使用すると、実行時例外が発生します。java.lang.RuntimeException:ResultInfo {who = null、request = 3、result = -1、data = intent {dat = content://com.android。 providers.media.documents/document/image:206 flg = 0x43}} – k3j123

+0

どのAPIバージョンで作業していますか?は、Uri for SDですか? –

+0

MinSdkは21、TargetSdkは26です。現在、uriはローカルストレージ用ですが、両方のオプションを希望します。 – k3j123

関連する問題