You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android 7+设备使用Universal Image Loader出现FileNotFoundException求助

解决Universal Image Loader无法加载带HTML转义参数的图片链接问题

嘿,这个问题我之前也碰到过!核心原因是API返回的URL里带了HTML转义的&,而Universal Image Loader(UIL)默认不会自动解码这些转义字符,导致请求的URL参数格式错误——服务器会把&当成参数名的一部分,而不是参数分隔符,自然识别不了正确的参数,最后返回404错误,也就是你看到的FileNotFoundException。

下面给你两种简单有效的解决方案:

方案1:直接替换转义字符

如果你的链接里只有&这一种转义问题,直接做字符串替换最快捷:

// 原API返回的有问题的链接
String problematicUrl = "https://img.anews.com?url=https://img.anews.com/media/posts/images/20180419/89413447.jpg&w=1080&h=735";
// 把&替换成真实的参数分隔符&
String fixedUrl = problematicUrl.replace("&", "&");

// 用修复后的URL调用UIL加载图片
ImageLoader.getInstance().displayImage(fixedUrl, yourImageView);

方案2:通用HTML解码(推荐)

如果API后续可能返回其他HTML转义字符(比如<、>等),用Android自带的Html.fromHtml()做解码更通用:

import android.text.Html;

String problematicUrl = "https://img.anews.com?url=https://img.anews.com/media/posts/images/20180419/89413447.jpg&w=1080&h=735";
// 解码所有HTML转义字符
String fixedUrl = Html.fromHtml(problematicUrl).toString();

ImageLoader.getInstance().displayImage(fixedUrl, yourImageView);

额外注意点

  • 如果你想让UIL全局处理这类URL,可以自定义BaseImageDownloader,在getStreamFromNetwork()方法里先对URL做解码处理,这样就不用每次加载都手动处理了。
  • 确认你的UIL版本是较新的,旧版本可能对嵌套URL的参数解析有额外问题,升级到最新稳定版(比如1.9.5)能避免一些潜在bug。

内容的提问来源于stack exchange,提问作者Sergey Emeliyanov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:00:39