jsdl java_【转】JS 和 java 交互

android中如何获得webView中的内容

发表于 2011 年 06 月 13 日 由 admin

本文概要:在程序中经常会用到webView来显示网页,但如果能够得到网页中的内容呢,本文将给你一个最简单的事例。文章最后附代码下载。

在做新浪微博客户端的时候需要用到oauth认证,会弹出新浪的认证网页,用户在新浪的网页中授权后返回到程序中完成认证。使用的是类似weibo://OauthActivity这样的URI返回的,也就类似于http://weibo.com这样。但是UC浏览器却无法完成这个地址的跳转,android自带浏览器是没有问题的,所以就想到在程序中内嵌一个webView去显示新浪的网页进行授权。

方法很简单,还是直接上代码清楚一些。第一段代码很少,过一下就行了,看到后面你就明白了。

class Handler {

public void show(String data) {

Toast.makeText(WebViewActivity.this, “执行了handler.show方法”, 0).show();

new AlertDialog.Builder(WebViewActivity.this).setMessage(data).create().show();

}

}

这是一个内部内,定义了一个方法,对话框弹出传过来的内容,这个就是用来显示webView中的内容的。

下面是关键代码,大家先看,后面会有解释。

webView = new WebView(this);

setContentView(webView);

webView.loadUrl(“ http://veikr.com/wap/ “);

webView.getSettings().setJavaScriptEnabled(true);

webView.addJavascriptInterface(new Handler(), “handler”);

webView.setWebViewClient(new WebViewClient() {

@Override

public void onPageFinished(WebView view, String url) {

Toast.makeText(WebViewActivity.this, “网页加载完成”, 0).show();

view.loadUrl(“javascript:window.handler.show(document.body.innerHTML);”);

super.onPageFinished(view, url);

}

});

1. webView.getSettings().setJavaScriptEnabled(true);

设置webView支持js.

2.webView.addJavascriptInterface(new Handler(), “handler”);

使用了这段代码后就相当于在网页的js中增加了一个叫handler的类,而这个handler就是前面写的内部类。可以直接在网页中这样使用:onClick=”javascript:handler.show(‘hello’)”

也就是说直接通过网页中的js来执行java代码。

3.webView.setWebViewClient(new WebViewClient()

为webView设置一个处理器(暂且这样叫吧),在webView加载完成后执行下面的方法

view.loadUrl(“javascript:window.handler.show(document.body.innerHTML);”);

document.body.innerHTML是一段js,会获取到网页中body标签里的内容,然后把这个值传递给Handler类的show方法。完成。

大家可以用浏览器打开一个网页,加载完成后,在浏览器地址栏输入

javascript:alert(document.body.innerHTML);

看看有什么效果?是不是弹出对话框显示了网页的body内容?

这个也是用到了这个道理。

下载代码 WebViewDemo

http://veikr.com/201106/android_webview_content-html.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值