Android原生和H5交互;Android和H5混合开发;WebView点击H5界面跳转到Android原生界面。

当时业务的需求是这样的,H5有一个活动商品列表的界面,IOS和Android共用这一个界面,点击商品可以跳转到Android原生的商品详情界面并传递商品ID;  大概就是点击H5界面跳转到Android原生界面

好了,需求已经分析完毕了,Android只需要获取H5的点击事件和传递的参数;

来,上代码:

1/启用支持javascript 2WebSettings settings = webView.getSettings(); 3settings.setJavaScriptEnabled(true);

Android4.2以上需要@JavascriptInterface注解,其目的是为了安全;

1public class JavaScriptObject{ 2 public JavaScriptObject(Activity activity) { 3 4 } 5 @JavascriptInterface 6 public void setToken(String token){ 7 //token就是商品的ID,这里拿到商品的ID后直接跳转到商品详情页,并把id传递过去 8 } 9 @JavascriptInterface 10 public void definedShare(String ShareJson){ 11 } 12} 13 14 15 16/* 17*添加js接口,参数1是本地类名,参数2是标记;H5调用需要 "window.标记.类名中的方法名" 才能调用 18*/ 19webView.addJavascriptInterface(new JavaScriptObject(this), "android");

到这里Android端需要写的就完成了;

这个是我截的图,可以看一下:

这里是H5需要写的代码:

1<script type="text/javascript"> 2 function s(){ 3 //调用Android的setToken()方法 4 var result =window.android.setToken(goodsId); 5 document.getElementById("p").innerHTML=result; 6 } 7</script>

----------------------------------------------------------------------------------------------------------------------------------

附:如果在Android端调用H5中的方法:

1 /* 2 * Android调用H5中的方法 3 */ 4//传固定字符串可以直接用单引号括起来 5 mWebView.loadUrl("javascript:alertMessage('哈哈')");//访问H5里带参数的方法,alertMessage(message)为H5里的方法 6 7 //当出入变量名时,需要用转义符隔开 8 String content="1016"; 9 mWebView.loadUrl("javascript:alertMessage(\"" +content+ "\")" ); 10 11 //Android调用有返回值js方法,安卓4.4以上才能用这个方法 12 mWebView.evaluateJavascript("11", new ValueCallback<String>() { 13 @Override 14 public void onReceiveValue(String value) { 15 Log.i(TAG, "js返回的结果为=" + value); 16 } 17 });

抽成方法:

1 private void callJS(String callback, String status) { 2 if (TextUtils.isEmpty(status)) { 3 if (AndroidUtils.isKitkat()) { 4 mWebView.evaluateJavascript("javascript:" + callback + "()", null); 5 } else { 6 mWebView.loadUrl("javascript:" + callback + "()"); 7 } 8 } else { 9 if (AndroidUtils.isKitkat()) { 10 mWebView.evaluateJavascript("javascript:" + callback + "('" + status + "')", null); 11 } else { 12 mWebView.loadUrl("javascript:" + callback + "('" + status + "')"); 13 } 14 } 15 }
点赞
收藏

评论区

加载中...

相关推荐

java版本springcloud+springboot+mybatis 分布式 微服务 多租户 电子商务 直播带货 短视频带货 社交电商平台

涉及平台:平台管理(包含自营店面)、商家端(PC端、手机端)、买家平台(PC端、H5/公众号、小程序、APP端(IOS/Android)、微服务平台(业务服务)核心架构:SpringCloud、SpringBoot、Mybatis、Redis、SFTP前端框架:VUE、Uniapp、Bootstrap/H5/CSS3、IOS、Android、小程

Android与H5混合开发

    Android和H5在移动开发应用中非常广泛。市面上很多App都是使用Android开发的,但使用Android来开发一些比较复杂附属类,提示性的页面是得不偿失的。而H5在制作炫酷动画网页方面比较给力,且具有开发速度快,更新不用依赖于App的更新,只需要服务端更新相应的页面即可,所以App和H5页面相结合就显得尤为重要。而android

Android WebView 的三种使用方式

关于原生开发好,还是混合模式开发好,还是套壳的方式好,在这里不是重点,没有最好的,只有相对适合的。重点是那种方式以最低的资源代价适合你的业务场景,适合你的团队,根据实际情况来做技术选型。1,使用h5替代android的viewxml前端将写好的h5页面放在android工程的asset目录,打包的时候会将h5页面一起打在apk里面,

Android使用WebView加载H5页面播放视频音频,退出后还在播放问题解决

Android中经常会使用到WebView来加载H5的页面,如果H5页面中有音频或者视频的播放时,还没播放完就退出界面,这个时候会发现音频或者视频还在后台播放,这就有点一脸懵逼了,下面是解决方案:方案一:在webview所在的activity中的onPause()和onResume()方法中写上两句话。publicvoidon

Android学习笔记(二) 布局方式的介绍

Android应用的开发的一项内容就是用户界面开发了。Android提供了大量功能丰富的UI组件。Android的界面是由布局和组件协同完成的。!(http://static.oschina.net/uploads/space/2014/0304/213204_usD8_865771.gif) Android所有UI组件都继承了View

Android 100多个Styles快速开发布局XML,一行搞定View属性,一键统一配置UI..

Android开发中大量使用XML代码作为界面的布局,使用styles能大幅精简XML代码。比如下面这个界面从AlertDialog至PlacePickerWindow有19个样式相同的跳转Item,点击后颜色加深并跳转界面。!(http://static.oschina.net/uploads/img/201607/24121521_yu7M.