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 ...
随机推荐
- effective c++读书笔记(一)
很早之前就听过这本书,找工作之前读一读.看了几页,个人感觉实在是生涩难懂,非常不符合中国人的思维方式.之前也有博主做过笔记,我来补充一些自己的理解. 我看有人记了笔记,还不错:http://www.3 ...
- python爬取网易云音乐歌单音乐
在网易云音乐中第一页歌单的url:http://music.163.com/#/discover/playlist/ 依次第二页:http://music.163.com/#/discover/pla ...
- beego学习笔记(4):开发文档阅读(6)
beego的响应流程: 1.监听的端口接收数据,默认是8080端口. 2.用户请求到达8080端口后,开始数据处理流程. 3.初始化CONTEXT对象.判断是否是WEBSOCKET请求,如果是,设置I ...
- 洛谷P1634 禽兽的传染病 题解
题目传送门 最近都在刷红色的水题... 这道题因为是不断地传染,所以直接求幂次方就好啦... 但是一测样例WA了... 原来x初始需要加1... 提交评测WA了... 原来要开long long .. ...
- android 代码设置、打开wifi热点及热点的连接(转)
用过快牙的朋友应该知道它们在两天设备之间传输文件的时候使用的是wifi热点,然后另一台便连接这个热点再进行传输.快牙传输速度惊人应该跟它的这种机制有关系吧.不知道它的搜索机制是怎样的,但我想应该可 ...
- 【PAT】1007. 素数对猜想 (20)
1007. 素数对猜想 (20) 让我们定义 dn 为:dn = pn+1 - pn,其中 pi 是第i个素数.显然有 d1=1 且对于n>1有 dn 是偶数.“素数对猜想”认为“存在无穷多对相 ...
- CentOS7.5 firefox Flash插件更新
CentOS7自带的firefox没有flash插件,所以是没有办法在网页上看视频的,需要自己手动安装 1.下载 打开flash官网https://get.adobe.com/flashplayer/ ...
- 微软企业库5.0 学习之路——第九步、使用PolicyInjection模块进行AOP—PART4——建立自定义Call Handler实现用户操作日志记录
在前面的Part3中, 我介绍Policy Injection模块中内置的Call Handler的使用方法,今天则继续介绍Call Handler——Custom Call Handler,通过建立 ...
- 洛谷P1486 [NOI2004]郁闷的出纳员 [STL,平衡树]
题目传送门 郁闷的出纳员 题目描述 OIER公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的工资.这本来是一份不错的工作,但是令人郁闷的是,我们的老板反 ...
- DateFormat 线程安全
SimpleDateformat 线程不安全 SimpleDateFormat 继承自 DateFormat, SimpleDateFormat中的parse方法override父类DateForma ...