微信采用的是扫描系统媒体,所以保存成功之后需要刷新一下系统媒体库,
public static File saveBitmap(Bitmap bm, String name, Context context) {
File dir = null;
//系统相册路径
String galleryPath= Environment.getExternalStorageDirectory()
+ File.separator + Environment.DIRECTORY_DCIM
+File.separator+"Camera"+File.separator;
//如果大于api28的话,安卓q是不能在外部存储图片的,
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.P) {
dir = new File(String.valueOf(context.getExternalFilesDir(Environment.DIRECTORY_DOCUMENTS)));
} else {
dir = new File(PIC_SAVE_PATH);
}
dir.mkdirs();
File f = new File(dir, name + ".png");
if (f.exists())
f.delete();
try {
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(f));
bm.compress(Bitmap.CompressFormat.PNG, 90, bos);
bos.flush();
bos.close();
Log.e("SaveBitmap", "已经保存");
} catch (IOException e) {
// TODO Auto-generated catch block
Log.e("SaveBitmap", "保存失败");
e.printStackTrace();
}
try {
//刷新媒体库之后,微信和qq选择图片都能看到
MediaStore.Images.Media.insertImage(App.mApp.getContentResolver(),
f.getAbsolutePath(), f.getName(), null);
App.mApp.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + f.getAbsolutePath())));
} catch (Exception e) {
e.printStackTrace();
}
return f;
}