Android之图片保存的一些坑
生成图片的路径:
// 该目录下得文件不会被相册扫描到,所以不要用这个
String rootDir = context.getExternalFilesDir(null).getAbsolutePath();
// 虽然已过时但用这个
String rootDir = Environment.getExternalStorageDirectory().getAbsolutePath();
6.0之后不仅需要在Manifest文件里声明一下,还要在保存前需要动态申请一下权限
if (Build.VERSION.SDK_INT >= 23) {
int REQUEST_CODE_CONTACT = 101;
String[] permissions = {Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.CAMERA};
//验证是否许可权限
for (String str : permissions) {
if (this.checkSelfPermission(str) != PackageManager.PERMISSION_GRANTED) {
//申请权限
this.requestPermissions(permissions, REQUEST_CODE_CONTACT);
}
}
}
保存之后相册是没有的,需要发广播通知相册刷新:
//通知系统相册刷新,file是要保存图片
context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,
Uri.fromFile(new File(file.getPath()))));
java.io.FileNotFoundException open failed: EACCES (Permission denied)
如果还不行并且报了这个异常,是由于当前使用的安卓版本过高导致的,出现了文件访问失败。
解决方法是在AndroidMainfest中添加android:requestLegacyExternalStorage=“true”