分为三个步骤,1. 保存图片;2.把文件插入到系统图库;3. 通过广播通知图库更新.
不啰嗦,直接上代码~
public static void saveImageToGallery(Context context, Bitmap bmp) {
// 首先保存图片
File appDir = new File(Environment.getExternalStorageDirectory(), "BianMin");
if (!appDir.exists()) {
appDir.mkdir();
}
String fileName = "sign_"+System.currentTimeMillis() + ".jpg";
File file = new File(appDir, fileName);
try {
FileOutputStream fos = new FileOutputStream(file);
bmp.compress(CompressFormat.JPEG, 100, fos);
fos.flush();
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
// 其次把文件插入到系统图库
String path = file.getAbsolutePath();
try {
MediaStore.Images.Media.insertImage(context.getContentResolver(), path, fileName, null);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
// 最后通知图库更新
Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
Uri uri = Uri.fromFile(file);
intent.setData(uri);
context.sendBroadcast(intent);
}
注意:经实践,通知图库更新时,需要用Uri.fromFile(file)方法,如果用Uri.parse(“file://” + path),会导致更新图库不及时~