当前位置: 首页 > news >正文

测试Android webview 加载本地html

最近开发一个需要未联网功能的App, 不熟悉使用Java原生开发界面,于是想使用本地H5做界面,本文测试了使用本地html加载远程数据。直接上代码:

MainActivity.java

package com.alex.webviewlocal;import androidx.appcompat.app.AppCompatActivity;import android.os.Build;
import android.os.Bundle;
import android.webkit.CookieManager;
import android.webkit.WebResourceRequest;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;public class MainActivity extends AppCompatActivity {private WebView webView;private String url="file:///android_asset/web/index.html";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);webView = findViewById(R.id.webview);WebSettings webSettings = webView.getSettings();CookieManager cookieManager = CookieManager.getInstance();cookieManager.setAcceptCookie(true);webSettings.setJavaScriptEnabled(true); // 设置支持javascriptwebSettings.setUseWideViewPort(true);   // 将图片调整到适合webview的大小webSettings.setLoadWithOverviewMode(true);  // 缩放至屏幕的大小webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);webSettings.setUserAgentString("User-Agent");webSettings.setLightTouchEnabled(true); // 设置用鼠标激活被选项webSettings.setBuiltInZoomControls(true);   // 设置支持缩放webSettings.setDomStorageEnabled(true); //设置DOM缓存,当H5网页使用localstorage时,一定要设置webSettings.setDatabaseEnabled(true);webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE); // 设置去缓存,防止加载的为上一次加载的数据webSettings.setSupportZoom(true);   // 设置支持变焦webView.setHapticFeedbackEnabled(false);webSettings.setPluginState(WebSettings.PluginState.ON);webSettings.setAllowFileAccess(true);webSettings.setAllowContentAccess(true);webSettings.setAllowUniversalAccessFromFileURLs(true);webSettings.setAllowFileAccessFromFileURLs(true);webView.loadUrl(url);//        try{
//            if(Build.VERSION.SDK_INT>=16){
//                Class<?> clazz = webView.getSettings().getClass();
//                Method method = clazz.getMethod(
//                        "setAllowUniversalAccessFromFileURLs", boolean.class);
//                if(method!=null){
//                    method.invoke(webView.getSettings(),true);
//                }
//            }
//        } catch (NoSuchMethodException e) {
//            throw new RuntimeException(e);
//        } catch (InvocationTargetException e) {
//            throw new RuntimeException(e);
//        } catch (IllegalAccessException e) {
//            throw new RuntimeException(e);
//        }
//
//        webView.loadUrl(url);
//        webView.setWebViewClient(new WebViewClient(){
//            @Override
//            public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
//                return super.shouldOverrideUrlLoading(view, request);
//            }
//        });}
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical">
<WebViewandroid:id="@+id/webview"android:layout_width="match_parent"android:layout_height="match_parent"></WebView>
</LinearLayout>

h5 文件

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src="./vue.min.js"></script><script src="./axios.min.js"></script>
</head>
<body><div id="app"><h2>{{message}}</h2><ul><li v-for="user in users" :key="user.id">{{user.name}}</li></ul></div><script>var app = new Vue({el:'#app',data(){return {message:'Hello Vue!',users:[]}},mounted(){axios.get('https://jsonplaceholder.typicode.com/users').then(response => {this.users = response.data}).catch(error => {console.log(error)})}})</script>
</body>
</html>

在这里插入图片描述
最终效果:
在这里插入图片描述

相关文章:

测试Android webview 加载本地html

最近开发一个需要未联网功能的App, 不熟悉使用Java原生开发界面&#xff0c;于是想使用本地H5做界面&#xff0c;本文测试了使用本地html加载远程数据。直接上代码&#xff1a; MainActivity.java package com.alex.webviewlocal;import androidx.appcompat.app.AppCompatAct…...

ubuntu安装pgsql

ubuntu安装postgresSQL 官网地址&#xff1a; https://www.postgresql.org/download/ 1.安装 # 添加源 sudo sh -c echo "deb https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list # 安装数字签名 w…...

利用ArcGIS获取每一个冰川的中心位置经纬度坐标:要素转点和要素折点转点的区别

问题概述&#xff1a;下图是天山地区的冰川的分布&#xff0c;我们可以看到每一条冰川是一个面要素&#xff0c;要求得到每一个冰川&#xff08;面要素&#xff09;的中心经纬度坐标。 1.采用要素转点功能 选择工具箱的【数据管理工具】-【要素】-【要素转点】。完成之后再采用…...

数据结构中的七大排序(Java实现)

目录 一、直接插入排序 二、希尔排序 三、直接选择排序 四、堆排序 五、冒泡排序 六、快速排序 七、归并排序 一、直接插入排序 思想&#xff1a; 定义i下标之前的元素全部已经有序&#xff0c;遍历一遍要排序的数组&#xff0c;把i下标前的元素全部进行排序&#xff0…...

深度学习基础算法

算法 1.K近邻算法 机器学习--K-近邻算法(KNN)_k近邻-CSDN博客 2. 数据库样本: CIFAR-10 CIFAR-10数据集&#xff08;介绍、下载读取、可视化显示、另存为图片&#xff09;_cifar10数据集-CSDN博客...

