Android 通过图库选择图片提示找不到路径 open failed: EROFS (Read-only file system)

app中用户信息上传头像这个挺常见的,一般的都是拍照或选择图片上传。这样一般会出现三个常见问题。

1.进入照相机或图库后,如果没有进行任何操作直接back键返回,有可能造成程序崩溃。

其中一种解决办法就是判断onActivityResult方法里的resultCode,经过测试,我发现,只要是正常的返回,resultCode都是-1,如果没有进行操作的返回,resultCode就会变成0,所以进行以下判断即可:

if (resultCode == 0){  //拍照或选择不成功
	return;
}


2.android系统4.4以下和以上(包括4.4)的URI格式有变动,需要进行适配,具体可参考我以前写的文章:

http://blog.csdn.net/wblyuyang/article/details/45223813


3.进入图库选择图片后可解析出路径,但是提示说找不到文件,log输出为:open failed: EROFS (Read-only file system)

这个跟我的程序操作有关。因为上传的是用户头像,并不需要多么清晰,如果太清晰的话,上传时间过长,用户体验不好。所以我在上传前进行了压缩:

path = BitmapUtils.compressImage(sContext, path, 30);
path就是从uri获取的路径,主要问题是在compressImage方法里,这个方法的思路是从path取的图片进行压缩,并存放在path路径下。这样就可能出问题,即如果是内部路径的话,普通程序是没有权限进行写入的,只有读取的权限,如果尝试写入,就会报上面的错误。解决方法也很简单,只需要把压缩后的图片写入到SD卡里即可,当然,需要在配置文件里配置相应的权限。



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值