繁体   English   中英

Android 滑翔没有在 Android 4.X 中加载图片

[英]Android glide not loading pictures in Android 4.X

我正在使用 Glide v4.11 从 web 加载图片,在 android 5.0 或更高版本中一切正常,但在 android 4.X 图片不加载。

这是我的代码:

 RequestOptions options = new RequestOptions()
                    .placeholder(android.R.drawable.progress_horizontal)
                    .error(android.R.drawable.presence_offline)
                    .diskCacheStrategy(DiskCacheStrategy.ALL);

   Glide.with(context)
                    .load(data.getImage_url())
                    .apply(options)
                    .into(holder.thumbnail);

这是 Android 4.4 上的 LogCat:

W/Glide: Load failed for https://www.gradientapi.xyz/generate/w/1000/h/500 with size [188x263]
    class com.bumptech.glide.load.engine.GlideException: Failed to load resource
    There was 1 cause:
    javax.net.ssl.SSLHandshakeException(javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0xb85422a0: Failure in SSL library, usually a protocol error
    error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol (external/openssl/ssl/s23_clnt.c:766 0xa744e990:0x00000000))
     call GlideException#logRootCauses(String) for more detail
      Cause (1 of 1): class com.bumptech.glide.load.engine.GlideException: Fetching data failed, class java.io.InputStream, REMOTE
    There was 1 cause:
    javax.net.ssl.SSLHandshakeException(javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0xb85422a0: Failure in SSL library, usually a protocol error
    error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol (external/openssl/ssl/s23_clnt.c:766 0xa744e990:0x00000000))
     call GlideException#logRootCauses(String) for more detail
        Cause (1 of 1): class com.bumptech.glide.load.engine.GlideException: Fetch failed
    There was 1 cause:
    javax.net.ssl.SSLHandshakeException(javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0xb85422a0: Failure in SSL library, usually a protocol error
    error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol (external/openssl/ssl/s23_clnt.c:766 0xa744e990:0x00000000))
     call GlideException#logRootCauses(String) for more detail
          Cause (1 of 1): class javax.net.ssl.SSLHandshakeException: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0xb85422a0: Failure in SSL library, usually a protocol error
    error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol (external/openssl/ssl/s23_clnt.c:766 0xa744e990:0x00000000)

我搜索了 web,发现 Android 4.4 仅支持 TLS 1.0。

这可能是问题? 如果是,有什么解决方案吗?

这是握手异常。 在早于Android 5.0的设备上, TLSv1.1TLSv1.2协议默认未启用,这就是发生此异常的原因。

您可以在应用程序的 class onCreate 方法中尝试此操作:

if (Build.VERSION.SDK_INT == 19) {
        try {
            ProviderInstaller.installIfNeeded(this);
        } catch (Exception ignored) {
        }
    }

此外,您可以查看此 github 问题以获得更好的解决方案。

我在 API 30 上遇到了这个问题。这很奇怪,我使用带有 okhttp 的 Retrofit 可以很好地访问同一服务器上的其他内容,但是当我尝试使用 Glide 加载图像时,我得到了可怕的:

SSLProtocolException: Read error: ssl=0xe78f6a18: Failure in SSL library, usually a protocol error

我看到了各种关于更旧的 Android 版本存在 TLS1.2 问题的帖子,但这不是问题。 看起来 Glide 依赖于旧版本的 OKHttp,这就是问题所在。 或者类似的东西,不完全确定,但我确实在我的 gradle 文件中修复了它:

implementation 'com.github.bumptech.glide:glide:4.12.0'
implementation 'com.github.bumptech.glide:okhttp3-integration:4.12.0'

似乎okhttp3-integration可以修复它。 我在这里为其他对此感到困惑并进行一些搜索的人发布此内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM