删除的图像仍然显示在Android画廊中,直到我重新启动电子邮件

sta*_*ack 3 android emulation

我正在删除文件

File fileToDelete =  new File("filepath");
Boolean fileDeleted =  fileToDelete.delete();
Run Code Online (Sandbox Code Playgroud)

fileDeleted为true,当我检查DDMS时,文件不存在,但如果我点击图库,它仍会显示刚删除的图像.我必须重新启动模拟器才能看到更改.

有没有办法看到更改,而无需重新启动emactor?我正在使用eclipse

zap*_*apl 15

该画廊正在使用Android的媒体数据库来显示媒体列表.在再次扫描文件系统之前,删除文件不会反映在数据库中.这是例如在重新启动后完成的.

您可以直接通过数据库删除文件,也可以强制它扫描刚刚删除的文件或文件夹.

File fileToDelete =  new File("filepath");
boolean fileDeleted =  fileToDelete.delete();

// request scan    
Intent scanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
scanIntent.setData(Uri.fromFile(fileToDelete));
sendBroadcast(scanIntent);
Run Code Online (Sandbox Code Playgroud)


nan*_*esh 4

这与图库如何显示图像文件有关。图像文件的缩略图缓存在 MediaStore 中,所有详细信息都存在于 Mediastore contentProvider 中。

删除该文件不会更新此数据库。但是当你重新启动模拟器时,Mediascanning是由android完成的。如果可以触发MediaScanning,图库将停止显示文件