【问题标题】:Android: how to get real file path from image Uri from gallery?Android:如何从图库中的图像 Uri 获取真实文件路径?
【发布时间】:2016-01-12 21:39:25
【问题描述】:

从图库中选择图像后,我想使用 retrofit2 上传它。

https://futurestud.io/blog/retrofit-2-how-to-upload-files-to-server

为此,我必须获取真实的文件路径。

allImgUris.get(0) 给我:

content://com.android.providers.downloads.documents/document/5

allImgUris.get(0).getPath() 给我:

/document/5

我需要将真实的文件路径传递给:

 File file = new File(allImgUris.get(0));

我发现了很多关于处理上下文和游标的函数的所谓“好”答案,但它们都不起作用。

知道如何解决这个问题吗?

看起来很琐碎,但结果却浪费了数小时的研究时间。

任何帮助将不胜感激!

不工作:

            Cursor cursor = getApplicationContext().getContentResolver().query(allImgUris.get(0), null, null, null, null);
            if (cursor == null) {
                 selectedImagePath = allImgUris.get(0).getPath();
            } else {
                cursor.moveToFirst();
                int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA);
                selectedImagePath = cursor.getString(idx);  // ava.lang.IllegalStateException: Couldn't read row 0, col -1 from CursorWindow.  Make sure the Cursor is initialized correctly before accessing data from it.
                cursor.close();
            }

给予:

Java.lang.IllegalStateException: Couldn't read row 0, col -1 from CursorWindow.  Make sure the Cursor is initialized correctly before accessing data from it.

也不行:

public 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();
        return cursor.getString(column_index);
    } finally {
        if (cursor != null) {
            cursor.close();
        }
    }
}

String selectedImagePath = getRealPathFromURI(getApplicationContext(),allImgUris.get(0) );

返回空值

【问题讨论】:

    标签: file file-upload uri realpath retrofit2


    【解决方案1】:

    显然要走的路是获取位图并再次将其保存到文件系统并以这种方式检索路径。

    Saving and Reading Bitmaps/Images from Internal memory in Android

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-08
      • 1970-01-01
      • 1970-01-01
      • 2013-07-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多