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方法即可加载成功。