关于android 5.0调用系统相册闪退

今天在做项目的时候发现个问题,用相机上传头像好好的,用相册就会闪退。经过调试发现5.0的和其他版本返回的Uri不一样:

onActivityResult中处理的代码如下:
 Uri uri = data.getData();
                if (null != uri) {
//                    ContentResolver resolver = getContentResolver();
//
//                    try {
//                        Bitmap bm = MediaStore.Images.Media.getBitmap(resolver, uri);
//                    } catch (IOException e) {
//                        e.printStackTrace();
//                    }
//

                    int sdkVersion = Integer.valueOf(android.os.Build.VERSION.SDK);
                    String path = "";
                    if (sdkVersion == 21 || sdkVersion == 22){
                        path = uri.getPath();//5.0直接返回的是图片路径,5.0以下是一个和数据库有关的索引值,6.0也是一个索引值
                    }else {
                        String[] proj = {MediaStore.Images.Media.DATA};

                        //好像是android多媒体数据库的封装接口,具体的看Android文档
                        Cursor cursor = managedQuery(uri, proj, null, null, null);
                        //按我个人理解 这个是获得用户选择的图片的索引值
                        int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
                        //将光标移至开头 ,这个很重要,不小心很容易引起越界
                        cursor.moveToFirst();
                        //最后根据索引值获取图片路径
                        path = cursor.getString(column_index);
                    }

                        carFile = new File(path);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿老王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值