从Mediastore获取URI的文件名和路径

10 浏览
0 Comments

从Mediastore获取URI的文件名和路径

我有一个从mediastore选择图片后返回的onActivityResult,我可以使用以下方式获取图像的URI:

Uri selectedImage = data.getData();

将其转换为字符串如下所示:

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

或将其转换为路径如下所示:

/external/images/media/47

但是我似乎找不到一种将其转换为绝对路径的方法,因为我想将图像加载到位图中,而不必将其复制到其他位置。我知道可以使用URI和内容解析器来完成此操作,但在重新启动手机时,似乎会出现问题,我猜MediaStore在重新启动后不会保持其编号相同。

admin 更改状态以发布 2023年5月21日
0
0 Comments

关于第一个回答的简单更新: mActivity.managedQuery()现在被弃用了。我已经使用新的方法更新了代码。

private String getRealPathFromURI(Uri contentUri) {
    String[] proj = { MediaStore.Images.Media.DATA };
    CursorLoader loader = new CursorLoader(mContext, contentUri, proj, null, null, null);
    Cursor cursor = loader.loadInBackground();
    int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
    cursor.moveToFirst();
    String result = cursor.getString(column_index);
    cursor.close();
    return result;
}

android dev源代码

0
0 Comments

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

0