Android Uri获取不到视频文件路径的问题

今天遇到一个很不解的问题:获取不到本地视频文件的路径

基本情况

机型: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真是个麻烦的东西啊。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值