• Android 中的webview


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

    注意事项#

    一,开启网络权限,可能一项没有设置到最后的结果就是加载不出来,所以我们需要再manifist文件中设置权限
    <uses-permission android:name="android.permission.INTERNET"/>
    同时对于9.0以上如果不是https连接而是http的话,还要在application中设置如下属性,因为谷歌不建议在app中打开http的非安全链接。

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

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

    Copy
    <?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的属性

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

    还有可能的webview界面部分不显示的问题是没有打开JavaScript设置,即
    settings.setJavaScriptEnabled(true);
    最后使用webview的loadurl方法即可加载成功。

  • 相关阅读:
    80端口被系统占用
    一些CSS技巧
    js 字符串日期 转成 Date
    mysql: java.sql.SQLException: Incorrect string value: 'xF0x9Fx92x90</...'
    tomcat升级问题
    [转]一个商业计划书模板
    [前端]利用a标签获取url里所需的内容
    回归研发一线
    在程序中打开浏览器(方法1)
    在活动之间切换(显式Intent)
  • 原文地址:https://www.cnblogs.com/gzpu/p/13457633.html
Copyright © 2020-2023  润新知