WebView的用法详解

【android开发-23】android中WebView的用法详解 android中webview的详细用法介绍和参考代码 阅读详情

1、布局

<WebView
	android:id="@+id/wv"
	android:layout_width="match_parent"
	android:layout_height="match_parent" />
2、WebView加载网页

//加载网页链接
mWebView.loadUrl("http://www.");
//加载本地assets目录下的网页
mWebView.loadUrl("file:///android_asset/demo.html");
3、WebView基本设置

WebSettings settings = mWebView.getSettings();
settings.setBuiltInZoomControls(true);// 显示缩放按钮(wap网页不支持)
settings.setUseWideViewPort(true);// 支持双击缩放(wap网页不支持)
settings.setJavaScriptEnabled(true);// 支持js功能
4、设置WebViewClient

mWebView.setWebViewClient(new WebViewClient() {
	// 开始加载网页
	@Override
	public void onPageStarted(WebView view, String url, Bitmap favicon) {
		super.onPageStarted(view, url, favicon);
	}

	// 网页加载结束
	@Override
	public void onPageFinished(WebView view, String url) {
		super.onPageFinished(view, url);
	}

	// 所有链接跳转会走此方法
	@Override
	public boolean shouldOverrideUrlLoading(WebView view, String url) {
		System.out.println("跳转链接:" + url);
		view.loadUrl(url);// 在跳转链接时强制在当前webview中加载
		//此方法还有其他应用场景, 比如写一个超链接<a href="tel:110">联系我们</a>, 当点击该超链接时,
		//可以在此方法中获取链接地址tel:110, 解析该地址,获取电话号码, 然后跳转到本地打电话页面, 而不是加载网页, 从而实现了webView和本地代码的交互
		return true;
	}
});
5、设置WebChromeClient

mWebView.setWebChromeClient(new WebChromeClient() {
	@Override
	public void onProgressChanged(WebView view, int newProgress) {
		super.onProgressChanged(view, newProgress);
		// 进度发生变化
		System.out.println("进度:" + newProgress);
	}

	@Override
	public void onReceivedTitle(WebView view, String title) {
		super.onReceivedTitle(view, title);
		// 网页标题
		System.out.println("网页标题:" + title);
	}
});
6、WebView加载上一页和下一页

mWebView.goBack();//跳到上个页面
mWebView.goForward();//跳到下个页面
mWebView.canGoBack();//是否可以跳到上一页(如果返回false,说明已经是第一页)
mWebView.canGoForward();//是否可以跳到下一页(如果返回false,说明已经是最后一页)
点击返回键,回到上一页

private long mStartTime;
@Override
public void onBackPressed() {//点击返回键的时候
	if (mWebView.canGoBack()) {
		mWebView.goBack();
	} else {
		long currentTime = System.currentTimeMillis();
		if ((currentTime - mStartTime) < 2000) {
			this.finish();
		} else {
			mStartTime = System.currentTimeMillis();
			Toast.makeText(this, "再点击一次返回,则退出应用", Toast.LENGTH_SHORT).show();
		}
	}
}
7、缓存设置

cache-control是在请求网页时服务器的响应头,此响应头用于决定网页的缓存策略。
常见的取值有public(所有内容都将被缓存), private(内容只缓存到私有缓存中),no-cache(所有内容都不会被缓存),max-age=xxx(缓存的内容将在 xxx 秒后失效)等等

WebSettings settings = mWebView.getSettings();
//只要本地有,无论是否过期,或者no-cache,都使用缓存中的数据
settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
//只加载缓存
settings.setCacheMode(WebSettings.LOAD_CACHE_ONLY);
//根据cache-control决定是否从网络上取数据
settings.setCacheMode(WebSettings.LOAD_DEFAULT);
//不加载缓存
settings.setCacheMode(WebSettings.LOAD_NO_CACHE);
8、清理缓存

最简便的方式:
mWebView.clearCache(true);
另外一种方式:
//删除缓存文件夹
File file = CacheManager.getCacheFileBaseDir(); 
   if (file != null && file.exists() && file.isDirectory()) { 
	for (File item : file.listFiles()) { 
	 item.delete(); 
	} 
	file.delete(); 
   } 
