/**
* 保存到系统相册
*
* @param context
* @param bmp
*/
public void saveImageToGallery(final Context context, final Bitmap bmp) {
// TODO: 2017/2/20 android6.0权限申请https://github.com/anthonycr/Grant
PermissionsManager.getInstance().requestPermissionsIfNecessaryForResult((Activity) context, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, new PermissionsResultAction() {
@Override
public void onGranted() {
// 首先保存图片
File appDir = new File(Environment.getExternalStorageDirectory(), AppConfig.IMAGE_CAHE);
if (!appDir.exists()) {
appDir.mkdir();
}
String fileName = System.currentTimeMillis() + ".jpg";
File file = new File(appDir, fileName);
try {
FileOutputStream fos = new FileOutputStream(file);
bmp.compress(Bitmap.CompressFormat.JPEG, 100, fos);
fos.flush();
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
// 其次把文件插入到系统图库
try {
MediaStore.Images.Media.insertImage(context.getContentResolver(),
file.getAbsolutePath(), fileName, null);
toastShow("保存成功");
dismissProgressDialog();
} catch (FileNotFoundException e) {
toastShow("保存失败");
e.printStackTrace();
}
}
@Override
public void onDenied(String permission) {
Toast.makeText(context,
"Sorry, we need the Storage Permission to do that",
Toast.LENGTH_SHORT).show();
}
});
// 最后通知图库更新
context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + path)));
}
/**
* todo View 转Bitmap
*
* @param v
* @return
*/
private Bitmap loadBitmapFromView(View v) {
int w = v.getWidth();
int h = v.getHeight();
Bitmap bmp = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(bmp);
c.drawColor(Color.WHITE);
/** 如果不设置canvas画布为白色,则生成透明 */
v.layout(0, 0, w, h);
v.draw(c);
return bmp;
}
原文链接:http://www.apkbus.com/blog-146564-63098.html
打开App,阅读手记