开启权限 可以多种形式
@SuppressLint("CheckResult")
private void saveImageLocation(View view) {
new RxPermissions(getActivity()).request(Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE)
.subscribe(permission -> {
if (permission) {
saveImageToGallery(getContext(),createViewBitmap(view));
// saveMyBitmap("Address", createViewBitmap(view));
} else {
AppToastManager.getInstance().showShort(R.string.share_please_open_read_write_access);
}
});
}
View 转bitmap
public Bitmap createViewBitmap(View v) {
Bitmap bitmap = Bitmap.createBitmap(v.getWidth(), v.getHeight(),
Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
v.draw(canvas);
return bitmap;
}
保存并插入图库
/**
* 保存图片到本地图库 并通知刷新图库
*
* @param context
* @param bmp
*/
public static void saveImageToGallery(Context context, Bitmap bmp) {
// 首先保存图片路径
String directoryPictures = context.getExternalFilesDir("Pictures").getAbsolutePath();
File appDir = new File(directoryPictures);
if (!appDir.exists()) {
appDir.mkdir();
}
//当前时间来命名图片
String fileName = System.currentTimeMillis() + "_invitation.png";
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();
}
addMediaStore(context, bmp);
AppToastManager.getInstance().showShort(R.string.share_save_image_successful);
}
public static void addMediaStore(Context context, Bitmap bitmap) {
MediaStore.Images.Media.insertImage(context.getContentResolver(), bitmap, "share", "description");
}