Android调用js方法以及js调用Android方法
来源:互联网 发布:万网域名怎么解析 编辑:程序博客网 时间:2024/06/05 00:35
Android的一般使用WebView.loadUrl(url);
加载指定的|网页文件展示,并且可以实现的JavaScript脚本与本地的Java代码的交互。
1、Android 的WebView加载html页面
WebView myWebView = (WebView) findViewById(R.id.myWebView);
//允许WebView执行JavaScript
myWebView.getSettings().setJavaScriptEnabled(true);
//把js绑定到全局的XJYJS上,让JS可以访问JavaScriptinterface中的方法, JavaScriptinterface中也可以调用JS中的方法。XJYJS 是与JS约定的 (随便起就行),作用是:JS可以通过 window.XJYJS.getMsg() 调用 JavaScriptinterface中的getMsg(),该方法须添加@JavascriptInterface注解myWebView.addJavascriptInterface(new JavaScriptinterface(this,myWebView ),"XJYJS");myWebView.setWebViewClient(new WebViewClient());
myWebView.loadUrl(url);
2、创建JavaScriptinterface类
public class JavaScriptinterface { Context context; public JavaScriptinterface(Context c,WebView mWebView) { context= c; } /** * 与js交互时用到的方法,在js里直接调用的(window.XJYJS.getMsg(str)) */ @JavascriptInterface public void getMsg() { String string = "原生给JS的数据";call = "javascript:showMsg(\"" + string + "\")";mWebView.post(new Runnable() { @Override public void run() { mWebView.loadUrl(call); }});
}
}
3、html代码
<HTML> <HEAD> <meta name="viewport" content="width=device-width, target-densitydpi=device-dpi" /> <META http-equiv="Content-Type" content="text/html; charset=UTF-8"> <script> function showMsg(res){ alert(res); } </script> </HEAD> <BODY> <span>测试js使用</span> <button id='btntest' onclick='window.myjs.getMsg()'>JS调用原生方法</button></BODY> </HTML>
4、AndroidManifest.xml中加权限
<uses-permission android:name="android.permission.INTERNET"/>
总结:
以上是Android在4.4之前并没有提供直接调用js函数并获取值的方法,所以在此之前,常用的思路是java调用js方法,js方法执行完毕,再次调用java代码将值返回。
Android 4.4之后使用evaluateJavascript即可。这里展示一个简单的交互示例具有返回值的js方法。
JS代码
function getMsg() { return 1;}
Android的代码时用evaluateJavascript方法调用
private void testEvaluateJavascript(WebView webView) { webView.evaluateJavascript("getMsg()", new ValueCallback<String>() { @Override public void onReceiveValue(String value) { Log.i(LOGTAG, "onReceiveValue value=" + value); }});}
输出结果
onReceiveValue value=1
evaluateJavascript
方法必须在UI线程(主线程)调用,因此onReceiveValue
也执行在主线程。
参考的博客:http://www.jianshu.com/p/4542be29807e
阅读全文
1 0
- Android调用js方法以及js调用Android方法
- Js调用android方法
- js 调用 android 方法
- JS调用Android方法
- android js调用android方法
- android 调用js中的方法
- android 调用js中的方法
- android中webview调用js方法,js调用java方法
- phoneGap开发android,JS调用android方法
- HTML/JS 调用android方法,开发 Android。
- Android 调用Js方法, js回调Android方法
- webview通过js调用android方法
- js调用android原生方法,简单明了。
- 最简单的js调用android 方法
- JS怎样调用Android本地原生方法
- 通过js调用android原生方法
- Android:JS调用安卓方法介绍
- js中调用android中的方法
- Android中的数据存储方式
- Mapreduce的工作原理
- 【sort函数】的基本使用方法
- 定语从句
- 没有找到libmysql.dll,因此这个应用程序未能启动
- Android调用js方法以及js调用Android方法
- 初识Java并发
- js中当值发生变化/键盘摁下等事件的不同之处
- spring @Transactional注解参数详解
- Mapreduce的工作流程
- Android获取系统版本号、软件版本号
- hibernate 一对一双向关联映射
- Java学习5:static关键字内存分析详解及用法
- 树莓派