android与H5互相调用
来源:互联网 发布:淘宝怎么看年销售额 编辑:程序博客网 时间:2024/05/21 15:39
市面上很多android软件都有内嵌H5的,主要是为了节约成本,提高开发效率,其实现原理主要是通过Java代码和JavaScript代码的互相调用来实现。
Java调用Js
1,webview初始化:
private void initWebView() { webView = new WebView(this); WebSettings webSettings = webView.getSettings(); //设置支持javaScript脚步语言 webSettings.setJavaScriptEnabled(true); //支持双击-前提是页面要支持才显示 webSettings.setUseWideViewPort(true); //支持缩放按钮-前提是页面要支持才显示 webSettings.setBuiltInZoomControls(true); //设置客户端-不跳转到默认浏览器中 webView.setWebViewClient(new WebViewClient()); //加载网络资源 webView.loadUrl("http://soyoungboy.com/teacher.shtml");// webView.loadUrl("file:///android_asset/JavaAndJavaScriptCall.html"); //显示页面 setContentView(webView); }
2,加载main目录创建assets并且加载本地资源
webView.loadUrl("file:///android_asset/JavaAndJavaScriptCall.html");
3,java调用调用javaScript
/** * Java调用javaScript * @param numebr */private void login(String numebr) { webView.loadUrl("javascript:javaCallJs("+"'"+numebr+"'"+")"); setContentView(webView);}
注意下Html5代码,回去调用javaCallJs(arg)代码:
<html><head> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <script type="text/javascript"> function javaCallJs(){ document.getElementById("content").innerHTML += "<br\>java调用了js无参函数"; } function javaCallJs(arg){ document.getElementById("content").innerHTML = ("欢迎:"+arg ); } function showDialog(){ alert("谷粉们你好,我是来自javascript"); } </script></head><body><div align="left" > 博客园</div><div align="right">光临博客园</div><p><img src="https://www.cnblogs.com/images/logo_small.gif"></p><input type="button" value="点击Android被调用" onclick="window.Android.showToast()" /></body></html>
JavaScript调java
1,配置javasript
//设置支持js调用java webView.addJavascriptInterface(new AndroidAndJSInterface(),"Android");
2,实现javaScript接口类
/** * js可以调用该类的方法 */class AndroidAndJSInterface{ public void showToast(){ Toast.makeText(JavaAndJSActivity.this, "我被js调用了", Toast.LENGTH_SHORT).show(); }}
html5代码调用如上代码:
<input type="button" value="点击Android被调用" onclick="window.Android.showToast()" />
但是很有可能调用不起来,那么怎么处理呢?
targetSdkVersion 修改为16
- 添加@JavascriptInterface注解,如下:
/** * js可以调用该类的方法 */class AndroidAndJSInterface{ @JavascriptInterface public void showToast(){ Toast.makeText(JavaAndJSActivity.this, "我被js调用了", Toast.LENGTH_SHORT).show(); }}
0 0
- android与H5互相调用
- android与H5互相调用
- android与H5互相调用
- android与H5互相调用
- android与H5互相调用
- 【android学习】android与H5互相调用
- android与h5的互相调用,混合编程
- Android与JS互相调用
- android 与Javascrip互相调用
- android与h5的互相交互传参
- Android与JavaScript互相调用与通信。
- Android API与Javascript之间互相调用
- android 与JavaScript的互相调用
- android之js与java互相调用
- Android与JS互相调用以及注意
- android Java与JNI层互相调用
- Unity与Android接口互相调用
- Unity与Android的互相调用
- 关于Hibernate 5 和 Hibernate 4 在创建SessionFactory的不同点分析(解决 org.hibernate.MappingException: Unknown entit
- python全栈1-Html基础
- 如何计算时间复杂度
- 相邻两数最大差值练习题
- 爬虫文章索引
- android与H5互相调用
- 快速排序
- Linux——ls命令
- 详细讨论OpenCV中的数据结构
- 对极几何与基础矩阵
- java Enum使用技巧-effective java案例
- 铺地毯
- 新开博客
- Servlet过滤器机制分析及应用