Android Webview和JavaScript交互--JS调用Android方法
2015-12-02 15:37
1426 查看
前言
目前流行原生App和H5进行混合开发,提高开发速度。IOS和JS进行通信比较麻烦,但Android对这种交互进行了很好的封装、我们可以很简单的用Java代码调用WebView中的js函数、也可以用WebView中的js来调用Android应用中的Java代码。网页的JS代码调用Android中Java代码的方法
在网页中调用java代码、需要在webview控件中添加javascriptInterfacecontentWebView = (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方法一样、进行调用就可以。
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写业务脚本、以提升加载速度、改善用户体验
@ 参考 DD博客 ANDROID JS 交互
相关文章推荐
- Android动画效果生动有趣的通知NiftyNotification(Android Toast替代品)
- android相对布局属性
- Android动画效果生动有趣的通知NiftyNotification(Android Toast替代品)
- Android——遇故障时重启应用
- Android中如何为自定义控件增加状态?
- Android Studo代码提示快捷键(java和xml布局中都能出现提示)
- Android 适配多种ROM的快捷方式
- android 获得SDCard信息
- Android Manifest标签之manifest,meta 4000 -data,path-permission,permission
- 进程的安全上下文----SEAndroid in android 5.x
- 文件的安全上下文 ---- SEAndroid in Android 5.x
- 用户和角色----SEAndroid in Android 5.x
- 概述----SEAndroid in Android 5.x
- 为android编译libkaliumjni和libsodium
- 爲android添加一個新的底層service…
- Android动画_ScaleAnimation
- android输入法ImeOptions
- Android Studio 创建项目的项目R文件不更新问题
- Android开发错误集锦
- Html5启动android app及两者间的数据交互全面总结