没有获得在SD卡中手动插入的所有媒体文件

时间:2015-02-18 08:39:41

标签: android media-queries

我使用下面的查询从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);



            }
        }

1 个答案:

答案 0 :(得分:1)

如果您将某些视频或图片手动添加到不同文件夹中的SD卡中,则必须更新MediaStore以使其可用于您的查询,以及其他使用MediaStore后端的应用。

通过MTP或图库等应用添加它们会调用MediaScanner(或类似的过程)将它们添加到MediaStore,但可以通过adb push或您自己的代码添加它们要求你事后明确这样做。

在您的代码中,在将图像或视频文件写入SDCard后,您可以通过在类中实现MediaScanner接口将文件的路径和MIME类型传递给MediaScannerConnectionClient,实例化它,然后调用scan()。然后MediaScanner将打开文件,收集/生成元数据,并将文件添加到MediaStore

使用此方法查看android - dynamically add pictures to gallery widget示例类。