我正在尝试列出外部存储中的图像和视频。我的代码是:
private void parseAllImages() {
try {
String[] projection = {MediaStore.Images.Media.DATA};
@SuppressLint("Recycle")
Cursor cursor = getActivity().getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
projection,
MediaStore.Images.Media.DATA + " like ? ",
new String[]{"%/DCIM/Camera%"},
null);
int size = 0;
if (cursor != null) {
size = cursor.getCount();
}
if (size == 0) {
getActivity().runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(getContext(), getString(R.string.data_not_found), Toast.LENGTH_LONG).show();
}
});
} else {
while (cursor.moveToNext()) {
int file_ColumnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
String path = cursor.getString(file_ColumnIndex);
String fileName = path.substring(path.lastIndexOf("/") + 1, path.length());
MediaInfoModel mediaFileInfo = new MediaInfoModel();
mediaFileInfo.setFilePath(path);
mediaFileInfo.setFileName(fileName);
mediaFileInfo.setFileType(type);
mediaList.add(mediaFileInfo);
}
}
} catch (Exception e) {
e.printStackTrace();
}
我可以使用此代码列出视频或图像。但是我不知道如何一起列出图像和视频。有想法吗?
谢谢。
答案 0 :(得分:0)
将查询网址更改为MediaStore.Files.getContentUri("external")
。该URL包含所有文件,但是您可以使用MediaType过滤数据。
您可以通过在选择参数中添加MediaStore.Files.FileColumns.MEDIA_TYPE + " = ? OR " + MediaStore.Files.FileColumns.MEDIA_TYPE + " = ? "
来对其进行过滤。
答案 1 :(得分:0)
您可以设置多种类型,扩展mediaList以支持多种文件格式,并根据类型分配不同的布局。
例如:
switch(mediaList.get(index).getType){
case VIDEO:
//show video layout
break;
case IMAGE:
//show image layout
break;
case OTHER:
//show other layout
break;
}