【问题标题】:How to get path from cursor id in android如何从android中的光标ID获取路径
【发布时间】:2014-12-23 13:58:24
【问题描述】:

现在我将继续选择我经历过的多个图像和视频

https://github.com/voidberg/DmxMediaPicker 这正是我需要的,但在这里我只得到 type,id。

下面的代码用于从这里获取 id 和类型,我如何获取所选图像或视频的路径。

 if (type == 0) {
idColumn = cur.getColumnIndex(MediaStore.Video.Media._ID);
bucketColumn = cur.getColumnIndex(MediaStore.Video.Media.BUCKET_DISPLAY_NAME);
dateColumn = cur.getColumnIndex(MediaStore.Video.Media.DATE_ADDED);
}

else {
idColumn = cur.getColumnIndex(MediaStore.Images.Media._ID);
bucketColumn = cur.getColumnIndex(MediaStore.Images.Media.BUCKET_DISPLAY_NAME);
dateColumn = cur.getColumnIndex(MediaStore.Images.Media.DATE_ADDED);
}

在下面尝试了很多自定义,但没有用:

int id =cur.getInt(idColumn);

我尝试从 id 获取特定 图像或视频 的路径,但没有任何变化。

如果有人对此有任何想法,请帮助解决此问题。

【问题讨论】:

  • 你能把你的整个代码代替这个sn-p吗?
  • 请看上面的github链接

标签: android path android-cursor


【解决方案1】:

这里要小心。您不能假设媒体项目必然对应于设备上的文件。例如,您可以选择 Google+ 图片或视频。

在这些情况下,MediaStore.Images.Media.DATA 的内容将为空。

这样做的正确方法不是考虑文件,而是考虑 Uris 和流。特别是,从媒体项的Uri 中,您可以使用ContentResolver 获取带有其内容的InputStream

看看这个例子(取自this answer,用于图像):

InputStream inputStream = null;
if (ContentResolver.SCHEME_CONTENT.equals(mediaUri.getScheme())) {
    inputStream = context.getContentResolver().openInputStream(mediaUri);
} else if (ContentResolver.SCHEME_FILE.equals(mediaUri.getScheme())) {
    inputStream = new FileInputStream(mediaUri.getPath());
}

Bitmap bitmap = BitmapFactory.decodeStream(inputStream);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    • 2019-05-23
    • 1970-01-01
    • 1970-01-01
    • 2013-11-10
    • 1970-01-01
    相关资源
    最近更新 更多