Android WebView和Javascript交互_js调用Android方法
2014-11-06 13:45:49  By: dwtedx

今天在Android的开发过程中、遇到一个新需求、那就是让Java代码和Javascript代码进行交互、在IOS中实现起来很麻烦、而在Android中相对来说容易多了、Android对这种交互进行了很好的封装、我们可以很简单的用Java代码调用WebView中的js函数、也可以用WebView中的js来调用Android应用中的Java代码


一、网页的JS代码调用Android中Java代码的方法

在网页中调用java代码、需要在webview控件中添加javascriptInterface


contentWebView = (WebView) findViewById(R.id.webview);
//启用javascript
contentWebView.getSettings().setJavaScriptEnabled(true);
contentWebView.addJavascriptInterface(this, "js对象名");


在Activity中定义一个要被js调用的方法、src为js传递过来的参数、如果没有不传也可以的哈


public void jsFunction(final String str) {
	Toast.makeText(this, str, Toast.LENGTH_SHORT).show();
	runOnUiThread(new Runnable() {
		@Override
		public void run() {
			//在里对Android应用的UI进行处理
		}
	});
}


在网页中、只需要像调用js方法一样、进行调用就可以


<a onClick="window.js对象名.jsFunction(´hello world´)" >
	点击调用java代码并传递参数
</a>


二、Android中Java代码调用网页的JS代码的方法


Java代码调用js并传参其实是通过WebView的loadUrl方法去调用的、只是参数url的写法不一样而已


// 无参数调用
contentWebView.loadUrl("javascript:javacalljs()");
// 传递参数调用
contentWebView.loadUrl("javascript:javacalljswithargs(" 
		+ "´hello world´" + ")");


三、Java和js交互注意事项

1、Java 调用 js 里面的函数、效率并不是很高、估计要200ms左右吧、做交互性很强的事情、这种速度很难让人接受、而js去调Java的方法、速度很快、50ms左右、所以尽量用js调用Java方法

2、Java 调用 js 的函数、没有返回值、调用了就控制不到了

3、Js 调用 Java 的方法、返回值如果是字符串、你会发现这个字符串是 native 的、转成 locale 的才能正常使用、使用 toLocaleString() 函数就可以了、不过这个函数的速度并不快、转化的字符串如果很多、将会很耗费时间

4、网页中尽量不要使用jQuery、执行起来需要5-6秒、最好使用原生的js写业务脚本、以提升加载速度、改善用户体验

最后是源代码下载链接: http://dwtedx.com/download.html?bdkey=s/1xYw2M 密码: acs7

若资源对你有帮助、浏览后有很大收获、不妨小额打赏我一下、你的鼓励是维持我不断写博客最大动力

想获取DD博客最新代码、你可以扫描下方的二维码、关注DD博客微信公众号(ddblogs)

或者你也可以关注我的新浪微博、了解DD博客的最新动态:DD博客官方微博(dwtedx的微博)

如对资源有任何疑问或觉得仍然有很大的改善空间、可以对该博文进行评论、希望不吝赐教

为保证及时回复、可以使用博客留言板给我留言: DD博客留言板(dwtedx的留言板)

感谢你的访问、祝你生活愉快、工作顺心、欢迎常来逛逛


快速评论


技术评论

  • 该技术还没有评论、赶快抢沙发吧...
DD记账
top
+