zoukankan      html  css  js  c++  java
  • 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方法即可加载成功。

  • 相关阅读:
    什么时候应该使用C#的属性
    Unicode和字符集小结
    C#编译器怎么检查代码是否会执行
    C#中如何操作2个list
    用Windbg来看看CLR的JIT是什么时候发生的
    bzoj-1579: [Usaco2009 Feb]Revamping Trails 道路升级
    次小生成树
    bzoj-3687: 简单题
    bzoj-3669: [Noi2014]魔法森林
    uva 11732 (trie树)
  • 原文地址:https://www.cnblogs.com/gzpu/p/13457633.html
Copyright © 2011-2022 走看看