Android java.lang.IllegalArgumentException:column'_数据';不存在

Android java.lang.IllegalArgumentException:column'_数据';不存在,android,Android,当图像来自Picasa文件夹时,我会遇到此异常。它使用了不推荐的代码。还有,我的代码有什么问题,它不仅仅在API 4.3上工作?MediaStore.MediaColumns.DATA.equals(MediaStore.Images.Media.DATA)==true。那么这有什么帮助呢?什么是getUri()?请解释这行Uri tempUri=getUri(); public static String getFilePathFromUri(Uri uri, Context c) {

当图像来自Picasa文件夹时,我会遇到此异常。

它使用了不推荐的代码。还有,我的代码有什么问题,它不仅仅在API 4.3上工作?MediaStore.MediaColumns.DATA.equals(MediaStore.Images.Media.DATA)==true。那么这有什么帮助呢?什么是getUri()?请解释这行Uri tempUri=getUri();
public static String getFilePathFromUri(Uri uri, Context c) {
    try {
        String filePath = null;
        String scheme = uri.getScheme();
        if (scheme != null && scheme.equals("content")) {
            ContentResolver contentResolver = c.getContentResolver();
            Cursor cursor = contentResolver.query(uri, null, null, null,
                    null);
            cursor.moveToFirst();
            filePath = cursor.getString(cursor
                    .getColumnIndexOrThrow(Images.Media.DATA));
        }
        return filePath;
    } catch (Exception e) {
        //java.lang.illegalArgumentException: column'_data' does not exist
        return null;
    }
}
// try this way,hope this will help you...

public String getAbsolutePath(Uri uri) {
        if(Build.VERSION.SDK_INT >= 19){
            String id = uri.getLastPathSegment().split(":")[1];
            final String[] imageColumns = {MediaStore.Images.Media.DATA };
            final String imageOrderBy = null;
            Uri tempUri = getUri();
            Cursor imageCursor = getContentResolver().query(tempUri, imageColumns,
                    MediaStore.Images.Media._ID + "="+id, null, imageOrderBy);
            if (imageCursor.moveToFirst()) {
                return imageCursor.getString(imageCursor.getColumnIndex(MediaStore.Images.Media.DATA));
            }else{
                return null;
            }
        }else{
            String[] projection = { MediaColumns.DATA };

            Cursor cursor = getContentResolver().query(uri, projection, null, null, null);
            if (cursor != null) {
                int column_index = cursor.getColumnIndexOrThrow(MediaColumns.DATA);
                cursor.moveToFirst();
                return cursor.getString(column_index);
            } else
                return null;
        }

}