LuatOS-SOC接口文档(air780E)-- ir - 红外遥控

ir.sendNEC(pin, addr, cmd, repeat, disablePWM)# 发送NEC数据 参数 传入值类型 解释 int 使用的GPIO引脚编号 int 用户码&#xff08;大于0xff则采用Extended NEC模式&#xff09; int 数据码 int 可选&#xff0c;引导码发送次数&#xff08;110ms一次&#xff0…...

Java虚拟机常见面试题总结

梳理Java虚拟机相关的面试题&#xff0c;主要参考《深入理解Java虚拟机 JVM高级特性与最佳实践》(第2版, 周志明 著)一书&#xff0c;其余部分整合网络相关内容。注意&#xff0c;关于Java并发编程的面试题因为内容较多&#xff0c;单独整理。Java基础相关的面试题可以参考Java…...

NVIDIA NCCL 源码学习(十一)- ring allreduce

之前的章节里我们看到了nccl send/recv通信的过程&#xff0c;本节我们以ring allreduce为例看下集合通信的过程。整体执行流程和send/recv很像&#xff0c;所以对于相似的流程只做简单介绍&#xff0c;主要介绍ring allreduce自己特有内容。 单机 搜索ring 在nccl初始化的过…...

前端--性能优化【上篇】--网络优化与页面渲染优化

一、网络优化 1、DNS预解析 link标签的rel属性设置dns-prefetch&#xff0c;提前获取域名对应的IP地址 2、CDN&#xff08;网络分发系统&#xff09; 用户与服务器的物理距离对响应时间也有影响。 内容分发网络&#xff08;CDN&#xff09;是一组分散在不同地理位置的 web…...

git 删除分支

目录 1&#xff0c;查看分支2&#xff0c;删除本地分支3&#xff0c;删除远程分支 1&#xff0c;查看分支 # 查看本地分支 git branch# 查看远程分支 git branch -r# 查看所有分支 git branch -a2&#xff0c;删除本地分支 # -d 是 --delete 的简写&#xff0c;会在删除前检查…...

SQLite Write-ahead Logging

1. 概述2. WAL如何工作 2.1 检验指示(Checkpointing)2.2 并发性(Concurrency)2.3 性能考虑(Performance Considerations)3. 激活并配置WAL模式 3.1 自动checkpoint3.2 应用开始的checkpoint3.3 WAL模式的持久性4. 只读数据库5. 避免过大的WAL文件6. WAL索引的共享内存应用7. 不…...

手机有什么爬虫App工具?

随着智能手机的普及和应用的繁盛&#xff0c;越来越多的人开始对手机App进行数据爬取和分析。那么&#xff0c;在进行手机App爬虫的过程中&#xff0c;我们可以借助哪些工具呢&#xff1f;让我们一起来了解一下吧&#xff01; 1、Fiddler Fiddler是一款功能强大的网络调试工具…...

290_C++_截取的一部分FTP视频上传代码,任务信息中读取视频帧数据并将其提供给 libcurl 用于上传。

1、这些结构体和枚举类型的设计是为了在上传过程中有效地存储和传递不同类型的任务信息,以便在上传操作中使用这些信息来管理和跟踪不同类型的上传任务。它们提供了不同类型上传任务所需的特定信息和状态变量 enum UploadTaskType {UTT_Common,UTT_Video };struct UploadInfo…...

读《Gaitset: Regarding gait as a set for cross-view gait recognition》

2019在AAAI&#xff08;还有一版叫GaitSet: Regarding Gait as a Set for Cross-View Gait Recognition&#xff0c;大体上一样&#xff09; 摘要 现有的步态识别方法要么利用步态模板&#xff0c;难以保存时间信息&#xff0c;要么利用保持不必要的顺序约束的步态序列&#x…...

驱动实现LED点灯

demo.c #include <linux/init.h> #include <linux/module.h> #include <linux/fs.h> #include <linux/uaccess.h> #include <linux/io.h> #include "head.h" //定义三个指针指向映射后的虚拟内存 unsigned int *vir_moder; unsigned …...

【Reinforcement Learning】Ubuntu中mujoco210 mujoco_py D4RL安装及错误解决

Ubuntu中mujoco210 mujoco_py D4RL安装及错误解决 本文根据一篇知乎文章链接在此进行配置&#xff0c;记录在配置过程中遇到的一些问题&#xff0c;原文作者的教程很详细&#xff0c;在此对原作者表示感谢&#xff5e; 直接进行知乎原文的第2.2 有效安装过程(避坑) 2.注意上…...

设计模式截图记录

设计模式截图记录...

代碼隨想錄算法訓練營|第三十九天|738.单调递增的数字、968.监控二叉树、第八章 贪心算法總結。刷题心得(c++)

目录 讀題 738.单调递增的数字 自己看到题目的第一想法 看完代码随想录之后的想法 968.监控二叉树 自己看到题目的第一想法 看完代码随想录之后的想法 738.单调递增的数字 - 實作 思路 Code 968.监控二叉树 - 實作 思路 Code 贪心算法 總結 贪心理论基础 貪心…...

