WebView 加载网页和java 与js交互
| [mw_shl_code=java,true]WebView是一个可以显示网页的控件。 需求: 通过WebView加载assets下的html文件。 实现页面的缩放。 向menu键添加:前进、后退和刷新,实现对网页的操作 点击网页中的链接,仍然使用本WebView浏览器,而非调用系统的浏览器 网页中有button,点击button,调用android的Toast 点击WebView隐藏地址栏和button,点击menu键显示地址栏和button。 WebView加载网页的方式 WebView webview = (WebView)findViewById(R.id.webview); webview.loadUrl(" http://192.168.1.33:8080/ ");----访问本地服务器(如tomcat)的网页。 webview.loadUrl("http://www.baidu.com");------访问网络的的网页 webview.loadUrl(" file:///android_asset/test.html ");---------访问本工程下assets下的html文件。。。。注意: file:///android_asset/是固定写法。 添加权限:“android.permission.INTERNET” WebView的常用方法(介绍的是方法的作用,没有写参数,具体的方法使用在下面的示例中) webview.setWebChromeClient();该方法可以处理进度条对话框等。 webview.setOnTouchListener();WebView设置触摸事件,比如我触摸屏幕时,可以隐藏地址栏等操作。 webview.setWebViewClient(WebViewClient client);设置该方法后,一旦你点击网页中的链接,不会去调用系统的浏览器,而是仍然使用当前的WebView浏览器。实现参数的匿名内部类 覆盖匿名内部类的方法 shouldOverrideUrlLoading(WebView view, String url),在该方法view.load(url); onPageStarted():在网页加载前可以做的一些操作,比如加载网页需要一些时间,那么我们就让这段时间显示进度条或提示一句话"正在加载中" onPageFinished():在网页加载后可以做的一些操作,比如关闭进度条。 WebSettings settings = webview.getSettings():就是WebView浏览器的一些设置。 设置网页的缩放:settings.setBuiltInZoomControls(true);也就是放大和缩小网页。 settings.setJavaScriptEnabled(true):可以让android和html中的javascript进行交互。 返回键:当我们打开多个Activity,一旦点击返回键,就直接退出WebView浏览器了。然而这不是我们想要的结果,我们想要的是一点击返回键,我们退回上一个页面。这时我哦们就需要重写onKeyDown()方法。 ------7,8,9三条选看,是关于menu键的内容,网页的前进、后退和刷新------- 点击menu键:我们添加几个menu,实现网页的前进 后退和刷新功能。onCreateOptionsMenu(); 为menu的item添加点击事件,实现前进,后退和刷新功能的具体实现方法。 点击一次menu,执行一次的方法:onPrepareOptionMenu() android与javascript的交互:(在javascript中调用android代码) 背景:WebView加载了一个带button的html,我想点击该按钮调用android的吐司。 html代码:test.html的内容(html是非严谨的,因此如下直接复制就可以) <button>call java</button> <script type="text/javascript"> function demoTest(){ window.demo.demoTest("hello android i am javaScript"); } </script> android内必须添加的代码: //可以让android与javascript进行交互 settings.setJavaScriptEnabled(true); //让javascript调用java代码时,需要添加如下android代码 webview.addJavascriptInterface(new Object(){ public void demoTest(String msg){ showToast(msg); } }, "demo"); public void showToast(String str){//弹出吐司的方法 Toast.makeText(MainActivity.this, str, 0).show(); } 流程概述: 点击按钮: 执行:button的点击事件onclick="demoTest();" 点击事件demoTest();---->调用javascript代码的方法,执行window.demo.demoTest("hello android i am javaScript") 然后调用:android的"demo"接口的方法:public void demoTest(String msg){ showToast(msg); } showToast(msg),调用弹出吐司方法 这就是点击button调用android代码 关于android与javascript的直白理解:通过 settings.setJavaScriptEnabled(true); 方法设置android和javascript可以交互,在android中通过 webview.addJavascriptInterface(参数一:参数二) 方法 定义一个接口名称(参数二),通过该接口名称可以在javascript中调用该接口代表的对象的方法(参数一)。更啰嗦的说就是:参数一:new Object(){ public void demoTest(String msg){ showToast(msg); }定义了一个匿名内部类,该匿名内部类中定义了一个方法demoTest(String msg)。参数二:为该匿名内部类其的名字,通过该名字可以调用匿名内部类中定义的方法,并且必须是在javasrript中调用:调用方式:window.参数二.参数一方法名(参数) 在java中调用javascript代码: 首先需要在html中有script代码块,并且在script中定义了方法。 我们需要做的就在java中调用javascript中的方法 如何调用:WebView.loadUrl("javascript:方法名"); 源码:test.html-------------该文件一定要放到assets下 布局文件:********************************************************8 android代码:-----------------------******************************************** import android.app.Activity; public class MainActivity extends Activity { private WebView webview; public void showToast(String str){ //为menu裁断添加item选中事件 default: //在java中调用javascript中的方法 |
WebView 加载网页和java 与js交互的更多相关文章
- WebView 加载网页 加载资源 总结 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- Android中Http加载如何得到Cookie和 WebView 加载网页如何得到的Cookie
最近做项目在手机端登录Http请求和 WebView 记载登录获取Cookie信息,可查看Cookie信息. 如图: Http请求获取Cookie信息: public static String re ...
- Flutter ------- WebView加载网页
在Flutter 加载网页?也是有WebView的哦,和Android一样 1.添加依赖 dependencies: flutter_webview_plugin: ^0.2.1+2 2.导入库 im ...
- iOS之webview加载网页、文件、html的方法
UIWebView 是用来加载加载网页数据的一个框.UIWebView可以用来加载pdf.word.doc 等等文件 生成webview 有两种方法,1.通过storyboard 拖拽 2.通过a ...
- webview加载网页加载不出来
1.webView.loadUrl(picTargetUrl); 写在最前面. 1.在无线城市迷你版的项目,用webview去loadUrl的时候出现加载的现象. url 地址是 http://go. ...
- WebView加载网页文件
转自:http://www.2cto.com/kf/201108/101518.html WebView(网络视图)能加载显示网页,可以将其视为一个浏览器.它使用了WebKit渲染引擎加载显示网页,实 ...
- WebView 加载网页返回后,jsp界面数据消失(一个斜杆引起来的风波)
http://ip:port//interface/app/index.jsp 如果不小心就会把,port后面的//两个斜杆给忽略... 当有两个斜杆时,webview仍可以将网页,正常加载.但是数据 ...
- Android WebView 加载网页
通过Android 中 WebView 控件加载HTML5 页面,这是实现Android 混合开发的基础. 选择加载的网页可以是本地,也可用使远程的.需要添加访问互联网的权限:<uses-per ...
- Android使用Webview加载网页
安卓使用Webview来加载和显示网页内容,首先在layout文件中定义Webview <?xml version="1.0" encoding="utf-8&qu ...
随机推荐
- ioctl socket getsockopt
一 ioctl 函数产生原因: 虽然在文件操作结构体"struct file_operations"中有很多对应的设备操作函数,但是有些命令是实在找不到对应的操作函数.如CD-RO ...
- MYSQL-----流程控制 if() 函数的用法
语法:IF(condition,result,result) 如果函数的第一个参数中给定的condition符合条件(如,condition不等于0或者不为NULL),那么函数的执行结果为第二个参数中 ...
- log4net 写日志配置
1. nuget install package log4net 2.站点跟目录新建配置文件 LogWriterConfig.xml <?xml version="1.0" ...
- day6 os模块
OS模块 提供对操作系统进行调用的接口 (1)os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 >>> os.getcwd() 获取 ...
- day4 递归二分法查找
现有一个序列,data=[for i in range(1,5000,3)],现在要求看一个数是否在列表中存在,我们知道,我们可以使用in或__contains__()的方法,判断一个值是否在列表中, ...
- 获取 web 项目的绝对路径
获取 web 项目的绝对路径 <% String path = request.getContextPath(); String basePath = request.getScheme()+& ...
- 133个Java面试问题列表
转载: 133个Java面试问题列表 Java 面试随着时间的改变而改变.在过去的日子里,当你知道 String 和 StringBuilder 的区别就能让你直接进入第二轮面试,但是现在问题变得越来 ...
- (14) go 结构体
1. 声明一个结构体 2.属性 如果是 指针 切片 map 需要用make 3.赋值 (2) (3) (4) 4. 正确,字段相同,数据类型相同,名字相同 5.
- 洛谷P3758/BZOJ4887 [TJOI2017] 可乐 [矩阵快速幂]
洛谷传送门,BZOJ传送门 可乐 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 299 Solved: 207 Description 加里敦星球的人 ...
- Mybatis源码分析之Mapper文件解析
感觉CSDN对markdown的支持不够友好,总是伴随各种问题,很恼火! xxMapper.xml的解析主要由XMLMapperBuilder类完成,parse方法来完成解析: public void ...
