Android 调起第三方地图应用导航

要调起第三方应用,首先需要判断手机中是否安装了地图app,然后调起导航。
百度地图包名:com.baidu.BaiduMap
高德地图包名:com.autonavi.minimap

一、工具类:
    /**
     * 检查手机上是否安装了指定的软件
     * @param context
     * @param packageName:应用包名
     * @return
     */
    public static boolean isAvilible(Context context, String packageName){
        //获取packagemanager
        final PackageManager packageManager = context.getPackageManager();
        //获取所有已安装程序的包信息
        List packageInfos = packageManager.getInstalledPackages(0);
        //用于存储所有已安装程序的包名
        List packageNames = new ArrayList();
        //从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);
    }
二、根据URI跳转,进行导航

高德:http://lbs.amap.com/api/amap-mobile/guide/android/route
百度:http://lbsyun.baidu.com/index.php?title=uri/api/android

// 百度地图
Uri mUri = Uri.parse("baidumap://map/direction?origin=我的位置&destination=name:" + mallName + "|latlng:" + lat + "," + lng + "&coord_type=gcj02&src=com.xxx.xxx");
Intent mIntent = new Intent(Intent.ACTION_VIEW, mUri);
startActivity(mIntent);
// 高德地图
Uri mUri = Uri.parse("amapuri://route/plan/?sname=我的位置&dlat=" + lat + "&dlon=" + lng + "&dname=" + mallName + "&dev=0&t=0&sourceApplication=com.xxx.xxx");
Intent mIntent = new Intent(Intent.ACTION_VIEW, mUri);
startActivity(mIntent);

你可能感兴趣的:(Android 调起第三方地图应用导航)