Picasso 2.71828加载本地文件URI失败问题求助
Picasso加载APP私有目录URI失败但setImageURI正常的原因分析
嘿,这个问题我之前在项目里也踩过坑,其实核心是Picasso的加载逻辑和Android系统API对本地文件的访问权限/处理方式不一样,具体来说有这几点:
Picasso对私有目录URI的默认限制
你那个URI指向的是APP的内部私有目录(data/user/0/.../files/),这个目录是系统保护的,只有当前APP能直接访问。而Picasso默认的FileRequestHandler在处理file://URI时,并没有针对APP私有目录做特殊适配——它更倾向于处理外部存储的文件URI,所以直接传入私有目录的URI时,Picasso无法正确读取到文件,自然显示不出来。系统API
setImageURI()的权限优势ImageView.setImageURI()是Android原生的系统方法,它依托当前APP的上下文去访问文件,对于APP自己的私有目录文件,天然拥有完全的读写权限,所以能毫无障碍地读取并显示图片。快速解决方法
如果想继续用Picasso加载这个图片,最简单的方式是把URI转换成File对象再传入:File privateImageFile = new File(crop_image_uri.getPath()); Picasso.get() .load(privateImageFile) .placeholder(R.drawable.header_img) .into(app_bar_image);这种方式下,Picasso会通过File对象直接访问APP私有目录的文件,就能正常加载显示了。
内容的提问来源于stack exchange,提问作者Leon
相关产品推荐
相关产品推荐

