无法从URI获取视频的RealPath

时间:2015-06-06 05:25:11

标签: android

我正在使用按钮从

等设备中挑选视频
dStatus.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
                photoPickerIntent.setType("video/*");
                startActivityForResult(photoPickerIntent, SELECT_VIDEO);
            }
        });

然后在onActivityResult我有类似的东西

protected void onActivityResult(int requestCode, int resultCode, Intent data)
    {
        super.onActivityResult(requestCode, resultCode, data);
        switch(requestCode) {
            case SELECT_VIDEO:
                if (resultCode == RESULT_OK) {
                    Uri selectedVideo = data.getData();
                    final String realPath = selectedVideo.getPath();
                 }
                break;
        }
    }

我需要的realPath是设备中文件的位置,例如/directory/subdirectory/myVideo.mp4。我之前曾尝试过stackoverflow本身的很多帖子。所有结果都会导致realPath的值为null。我试过的帖子是

  1. GetRealPathFromUri always get null result
  2. Get filename and path from uri from mediastore
  3. Get Real Path For Uri Android
  4. 因此,如果你知道任何有用的方法,请在下面给我建议。不要标记为重复和其他东西。我知道什么都没有用。

1 个答案:

答案 0 :(得分:0)

此方法返回视频contentUri的真实路径。

public String getRealPathFromURI(Context context, Uri contentUri) {

        String res = "";
        String[] proj = { MediaStore.Video.Media.DATA };
        Cursor cursor = context.getContentResolver().query(contentUri, proj, null, null, null);
        if (cursor != null) {
            if (cursor.moveToFirst()) {
                int column_index = cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA);
                res = cursor.getString(column_index);
            }
            cursor.close();
        } else {
            Log.d(TAG, "Cursor is null");
            return contentUri.getPath();
        }
        return res;
    }