• 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>

  • 相关阅读:
    因子和阶乘
    周期串
    字符串~键盘错位
    6174问题
    HDU_1015——撬锁,5循环
    HDU_1372——骑士移动,二维空间BFS
    HDU_1372——骑士移动,BFS非模版
    HDU_2001——计算两点之间的距离
    HDU_2212
    HDU_1999——不可摸数
  • 原文地址:https://www.cnblogs.com/zzsdream/p/11919631.html
Copyright © 2020-2023  润新知