//删除缓存数据库
context.deleteDatabase("webview.db"); 
context.deleteDatabase("webviewCache.db");
9、Cookie

//Cookie设置
CookieSyncManager.createInstance(this);
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(true);
String cookie = "name=xxx;age=18";
cookieManager.setCookie(URL, cookie);
CookieSyncManager.getInstance().sync();
//获取Cookie
CookieManager cookieManager = CookieManager.getInstance();
String cookie = cookieManager.getCookie(URL);
//清除Cookie
CookieSyncManager.createInstance(context);  
CookieManager cookieManager = CookieManager.getInstance(); 
cookieManager.removeAllCookie();
CookieSyncManager.getInstance().sync(); 

10、Js调用Android

WebSettings settings = mWebView.getSettings();
settings.setJavaScriptEnabled(true);//开启js
mWebView.loadUrl("file:///android_asset/demo.html");//加载本地网页
mWebView.setWebChromeClient(new WebChromeClient());//此行代码可以保证js的alert弹窗正常弹出

//核心方法, 用于处理js被执行后的回调
mWebView.addJavascriptInterface(new JsCallback() {

	@JavascriptInterface//注意:此处一定要加该注解,否则在4.1+系统上运行失败
	@Override
	public void onJsCallback() {
		System.out.println("js调用Android啦");
	}
}, "demo");//参1是回调接口的实现;参2是js回调对象的名称
//定义回调接口
public interface JsCallback {
	public void onJsCallback();
}
Js中:

<!-- Js调用Android代码 -->
<a onClick="window.demo.onJsCallback()">
11、Android调用Js

//直接使用webview加载js就可以了
mWebView.loadUrl("javascript:wave()");
Js中

function wave() {
	alert("Android调用Js啦");
}

最后附上android和js交互demo




IEC 104测试工具实战:协议解析、参数配置与自动化调试 在电力远动与变电站自动化系统中,IEC 60870-5-104协议是主站与从站间远动通信的核心规范。理解其帧类型、ASDU数据单元及超时窗口机制,是高效进行协议调试的前提。基于IEC 104测试工具,工程师可快速完成链路握手、总召下发、遥信遥测解析等现场验证,但其便携免安装特性也带来环境配置与参数对齐的挑战。从最小通信参数配置到Python自动化脚本构造与回包解析,再到故障注入与链路指标量化,一套完整的调试方法能显著提升电力自动化设备的验收效率。本文以实际工程视角,系统梳理IEC 104测试的关键知识、常见 阅读详情

相关推荐

R 分析裂区试验设计

裂区试验有主区部分和副区部分, 因而有主区部分误差(误差 a,简记为Ea )和副区部分误差(误差b,简记为Eb) 分别用于测验主区处理以及副区处理和主、副互作的显著性。对同一个二因素试验资料作自由度和平方和的分解,则可发现随机区组的误差项自由度和平方和分别为DFe、SSe,而裂区设计有两个误差项,其自由度和平方和分别为DFEa,DFEb, SSEa, SSEb。而区组,处理效应等各个变异项目的自由

samhuairen的专栏 8934

微信小程序web-view不要使用 wx:if 和wx:else,页面也会跳转,但参数都没有了

微信小程序web-view不要使用 wx:if 和wx:else,页面也会跳转,但会出现奇怪的错误,比如携带的url参数都没有了.尽量使用两个页面分开。

u013282737的博客 2194

DDoS攻击--Syn_Ack/Ack_Flood等攻击防护详解(TCP)

前言 Syn_Ack/Ack_Flood攻击属于TCP攻击,在了解Syn_Ack/Ack_Flood攻击之前,可以先看看TCP攻击详解。 Syn_Ack Flood 攻击: syn_ack报文出现在连接建立的第2个报文,用来确认第一次握手的syn包。 当服务器收到syn_ack报文后会在系统里查询是否属于3次握手的范畴。如果属于则回复ack,并将连接设为连接状态。若没有查到相关信息,则回复...

一只IT小小鸟 1万+

微信小程序下web-view和浏览器下的iframe详解

