小编Rag*_*are的帖子

将内容:// URI转换为Android 4.4中的实际路径

我尝试了一个解决方案(见下文)工作正常,除了在Android 4.4中调用startActivityForResult()一个名为"Open from"的活动,其中包含"Recent","Images","Downloads"以及几个可供选择的应用程序.当我选择"图像"并尝试解析返回的内容URI(使用下面的代码)时,调用cursor.getString()返回null.如果我使用Gallery应用程序选择完全相同的文件,则cursor.getString()返回文件路径.我只在API级别16和19中对此进行了测试.一切都按照16中的预期运行.至于19,我必须选择Gallery或其他应用程序,否则它不起作用.

private String getRealPathFromURI(Context context, Uri contentUri) {
    Cursor cursor = null;
    try { 
        String[] proj = { MediaStore.Images.Media.DATA };
        cursor = context.getContentResolver().query(contentUri,  proj, null, null, null);
        int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        cursor.moveToFirst();
        String path = cursor.getString(column_index);

        return path;
    } finally {
        if (cursor != null) {
            cursor.close();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

android filepath android-contentresolver

62
推荐指数
4
解决办法
7万
查看次数