avatar

如果可以,先得到这3个条件,然后在调起地图的请求中传进去。

使用这个方法判断手机中是否包含应用:

    /**
     * 检查手机上是否安装了指定的软件
     *
     * @param context
     * @param packageName:应用包名
     * @return
     */
    public static boolean isAvilible(Context context, String packageName) {
        //获取packagemanager
        final PackageManager packageManager = context.getPackageManager();
        //获取所有已安装程序的包信息
        List<PackageInfo> packageInfos = packageManager.getInstalledPackages(0);
        //用于存储所有已安装程序的包名
        List<String> packageNames = new ArrayList<String>();
        //从pinfo中将包名字逐一取出,压入pName list中
        if (packageInfos != null) {
            for (int i = 0; i < packageInfos.size(); i++) {
                String packName = packageInfos.get(i).packageName;
                packageNames.add(packName);
            }
        }
        //判断packageNames中是否有目标程序的包名,有TRUE,没有FALSE
        return packageNames.contains(packageName);
    }
        //百度
        if (isAvilible(getApplicationContext(), "com.baidu.BaiduMap")) {
            baiduHave = true;
        }
        //高德
        if (isAvilible(getApplicationContext(), "com.autonavi.minimap")) {
            gaodeHave = true;
        }
        //腾讯
        if (isAvilible(getApplicationContext(), "com.tencent.map")) {
            tentcentHave = true;
        }

这里写图片描述

百度: 1、已安装:

    /**
     * 调起百度地图
     *
     * @param chufa 出发地
     * @param mudi  目的地
     * @param city  城市
     */
    public void intentMap(String chufa, String mudi, String city) {
        try {
            Intent intent = Intent.getIntent(
                    "intent://map/direction?origin=" + chufa + "&destination=" + mudi + "&mode=driving&region=" + city + "&referer=Autohome|GasStation#Intent;scheme=bdapp;package=com.baidu.BaiduMap;end");
            startActivity(intent);
        } catch (URISyntaxException e) {
            e.printStackTrace();
            MyToast.makeTextAnim(getApplication(), "路径解析错误", 0, R.style.Lite_Animation_Toast).show();
        } catch (BaiduMapAppNotSupportNaviException e) {
            e.printStackTrace();
            showDialog();
        } catch (ActivityNotFoundException e) {
            e.printStackTrace();
            showDialog();
        }
    }

2、未安装(通过浏览器调起)

String uristr = "http://api.map.baidu.com/direction?origin=latlng:0,0|name:"+chufaText+"&destination="+distinationText+"&mode=driving&region="+originText+"&output=html&src=APP名称";
Uri uri = Uri.parse(uristr);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);

高德: 1、已安装

    /**
     * 高德
     * @param chufa  出发地
     * @param mudi 目的地
     */
    public void initGaoDeMap(String chufa, String mudi) {
        Intent intent;
        try {
            intent = Intent.getIntent("androidamap://navi?sourceApplication=" + chufa + "&poiname=" + mudi + "&lat=" + 0 + "&lon=" + 0 + "&dev=0");
            startActivity(intent);
        } catch (URISyntaxException e) {
            e.printStackTrace();
        }
    }

2、未安装

Uri uri = Uri.parse("http://mo.amap.com/navi?start=&dest=" + 0 + "&destName=" + distinationText + "&key=");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);

腾讯 已安装和未安装都是这样

Uri uri = Uri.parse("http://apis.map.qq.com/uri/v1/routeplan?type=drive&from=" + chufaText + "&to=" + distinationText + "&policy=0&referer=myapp");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);