传了一个图片缓存路径过来,然后通过路径去获取图片到保存,先把代码放此处记一下.
public void onSavePicture(path){
//先判断权限
if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
Toast.makeText(AppActivity.this, "请至权限中心打开应用权限", Toast.LENGTH_SHORT).show();
return;
}
//从路径中读取 照片
Bitmap bmp = BitmapFactory.decodeFile(path);
// 新建目录appDir,并把图片存到其下
File appDir = new File(AppActivity.getContext().getApplicationContext().getExternalFilesDir(null).getPath()+ "BarcodeBitmap");
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();
Toast.makeText(AppActivity.this, "图片保存成功", Toast.LENGTH_SHORT).show();
} catch (FileNotFoundException e) {
Toast.makeText(AppActivity.this, "保存图片失败", Toast.LENGTH_SHORT).show();
e.printStackTrace();
} catch (IOException e) {
Toast.makeText(AppActivity.this, "保存图片失败", Toast.LENGTH_SHORT).show();
e.printStackTrace();
}
// 其次把文件插入到系统图库
try{
MediaStore.Images.Media.insertImage(AppActivity.getContext().getApplicationContext(). getContentResolver(),file.getAbsolutePath(), fileName, null);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
// 最后通知图库更新
AppActivity.getContext().getApplicationContext().sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse(file.getAbsolutePath())));
}