2016-12-22 6 views
1

Androidストレージから画像や動画ファイルを添付します。ギャラリーからビデオを選択すると、コンテンツURIパスが返されます。ビデオファイルのコンテンツURIからファイルパスを取得するにはどうすればよいですか?

ファイルパスをコンテンツURIから取得するにはどうすればよいですか?


私は、次のコードを試してみましたが、それはロリポップでnullを返します:

void pickVideo() { 
    Intent videoIntent = new Intent(Intent.ACTION_GET_CONTENT); 
    videoIntent.setType("video/*"); 
    startActivityForResult(videoIntent, PICK_VIDEO_FILE); 
} 


@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    try { 
     if (resultCode != Activity.RESULT_OK) 
      return; 

     switch (requestCode) { 
      case PICK_VIDEO_FILE: 
       Uri videoUri = data.getData(); 
       String path = getRealPathFromURI(getContext(), videoUri); 
       Log.d("Video uri path", "path" + path); 
       if (mChooseFileDialogListener != null) { 
        mChooseFileDialogListener.onVideoClick(videoUri, HealthRecordViewModel.FILE_TYPE_VIDEO); 
       } 
       break; 
     } 
    } 
} 


public String getRealPathFromURI(Context context, Uri contentUri) { 
    Cursor cursor = null; 
    try { 
     String[] proj = { MediaStore.Video.Media.DATA }; 
     cursor = context.getContentResolver().query(contentUri, proj, null, null, null); 
     int column_index = cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA); 
     cursor.moveToFirst(); 
     return cursor.getString(column_index); 
    } finally { 
     if (cursor != null) { 
      cursor.close(); 
     } 
    } 
} 

答えて

0

拡張子を持つファイルのパスを取得する方法は?

あなたはありません。ユーザーが読み取りアクセス権を持つ場所にファイルとして保存されているコンテンツを選択する必要はありません。 ContentProviderは、Uriをファイルパスに変換する手段を提供するという要件はありません。

ContentResolverおよびopenInputStream()を使用して、Uriで識別される内容を読み込みます。

+0

私はアンドロイドプログラミングの新人です。あなたはこれに関連するいくつかの例を挙げることができますか? – Pulse

+0

@Pulse: 'getContentResolver()。openInputStream(videoURI)'です。 – CommonsWare

+0

openInputStream(uri)はInputStreamを返しますか?これを添付ファイルとしてどうやって使うのですか?私は取得したファイルを保存しなければならず、保存したファイルをクリックすると、適切なアプリケーションを使用して開く必要があります。 – Pulse

関連する問題