Android. webview基本配置以及SSLerror错误过滤

该博客介绍了如何在Android中设置WebView的基本配置,包括启用JavaScript、设置编码、布局算法等,并展示了如何处理SSL错误,通过自定义WebViewClient来允许SSL错误继续加载页面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

@SuppressLint("SetJavaScriptEnabled")
    fun setWebSettings(context: Context?, mWebView: WebView) {
        val webSettings = mWebView.settings
        //        webSettings.setTextSize(WebSettings.TextSize.NORMAL);
        // 设置支持JavaScript
        webSettings.javaScriptEnabled = true
        webSettings.loadWithOverviewMode = true
        webSettings.defaultTextEncodingName = "utf-8"
        webSettings.layoutAlgorithm = WebSettings.LayoutAlgorithm.SINGLE_COLUMN
        webSettings.useWideViewPort = true
        //        webSettings.setSupportZoom(true);
        webSettings.domStorageEnabled = true //打开DOM存储
        webSettings.javaScriptCanOpenWindowsAutomatically = true
        webSettings.pluginState = WebSettings.PluginState.ON
        webSettings.allowFileAccess = true
        webSettings.builtInZoomControls = true
        webSettings.setSupportZoom(false) // 设置不能支持缩放
        webSettings.setAppCacheEnabled(true) // 开启H5(APPCache)缓存功能
        //        webSettings.setBlockNetworkImage(true);        //不加载图片
        webSettings.databaseEnabled = true // 应用可以有数据库
        val ua = webSettings.userAgentString
//        webSettings.userAgentString = "$ua JINRAN/Android"
        if (Build.VERSION.SDK_INT > Build.VERSION_CODES.O) {
            webSettings.safeBrowsingEnabled = false
        }
        // 使用了https头,而h5页面中使用了http头,解决的问题
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            webSettings.mixedContentMode = WebSettings.MIXED_CONTENT_ALWAYS_ALLOW
        }
        webSettings.cacheMode = WebSettings.LOAD_NO_CACHE // 根据cache-control决定是否从网络上取数据
        //提高渲染优先级
        webSettings.setRenderPriority(WebSettings.RenderPriority.HIGH)
        val myWebViewClient = MyWebViewClient()
        mWebView.webViewClient = myWebViewClient
        mWebView.webChromeClient = WebChromeClient()
    }

}

// 过滤ssl错误
private class MyWebViewClient : WebViewClient() {
    override fun onReceivedSslError(view: WebView?, handler: SslErrorHandler?, error: SslError?) {
        handler!!.proceed()
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值