安卓Java与js的互相调用分析
来源:互联网 发布:分销系统源码 编辑:程序博客网 时间:2024/06/06 16:48
首先看看Java调用js:
先上js代码:
function halloJava(arg){ document.getElementById("content").innerHTML = ("hallo,native friend:"+arg ); }然后是Java代码:
webView.loadUrl("javascript:halloJava("+"'"+name+"'"+")");上述的代码实现了从Java中调用js中的halloJava的方法,并传入了一个name的参数;
再来看js调用Java:
先上js代码:
<input type="button" value="点击Android被调用" onclick="window.Android.hallJs('JS中传来的参数')"/>再来看Java代码:
webView.addJavascriptInterface(new JSInterface (),"Android");//首先配置webviewclass JSInterface { @JavascriptInterface//添加注解 public void halloJs(String arg){ Toast.makeText(MainActivity.this,arg,Toast.LENGTH_SHORT).show(); }}上述代码实现了在js中调用了Java类JSInterface的对象“Android”中的JavascriptInterface注解修饰的halloJs的方法,并传入了“JS中传来的参数”的参数;
上述的两种情况适用于APP已经集成了webview并且是在APP的webview内加载网页,然后实现Java与js的互相调用,但是还有另一种情况,通过浏览器访问某一网页的时候,如何跳转到对应APP的对应activity页面呢?当然能,看下面的实现方式:
首先,在manifest文件中对对应的activity添加intent-filter标签;
<!--用这个Activity专门处理本App调起的情况--><activity android:name=".SchemeActivity" android:label="@string/app_name"> <!--要想在别的App上能成功调起App,必须添加intent过滤器--> <intent-filter> <!--协议部分,随便设置--> <data android:scheme="hallonativeworld"/> <!--下面这几行也必须得设置--> <category android:name="android.intent.category.DEFAULT"/> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.BROWSABLE"/> </intent-filter></activity>接着,在SchemeActivity中接收并处理URI请求,可以跳转到不同的界面;
// 尝试获取WebApp页面上过来的URLUri uri = getIntent().getData();if (uri != null) { StringBuffer sb = new StringBuffer(); // 完整的url信息 sb.append("url: " + uri.toString()); // scheme部分 sb.append("\nscheme: " + uri.getScheme()); // host部分 sb.append("\nhost: " + uri.getHost()); // 访问路劲 sb.append("\npath: "); List<String> pathSegments = uri.getPathSegments(); for (int i = 0; pathSegments != null && i < pathSegments.size(); i++) { sb.append("/" + pathSegments.get(i)); } // Query部分 sb.append("\nquery: ?" + uri.getQuery()); tv.setText(sb.toString());}最后,在webAPP页面上,通过如下方式调用;
<!-- 注意这里的href格式 -- ><a href="hallonativeworld://schemedemo/get/info?id=10000">open android native app</a>
完成本文的主题之后,再来聊聊webview;对于系统自带的webview,实在是可以轻松罗列出十大罪状,所以一般建议用第三方开源的webview,这里特别推荐一下腾讯的X5webview;来看看官网中对其优势的分析(他的优势很大一部分对比于系统原生的webview):
TBS(腾讯浏览服务)的优势
1) 速度快:相比系统webview的网页打开速度有30+%的提升;
2) 省流量:使用云端优化技术使流量节省20+%;
3) 更安全:安全问题可以在24小时内修复;
4) 更稳定:经过亿级用户的使用考验,CRASH率低于0.15%;
5) 兼容好:无系统内核的碎片化问题,更少的兼容性问题;
6) 体验优:支持夜间模式、适屏排版、字体设置等浏览增强功能;
7) 功能全:在Html5、ES6上有更完整支持;
8) 更强大:集成强大的视频播放器,支持视频格式远多于系统webview;
9) 视频和文件格式的支持x5内核多于系统内核
10) 防劫持是x5内核的一大亮点
至于更具体的介绍和使用方式,大家可以参考官方文档介绍:https://x5.tencent.com/tbs/guide/sdkInit.html再来聊聊Hybrid APP,Hybrid App(混合模式移动应用)是指介于web-app、native-app这两者之间的app,兼具“Native App良好用户交互体验的优势”和“Web App跨平台开发的优势”,使用H5实现的功能能够在不升级App的情况下动态更新,而且可以在Android或iOS的App上同时运行,节约了成本,提高了开发效率。微信,QQ、QZone、网易云音乐等大量软件都内嵌了H5,也就是在一个App中内嵌一个轻量级的浏览器,一部分原生的功能改为Html 5来开发。其实就是Java代码和JavaScript之间的调用。Cordova是一个广泛使用的Hybrid开发框架,它提供了一套js和Native交互规范,大家可以参考和学习!
- 安卓Java与js的互相调用分析
- Js与java的互相调用
- JS 与JAVA 的互相调用
- binbinyang---Android js 与安卓互相调用
- js 和 安卓互相调用
- 【phonegap】使用的java与js互相调用的原理
- Webview中js与本地java代码的互相调用
- android之js与java互相调用
- dwr js与java互相调用
- 安卓开发:WebView中JS和Java方法互相调用
- JS & JAVA(Android) 的互相调用(简介)
- 安卓学习笔记---JNI实现Java与C之间进行互相调用
- 安卓与js调用
- c++工程与java的互相调用
- JNI JAVA与C的互相调用
- javascript与java的互相调用
- android 原生与web交互,java与js的互相调用
- flex与JS互相调用
- JAVA 对象的表示模型和运行时内存表示
- Mybatis的逆向工程如何使用
- redis 设置密码
- java初级简单分页功能实现
- 【面经笔记】软件测试相关问题
- 安卓Java与js的互相调用分析
- wait和notify实现安全队列
- BZOJ[2330]糖果 差分约束
- 经典排序算法练习
- java集合树状结构及源码
- Ubuntu 16.04下安装Tomcat 8.5.9
- 点云obj格式转换成pcd格式
- 为移动设备设计和证明一个符合EMV协议的支付协议一
- 树(BFS),紫书P155UVa548