未加星标

原生Android结合H5混合开发小结

字体大小 | |
[前端(javascript) 所属分类 前端(javascript) | 发布者 店小二05 | 时间 2017 | 作者 红领巾 ] 0人收藏点击收藏
混合开发概述

微信,微博以及现在市面上大量的软件使用内嵌了H5页面;有些外包公司,为了节约成本,采用Android内嵌H5模式开发,便于在IOS上直接复用页面, 从而提高开发效率。

实现的原理: 本质 是:Java代码和javascript调用 H5页面,只是Html的扩展,Javascript用来处理页面的逻辑 Android和H5互调案例: 一.java调用js 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()); //设置支持js调用java webView.addJavascriptInterface(new AndroidAndJSInterface(),"Android"); //加载本地资源 webView.loadUrl("file:///android_asset/JavaAndJavaScriptCall.html"); //显示页面 // setContentView(webView); }

java调用js原理就是Java代码调用了Js里面的函数。

核心Java代码段: //登录功能里,java代码调用了js里面的JavaCallJs函数实现将name传到JS中,这样JS页面可以显示该用户名了。 private void login(String name) { webView.loadUrl("javascript:javaCallJs(" + "'" + name + "'" + ")"); setContentView(webView); } 核心js代码段: //上面Java核心代码执行将调用下面JS代码 <script type="text/javascript"> function javaCallJs(arg){ document.getElementById("content").innerHTML = ("欢迎:"+arg ); } </script> 二.JavaScript调java

1.在初始化webview代码中配置Javascript接口:

//设置支持js调用java,调用时候将执行第一个参数的接口类 webView.addJavascriptInterface(new AndroidAndJSInterface(),"Android"); //第二个参数为执行接口类方法的标示,与js相呼应

2.在该Activity中实现Javascript接口类:

/** * js可以调用该类的方法 */ class AndroidAndJSInterface{ @JavascriptInterface public void showToast(){ Toast.makeText(JavaAndJSActivity.this, "我被js调用了", Toast.LENGTH_SHORT).show(); } }

3_JavaScript中调用java代码的核心代码段:

<input type="button" value="点击Android被调用" onclick="window.Android.showToast()" /> 执行流程:

点击js页面的button,将执行js的onclick方法(onclick=”window.Android.showToast()”),根据该Android标示与webview配置接口方法的第二个参数相匹配,然后执行js接口实现类的showToast()方法。从而实现js代码调用java代码。

H5页面调用Android播放视频

基本思路和上面的例子( 执行流程 )一样,业务逻辑层面来说播放视频主要是从H5页面点击播放跳转(把视频播放的url传递给Java层)并触发Java实现播放视频的代码即可。

1. webview中的核心配置:

//设置支持js调用java webView.addJavascriptInterface(new AndroidAndJSInterface(),"android");

2.在该Activity中实现Javascript接口类:

class AndroidAndJSInterface { /** * 该方法将被js调用 * @param id * @param videoUrl * @param tile */ @JavascriptInterface public void playVideo(int id,String videoUrl,String tile){ //调起系统所有播放器 Intent intent = new Intent(); intent.setDataAndType(Uri.parse(videoUrl),"video/*"); startActivity(intent); } }

3.JavaScript中调用java代码的核心代码段:

javascript:android.playVideo(itemid, videourl, itemtitle); H5页面调用Android拨打电话

思路都是一样的,点击H5页面把电话号码传到java层并调用拨号核心代码即可。

在该Activity中实现Javascript接口类:

@JavascriptInterface public void call(String phone) { Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + phone)); if (ActivityCompat.checkSelfPermission(JsCallJavaCallPhoneActivity.this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) { return; } startActivity(intent); }

重点内容1.如果调用如下方法时候报错,那么可以在Javascript接口类的具体实现方法上面加注解: @JavascriptInterface ,或者把targetSdkVersion 改为 16(一般不适用)

//设置支持js调用java webView.addJavascriptInterface(new AndroidAndJSInterface(), "Android");

2.该申请的权限不要忘了在AndroidManifest.xml中加上。

本文前端(javascript)相关术语:javascript是什么意思 javascript下载 javascript权威指南 javascript基础教程 javascript 正则表达式 javascript设计模式 javascript高级程序设计 精通javascript javascript教程

主题: JavaAndroidJavaScript浏览器HTML微信上大TI外包CTI
分页:12
转载请注明
本文标题:原生Android结合H5混合开发小结
本站链接:http://www.codesec.net/view/520804.html
分享请点击:


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 前端(javascript) | 评论(0) | 阅读(73)