无知的我以为照片保存到本地就可以在相册中立刻看到,但发现并不是这样,在网上看了大神的解决方案:
保存到本地之后,需要手动通知相册进行更新,源码如下:
/**
* 保存照片到本地
* @param bitMap 要保存的bitmap对象
* @param filePath 保存到的路径
* @param name 保存成的文件名
* @param mContext 上下文
* @return
*/
public static boolean savePhoto(Bitmap bitMap, String filePath, String name, Context mContext){
File dir = new File(filePath);
if(!dir.exists()){
dir.mkdirs();
}
File dirFile = new File(filePath,name);
FileOutputStream bos = null;
try {
bos = new FileOutputStream(dirFile);
bitMap.compress(Bitmap.CompressFormat.JPEG, 80, bos);
bos.flush();
bos.close();
scanPhoto(mContext, dirFile.getAbsolutePath());
return true;
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
try {
if (bos != null) {
bos.flush();
bos.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return false;
}
/**
* 通知android相册更新照片
* @param ctx 上下文
* @param imgFileName 图片名称
*/
private static void scanPhoto(Context ctx, String imgFileName) {
Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
File file = new File(imgFileName);
Uri contentUri = Uri.fromFile(file);
mediaScanIntent.setData(contentUri);
ctx.sendBroadcast(mediaScanIntent);
}