【转】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() {@Overridepublic 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内容?这个也是用到了这个道理。下载代码 WebViewDemohttp://veikr.com/201106/android_webview_content-html.html
时间: 2024-12-27 00:13:30

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

利用js与java交互

为了方便网页和应用的交互,安卓系统WebView提供JavaScript网页脚本调用Java类方法的机制.只要调用addJavascriptInterface方法即可映射一个Java对象到JavaScript对象上. MainActivity.java代码: package com.apple.browser; import android.annotation.SuppressLint; import android.app.Activity; import android.os.Bundle

android 4.4 JS 和 java 交互失效的解决方法

demo自己写的,我放CSDN上,自己下载,这里说下demo里涉及到的东西,并且说下注意点. appcompat_v7 项目是创建项目自带的,如果你本地已经有了就不需要这个工程. demo 内容 1.支持 android 调用 js 里某方法 2.支持android调用JS某方法并且获取JS方法返回值,然后再次调用JS去显示.(4.4) 3.支持点击JS里某个按钮,并且返回给android. 1.  AndroidManifest.xml 里   android:targetSdkVersion

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

此文出自:http://blog.csdn.net/sk719887916/article/details/47189607 ,skay 博客 按安卓开发目前现状来说,开发者大部分时间还是花在UI的屏幕适配上,使用原生控件开发成本已不是那么理想,鉴于很多项目和ios基于一致的ui界面,至使安卓UI开发成本花费更大的代价,因此目前结合Html5和原生控件是解决UI适配的一种很好的选择,处于APP性能也会用java和native层进行结合.不管是哪种结合,其实原理都差不多,只要按照它的协议来,是很容

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. sendNSCommand2 2.1.1. --------nativeswing的实现2 3. 注册js 事件后台函数3 4. 后台c#3 5. 参考4 1. 实现html5化界面的要解决的策略 1.1. Js交互 Firefox与Chrome也提供了external对象,例如,他们都默认的实现了ope

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. sendNSCommand 2 2.1.1. --------nativeswing的实现 2 3. 注冊js 事件后台函数 3 4. 后台c# 3 5. 參考 4 1. 实现html5化界面的要解决的策略 1.1. Js交互 Firefox与Chrome也提供了external对象,比如,他们都

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

前言: 为了加快开发效率,目前公司一些功能使用H5开发,这里难免会用到Js与Java函数互相调用的问题,这个Android是提供了原生支持的,不过存在安全隐患,今天我们来学习一种安全方式来满足Js与java互相调用的需求.它就是WebViewJavascriptBridge. 学习动机: 先看下之前的解决办法:Android混合开发之WebView与Javascript交互 最近棒棒安全的一个市场推广来我们公司推广他们的产品,当时也没太引起我的注意,后来这个市场推广人员把我们的app的进行了他们

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

此文出自:http://blog.csdn.net/sk719887916/article/details/47189607,skay 按安卓开发眼下现状来说,开发人员大部分时间还是花在UI的屏幕适配上,使用原生控件开发成本已不是那么理想,鉴于非常多项目和ios基于一致的ui界面.至使安卓UI开发成本花费更大的代价,因此眼下结合Html5和原生控件是解决UI适配的一种非常好的选择.处于APP性能也会用java和native层进行结合.无论是哪种结合.事实上原理都几乎相同,仅仅要依照它的协议来,是

7、jQuery的Ajax与Java交互带加载图片

1.jQuery的Ajax与Java交互带加载图片 1.1 html代码 <body> <div id="main"> <button id="myBut">Ajax获取数据</button> <div id="container"> <img src="./img/load.jpg" id="myimg"> </div>

Android的WebView通过JS调用java代码

做项目时候会遇到我们用WebView 打开一个web,希望这个web可以调用自己的一些方法,比如我们在进一个web页面,然后当我们点击web上的某个按钮时,希望能判断当前手机端是否已经登录,如果未登录,那么就会跳转到登录页面(登陆页面是另一个Activity).这个时候,一个简单的做法就是在按钮动作事件的js上调用java的方法,从而起到判断是否登录,并决定是否跳转到另一个页面. Google的WebView为我们提供了 addJavascriptInterface(Object obj, St