今天遇到一个很不解的问题:获取不到本地视频文件的路径
基本情况
机型:Nexus 7
系统:Android 6.0
说明
今天我在做一个选择视频进行上传的功能时,我通过传递一个隐式的Intent打开视频库,点击选择视频文件后返回,在onActivityResult()的data(Intent)参数中通过
Uri uri = data.getData();
获取到文件的Uri对象,然后解析Uri,尝试获取视频的名称,时长,本地地址,后缀等信息:
//获取视频信息
String[] projection = new String[]{
MediaStore.Video.Media.DISPLAY_NAME,
MediaStore.Video.Media.SIZE,
MediaStore.Images.Media.DATA,//绝对路径
MediaStore.Video.Media.MIME_TYPE,
};
Cursor cursor =getActivity().getContentResolver().query(uri, projection, null, null, null);
String name = cursor.getString(0);
long size = cursor.getLong(1);
String path = cursor.getString(2);
mPath = UriUtils.getPath(getActivity(),uri);
String format = cursor.getString(3);
在这行出现了问题:
String path = cursor.getString(2);
其他如name,size,format都返回了正确的值,只有path却返回了null,而我通过调试查看Uri的uriString是确实指向的一个路径。通过一番使劲的百度,找到了:解决方案
可我记得在之前做一个查看本地视频列表的功能的时候同样的操作,是可以获取到路径的。不知道这是怎么回事,如果有其他遇到了此类问题,欢迎交流。Uri真是个麻烦的东西啊。