WebView加载页面的两种方式——网络页面和本地页面

简介: WebView加载页面的两种方式一、加载网络页面  加载网络页面,是最简单的一种方式,只需要传入http的URL就可以,实现WebView加载网络页面代码如下图:二、加载本地页面  1、加载assets目录下的HTML页面:加载assets目录的页面,大多数可以用来做页面数据的存储打包...

WebView加载页面的两种方式

一、加载网络页面

  加载网络页面,是最简单的一种方式,只需要传入http的URL就可以,实现WebView加载网络页面

代码如下图:

二、加载本地页面

  1、加载assets目录下的HTML页面:

加载assets目录的页面,大多数可以用来做页面数据的存储打包,这样可以访问 离线文件,不用去进行网络请求,可以减少用户数据流量的使用

示例代码如下:

//加载assets目录文件
webView.loadUrl("file:///android_asset/staticHtml.html");

在这里面,解释一下引号里面每个字段的意思和作用:

  file字段,表示读取本地文件,不读取网络文件。

  android_asset表示读取当前应用的assets目录下的文件

  staticHtml.html表示assets目录下的HTML页面

  2、加载缓存到本地的页面

加载缓存到本地的页面,这个主要可以用来做页面的离线缓存

例如将html文件存储到本地文件目录下

    //文件存储的本地文件夹路径
        File filesDir = getFilesDir().getAbsoluteFile();
        //本地存储的文件
        File destFile = new File(filesDir, "staticHtmlcopy.html");
        //将assets路径下的文件copy到filesDir路径下,注:此处也可以通过网络访问,对页面进行存储
        InputStream is = null;
        try {
            is = getAssets().open("staticHtml.html");
            if (destFile.exists()) {
                destFile.delete();
            }
            FileOutputStream out = new FileOutputStream(destFile);
            try {
                byte[] buffer = new byte[4096];
                int bytesRead;
                while ((bytesRead = is.read(buffer)) >= 0) {
                    out.write(buffer, 0, bytesRead);
                }
            } finally {
                out.flush();
                try {
                    out.getFD().sync();
                } catch (IOException e) {
                }
                out.close();
            }

        } catch (IOException e) {
            e.printStackTrace();
        }
        //拼接生成WebView使用的url地址
        String url="file://"+destFile.getAbsolutePath();
        webView.loadUrl(url);

 

注:一些网络上直接抓取的页面里面一些js可能存在跨域,或者相对路径的情况,所以最好自己先写一些简单的页面做测试。

相关文章
|
3月前
|
机器学习/深度学习 PyTorch 算法框架/工具
目标检测实战(一):CIFAR10结合神经网络加载、训练、测试完整步骤
这篇文章介绍了如何使用PyTorch框架,结合CIFAR-10数据集,通过定义神经网络、损失函数和优化器,进行模型的训练和测试。
201 2
目标检测实战(一):CIFAR10结合神经网络加载、训练、测试完整步骤
|
12天前
|
Ubuntu Linux 开发者
Ubuntu20.04搭建嵌入式linux网络加载内核、设备树和根文件系统
使用上述U-Boot命令配置并启动嵌入式设备。如果配置正确,设备将通过TFTP加载内核和设备树,并通过NFS挂载根文件系统。
53 15
|
2月前
|
存储 缓存 网络协议
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点,GET、POST的区别,Cookie与Session
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点、状态码、报文格式,GET、POST的区别,DNS的解析过程、数字证书、Cookie与Session,对称加密和非对称加密
|
2月前
|
缓存 JavaScript
Vue加载网络组件(远程组件)
【10月更文挑战第23天】在 Vue 中实现加载网络组件(远程组件)可以通过多种方式来完成。
|
5月前
|
Android开发
【Azure 环境】移动应用 SSO 登录AAD, MSAL的配置为Webview模式时登录页面无法加载
【Azure 环境】移动应用 SSO 登录AAD, MSAL的配置为Webview模式时登录页面无法加载
|
5月前
|
SQL 网络协议 安全
【Azure API 管理】APIM集成内网虚拟网络后,启用自定义路由管理外出流量经过防火墙(Firewall),遇见APIs加载不出来问题
【Azure API 管理】APIM集成内网虚拟网络后,启用自定义路由管理外出流量经过防火墙(Firewall),遇见APIs加载不出来问题
|
5月前
|
Java Android开发 Kotlin
Android项目架构设计问题之要在Glide库中加载网络图片到ImageView如何解决
Android项目架构设计问题之要在Glide库中加载网络图片到ImageView如何解决
46 0
|
API Android开发 数据安全/隐私保护
解决android webview 加载http url 失败 net::ERR_CLEARTEXT_NOT_PERMITTED 错误
解决android webview 加载http url 失败 net::ERR_CLEARTEXT_NOT_PERMITTED 错误
1165 0
|
7月前
|
Web App开发 移动开发 前端开发
52. 【Android教程】网页视图:WebView
52. 【Android教程】网页视图:WebView
112 1
|
6月前
|
Web App开发 JavaScript 前端开发
Android端使用WebView注入一段js代码实现js调用android
Android端使用WebView注入一段js代码实现js调用android
161 0