通用图像加载器用于外部存储文件

4

你好,我使用Universal Image Loader从设备中加载图片。现在它可以正常工作,但如果文件路径包含“空格字符”,则图片将无法显示,并且日志记录显示存在FileNotFoundException

我尝试使用Java IO在线程中打开文件,它可以打开并读取。

文件名:

/mnt/sdcard/WhatsApp/Media/WhatsApp Images/IMG-20121014-WA0001.jp 

当抛出异常时,它会用%20替换空格,这就是导致异常抛出的原因。

我的代码:

ImageLoader.getInstance().displayImage(
                    Uri.fromFile(
                            new File(cursor.getString(cursor.getColumnIndex(

                            MediaStore.Images.Media.DATA)))).toString(),
                    holder.mImage);

仅当路径中没有空格时才起作用,

需要帮助。


你尝试过将空格符号替换为“%20”吗? - user784540
请查看此讨论:http://stackoverflow.com/questions/6478295/white-space-allowed-as-part-of-file-path - user784540
LogCat的堆栈跟踪?库版本? - nostra13
2个回答

12
很不幸,另一个答案没有太清楚说明fileName是什么,所以在进一步调查后,我成功地使用imageloader加载本地图像: 示例代码:
string imgPath = "/mnt/sdcard/WhatsApp/Media/WhatsApp Images/IMG-20121014-WA0001.jpg";

String decodedImgUri = Uri.fromFile(new File(imgPath)).toString();
ImageLoader.getInstance().displayImage(decodedImgUri, imageView);

Android loading local image with space in path and with universal image loader也帮助解决了这个问题。


5

我曾经遇到过同样的问题,后来找到了这个解决方案。

String uri = fileName.getUri().toString();
String decodedUri = Uri.decode(uri);

ImageLoader.getInstance().displayImage(decodedUri, imageView);

fileName 是你的文件对象。 - Jason
你节省了我很多时间 :) 谢谢!如果文件名包含非ASCII符号,这也会有所帮助。 - Alexandr Shutko

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接