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 ...
随机推荐
- mac下docker中安装nodejs
一.首先下载docker并安装 https://download.docker.com/mac/stable/Docker.dmg 然后启动docker, 二.获取node最新镜像 输入来着node版 ...
- beego学习笔记(4):开发文档阅读(4)
beego.Run() 这个运行后, 1)解析配置文件,也就是conf目录下的. 2)判断是否开启session,并作相应的工作 3)执行用户的hookfunc. 4)是否编译模板 5)是否开启文档功 ...
- Linux shell 中$() ` `,${},$[] $(()),[ ] (( )) [[ ]]作用与区别
转载自 https://blog.csdn.net/x1269778817/article/details/46535729 参考: https://stackoverflow.com/questio ...
- 深入理解计算机系统项目之 Shell Lab
博客中的文章均为meelo原创,请务必以链接形式注明本文地址 Shell Lab是CMU计算机系统入门课程的一个实验.在这个实验里你需要实现一个shell,shell是用户与计算机的交互界面.普通意义 ...
- 【LOJ】#2129. 「NOI2015」程序自动分析
题解 开始是想两个并查集的 和A相等,和A不相等 如果AB相等就连 A 相等,B相等 B不相等 A不相等 如果AB不相等就连 A不相等,B相等 B相等,A不相等 但是显然不对,因为和A不相等的不一定和 ...
- LoadRunner配置方案
1.配置方案运行时设置 选择“Tools”>“Options”.在“Options”对话框有“Run-Time Settings”(运行时设置).“Timeout”(超时).“Run-Time ...
- HTML5 Canvas 初探
仅仅只是一个简单的hello world. js代码很简单: <!DOCTYPE HTML> <html lang="cn"> <head> & ...
- ref:phpstorm配置远程调试(xdebug)(docker中)
ref:https://www.cnblogs.com/yjken/p/6555438.html readme:本文设置远程调试ubuntu中的php代码. 在docker中也可以,经过测试phpin ...
- RecyclerView悬浮标题
效果图: 1.顶部会悬浮章的部分 2.第二章上滑会推挤第一章 3.第二章下拉会带出第一章 4.并不是所有时候都有悬浮部分(为什么这条标红,因为市面上几乎所有的悬浮都是必须存在且在顶部,害 ...
- 【转载】retrofit 2 源码解析
retrofit 官网地址:http://square.github.io/retrofit/ retrofit GitHub地址:https://github.com/square/retrofit ...
