Jetpack Compose中WebView加载部分网站初始化异常问题咨询
Jetpack Compose WebView加载
uni.tsu.ge异常的问题分析与解决 问题核心
你遇到的问题是**uni.tsu.ge的安全配置和Android WebView默认策略不兼容**,导致无法建立有效连接。主流网站(如Google、Facebook)都采用了符合现代安全标准的TLS协议,所以能正常加载,而这个网站的配置不符合WebView的默认要求。
异常原因
- TLS协议版本过低:Android从API 28开始默认禁用TLS 1.0/1.1,要是
uni.tsu.ge服务器仅支持这两个旧版协议,WebView就没法建立安全连接,直接加载失败。 - 证书配置问题:也有可能是网站的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
相关产品推荐
相关产品推荐

