【问题标题】:Images from url not loaded on mobile data connection来自 url 的图像未在移动数据连接上加载
【发布时间】:2020-01-19 01:48:56
【问题描述】:

我正在使用 Glide 将图像从 url 加载到 RecyclerView 适配器中的 ImageView 上。当用户通过 wifi 连接到互联网时,一切正常。但是,当他们的连接是在移动数据上时,Glide 会抛出异常:

java.io.FileNotFoundException: "http://......png" at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream()

任何帮助将不胜感激。

我已尝试使用 https,但同样的问题仍然存在。 还尝试了几乎所有其他图像加载库,包括 UniversalImageLoader、Fresco、Picasso,但仍然存在相同的错误

【问题讨论】:

  • 你能显示你的滑翔代码吗?
  • 您确定此 URL 可用于移动数据吗?
  • 尝试先在浏览器上打开网址
  • 尝试使用 GET 请求访问该图像 URL,可能是在您加载资源时尚未准备好
  • 显然,当我尝试在设备浏览器上加载 url 时出现 504 错误,但在桌面浏览器上它可以工作。

标签: android okhttp android-glide universal-image-loader


【解决方案1】:

请使用类似于 koush/ion 的异步图像加载和缓存库 Check this

Ion.with(context)
.load("http://example.com/image.png")
.withBitmap()
.placeholder(R.drawable.placeholder_image)
.error(R.drawable.error_image)
.animateLoad(spinAnimation)
.animateIn(fadeInAnimation)
.intoImageView(imageView);

您也很容易实现和缓存它。记得添加 neccersery 清单权限。希望对你有帮助!!干杯

dependencies {
  implement 'com.koushikdutta.ion:ion:2.+'
}

将此添加到您的依赖项中。

【讨论】:

  • 感谢帮助,我试过了,url还是不行。
  • 虽然这是很干净的代码,但这似乎与问题无关。
【解决方案2】:

试着把这行放在AndroidManifest.xml:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

WiFi 可能在全球范围内在设备上运行,而移动数据是某种自定义网络状态。 在this tutorial (at FutureStud.io) 中显示了 Glide 4.x 的使用。尽管uses-permission sn-p 应该可以工作,但您可以从那里检查连接并可能会推进您的调试过程。

【讨论】:

    猜你喜欢
    • 2021-11-03
    • 1970-01-01
    • 2015-09-13
    • 2023-03-13
    • 1970-01-01
    • 2015-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多