在做项目时,有时会有这样的需求,需要将用户保存的图片和视频文件,能及时在相册中展示和查看,此时如果没有通知相册更新,就不会及时查看到相册中保存的这种图片。那么我们的应用程序如何通知相册刷新并且用户可以及时在相机中找到刚才保存的图片呢?
方式一:使用 MediaScannerConnection
// 扫描本地mp4文件并添加到本地视频库
MediaScannerConnection mMediaScanner = new MediaScannerConnection(this, null);
mMediaScanner.connect();
if (mMediaScanner !=null && mMediaScanner.isConnected()) {
mMediaScanner.scanFile(outputFile, Constants.VIDEO_MIME_TYPE_MP4);
}
方式二:发送广播通知图库更新
File cameraPath =new File(IOUtils.getDCIMDirectory(), "Camera");
File imgFile =new File(cameraPath, imagePath);
if (imgFile.exists()) {
Uri uri = Uri.fromFile(imgFile);
Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
intent.setData(uri);
sendBroadcast(intent);
}
测试结果:
- 在 Android 8.0 机型部分手机如 vivo x9i 使用上面的两种方式,保存视频到相册时都无法刷新相册,保存图片可行。目前猜测原因为 保存视频的文件夹在图库对视频展示做了限制。
Tips:
- 能使用方式一就尽量使用方式一,方式一不会通知整个图库进行刷新操作。