3、可通过window.addEventListener("message" 传参。3、web-view向微信小程序传惨可通过特定的时机传参。一、微信小程序web-view通信及使用。2、可通过url问号拼接形式传参。iframe链接下的js接参代码。1、可通过css自定义样式大小。二、iframe使用。

weixin_51958960的博客 6665

速腾16线激光雷达(RS-16)在ubuntu18.04系统下跑SC-A-LOAM算法

说明: 简要记录一下速腾16线激光雷达即RS-16在ubuntu18.04系统下跑SC-A-LOAM算法的过程,因为SC-A-LOAM算法源码不支持RS雷达的数据,大致思想就是先将rs雷达发布的激光数据转换为velodyne类型的数据,考虑到接下来还要基于RS-16实时运行SC-A-LOAM算法,这里提前将RS_SDK驱动安装好。 1 搭建SC-A-LOAM算法运行环境 首先需要在电脑上搭建SC-A-LOAM算法的运行环境,见文章《ubuntu18.04搭建SC-A-LOAM环境并运行》 本文所使用的系统架

超爱吃小蛋糕的66的博客 2373

LSTM量化选股实战:从数据清洗到回测归因的工程化闭环

LSTM(长短期记忆网络)是一种专为建模长程依赖而设计的循环神经网络,其门控机制能有效应对金融时序数据的非线性、高噪声与动态演化特性。相比传统统计模型或简单RNN,LSTM在股价趋势建模中展现出更强的鲁棒性与泛化能力,尤其适合处理日频多因子时序信号。其技术价值不仅在于提升预测精度,更在于支撑可归因、可审计的量化策略工程实践——从特征构建、标签定义到滚动回测,每一步都需严防未来信息泄露与过拟合风险。典型应用场景包括A股多因子选股、行业轮动信号生成及Alpha组合优化。本文聚焦LSTM在真实量化场景中的落地难点

weixin_33158887的博客 398

WebView的使用详解

WebView是一个基于webkit引擎、展现web页面的控件。Android的Webview在低版本和高版本采用了不同的webkit版本内核,4.4后直接使用了Chrome。一般来说Webview可单独使用,可联合其子类一起使用,下面会介绍几种:1.Webview自身的常见方法;2.Webview的最常用的子类3.(WebSettings类、WebViewClient类、WebChromeClient类)Android和Js的交互3.1 Webview常用方法3.1.1 加载URL。

LJQDMY的博客 3498

车载以太网:PHY(物理层)介绍

本文以TJA1101芯片为实例介绍了车载以太网PHY(物理层)组成。

kevin1499的博客 6231

webview最全面总结(二)全面介绍webview用法

webview的设置 WebSettings webSettings = webview.getSettings(); //支持js事件 webSettings.setJavaScriptEnabled(true); /* 设置为true表示支持使用js打开新的窗口 */ webSettings.setJavaScriptCanOpenWindowsAutomatically(true); /* 设置为使用webview推荐的窗口 */ webSettings.setUseWideViewPort(tru

bg22223的博客 2914

微信小程序码 createWxaCodeUnlimit 生成总是报错 41030 的解决方案

41030错误本质上就是路径不合法。路径多写了一个斜杠路径带了参数小程序版本未发布或 app.json 配置不一致。如果确认页面存在,可以通过来跳过检查。微信小程序 getUnlimitedQRCode 官方文档路径前不能加 /,参数放 scene,发布版本要有这个页面,不行就关掉 check_path。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 475

深度学习实战87-高中数学自适应测试系统研究与应用研发,前后台页面设计

大家好,我是微学AI ,今天给大家介绍一下深度学习实战87-高中数学自适应测试系统研究与应用研发,前后台页面设计。高中数学自适应测试系统旨在通过精准评估学生能力,用最少的题目发现其薄弱环节,并提供定制化的学习计划,帮助学生快速提升成绩。同时,系统结合了AI大模型实现自动判卷、生成报告,减轻教师负担,并支持个性化作业布置,使教学更加高效。学生可以清晰了解自身学习状态,教师也能获得精准的学生画像,实现差异化教学。

微学AI的博客 444

webview详解

一、基础知识 1、webview入门知识 1.我们通常是用浏览器来浏览网页,你很清楚的知道你正在使用浏览器,要么是PC客户端,要么是手机上的app。但是webview是一个嵌入式的浏览器,是嵌入在原生应用中的,你可能都意识不到你在用浏览器。 2.传统浏览器分为两个部分,UI(地址栏、导航栏)和浏览器引擎。webview就是原生应用中的浏览器引擎。 3.webview只是一个可视化的组件,是作为原生APP的视觉部分。 4.用webview展示的内容是不需要存储在本地的,可以直接从服务器获取。 5.这种灵活性打

zzz_zlp的博客 1万+

30. 如何使用 SEGW 的 redefine 功能对 SAP 标准 OData 服务进行扩展

SAP 发布了很多标准的 Fiori 应用,可以通过笔者的文章里提到的进行浏览。比如 My Opportunities 就是 SAP CRM 领域的一个 Fiori 应用:下图是 Opportunity 明细页面的 Info 标签页:假设我们想在这些标准字段的末尾增添一个新字段 Created By,用来维护当前 Opportunity 的创建者。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1172

android中webview详解,Android 中 WebView 的基本用法详解

加载 URL (网络或者本地 assets 文件夹下的 html 文件)加载 html 代码Native 和 JavaScript 相互调用加载网络 URLwebview.loadUrl(https://www.baidu.com/);加载 assets 下的 html 文件webview.loadUrl(file:///android_asset/test.html);加载 html 代码// ...

weixin_30717229的博客 558

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

android webview组件,Android WebView组件用法详解

本文实例讲述了android webview组件用法。分享给大家供大家参考,具体如下:如果想webview能够访问网络,必须在androidmanifest.xml里面添加权限main.xml很简单,就是一个webviewandroid:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation=...

weixin_42491664的博客 514

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

WebView用法详解

Intent intent = getIntent(); String url = intent.getStringExtra("murl"); web_view.setWebViewClient(new WebViewClient()); WebSettings settings = web_view.getSettings(); settings....

怪咖小白的博客 333

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

mui初级入门教程(二)— html5+ webview 底部栏用法详解

文章来源:小青年原创发布时间:2016-05-19关键词:mui,html5+,webview转载需标注本文原始地址: http://zhaomenghuan.github.io/#!/blog/20160519 写在前面 本系列文章我们将利用mui基于网易云音乐API实现一个音乐播放器APP,同时基于环形或者融云实现聊天功能。作为本系列文章的第一篇,本文会详细讲解h...

293

详解MUI顶部选项卡(tab-top-webview-main)的用法

最近用MUI做手机app的时候,遇到了一点问题。然后就对这个tab-top-webview-main的源码做了点研究,接下来我将和大家详解一下 tab-top-webview-main的用法和应该注意的方法。   接下来先发一个应用的实例: <!doctype html> <html> <head> <...

akypx02026的专栏 852

WebView与JS的那些事:入门篇

webview应该是开发人员最常接触的控件了,加载一个页面的时候,webview.loadUrl(url)就完事了,我遇到这么玩webview的一般都是在界面显示一些应用说明或是版本信息的时候比较常见,但是,这样根本发挥不了webview的潜能,接下来,我会出几篇比较好玩的文章,带大家爽一爽,今天这一篇或许对有些基础的人并不感冒,但可以看看后面的文章,会给你们带来惊喜的。初探我会跟着官网的API来分

codelang 1237

WebView的使用

1.webView的一般用法 在写android应用程序的时候,如果我们需要用到Html页面的时候,一般都是在布局文件中声明一个WebView组件,然后再Activity里面实例化再调用webview.loadurl ( )方法。如果需要调用Js的时候,需要调用getSettings( ).setJavaScriptEnabled(true);如果不执行这个方法,webview默认是不能执行J

aa283797274的博客 310

Android的WebView完全使用手册(前篇)

笔者叨叨叨..最近状态总是不对,有心无力的晃着美好的时光,明知道自己很菜但是居然不知道从哪里开始让自己成长。前辈告诉我去研究动画,自定义view,那就慢慢来吧,以后会奉上我的学习心得的。 今天就把最近一直在用的WebView总结下吧,感觉还是有很多干货的。不过写下这个名字,自己都感觉惭愧,但是感觉今天又有很多内容要写,感觉好像要囊括webveiw的实用知识了,再来就算是一种激励,希望自己在写的时候

星光小站 1275
上一篇: Json数据的组装和解析
下一篇: As混淆详解
jiangtea
博客等级 码龄10年 33粉丝 115原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值