前言:自动化框架的设计模式

1、UI自动化框架的设计模式 自动化测试框架有很多种&#xff0c;常见的自动化框架分类如下&#xff1a; 在使用上面的自动化框架时&#xff0c;通常会结合使用分层思想&#xff0c;也就是一些自动化框架设计模式&#xff0c;今天重点分享一下UI自动化框架设计使用比较多的一种…...

Web架构安全分析/http/URL/Cookie攻击

Web 架构安全分析 Web 工作机制及基本概念 传统 Web 架构 LAMP 网页 概念 网页就是我们可以通过浏览器上网看到的精美页面&#xff0c;一般都是经过浏览器渲染过的 .html 页面&#xff0c;html 语言在浏览器中渲染。其中包含了CSS、JavaScript 等前端技术。通过浏览器访问…...

从智能家居到工业4.0:上位机/下位机架构如何塑造万物互联?以Node-RED和MQTT为例

从智能家居到工业4.0&#xff1a;上位机/下位机架构如何塑造万物互联&#xff1f;以Node-RED和MQTT为例 在智能家居的灯光自动调节中&#xff0c;工业流水线的机械臂控制里&#xff0c;或是农业大棚的温湿度监控系统背后&#xff0c;都藏着一套经典的协作模式——上位机与下位机…...

YuukiPS启动器:终极免费动漫游戏一键启动解决方案

YuukiPS启动器&#xff1a;终极免费动漫游戏一键启动解决方案 【免费下载链接】Launcher-PC 项目地址: https://gitcode.com/gh_mirrors/la/Launcher-PC 还在为复杂的游戏配置和繁琐的补丁更新而烦恼吗&#xff1f;YuukiPS启动器正是为你量身定制的终极解决方案&#x…...

从防御者视角出发:手把手教你用Wireshark和ARP防火墙检测并防范Ettercap发起的ARP欺骗攻击

企业级ARP欺骗防御实战&#xff1a;用Wireshark与系统工具构建内网安全防线 最近连续三起企业数据泄露事件调查显示&#xff0c;ARP欺骗攻击已成为内网渗透的"隐形杀手"。某金融公司运维团队发现&#xff0c;攻击者仅用15分钟就通过ARP中间人攻击截获了VPN登录凭证。…...

题解:洛谷 B2073 求小数的某一位

本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来&#xff0c;并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构&#xff0c;旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。 欢迎大…...

WebCanvas:在线网页智能体评测框架,从实验室到真实网络环境

1. 项目概述&#xff1a;一个为真实网络世界而生的智能体评测框架 如果你正在研究或开发基于大语言模型的网页智能体&#xff0c;那你一定遇到过这个核心痛点&#xff1a; 在实验室里跑得飞快的智能体&#xff0c;一到真实、动态、充满不确定性的互联网上&#xff0c;就变得“…...

OpenClaw实操指南28|Skill私有化改造:把别人的技能调教成你的“私房菜“

社区里有很多现成的技能&#xff0c;但"现成"不等于"合用"。 公共技能是为大多数人设计的&#xff0c;默认行为往往是最通用的那种。但你的工作流有自己的特点——文档格式不一样、发送目标不一样、输出风格不一样。 私有化改造就是把公共技能的源码拿过…...

UABEA:Unity游戏资源编辑与逆向工程全能工具使用指南

UABEA&#xff1a;Unity游戏资源编辑与逆向工程全能工具使用指南 【免费下载链接】UABEA c# uabe for newer versions of unity 项目地址: https://gitcode.com/gh_mirrors/ua/UABEA UABEA&#xff08;Unity Asset Bundle Extractor and Editor&#xff09;是一款专为现…...

终极指南:用Krita AI Diffusion插件快速实现智能绘画创作

终极指南&#xff1a;用Krita AI Diffusion插件快速实现智能绘画创作 【免费下载链接】krita-ai-diffusion Streamlined interface for generating images with AI in Krita. Inpaint and outpaint with optional text prompt, no tweaking required. 项目地址: https://gitc…...

Qwen3-4B-Thinking-Gemini-Distill免配置部署:无需pip install,bash /root/start.sh直达WebUI

Qwen3-4B-Thinking-Gemini-Distill免配置部署&#xff1a;无需pip install&#xff0c;bash /root/start.sh直达WebUI 1. 模型简介 Qwen3-4B-Thinking-2507-Gemini-Distill是基于Qwen3-4B-Thinking-2507的社区蒸馏版本&#xff0c;由TeichAI使用Gemini 2.5 Flash生成的5440万…...

GitNexus:让AI编程助手拥有代码库全局视野的智能知识图谱工具

1. 项目概述&#xff1a;当AI助手真正“看懂”你的代码库 如果你和我一样&#xff0c;每天都要和Cursor、Claude Code这类AI编程助手打交道&#xff0c;那你一定遇到过这个令人头疼的场景&#xff1a;你让AI助手修改一个看似简单的函数&#xff0c;它自信满满地给出了代码&…...