android - 获取存储在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
我知道这种类型的问题已经被问过很多次了,但我无法得到令人满意的工作答案。我希望,对我的问题的这种解释可能会为我提供解决方案。
解决方案
传递您在 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;
}
推荐阅读
- android - 输入字符串错误:“12”Android Studio
- php - 关于表的联接:关联 uid 和 gid?
- javascript - 递归 async/await 使 React App 崩溃
- tensorflow - Tensorflow 线性回归房价
- javascript - Javascript 和 Python - Django
- javascript - 为我自己的语言开发 JavaScript linting 工具的最佳实践?
- php - 尝试打印命令的实时输出时,在 system() 命令之后未执行 PHP 代码
- javascript - 获取国家/地区的 id 会返回 Expression 'mid = s.id' is non-assignable
- mysql - SQL命令二合并
- r - R:将等级 1 分配给预定义的最大值