(js)JavaScript调用本地android的方法
2016-12-19 17:15
429 查看
之前由于公司的一个需求:通过web网页的点击事件必须传值给android本地并且跳转到指定的页面,当时js这块我不了解,就和前端工程师研究讨论最终是做出来了,现在看来挺简单的,回顾做个记录~!
首先初始化我们的WebView,上代码:
mWeb = (WebView) findViewById(R.id.webview);
WebSettings settings = mWeb.getSettings();
// settings.setJavaScriptCanOpenWindowsAutomatically(true);
settings.setJavaScriptEnabled(true);
// settings.setSupportZoom(true);
// settings.setBuiltInZoomControls(true);
// settings.setUseWideViewPort(true);
// settings.setLoadWithOverviewMode(true);
settings.setAppCacheEnabled(true);
settings.setDomStorageEnabled(true);
mWeb.setWebViewClient(new WebViewClient());
mWeb.setWebChromeClient(new WebChromeClient());与WebView交互需要传入一个对象,以及这个对象的标记:
mWeb.addJavascriptInterface(new JavaScriptKit(this), "android");JavaScriptKit就是需要传给js进行交互的对象,他的代码很简单,android 是我们对这个对象的标记,可以理解为是供js进行调用的一个引用名!
/**
* Created by chensd on 2016/12/19.
*/
public class JavaScriptKit {
private Context context;
public JavaScriptKit(Context context) {
this.context = context;
}
@JavascriptInterface
public void showToast(String text){
Toast.makeText(context, text, Toast.LENGTH_LONG).show();
}
}这里需要注意一点,为了兼容高版本,我们需要在方法处加入@JavascriptInterface
之后调用如下load方法,加载本地静态网页:
mWeb.loadUrl("file:///android_asset/phone.html");Html的内容比较简单,就是一个按钮,调用js的函数,通过“android”的这个标记,从而调用本地的方法!
首先初始化我们的WebView,上代码:
mWeb = (WebView) findViewById(R.id.webview);
WebSettings settings = mWeb.getSettings();
// settings.setJavaScriptCanOpenWindowsAutomatically(true);
settings.setJavaScriptEnabled(true);
// settings.setSupportZoom(true);
// settings.setBuiltInZoomControls(true);
// settings.setUseWideViewPort(true);
// settings.setLoadWithOverviewMode(true);
settings.setAppCacheEnabled(true);
settings.setDomStorageEnabled(true);
mWeb.setWebViewClient(new WebViewClient());
mWeb.setWebChromeClient(new WebChromeClient());与WebView交互需要传入一个对象,以及这个对象的标记:
mWeb.addJavascriptInterface(new JavaScriptKit(this), "android");JavaScriptKit就是需要传给js进行交互的对象,他的代码很简单,android 是我们对这个对象的标记,可以理解为是供js进行调用的一个引用名!
/**
* Created by chensd on 2016/12/19.
*/
public class JavaScriptKit {
private Context context;
public JavaScriptKit(Context context) {
this.context = context;
}
@JavascriptInterface
public void showToast(String text){
Toast.makeText(context, text, Toast.LENGTH_LONG).show();
}
}这里需要注意一点,为了兼容高版本,我们需要在方法处加入@JavascriptInterface
之后调用如下load方法,加载本地静态网页:
mWeb.loadUrl("file:///android_asset/phone.html");Html的内容比较简单,就是一个按钮,调用js的函数,通过“android”的这个标记,从而调用本地的方法!
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <title>Document</title> <style type="text/css"> *{margin:0; padding:0;} .main{width: 20%; margin: 200px auto;} </style> </head> <body> <script type="text/javascript"> function showToast(){ android.showToast("来自javaScript!!"); } </script> <div class="main"> <form> <input type="button" value="这是web的按钮" onclick="showToast()"> </form> </div> </body> </htm 4000 l>记得把html文件放在assets目录下,好了这样的简单交互就搞定了,demo地址如下: https://github.com/chenshandong/JavaScriptAndroidDemo
相关文章推荐
- ANDROID WEBVIEW和JAVASCRIPT交互_JS调用ANDROID方法
- Android Webview和JavaScript交互--JS调用Android方法
- Firemonkey扩展增强:Android 浏览器执行JavaScript获取结果及JavaScript调用本地方法
- Js 调用 android 本地方法 并传入参数
- HTML---Android中调用js方法及js中调用本地方法
- android js互相调用的方法,混淆后js无效,addJavascriptInterface使用注意事项
- Android使用WebView播放flash的方法和JavaScript调用本地方法
- Android中js与本地方法进行相互调用
- 安卓与JS互调之android webview addJavascriptInterface 的方法不能调用
- React Native:JS调用Android本地方法
- JS和Android本地方法之间的调用
- js 调用本地方法时兼容Android和Ios
- Android中调用js方法及js中调用本地方法
- JS怎样调用Android本地原生方法
- js调用本地QQ的方法
- JavaScript:全面解析Ajax跨站数据传输和iframe跨域名js调用(6种方法)
- Android平台,如何调用javascript操作网页和js调用系统功能
- Android与JavaScript方法相互调用
- JavaScript:全面解析Ajax跨站数据传输和iframe跨域名js调用(6种方法)
- 2011/06/13 android使用html做UI的方法---js与java的相互调用