所以这是场景
遍历一个文件夹,并用另一组图像替换所有图像。
我的期望:在我的画廊中更新图像以及缩略图。
我得到了什么:当我打开我的画廊时,旧图像缩略图仍然存在。当我打开图像时,会出现该图像的替换版本。更奇怪的是,有些图像,当你打开它们时,会快速闪现之前的原始图像,然后是替换的版本,如果你放大那张照片,“惊喜”是旧照片再次(注意:这只是一些图像。 - 不是全部)。但是,所有图像都没有更新的缩略图。
给它 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());
}
}