android与h5之间的互调
来源:互联网 发布:淘宝运营工资高吗 编辑:程序博客网 时间:2024/06/05 06:27
android与h5之间的互调
最近android项目中用到了与html之间的交互,总结了一下,还是比较全的,主要有
java调用js函数,js调用java函数,浏览器中通过链接打开app
- Android和H5互调-java调用js
private void initWebView() { WebSettings webSettings = webView.getSettings(); //设置支持javaScript脚步语言 webSettings.setJavaScriptEnabled(true); //支持双击-前提是页面要支持才显示 webSettings.setUseWideViewPort(true); //支持缩放按钮-前提是页面要支持才显示 webSettings.setBuiltInZoomControls(true); //设置客户端-不跳转到默认浏览器中 webView.setWebViewClient(new WebViewClient()); //加载网络资源 // webView.loadUrl("http://atguigu.com/teacher.shtml"); //加载本地资源 webView.loadUrl("file:///android_asset/index.html"); setContentView(webView);}
本地文件位置如图所示
/**
* Java调用javaScript
* @param numebr
*/
private void login(String numebr) {
webView.loadUrl("javascript:javaCallJs("+"'"+numebr+"'"+")");setContentView(webView);
}
html 中javascript
代码如下:
function javaCallJs(){ document.getElementById("content").innerHTML += "<br\>java调用了js无参函数";}function javaCallJs(arg){ document.getElementById("content").innerHTML = ("欢迎:"+arg ); }
- Android和H5互调-JavaScript调java
1_配置Javascript接口
//设置支持js调用javawebView.addJavascriptInterface(new AndroidAndJSInterface(),"Android");//此处"Android"字符串要与下面的onclick中"window.Android.showToast()"的Android字符串保持一致
2_实现Javascript接口类
/** * js可以调用该类的方法 */class AndroidAndJSInterface{ @JavascriptInterface public void showToast( ){ Toast.makeText(JavaAndJSActivity.this, "我被js调用了", Toast.LENGTH_SHORT).show(); }}
html代码:
<input type="button" value="点击Android被调用" onclick="window.Android.showToast()" />
当点击webview内嵌网页时该按钮时,就可以调用java中的showToast函数了,
当然showToast函数也可以携带参数:
<input type="button" value="点击Android被调用" onclick="window.Android.showToast('JS中传来的参数')" class="ButtonInput"/>/** * js可以调用该类的方法 */ class AndroidAndJSInterface{ @JavascriptInterface public void showToast( ){ Toast.makeText(JavaAndJSActivity.this, "我被js调用了", Toast.LENGTH_SHORT).show(); } public void showToast( String mString){ Toast.makeText(JavaAndJSActivity.this, "我被js调用了"+mString, Toast.LENGTH_SHORT).show(); } }
- Android实现通过浏览器点击链接打开本地应用(APP)并拿到浏览器传递的数据
1_首先在编写一个简单的html页面
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>title</title> </head> <body> <a href="mame1://name2/">打开app</a> </body></html>
2_在Android本地app的配置
在AndroidManifest的清单文件里的intent-filte中加入如下元素:
name1与name2要对应相同
代码如下:
<intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:host="name2" android:scheme="name1"/> </intent-filter>
3_如何通过这个方法获取网页带过来的数据
传数据的方式
<a href="mame1://mame2/?arg0=0&arg1=1">打开app</a><br/>
(1).通过浏览器打开这个网页的,那么获取数据的方式为:
Uri uri = getIntent().getData(); String test1= uri.getQueryParameter("arg0");String test2= uri.getQueryParameter("arg1");
(2)如果使用webview访问该网页,获取数据的操作为:
复制代码
webView.setWebViewClient(new WebViewClient(){ @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { Uri uri=Uri.parse(url); if(uri.getScheme().equals("name1")&&uri.getHost().equals("name2")){ String arg0=uri.getQueryParameter("arg0"); String arg1=uri.getQueryParameter("arg1"); }else{ view.loadUrl(url); } return true; }});
阅读全文
1 0
- android与h5之间的互调
- Android 与 H5 之间的互调
- android与H5之间的调用
- android与h5之间的相互调用
- Android与H5页面的互调
- Android与H5互调的使用总结
- H5与Activity之间的通信(调用)
- Android和H5之间的交互
- Android和H5之间的交互
- 关于android与h5互调简介
- Android与H5的交互
- Android与H5的交互
- Android与H5的交互
- Android与H5的交互
- android与H5的交互
- Android与JS之间的互调
- iOS开发--UIWebview与H5之间的交互
- iOS开发,UIWebview与H5之间的交互
- meavn建立
- Linux截图、查看图片
- 南阳理工ACM 题目21 三个水杯 java代码 广度优先
- 图文详解java内存回收机制
- Jupyter安装r内核
- android与h5之间的互调
- Makefile学习笔记3
- JSON
- STL源码学习----lower_bound和upper_bound算法
- unordered_multimap的insert问题
- UVa 11401 数三角形(组合数学)
- 循环的代价
- 常用Linux 服务器命令
- 170719 Keras 模型的保存与加载