未获取手动插入 SD 卡中的所有媒体文件
Not getting all media files which inserted manullay in sd card
我使用下面的查询从 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);
}
}
当您 "add some video or pictures manually into sd card at different folder" 时,必须更新 MediaStore
以便它们可用于您的查询,以及其他使用 MediaStore
后端的应用程序。
通过 MTP 或 Gallery 等应用程序添加它们将调用 MediaScanner
(或一些类似的过程)将它们添加到 MediaStore
,但通过 adb push
或在您的自己的代码要求您之后明确地这样做。
在您的代码中,将图像或视频文件写入 SDCard 后,您可以通过在 MediaScannerConnectionClient
中实现 MediaScannerConnectionClient
接口,将文件的路径和 MIME 类型传递给 MediaScanner
=29=],实例化它,然后调用scan()
。 MediaScanner
然后将打开文件,collect/generate 元数据,并将文件添加到 MediaStore
请参阅 android - dynamically add pictures to gallery widget 以获取使用此方法的示例 class。
我使用下面的查询从 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);
}
}
当您 "add some video or pictures manually into sd card at different folder" 时,必须更新 MediaStore
以便它们可用于您的查询,以及其他使用 MediaStore
后端的应用程序。
通过 MTP 或 Gallery 等应用程序添加它们将调用 MediaScanner
(或一些类似的过程)将它们添加到 MediaStore
,但通过 adb push
或在您的自己的代码要求您之后明确地这样做。
在您的代码中,将图像或视频文件写入 SDCard 后,您可以通过在 MediaScannerConnectionClient
中实现 MediaScannerConnectionClient
接口,将文件的路径和 MIME 类型传递给 MediaScanner
=29=],实例化它,然后调用scan()
。 MediaScanner
然后将打开文件,collect/generate 元数据,并将文件添加到 MediaStore
请参阅 android - dynamically add pictures to gallery widget 以获取使用此方法的示例 class。