Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android-在加载多媒体资料之前刷新设备上的所有缩略图?_Android_Thumbnails_Mediastore - Fatal编程技术网

android-在加载多媒体资料之前刷新设备上的所有缩略图?

android-在加载多媒体资料之前刷新设备上的所有缩略图?,android,thumbnails,mediastore,Android,Thumbnails,Mediastore,我有一个应用程序,它使用光标从mediastore加载缩略图(到gridview中): CursorLoader cursorLoader = null; if (Integer.valueOf(android.os.Build.VERSION.SDK_INT) >= android.os.Build.VERSION_CODES.HONEYCOMB) { String[] from = { MediaStore.Files.FileColumns._

我有一个应用程序,它使用光标从mediastore加载缩略图(到gridview中):

        CursorLoader cursorLoader = null;
    if (Integer.valueOf(android.os.Build.VERSION.SDK_INT) >= android.os.Build.VERSION_CODES.HONEYCOMB) {
        String[] from = { MediaStore.Files.FileColumns._ID,
                MediaStore.Files.FileColumns.DATA,
                MediaStore.Files.FileColumns.DATE_ADDED,
                MediaStore.Files.FileColumns.MEDIA_TYPE,
                MediaStore.Files.FileColumns.MIME_TYPE,
                MediaStore.Files.FileColumns.TITLE };
        projection = from;
        String selection = MediaStore.Files.FileColumns.MEDIA_TYPE + "="
                + MediaStore.Files.FileColumns.MEDIA_TYPE_IMAGE + " OR "
                + MediaStore.Files.FileColumns.MEDIA_TYPE + "="
                + MediaStore.Files.FileColumns.MEDIA_TYPE_VIDEO;
        Uri queryUri = MediaStore.Files.getContentUri("external");
        cursorLoader = new CursorLoader(this, queryUri, projection,
                selection, null, MediaStore.Files.FileColumns.DATE_ADDED
                        + " DESC");
    } else {
        String[] from = { MediaStore.MediaColumns.DATE_ADDED };
        projection = from;
        Uri sourceImageUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
        cursorLoader = new CursorLoader(this, sourceImageUri, null, null,
                null, MediaStore.MediaColumns.DATE_ADDED + " DESC");
    }
    Cursor cursor = null;
    if (cursorLoader != null) {
        cursor = cursorLoader.loadInBackground();
        mGalleryAdapter = new GalleryAdapter(this,
                android.R.layout.simple_list_item_1, cursor, projection,
                to, CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
        gallery.setAdapter(mGalleryAdapter);
        gallery.setOnItemClickListener(myOnItemClickListener);
    }
然而,一些较新的图像加载时没有缩略图,这是相当愚蠢的。缩略图仅在我打开手机上的gallery应用程序(照片)时生成

如何以编程方式刷新设备上的所有缩略图,以便在没有缩略图的情况下不会留下空白图像


我希望它能在所有Android版本上运行,包括4.4。提前感谢:)

您应该能够使用以下命令触发重新扫描:

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED,
                        Uri.parse("file://"
                        + Environment.getExternalStorageDirectory())));
您可能需要更改路径以满足您的需要


如果您想等待扫描完成后再继续,则需要为
操作\u媒体\u扫描仪\u完成
意图注册一个接收器

/RdvA7y4MqfE


kaiwid23建议这不适用于4.4+。在这种情况下,您可以手动控制扫描仪

您将希望使用该方法。我不知道如果提供一个目录,它是否可以递归工作,或者它是否只接受单路径

在这种情况下,您将在构造函数中传递一个
OnScanCompletedListener
,因此监视扫描的完成实际上要容易得多。

编辑: 使用
MediaStore.Images.Thumbnails.getThumbnail()
MediaStore.Video.Thumbnails.getThumbnail()
-这是一个阻止类,如果找不到,将生成一个新位图。简单得多

您只需要文件的MediaStore ID,我假设您已经有了,您可以在活动中或通过上下文使用标准的getContentResolver()。此方法还允许您直接获取迷你或微型位图

更多关于这个


旧答案: 正如不可分割所说,你可以使用

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED,
                    Uri.parse("file://"
                    + Environment.getExternalStorageDirectory())));

但是,这对Android 4.4(我想)不会起作用,所以请考虑使用API 19 + ./p>的MyTaskActer类。