我使用下面的查询从SD卡加载所有图片或视频,它相应地工作。但是当我手动将一些视频或图片添加到不同文件夹的SD卡中时,查询后它不会加载。请建议我相同。
final String[] columns = { MediaStore.Video.Media.DATA,
MediaStore.Video.Media._ID};
final String orderBy = MediaStore.Video.Media.DATE_TAKEN;
Uri videosuri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
Cursor imagecursor = getContentResolver().query(videosuri, columns, null, null, orderBy);
if (imagecursor != null && imagecursor.getCount() > 0) {
while (imagecursor.moveToNext()) {
int video_id=imagecursor.getInt(imagecursor.getColumnIndex(MediaStore.Video.Media._ID));
int dataColumnIndex = imagecursor.getColumnIndex(MediaStore.Video.Media.DATA);
String path=imagecursor.getString(dataColumnIndex);
}
}
答案 0 :(得分:1)
如果您将某些视频或图片手动添加到不同文件夹中的SD卡中,则必须更新MediaStore
以使其可用于您的查询,以及其他使用MediaStore
后端的应用。
通过MTP或图库等应用添加它们会调用MediaScanner
(或类似的过程)将它们添加到MediaStore
,但可以通过adb push
或您自己的代码添加它们要求你事后明确这样做。
在您的代码中,在将图像或视频文件写入SDCard后,您可以通过在类中实现MediaScanner
接口将文件的路径和MIME类型传递给MediaScannerConnectionClient
,实例化它,然后调用scan()
。然后MediaScanner
将打开文件,收集/生成元数据,并将文件添加到MediaStore
使用此方法查看android - dynamically add pictures to gallery widget示例类。