android - 从 mediastore 的 URI 获取文件名和路径

标签 android uri absolute-path aws-mediaservices aws-mediastore

我有一个从媒体存储图像选择返回的 onActivityResult,我可以使用以下内容获取图像的 URI:

Uri selectedImage = data.getData();

将其转换为字符串会得到:

content://media/external/images/media/47

或者给一条路径:

/external/images/media/47

但是我似乎找不到将其转换为绝对路径的方法,因为我想将图像加载到位图中而不必将其复制到某处。我知道这可以使用 URI 和内容解析器来完成,但这似乎会在重启手机时中断,我猜 MediaStore 在重启之间不会保持其编号相同。

最佳答案

API 19 下使用此代码从 URI 获取文件路径:

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();
    }
  }
}

关于android - 从 mediastore 的 URI 获取文件名和路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3401579/

相关文章:

android - 有没有其他人看到 HTC Flyer 的 Web View(硬件加速)的错误或找到了修复程序?

android - "android.intent.extra.STREAM"

c - 从输入获取路径以读取文件

c++ - 从 QRessource 加载的文件中提取绝对文件路径

javascript - 如何使用 ESLint 通过特定文件夹的绝对路径限制模块的导入

java - Android中sqlite和sql server(crud操作)两种方式同步

android - 使用addrow for MatrixCursor,如何添加不同的对象类型?

api - HTTP URL 路径中分隔符的最佳实践

java - 是否可以获取 .jar 中的类包的目录?

android - main.dart 中的脚手架未编译