Android 开发学习进程0.19 webview 的使用

时间:2023-03-09 17:43:37
Android 开发学习进程0.19  webview 的使用

Android 中的webview

android 中的webview是可以在app内部打开HTML等的网页,不必再打开浏览器,有两种实现方法,即webviewclient webChromeclient 两种方法,如果仅仅是简单的点击和静态界面,直接使用第一种。

注意事项

一,开启网络权限,可能一项没有设置到最后的结果就是加载不出来,所以我们需要再manifist文件中设置权限

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

同时对于9.0以上如果不是https连接而是http的话,还要在application中设置如下属性,因为谷歌不建议在app中打开http的非安全链接。

android:usesCleartextTraffic="true"
android:networkSecurityConfig="@xml/newtwork_security_config"

其中 networksecurityconfig文件要在res下创建,测试华为手机没有这行webview是无法访问的,仅能显示空白。

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" overridePins="true" />
<certificates src="user" overridePins="true" />
</trust-anchors>
</base-config>
</network-security-config>

二、混合加载问题

在部分web界面,会出现https界面但一部分资源是http,导致部分不能加载,安卓在21以后禁止了混合加载,需要手动开启,在webview使用websetting类获取属性,或者直接getwebsetting方法更改webview的属性

  if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.LOLLIPOP) {
settings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
}

还有可能的webview界面部分不显示的问题是没有打开JavaScript设置,即

settings.setJavaScriptEnabled(true);

最后使用webview的loadurl方法即可加载成功。