Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何将content://Uri转换为实际的文件路径?_Android - Fatal编程技术网

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

Android 如何将content://Uri转换为实际的文件路径?,android,Android,如何获取SD卡上的实际文件路径,其中content://uri指向图像?我已经修改了@hooked82链接到的代码: protected String convertMediaUriToPath(Uri uri) { String [] proj={MediaStore.Images.Media.DATA}; Cursor cursor = getContentResolver().query(uri, proj, null, null, null); int colu

如何获取SD卡上的实际文件路径,其中content://uri指向图像?

我已经修改了@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;
}

内容URI具有语法content://authority/path/id阅读 从内容URI解析id并查询MediaStore.Images.Media.EXTERNAL\u content\u 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();

这个问题已经提出了。检查这个问题的答案:我发现在nexus 5的默认文件选取器上执行此操作不起作用。我在内容Uri为
的nexus 5上测试此操作content://com.google.android.gallery3d.provider/picasa/item/5688442732610256002
但它不起作用。是的,这段代码几乎是3年前发布的。Android从那以后有了一些进步。嗨,tiibsco。你得到解决方案了吗?Cursor.getCount是0。仍然无法获取路径