0

所以这是场景

遍历一个文件夹,并用另一组图像替换所有图像。

我的期望:在我的画廊中更新图像以及缩略图。

我得到了什么:当我打开我的画廊时,旧图像缩略图仍然存在。当我打开图像时,会出现该图像的替换版本。更奇怪的是,有些图像,当你打开它们时,会快速闪现之前的原始图像,然后是替换的版本,如果你放大那张照片,“惊喜”是旧照片再次(注意:这只是一些图像。 - 不是全部)。但是,所有图像都没有更新的缩略图。

给它 10 分钟然后 bam!,所有图像都已刷新,没有旧的原始图像的痕迹。

不知道为什么它不立即执行。

我也按照此处的说明进行操作。但同样的问题仍然存在。触发扫描整个文件夹最新的 API 不允许扫描整个文件夹,除了系统这样做,因为一些应用程序扫描了一个文件夹,因为只有一个图像发生了变化,从而耗尽了电池寿命。

我的代码

//originalImagesList is the list of filepaths for all the images in a specific folder
for (String s :originalImagesList)
{
    try
    {
        File checkIfFile = new File(s);
        //replacementAppImg contains a list of images used to replace other images with
        Log.v(TAG, "Moving file From Replace - " + replacementAppImg.get(1));
        Log.v(TAG, "Moving file to Replace - " + s);

        InputStream in = new FileInputStream(replacementAppImg.get(1)); //From where
        OutputStream out = new FileOutputStream(s); //To where

        //Copy the bits from instream to outstream
        byte[] buf = new byte[1024];
        int len;
        while ((len = in.read(buf)) > 0) {
            out.write(buf, 0, len);
        }
        in.close();
        out.close();

        Intent mediaScannerIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
        //checkIfFile is the new replaces image that i want to refresh/check
        Uri fileContentUri = Uri.fromFile(checkIfFile);
        mediaScannerIntent.setData(fileContentUri);
        CustomSettings.getCustomAppContext().sendBroadcast(mediaScannerIntent);
    } catch (Exception ex) {
        Log.v(TAG2,"Exception 1 - "  + ex.toString());
    }
}
4

1 回答 1

0

这必须在主 UI 线程上完成。

在任何线程或意图的任何其他地方完成它不会起作用

于 2014-06-12T05:45:53.537 回答