首页 > 解决方案 > 获取存储在android手机图库中的图像的路径

问题描述

我想获取存储在 android 手机图库中的图像的实际路径。

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

我对此感到很困惑。

我设备中的图像路径是:

内部存储/DCIM/相机/image_name.jpg

我使用以下方法从图像 uri 中获取路径:

String path = imageUri.getPath();

并得到以下结果:

raw//存储/仿真/0/DCIM/Camera/image_name.jpg

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

raw//storage/emulated/0/DCIM/Camera/image_name.jpg:打开失败:ENOENT(没有这样的文件或目录)

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

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

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

标签: androidurifilepath

解决方案


传递您在 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;
}

推荐阅读