【问题标题】:Get filename and path from URI from mediastore in Nought and Oreo device从 Naught 和 Oreo 设备中的 mediastore 获取 URI 的文件名和路径
【发布时间】:2018-06-28 04:31:02
【问题描述】:

我有这样的图片 uri:"content://com.iceburgapp.provider/external_files/.pkgName/File1.jpg"

现在每当我得到路径时,它都会给我:“/external_files/.pkgName/File1.jpg

我想获取 RealPathFrom 内容 Uri。 我从 stackoverflow 得到了解决方案,我尝试了下面的代码,但对我不起作用:

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

有人知道怎么做吗?使用上述代码时出现以下错误。 java.lang.IllegalArgumentException:列“_data”不存在。可用列:[]

由于 contentUri 使用文件提供程序,它仅在 Naught 和 oreo 设备中不起作用。

【问题讨论】:

标签: android


【解决方案1】:

使用ContentResolveropenInputStream()Uri 标识的内容上获得InputStream。理想情况下,只需直接使用该流,无论您要做什么。或者,在您控制的文件上使用 InputStream 和一些 FileOutputStream 来复制内容,然后使用该文件。

这在 Android N 之前的设备中可以正常工作

【讨论】:

    猜你喜欢
    • 2011-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-08
    相关资源
    最近更新 更多