android之WebView
来源:互联网 发布:mac 邮件储存位置 编辑:程序博客网 时间:2024/05/18 03:07
一、如何使用WebView组件
1.WebView(网络视图)能加载显示网页,可以将其视为一个浏览器。它使用了WebKit渲染引擎加载显示网页,实现WebView有以下两种不同的方法:
第一种方法:
可以在布局文件中写入WebView:比如下面这个写了一个填满整个屏幕的WebView
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" > <WebView android:id="@+id/webView1" android:layout_width="fill_parent" android:layout_height="fill_parent" /></RelativeLayout>
在Activity中
webview = (WebView) findViewById(R.id.webView1);
第二种方法:在Activity中实例化WebView
WebView webView = new WebView(this);调用Activity的setContentView( )方法来显示网页视图
webview = new WebView(this);setContentView(webview);
2.设置WebView基本信息
如果访问的页面中有javascript,必须设置支持javascript
webview.getSettings().setJavaScriptEnabled(true);
3.调用WebView的loadUrl()方法,设置WebView要显示的网页
设置webview要显示的方法有
直接使用互联网页面
webview.loadUrl("http://www.taobao.com/");
使用本地文件
本地文件用:webView.loadUrl("file:///android_asset/XX.html"); 本地文件存放在:assets 文件中
ps:
本地url写法:
手机本地文件: "file:///data/data/。。。“
SD: "file:///mnt/sdcard/。。。”
直接载入html的字符串
webview.loadDataWithBaseURL(null, "<html>这是一段HTML的代码</html>", "text/html", "UTF-8", null);
4.为了让WebView能够响应超链接功能,调用setWebViewClient( )方法,设置WebView视图
// 设置web视图webview.setWebViewClient(new MyWebViewClient());MyWebViewClient继承了WebViewClient,可以重写一些方法
public class MyWebViewClient extends WebViewClient {// 当按下某个连接时WebViewClient会调用这个方法,并传递参数:按下的url// 这个函数我们可以做很多操作,比如我们读取到某些特殊的URL,于是就可以不打开地址,取消这个操作,进行预先定义的其他操作,这对一个程序是非常必要的@Overridepublic boolean shouldOverrideUrlLoading(WebView webview, String url) {if (url.indexOf("tel:") < 0) {webview.loadUrl(url);} else {Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse(url));}return true;}// 接收到Http请求的事件@Overridepublic void onReceivedHttpAuthRequest(WebView view,HttpAuthHandler handler, String host, String realm) {}//载入页面开始的事件@Overridepublic void onPageStarted(WebView view, String url, Bitmap favicon){}//载入页面结束的事件@Overridepublic void onPageFinished(WebView webview,String url){}}通过这几个事件,我们可以很轻松的控制程序操作,一边用浏览器显示内容,一边监控着用户操作实现我们需要的各种显示方式,同时可以防止用户产生误操作。
5、为了让WebView支持回退功能,需要覆盖Activity类的onKeyDown()方法
用WebView点链接看了很多页以后为了让WebView支持回退功能,需要覆盖Activity类的onKeyDown()方法,如果不做任何处理,点击系统回退键,整个浏览器会调用finish()而结束自身,而不是回退到上一页面
@Overridepublic boolean onKeyDown(int keyCode,KeyEvent event){if((keyCode==KeyEvent.KEYCODE_BACK)&&webview.canGoBack()){webview.goBack();}return false;}
6.注意要在manifest中加上访问网络的权限:
<manifest ... > <uses-permission android:name="android.permission.INTERNET" /> ... </manifest>
二、WebView与js交互
1.android中利用webview调用网页上的js代码
Android 中可以通过webview来实现和js的交互,在程序中调用js代码,只需要将webview控件的支持js的属性设置为true,,然后通过loadUrl就可以直接进行调用,如下所示:
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.loadUrl("javascript:test()");
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.loadUrl("javascript:test()");
2. 网页上调用android中java代码的方法
在网页中调用java代码,需要在webview控件中添加javascriptInterface。如下所示:
mWebView.addJavascriptInterface(new Object() { public void clickOnAndroid() { mHandler.post(new Runnable() { public void run() { Toast.makeText(Test.this, "测试调用java", Toast.LENGTH_LONG).show(); } }); } }, "demo");在网页中,只需要像调用js方法一样,进行调用就可以
<div id='b'><a onclick="window.demo.clickOnAndroid()">b.c</a></div>
3. Java代码调用js并传参
首先需要带参数的js函数,如function test(str),然后只需在调用js时传入参数即可,如下所示:
mWebView.loadUrl("javascript:test('aa')");
mWebView.loadUrl("javascript:test('aa')");
4.Js中调用java函数并传参
首先一样需要带参数的函数形式,但需注意此处的参数需要final类型,即得到以后不可修改,如果需要修改其中的值,可以先设置中间变量,然后进行修改。如下所示:
mWebView.addJavascriptInterface(new Object() { public void clickOnAndroid(final int i) { mHandler.post(new Runnable() { public void run() { int j = i; j++;Toast.makeText(Test.this, "测试调用java" + String.valueOf(j), Toast.LENGTH_LONG).show(); } }); } }, "demo");然后在html页面中,利用如下代码<div id='b'><a onclick="window.demo.clickOnAndroid(2)">b.c</a></div>,
即可实现调用
0 0
- Android 之 WebView 组件
- Android之Hello WebView
- android之【 WebView组件 】
- android之webview使用
- android之webview
- android 之webview
- android之webview使用
- android之webview
- android之WebView详解
- android 之WebView
- android之WebView
- android之WebView应用
- Android控件之WebView
- Android之WebView详解
- Android基础之WebView
- Android之WebView
- Android之webView入门
- Android控件之WebView
- Unable to add window token null is not for an application
- 完整的windows下搭建Qt开发环境 QT4.8+qt creator2.8.0, 解决 gbd异常中断 和 静态编译
- js DES加密
- JDBC异常总结
- opencv2在直方图反投影算法中使用颜色信息
- android之WebView
- 【数据结构&&算法系列】归并排序简单介绍及python代码
- Opencv之矩阵的掩码操作
- Ubuntu历险记
- [HTML] CSS 下拉菜单
- C#的几种写文件方法
- 25行代码等价实现-借助Nodejs在服务端使用jQuery采集17173游戏排行信息
- 生命的重量
- sublime text 2中Emmet8个常用的技巧