天天看点

Android 解决小米手机选取图片返回值为null

之前写过一篇调用系统相机拍照和选取本地图片并裁剪的博客,然后昨天有人和我说你的那个demo在小米手机上在本地相册中选取图片之后会崩掉,然后我在这里解答一下这个问题,问题原因是因为小米手机在选取图片之后给我们返回的是一个null.那么下面就是解决办法

/**
 * 解决小米手机上获取图片路径为null的情况
 * @param intent
 * @return
 */
public Uri geturi(android.content.Intent intent) {
    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 = this.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;
}