Android 实现点击按钮 调用手机外部地图导航

/**
 *  高德地图
 * @param mContext
 * @param lat 纬度
 * @param lng 经度
 */
private static void gaoDe(Context mContext, String lat, String lng,String adr){
    if (ProjectUtils.isAvilible(mContext, "com.autonavi.minimap")) {
        try{
            String url="amapuri://route/plan/?sid=BGVIS1&slat=&slon=&sname=&did=&dlat="+lat+"&dlon="+lng+"&dname="+adr+"&dev=0&t=0";
            Intent intent = new Intent("android.intent.action.VIEW",android.net.Uri.parse(url));
            mContext.startActivity(intent);

        } catch (Exception e)
        {e.printStackTrace(); }
    }else{
        T.showShort(mContext,"您尚未安装高德地图");
        Uri uri = Uri.parse("market://details?id=com.autonavi.minimap");
        Intent intent = new Intent(Intent.ACTION_VIEW, uri);
        mContext.startActivity(intent);
    }
}

/**
 * 启动腾讯地图App进行导航
 * @param address 目的地
 * @param latStr 必填 纬度
 * @param lonStr 必填 经度
 */
private static void gotoTengxun(Context context, String address, String latStr, String lonStr) {
    if (ProjectUtils.isAvilible(context, "com.tencent.map")) {
        double lat=0 ,lon=0;
        if (!ProjectUtils.isStrNull(latStr)){
            lat=Double.parseDouble(latStr);
        }
        if (!ProjectUtils.isStrNull(lonStr)){
            lon=Double.parseDouble(lonStr);
        }
        // 启动路径规划页面
        Intent naviIntent = new Intent("android.intent.action.VIEW", android.net.Uri.parse("qqmap://map/routeplan?type=drive&from=&fromcoord=&to="+ address + "&tocoord=" + lat + "," + lon + "&policy=0&referer=appName"));
        context.startActivity(naviIntent);
    }else {
        T.showShort(context,"您尚未安装腾讯地图");
        Uri uri = Uri.parse("market://details?id=com.tencent.map");
        Intent intent = new Intent(Intent.ACTION_VIEW, uri);
        context.startActivity(intent);
    }
}
/**
 * 启动百度App进行导航
 * @param address 目的地
 * @param latStr 必填 纬度
 * @param lonStr 必填 经度
 */
private static void goToBaiduActivity(Context context, String address, String latStr, String lonStr) {
    if (ProjectUtils.isAvilible(context, "com.baidu.BaiduMap")) {
        double lat = 0, lon = 0;
        if (!ProjectUtils.isStrNull(latStr)) {
            lat = Double.parseDouble(latStr);
        }
        if (!ProjectUtils.isStrNull(lonStr)) {
            lon = Double.parseDouble(lonStr);
        }

        //启动路径规划页面
        String url="baidumap://map/direction?origin=我的位置&destination="+address+"&mode=driving&src=yourCompanyName|yourAppName#Intent;scheme=bdapp;package=com.baidu.BaiduMap;end";
        Intent naviIntent = new Intent("android.intent.action.VIEW", android.net.Uri.parse(url));
        context.startActivity(naviIntent);
    }else {
        T.showShort(context,"您尚未安装百度地图");
        Uri uri = Uri.parse("market://details?id=com.baidu.BaiduMap");
        Intent intent = new Intent(Intent.ACTION_VIEW, uri);
        context.startActivity(intent);
    }
}
 /* 检查手机上是否安装了指定的软件
* @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);
  }

猜你喜欢

转载自blog.csdn.net/qq_27400335/article/details/79420583