Android某些手机上getContentResolver().query得到的结果报空指针

Uri uri = data.getData();
String[] proj = {MediaStore.Images.Media.DATA};
//Cursor cursor = managedQuery(uri, proj, null, null, null);
Cursor cursor = getContentResolver().query(uri, proj, null, null, null);

无论我是用managedQuery还是用getContentResolver().query在升级了Android6.0的小米4上得到的cursor都是空指针。而其他手机一切正常。求大神解惑

已经解决了

参考文章http://blog.csdn.net/q445697127/article/details/40537945

4.4版本前后的uri形式不同,顶一个

大神,那个网页打不开了,你能说说是怎么解决的吗?

同问,请问是如何解决的

跪求啊,怎么解决的啊

/*
查询相册数据库获取图片路径
/
Uri uri = data.getData();
// String[] proj = {MediaStore.Images.Media.DATA};
// Cursor cursor = managedQuery(uri, proj, null, null, null);
// Cursor cursor = getContentResolver().query(uri, proj, null, null, null);
// if (cursor != null && cursor.getCount() >= 1) {
// while (cursor.moveToNext()) {
// cursor.moveToFirst();
// int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
// path = cursor.getString(column_index);// 图片在的路径
/

打开图片裁剪界面
*/
path = getImageAbsolutePath(EditUserInfoAvtivity.this, uri);

                            这段代码里面,注掉的部分,就是我提问时的写法,会出现空指针bug。
                            换成下面的方法以后,问题就解决了:
                            /**
 * 根据Uri获取图片绝对路径,解决Android4.4以上版本Uri转换
 */
public String getImageAbsolutePath(Activity context, Uri imageUri) {
    if (context == null || imageUri == null)
        return null;
    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT && DocumentsContract.isDocumentUri(context, imageUri)) {
        if (isExternalStorageDocument(imageUri)) {
            String docId = DocumentsContract.getDocumentId(imageUri);
            String[] split = docId.split(":");
            String type = split[0];
            if ("primary".equalsIgnoreCase(type)) {
                return Environment.getExternalStorageDirectory() + "/" + split[1];
            }
        } else if (isDownloadsDocument(imageUri)) {
            String id = DocumentsContract.getDocumentId(imageUri);
            Uri contentUri = ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"), Long.valueOf(id));
            return getDataColumn(mContext, contentUri, null, null);
        } else if (isMediaDocument(imageUri)) {
            String docId = DocumentsContract.getDocumentId(imageUri);
            String[] split = docId.split(":");
            String type = split[0];
            Uri contentUri = null;
            if ("image".equals(type)) {
                contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
            } else if ("video".equals(type)) {
                contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
            } else if ("audio".equals(type)) {
                contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
            }
            String selection = MediaStore.Images.Media._ID + "=?";
            String[] selectionArgs = new String[]{split[1]};
            return getDataColumn(mContext, contentUri, selection, selectionArgs);
        }
    } // MediaStore (and general)
    else if ("content".equalsIgnoreCase(imageUri.getScheme())) {
        // Return the remote address
        if (isGooglePhotosUri(imageUri))
            return imageUri.getLastPathSegment();
        return getDataColumn(mContext, imageUri, null, null);
    }
    // File
    else if ("file".equalsIgnoreCase(imageUri.getScheme())) {
        return imageUri.getPath();
    }
    return null;
}