红米note系列裁剪图片时报错:保存时发生错误,保存失败!

项目中有需要裁剪图片的功能,使用的是系统裁剪工具,在已有的多个测试机和模拟器上均正常运行,突然有用户说裁剪图片时报如题错误,app没有崩,所以一直没检测到错误日志,统计后发现大部分在红米noto系列报此错误,想当然的以为又是红米rom兼容不好,心中不禁默默问候一遍。由于没有明确的错误日志,只能从这个报错文案下手,看了部分文章说的一些方法,试了之后,对我完全免疫,后来没辙,自己重新写了这块功能实现,测试之后惊奇发现好了,但是又不知道为什么好了,作为好奇猿怎能善罢甘休,对比此前实现方式,发现多个不同之处,一一排查,最终锁定问题定位,
intent.putExtra(MediaStore.EXTRA_OUTPUT, cropImageUri);
此处的cropImageUri生成的裁剪图保存位置,根目录都是系统根目录,报错的代码子目录是DIRECTORY_PICTURES,不报错的代码是DIRECTORY_DCIM,针对7.0文件分享权限我已做是匹配,申明的是系统根目录,按说不该只是因为子目录不一样而报错,不经意间发现红米手机默认是没有Pictures目录的!!!而我想当然的以为手机都有DCIM和Pictures目录的,就没做截图保存目录是否存在的判断!!!为此我付出了两天焦头烂额的代价!!!
强调:
报此错误时,排查下自己指定截图目录是否存在或者是否正确!!!

总结:不要想当然的以为,代码要规范,不要偷懒,否则付出的代价是翻倍的!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值