Android图片保存到相册失败

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”

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值