小米手机调用系统相册异常

来源:互联网 发布:cf for mac 国服 编辑:程序博客网 时间:2024/04/27 20:56

在做项目的时候,需要调取手机本地的图片并上传到服务器,在小米手机上测试的时候,获取的cursor为null,在其他手机上是没有问题,查询资料发现,在Android4.4之后返回的不再是图片的绝对路径,而是图片的编码,我们需要做一些转换处理才能使用。
上代码

  public static Uri geturi(Intent intent,Context context) {        Uri uri = intent.getData();        String type = intent.getType();        if (uri.getScheme().equals("file") && (type.contains("image/"))) {            String path = uri.getEncodedPath();            if (path != null) {                path = Uri.decode(path);                ContentResolver cr = context.getContentResolver();                StringBuffer buff = new StringBuffer();                buff.append("(").append(MediaStore.Images.ImageColumns.DATA).append("=")                        .append("'" + path + "'").append(")");                Cursor cur = cr.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,                        new String[] { MediaStore.Images.ImageColumns._ID },                        buff.toString(), null, null);                int index = 0;                for (cur.moveToFirst(); !cur.isAfterLast(); cur.moveToNext()) {                    index = cur.getColumnIndex(MediaStore.Images.ImageColumns._ID);                    index = cur.getInt(index);                }                if (index == 0) {                } else {                    Uri uri_temp = Uri                            .parse("content://media/external/images/media/"                                    + index);                    if (uri_temp != null) {                        uri = uri_temp;                    }                }            }        }        return uri;    }

利用这个方法获得的路径就是正确的图片路径了,其中参数intent是onActivityResult中的参数Intent data。
最后来张雍正的图片镇楼,专治bug(八阿哥),希望程序员少遇到点坑。

雍正

原创粉丝点击