如何将content:// Uri转换为实际的文件路径?

时间:2011-08-22 22:21:12

标签: android

如何在SD卡上获取内容:// uri指向图像的实际文件路径?

2 个答案:

答案 0 :(得分:13)

我已经修改了@ hooked82链接到的代码:

protected String convertMediaUriToPath(Uri uri) {
    String [] proj={MediaStore.Images.Media.DATA};
    Cursor cursor = getContentResolver().query(uri, proj,  null, null, null);
    int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
    cursor.moveToFirst();
    String path = cursor.getString(column_index); 
    cursor.close();
    return path;
}

答案 1 :(得分:0)

内容URI具有语法内容://权限/路径/ ID,读取here。 从内容URI解析id并查询MediaStore.Images.Media.EXTERNAL_CONTENT_URI,如下所示:

long id = ContentUris.parseId(Uri.parse(contentUri));
Cursor cursor = getContentResolver()
            .query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
                    new String[]{ MediaStore.Images.Media.DATA },
                    MediaStore.Images.Media._ID + " = ?", new String[]{ Long.toString(id) }, 
                    null);
if (cursor.moveToNext()) {
    path = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA));
}
cursor.close();