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

【转】JS 和 java 交互的更多相关文章

  1. 利用js与java交互

    为了方便网页和应用的交互,安卓系统WebView提供JavaScript网页脚本调用Java类方法的机制.只要调用addJavascriptInterface方法即可映射一个Java对象到JavaSc ...

  2. android控件之webview和js与java交互

    首先添加权限:<uses-permission android:name="android.permission.INTERNET"/> 布局文件: <Relat ...

  3. Android混合开发之WebViewJavascriptBridge实现JS与java安全交互

    前言: 为了加快开发效率,目前公司一些功能使用H5开发,这里难免会用到Js与Java函数互相调用的问题,这个Android是提供了原生支持的,不过存在安全隐患,今天我们来学习一种安全方式来满足Js与j ...

  4. Android 利用WebViewJavascriptBridge 实现js和java的交互(一)

    此文出自:http://blog.csdn.net/sk719887916/article/details/47189607,skay 按安卓开发目前现状来说,开发者大部分时间还是花在UI的屏幕适配上 ...

  5. atitit.js 与c# java交互html5化的原理与总结.doc

    atitit.js 与c# java交互html5化的原理与总结.doc 1. 实现html5化界面的要解决的策略1 1.1. Js交互1 1.2. 动态参数个数1 1.3. 事件监听2 2. sen ...

  6. atitit.js&#160;与c#&#160;java交互html5化的原理与总结.doc

    atitit.js 与c# java交互html5化的原理与总结.doc 1. 实现html5化界面的要解决的策略 1 1.1. Js交互 1 1.2. 动态參数个数 1 1.3. 事件监听 2 2. ...

  7. android 与html交互java调js与js调java操作

    1.首先在项目下建一个assets目录(右击app->New->Folder->Assets Flolder),直接放在项目根目录下和res目录同级别(把所html,js,图片,cs ...

  8. (转载)JS与WebView交互存在的一些问题

    JS与WebView交互存在的一些问题 作者 隔壁的李小宝 关注 2015.06.09 19:30 字数 2896 阅读 11117评论 3喜欢 35 一.背景概述 2013年Android平台暴露出 ...

  9. 常用的js、java编码解码方法

    前言 前后端直接传输数据进行交互不就行了吗,为什么还要进行编码解码?正常情况下直接交互没问题,但当有类似以下情况出现时就需要进行编码再进行传输: 1.编码格式难以统一,导致数据交互过程出现中文乱码等问 ...

随机推荐

  1. 12C对ASM rebalance操作的优化

    如果在执行"alter diskgroup"操作.或在添加.删除磁盘而引发的隐式rebalance的时,没有指定power选项,rebalance操作会使用初始化参数asm_pow ...

  2. Java基础之线程——管理线程同步方法(BankOperation2)

    控制台程序. 当两个或多个线程共享同一资源时,例如文件或内存块,就需要采取措施,确保其中的一个线程不会修改另一个线程正在使用的资源.当其中的一个线程更新文件中的某个记录,同时另一个线程正在检索这个记录 ...

  3. Java基础之一组有用的类——生成日期和时间(TryDateFormats)

    控制台程序. java.util包中含有相当多的类涉及日期和时间,包括Date类.Calendar类和GregorianCalendar类. Date类对象其实定义了精确到毫秒的时刻,从1970年1月 ...

  4. [原创]java WEB学习笔记78:Hibernate学习之路---session概述,session缓存(hibernate 一级缓存),数据库的隔离级别,在 MySql 中设置隔离级别,在 Hibernate 中设置隔离级别

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  5. CCF考前注意几点

    1.数组最好保持初始化习惯,且检查数组初始化在循环内还是循环外,若在循环内需要对数组进行处理,则数组初始化必须放在for循环内. 2.for循环保持好习惯,用括号括起来,以免粗心. 3.if条件判断要 ...

  6. String,StringBuffer,StringBuilder三者区别

    String:每次改变,String都会重新构造,内存指针都会改变 StringBuffer:主要用在全局变量中 StringBuilder:在线程内完成字符拼接,因为线程是不安全的,所以完成后可以丢 ...

  7. 转:Order&Shipping Transactions Status Summary

    详细内容: http://blog.csdn.net/pan_tian/article/details/7696528 WSH_DELIVERY_DETAILS.Release_Status can ...

  8. 夺命雷公狗—angularjs—10—angularjs里面的内置函数

    我们没学一门语言或者框架,几乎里面都有各自的语法和内置函数,当然,强悍的angularjs也不例外,他的方法其实常用的没多少,因为很多都可以用源生jis几乎都能完成一大部分.. <!doctyp ...

  9. PTPX中的time_based analysis

    根据VCD文件的type,PTPX支持instantaneous peak power analysis和cycle_accurate peak power analysis. Time-Based ...

  10. 记在centos中连接无线网络的一次过程

    1. 首先, 你的系统要能驱动无限网卡, 要是人品好的话, 系统已经自带了你的网卡的驱动程序. 不然就要先搞定无线网卡的驱动再说. 不然后面的步骤也就没必要了. 2. 看一下你的无线网卡叫什么: iw ...