获取存储在 android phone 图库中的图像的路径

Get the path of an image stored in android phone gallery

我想获取存储在 android phone.

图库中的图像的实际路径

在我的应用程序中,我从图库中选择一张图片并将其设置为 imageView。 我需要路径的原因是稍后我想通过 JavaMail 将该图像作为附件发送。

我对此感到很困惑。

我设备中的图片路径是:

Internal storage/DCIM/Camera/image_name.jpg

我使用了以下方法从图片uri获取路径:

String path = imageUri.getPath();

并得到以下结果:

raw//storage/emulated/0/DCIM/Camera/image_name.jpg

现在,当我将上述结果作为要发送的附件的文件路径传递时,我得到了未找到文件异常

raw//storage/emulated/0/DCIM/Camera/image_name.jpg: open failed: ENOENT (No such file or directory)

经过一些尝试和错误,当我将以下路径作为硬编码字符串传递时,图像附件已成功发送:

/storage/emulated/0/DCIM/Camera/image_name.jpg

我知道这种类型的问题已经被问过很多次了,但我无法给出令人满意的工作答案。我希望,对我的问题的这种解释可能会让我找到解决方案。

传递您在 onActivityResult 中获取的 uri,并使用返回的字符串。

public String getPathFromURI(Uri ContentUri) {
    String res = null;
    String[] proj = {MediaStore.Images.Media.DATA};
    Cursor cursor = getContentResolver()
            .query(ContentUri, proj, null, null, null);

    if (cursor != null) {
        cursor.moveToFirst();

        res = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA));
        cursor.close();
    }


    return res;
}