cordova调用第三方应用
cordova 帮助webapp 达到调用原生系统的功能
项目需求:在项目中调用系统中含有的第三方地图应用
需求其实分为两步:
1. 查找本地地图应用
2.成功调起本地应用
首先需要安装两个插件,安装指令如下:
1. cordova plugin add cordova-plugin-appavailability --save
2. cordova plugin add https://github.com/lampaa/com.lampa.startapp.git
第一个安装的是检测应用包名的插件,第二个安装的是启动第三方应用的插件
检测代码:
appAvailability.check("com.baidu.BaiduMap",function () {
//success callback
},function () {
//error callback
});
启动代码:
var sApp = startApp.set({ /* params */
"action":"ACTION_VIEW",
"category":"CATEGORY_DEFAULT",
"type":"text/css",
"package":"com.baidu.BaiduMap",
"uri":"baidumap://map/direction?origin=name:"+originName+"|latlng:"+origin[0]+","+origin[1]+"&destination=name:"+destinationName+"|latlng:"+destination[0]+","+destination[1]+"&mode=driving",
"flags":["FLAG_ACTIVITY_CLEAR_TOP","FLAG_ACTIVITY_CLEAR_TASK"],
"intentstart":"startActivity"
});
sApp.start(function() { /* success */
alert("OK");
}, function(error) { /* fail */
alert(error);
});
这里是以调用地图应用---百度地图为例
对于url中含有的参数说明:
originName:起始地名称
origin[0]:起始纬度
origin[1]:起始经度
destinationName:终点名称
destination[0]:终点纬度
destination[1]:终点经度
其他地图类应用的包名如下:
百度地图:com.baidu.BaiduMap
高德地图:com.autonavi.minimap
腾讯地图:com.tencent.map
谷歌地图:com.google.android.apps.maps
常用地图API
常用地图的API:
1.百度地图 http://lbsyun.baidu.com/index.php?title=uri/api/web
调起App的uri:baidumap://map/direction
2.腾讯地图 https://lbs.qq.com/uri_v1/guide-route.html
调起App的uri:qqmap://map/routeplan
3.高德地图 https://lbs.amap.com/api/uri-api/guide/travel/route
调起App的uri:amapuri://route/plan/
4.谷歌地图 地图开发地址不可用
调起App的uri:google.navigation:q= 或者 http://maps.google.com/maps
注意: cordova 运行版本需6.3.0以上。
发散应用:
可以分别利用两个插件,检测应用包名,或者调起第三方应用,或者一起使用检测某个第三方应用的存在,并传参调起。
参考自:
ionic开发——检测是否安装某APP,如果安装打开该APP
ionic项目中使用cordova插件跳转第三方地图APP(百度、高德)
第一步,安装cordova插件
cordova plugin add https://github.com/lampaa/com.lampa.startapp.git //打开第三方APP
cordova plugin add cordova-plugin-appavailability --save//检测是否存在第三方App
cordova plugin add cordova-plugin-inappbrowser //应用内置浏览器
第二步,配置config.xml(以百度地图为例):
//ios
<allow-intent href="baidumap://*/*" />
//android
<allow-intent href="bdapp://*/*" />
第三步,代码实现
var scheme;
// 不同的平台实现方式是不同的
if (ionic.Platform.isAndroid()) {
//android
scheme = 'com.baidu.BaiduMap';
appAvailability.check(
scheme, // URI Scheme or Package Name
function() { // Success callback
alert(scheme + ' is available :)');
var sApp = startApp.set({ /* params */
"action":"ACTION_MAIN",
"category":"CATEGORY_DEFAULT",
"type":"text/css",
"package":"com.baidu.BaiduMap",
"uri":"file://data/index.html",
"flags":["FLAG_ACTIVITY_CLEAR_TOP","FLAG_ACTIVITY_CLEAR_TASK"],
// "component": ["com.android.GoBallistic","com.android.GoBallistic.Activity"],
"intentstart":"startActivity",
}, { /* extras */
"EXTRA_STREAM":"extraValue1",
"extraKey2":"extraValue2"
});
sApp.start(function() { /* success */
alert("OK");
}, function(error) { /* fail */
alert(error);
});
},
function() { // Error callback
// 不存在对应APP
alert(scheme + ' is not available :(');
// 打开百度地图下载地址
window.open("market://search?q=com.baidu.BaiduMap")
}
);
} else {
// ios
scheme = 'baidu://';
appAvailability.check(
scheme, // URI Scheme or Package Name
function() { // Success callback
alert(scheme + ' is available :)');
var sApp = startApp.set("baidumap://");
sApp.start(function() { /* success */
alert("OK");
}, function(error) { /* fail */
alert(error);
});
},
function() { // Error callback
alert(scheme + ' is not available :(');
// 打开store下载百度地图 window.open("https://itunes.apple.com/cn/app/id452186370")
}
);
}
对于ios9+需要配置白名单,否则检测无效:
//在项目的Info.plist文件配置
<key>LSApplicationQueriesSchemes</key>
<array>
<string>baidumap</string>
</array>
cordova调用第三方应用的更多相关文章
- C#的Process类调用第三方插件实现PDF文件转SWF文件
在项目开发过程中,有时会需要用到调用第三方程序实现本系统的某一些功能,例如本文中需要使用到的swftools插件,那么如何在程序中使用这个插件,并且该插件是如何将PDF文件转化为SWF文件的呢?接下来 ...
- WebService学习总结(四)——调用第三方提供的webService服务
http://www.cnblogs.com/xdp-gacl/p/4260627.html 互联网上面有很多的免费webService服务,我们可以调用这些免费的WebService服务,将一些其他 ...
- Java调用第三方dll文件的使用方法 System.load()或System.loadLibrary()
Java调用第三方dll文件的使用方法 public class OtherAdapter { static { //System.loadLibrary("Connector") ...
- [转]Git调用第三方对比工具beyondCompare
点击阅读原文 对于我这种 git 命令行小白来说, git 自带的对比工具各种水土不服,想念以前的 svn 小乌龟 + beyondCompare 的日子...纠结完 gitHub client 未果 ...
- ios调用第三方程序打开文件,以及第三方调用自己的APP打开文件
1.自己的APP调用第三方打开文件 主要是使用 UIDocumentInteractionController 类 并实现 UIDocumentInteractionControllerDel ...
- ThinkPHP自动获取关键词(调用第三方插件)
ThinkPHP自动获取关键词调用在线discuz词库 先按照下图路径放好插件 方法如下 /** * 自动获取关键词(调用第三方插件) * @return [type] [description] * ...
- Android JNI如何调用第三方库
http://www.2cto.com/kf/201504/388764.html Android JNI找不到第三方库的解决方案 cannot load library 最近做一个jni项目,拿到的 ...
- Android如何调用第三方SO库
问题描述:Android如何调用第三方SO库:已知条件:SO库为Android版本连接库(*.so文件),并提供了详细的接口说明:已了解解决方案:1.将SO文件直接放到libs/armeabi下,然后 ...
- C# 调用第三方DLL完整实例
C# 调用第三方DLL完整实例 分类: C/C++ 以下代码为本人在实际项目中编写的调用第三方DLL接口程序的完整代码. public class ExecuteDLL : Form { ...//忽 ...
随机推荐
- SHOI2017 分手是祝愿
分手是祝愿 有
- 命令行的方式启动和关闭Mysql
命令行的方式启动和关闭Mysql mysql -h 主机名 -P 端口号 -u 用户名 -p 密码 例如:mysql -h localhost -P 3306 -u root -p11111(p和密码 ...
- 开启了wpjam以后网站语言不能设置英文的解决方法
一位网友问ytkah开启了wpjam以后网站语言不能设置英文了这是什么情况?选择English保存以后还是简体中文,禁用插件再设置语言是可以设为English,好几个站点都是这样 其实很简单,只要把这 ...
- Spring cloud stream【消息分组】
上篇文章我们简单的介绍了stream的使用,发现使用还是蛮方便的,但是在上个案例中,如果有多个消息接收者,那么消息生产者发送的消息会被多个消费者都接收到,这种情况在某些实际场景下是有很大问题的,比 ...
- Proxy监听对象的数据变化,处理绑定数据很有用
Proxy可以监听对象身上发生了什么事情,并在这些事情发生后执行一些相应的操作.一下子让我们对一个对象有了很强的追踪能力,同时在数据绑定方面也很有用处. }; //interceptor 拦截 var ...
- react native 依赖库管理:入门
目标文件:package.json { .... "dependencies": { "react": "16.8.3", "re ...
- Django 基础篇(二)视图与模板
视图 在django中,视图对WEB请求进行回应 视图接收reqeust对象作为第一个参数,包含了请求的信息 视图就是一个Python函数,被定义在views.py中 #coding:utf- fro ...
- Java代码题目:计算奖金和完全平方数
1.计算奖金 题目:企业发放的奖金根据利润提成.利润(I)低于或等于10万元时,奖金可提10%:利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%:2 ...
- sysmain服务怎么启动 & Win7 SuperFetch无法启动
在控制面板/管理工具/服务中,只需找到Superfetch这个服务,双击,然后将其启动类型改为自动,并点击启动按钮并确定即可. Superfetch无法启动,系统找不到指定档案 ms-windows ...
- 使用apt-mirror搭建debian镜像源
debian官方提供了脚本ftpsync来搭建源镜像,而 apt-mirror 是一个更简单便捷的源镜像搭建工具. 安装 apt-mirror sudo apt-get install apt-mir ...