- 浏览: 995956 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (367)
- JavaScript (23)
- Java (60)
- Python (41)
- 其他 (36)
- SQL (4)
- 开发工具 (26)
- Linux (15)
- AJAX (6)
- Cache (3)
- 正则 (4)
- 架构 (9)
- 手机 (3)
- MySQL (4)
- Android (115)
- vps (1)
- 网站 (4)
- scale (3)
- 搜索引擎 (3)
- iPhone (2)
- hessian (1)
- hessdroid (1)
- 411 (1)
- jstat (1)
- gc (1)
- gallery (1)
- 惯性 (1)
- eclipse (1)
- mac wget error (1)
- miui file explorer 无用 解决办法 (1)
- vim (1)
最新评论
-
qingyezhangluo:
哎。楼主您既然是分享代码的为什么要加密的呢?而且问你密码还不回 ...
android应用换皮肤(转) -
MagicError:
kavoe 写道下载文件有密码。。。。
http抓包工具 -
knightdf:
我先试下再来
JAVA的RAS加密例子 -
kavoe:
下载文件有密码。。。。
http抓包工具 -
changanfounder:
hmc1985 写道setCallbackDuringFlin ...
android gallery滑动惯性问题
从WebView初探 了解到WebView的强大,。听说WebView对Javascript的支持也很强,想从网上找些例子,还很难找,最终从google老家找了一个Java和Javascript互调的例子 ,当时看了,下巴“咣当”就掉在地上了,太强了!这样也行?
整个Eclipse ADT工程例子中都有,这里重点分析一下代码:
public class WebViewDemo extends Activity { private WebView mWebView; private Handler mHandler = new Handler(); public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.webviewdemo); mWebView = (WebView) findViewById(R.id.webview); WebSettings webSettings = mWebView.getSettings(); webSettings.setJavaScriptEnabled(true); mWebView.addJavascriptInterface(new Object() { public void clickOnAndroid() { mHandler.post(new Runnable() { public void run() { mWebView.loadUrl("javascript:wave()"); } }); } }, "demo"); mWebView.loadUrl("file:///android_asset/demo.html"); } }
这里的重点是addJavascriptInterface(Object obj,String interfaceName)方法,该方法将一个java对象绑定到一个javascript对象中,javascript对象名就是interfaceName,作用域是Global。这样初始化webview后,在webview加载的页面中就可以直接通过javascript:window.demo访问到绑定的java对象了。来看看在html中是怎样调用的:
<html> <script language="javascript"> function wave() { document.getElementById("droid").src="android_waving.png"; } </script> <body> <a onClick="window.demo.clickOnAndroid()"> <img id="droid" src="android_normal.png"/><br> Click me! </a> </body> </html>
这样在javascript中就可以调用java对象的clickOnAndroid()方法了,wave()方法是java中调用javascript的例子。
这里还有几个知识点:
1)为了让WebView从apk文件中加载assets,Android SDK提供了一个schema,前缀为"file:///android_asset/"。WebView遇到这样的schema,就去当前包中的assets目录中找内容。如上面的"file:///android_asset/demo.html"
2)addJavascriptInterface方法中要绑定的Java对象及方法要运行另外的线程中,不能运行在构造他的线程中,这也是使用Handler的目的。
转自:http://www.iteye.com/topic/376674
----------------------------------------------------------------------------------------------------------------------------------
在看懂这篇文章之前首先要有javascript基础。
(1) js调用android的方法:
WebView wView;
wView. addJavascriptInterface (Object obj, String interfaceName);
是实例化一个对象,在html的js中调用,第二个参数是实例化对象的别名,如果要使用这个obj,则在js中使用的名字就是interfaceName。
public class jsWebDemo extends Activity {
WebView wView;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
wView = (WebView)findViewById(R.id.wv1);
WebSettings wSet = wView.getSettings();
wSet.setJavaScriptEnabled(true);
ProxyBridge pBridge = new ProxyBridge();
wView.addJavascriptInterface(pBridge, “AliansBridge”);
wView.loadUrl(“file:///android_asset/index.html“);
}
private class ProxyBridge {
public int one () {
return 1;
}
}
}
来看一下index.html的内容:
<html>
<script language=”javascript”>
/* This function is invoked by the activity */
function wave() {
alert(“1″);
document.getElementById(“droid”).src=”android_waving.png”;
alert(“2″);
}
</script>
<body>
<div id=”output”>Test page.</div>
<a onClick=”window.demo.clickOnAndroid()”>
<div style=”width:100px;
margin:0px auto;
padding:10px;
text-align:center;
border:2px solid #202020;” >
<img id=”droid” src=”android_normal.png”/><br>
Click me!
</div>
</a>
<input type=”submit” value=”change to 1″ onclick=”document.getElementById(‘output’).innerHTML =AliansBridge.one()” />
</body>
</html>
这里的AliansBridge即是调用的JAVA对象。
要注意的是,如果你只有一个方法需要被js调用只new一个对象就行:
ProxyBridge pBridge = new ProxyBridge();
wView.addJavascriptInterface(pBridge, “AliansBridge”);
如果你需要调用好多个方法,就要把整个android程序所在的类本身实例化传递进去:
wView.addJavascriptInterface(this, “AliansBridge”);
(2) android调用js的方法:wView.setWebChromeClient (WebChromeClient client)
要用到Handler更新UI,Handler mHandler = new Handler();
mWebView.setWebChromeClient(new MyWebChromeClient());
mWebView.addJavascriptInterface(new Object(){
/**
* This is not called on the UI thread. Post a runnable to invoke
* loadUrl on the UI thread.
*/
public void clickOnAndroid() {
mHandler.post(new Runnable() {
public void run() {
mWebView.loadUrl(“javascript:wave()”);
}
});
}
}, “demo”);
同理,在html中必须有一个名为demo的对象调用clickOnAndroid()方法。
/**
* Provides a hook for calling “alert” from javascript. Useful for
* debugging your javascript.
*/
final class MyWebChromeClient extends WebChromeClient {
@Override
public boolean onJsAlert(WebView view, String url, String message,
JsResult result) {
result.confirm();
return super.onJsAlert(view, url, message, result);
}
}
转自:http://otheri.com/
发表评论
-
android屏幕适配
2012-11-16 17:24 2144屏幕适配一直是一个让人头疼的问题,论坛上讨论这个问题的最后也 ... -
禁止Eclipse中xml文件Run as的XSL Transformation生成out.xml以方便Android应用开发
2012-08-26 21:38 2585可以在Eclipse里面配置,菜单Windows->P ... -
android 自带的主题 theme 的使用
2012-08-25 23:21 2332在android的sdk 安装目录data\r ... -
android 如何判断程序是否在前台运行
2012-04-06 00:04 3066private boolean isTopActiv ... -
用代码如何检测一个android程序是否在运行
2012-04-05 23:07 3705<uses-permission android:na ... -
Android-TextView多行本文滚动轻松实现
2012-03-04 19:37 1277TextView tvAndroid123 = (T ... -
让背景模糊的效果
2012-03-04 16:22 2579设置透明度(这是窗体本身的透明度,非背景) Wi ... -
Android 使用shape
2012-03-04 16:14 1011刚刚翻论坛的时候看到的,总觉得以后会用的上这些零零碎碎 ... -
关于android中使用很多大图片的一些做法
2012-02-29 00:11 1411最近在xoom上开发应用,碰到ui设计都是使用图片,而 ... -
屏幕尺寸和像素密度的资源限定符
2012-02-23 15:31 1571屏幕尺寸和像素密度的资源限定符 以下是可以用来为 ... -
android开发之gallery 实现滚动一张且短距离滑动实现滚动
2011-12-19 18:50 1884首先gallery的特点就不用多说了吧,惯性滚动、半屏翻页,但 ... -
下拉刷新
2011-10-14 15:09 1122要实现这种效果 可以参见这里https://git ... -
android应用换皮肤(转)
2011-10-12 14:36 3145看到好多人在问题与解答里面都问怎么换肤,搜了一下论坛里面好像没 ... -
Android签名到底都有哪些作用?
2011-10-09 17:59 2259所有的Android应用程序都要求开发人员用一个证书进 ... -
Android 动态切换全屏和非全屏模式
2011-10-08 15:15 3427直接贴出代码: Java代码 ... -
Android开发——利用Cursor+CursorAdapter实现界面实时更新(转)
2011-09-20 15:47 3039好久没有更新博客了 ... -
Nginx使用反向代理时 Hessian 的 411 错误解决方案【转】
2011-09-15 13:48 2326问题描述: 用 Hessian 实现 web se ... -
理解 Android 本地数据存储 AP(转)
2011-05-18 14:25 1867样例应用程序 为了突出 Android 应用程序开发的本 ... -
Android 本地数据存储 API(二)(转)
2011-05-18 14:23 1944使用 SQLite 数据库 Android 通过 S ... -
Android 本地数据存储 API(三)(转)
2011-05-18 14:22 2525为私有数据使用设备的内部存储器 有了数据存储 API ...
相关推荐
资源文章地址 http://blog.csdn.net/wangtingshuai/article/details/8631835
Android中webview使用js与java交互
webview中java与js安全交互 webview中java与js安全交互 webview中java与js安全交互 webview中java与js安全交互
实现android中的webview,java与js的交互。代码条理清晰,注释详细,运行流畅。
因为开发中经常用到android和WebView混合交互开发来降低开发时间。 所以加了一点类java反射机制工具小框架来方便交互 反射这个类lxz.utils.android.webview.plugins.ToastScript 地址:...
android下研究webview使用本地网页与android系统组件(activity)交互,即java与javascript的交互。。。
WebView使用及在WebView中Java和JS交互
android对交互进行了很好的封装,在开发中我们可以很简单的用java代码调用webview中的js,也可以用webview中的js来调用本地的java代码,这样我们可以实现很多原来做不了的功能,比如点击网页上的电话号码后,手机...
为了使Android移动项目能够在较短的时间内完成开发,同时降低技术人员开发的成本投入,往往会采用Hybrid APP的开发模式。...势必需要了解与掌握Android[java]与JavaScript之间的交互、相互调用操作的方法与技术。
做过 Android 混合开发的,应该都知道 Android 中 Java 代码和 Javascript 代码之间的交互怎么做。 首先回顾一下 Java 和 Javascript 之间的交互。 JavaScript 调用 Java Android 中 WebView 添加供 Html 页面调用的...
android4.4 webview 实现java调用JavaScript, JavaScript调用java
android + h5 混合开发 webview 版 小实例 + 数据交互 + 界面交互+ js调用java +java 调用js
android webView js方法和java交互例子源码和总结,自己亲自实践的小例子,分享给大家
Android js与java交互改进最终版,支持android4.2以下,和android4.2以上版本
WebView使用之Js交互,点击webview中的图片,调用java代码,放大展示图片,并提供缩放功能!参考博客地址:http://blog.csdn.net/growing_tree/article/details/44652005
Android 中可以通过webview来实现和js的交互,在程序中调用js代码,只需要将webview控件的支持js的属性设置为true,,然后通过loadUrl就可以直接进行调用,如下所示:mWebView.getSettings().setJavaScriptEnabled...
最近工作中为了赶进度,在项目中使用了WebView组件,用到了html与java的数据交互,也就是javascript与java的数据交互,本文即介绍了在应用中添加WebView,以及js如何与java进行数据的交互。
Android 中通过WebView和HTML实现JS交互 Android(Java)与JavaScript(HTML)交互有四种情况: 1) Android(Java)调用HTML中js代码 2) Android(Java)调用HTML中js代码(带参数) 3) HTML中js调用Android...
Android WebView开发,js与java之间的交互,实现android webview开发