现在我继续选择多个图片和视频我经历了
https://github.com/voidberg/DmxMediaPicker这正是我需要的,但在这里我只得到了类型,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 获取特定图片或视频的路径,但没有变化。
如果有人对此有所了解,请帮助解决此问题。
答案 0 :(得分:0)
这里要小心。您不能假设媒体项必然对应于设备上的文件。例如,您可以选择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);