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

Jetpack Compose中WebView加载部分网站初始化异常问题咨询

Jetpack Compose WebView加载uni.tsu.ge异常的问题分析与解决

问题核心

你遇到的问题是**uni.tsu.ge的安全配置和Android WebView默认策略不兼容**,导致无法建立有效连接。主流网站(如Google、Facebook)都采用了符合现代安全标准的TLS协议,所以能正常加载,而这个网站的配置不符合WebView的默认要求。

异常原因

  1. TLS协议版本过低:Android从API 28开始默认禁用TLS 1.0/1.1,要是uni.tsu.ge服务器仅支持这两个旧版协议,WebView就没法建立安全连接,直接加载失败。
  2. 证书配置问题:也有可能是网站的SSL证书存在异常,比如缺少中间证书、证书过期,导致WebView的安全校验不通过。

修复方法

1. 启用旧版TLS协议(API 21+可用)

在WebView初始化时,手动添加对旧版TLS的支持,同时保留现代协议:

@Composable
fun WebViewComposable(
    onDivClick: () -> Unit,
) {
    AndroidView(
        modifier = Modifier.fillMaxSize(),
        factory = { context ->
            WebView(context).apply {
                settings.javaScriptEnabled = true
                settings.domStorageEnabled = true
                settings.builtInZoomControls = true
                settings.setSupportZoom(true)
                
                // 开启全版本TLS支持
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                    settings.sslSettings.enabledProtocols = arrayOf(
                        "TLSv1.0",
                        "TLSv1.1",
                        "TLSv1.2",
                        "TLSv1.3"
                    )
                }
            }
        },
        update = {
            it.loadUrl("https://uni.tsu.ge")
        }
    )
}

2. 临时忽略证书错误(仅测试用)

如果是证书校验失败,可以临时跳过验证,但绝对不能用于生产环境,会带来严重安全风险:

// 在WebView的apply代码块中添加
webViewClient = object : WebViewClient() {
    @SuppressLint("WebViewClientOnReceivedSslError")
    override fun onReceivedSslError(
        view: WebView?,
        handler: SslErrorHandler?,
        error: SslError?
    ) {
        handler?.proceed() // 跳过证书验证
    }
}

3. 更新设备WebView组件

确保设备上的「Android System WebView」是最新版本,旧版WebView可能存在协议支持的兼容性问题。

内容的提问来源于stack exchange,提问作者Sasha Matveev

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 06:28:13