美文网首页TECH_ANDROID
Android 调起第三方地图应用进行导航

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

作者: Joseph_L | 来源:发表于2017-04-08 18:44 被阅读2027次

最近公司项目中用到类似的功能,记录一下,权当笔记吧,能帮到其他人也算是功德一件了。

1.准备工作。由于我们需要判断手机上是否安装了特定的地图应用,所以第三方地图的包名也就是必须的了。
  • 百度地图包名:com.baidu.BaiduMap

  • 高德地图包名:com.autonavi.minimap

  • 腾讯地图包名:com.tencent.map

2.根据包名判断是否安装了当前应用
  • 方法一:
public static boolean isPackageInstalled(String packageName) {
        return new File("/data/data/" + packageName).exists();
    }
  • 方法二:
public static boolean isPackageInstalled(Context mContext, String packagename) {
        PackageInfo packageInfo = null;
        try {
            packageInfo = mContext.getPackageManager().getPackageInfo(packagename, 0);
        } catch (PackageManager.NameNotFoundException e) {
            packageInfo = null;
            e.printStackTrace();
        } finally {
            return packageInfo == null ? false : true;
        }
    }

这里要着重说一下这个方法,网上这个方法有很多,但一般都是在这个finally的位置进行if-else判断,判断packageName是否为null。但是我用起来不太顺手,不知道为什么没有人说过这个问题。
  一旦程序出现异常,进入了catch语句,那之后的if判断是没有作用的。

if (packageInfo == null) {
      return false;
  } else { // 如果进入了catch,无论packageInfo是否为null,程序都会走else条件句
      return true;
  }
3.根据各大平台提供的URI,进行相关页面的跳转

这里提供各平台相关的地址,具体搜索:【平台名】+URI API,就可以找到想要的结果。
高德:http://lbs.amap.com/api/amap-mobile/guide/android/route
百度:http://lbsyun.baidu.com/index.php?title=uri/api/android
腾讯:http://lbs.qq.com/uri_v1/guide-route.html

各个平台基本上都有对应的Uri地址以及对应的调用示例,依样画葫芦基本上都可以实现。

// 百度地图
Intent naviIntent = new Intent("android.intent.action.VIEW", android.net.Uri.parse("baidumap://map/geocoder?location=" + mEndPoint.getLatitude() + "," + mEndPoint.getLongitude()));
mContext.startActivity(naviIntent);
// 高德地图
naviIntent = new Intent("android.intent.action.VIEW", android.net.Uri.parse("androidamap://route?sourceApplication=appName&slat=&slon=&sname=我的位置&dlat="+ mEndPoint.getLatitude() +"&dlon="+ mEndPoint.getLongitude()+"&dname=目的地&dev=0&t=2"));
mContext.startActivity(naviIntent);
// 腾讯地图
naviIntent = new Intent("android.intent.action.VIEW", android.net.Uri.parse("qqmap://map/routeplan?type=drive&from=&fromcoord=&to=目的地&tocoord=" + mEndPoint.getLatitude() + "," + mEndPoint.getLongitude() + "&policy=0&referer=appName"));
mContext.startActivity(naviIntent);

具体方法名决定着跳转的页面,比如上面高德和腾讯方法为routeplan,线路规划,跳转的都是导航方式选择页面;而百度为geocoder,跳转的是目的地位置详情页面。

都是常用的一些功能,就不放图啦~就酱。

相关文章

  • 2019-03-26

    iOS 调起第三方地图导航

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

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

  • APICloud 调起IOS系统地图或谷歌地图...等...第三

    IOS 调起 Google Map APP进行导航 Android 调起 Google Map APP进行导航 I...

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

    最近公司项目中用到类似的功能,记录一下,权当笔记吧,能帮到其他人也算是功德一件了。 1.准备工作。由于我们需要判断...

  • RN-地图导航

    调起百度网页地图路径导航 调起高德网页地图路径导航 iOS调起百度APP地图路径导航 iOS调起高德app地图路径...

  • Android 调用百度导航

    我的博客 实现效果:传入高德坐标数据正确调起百度地图导航 问题 最近项目中需要调用第三方导航(本地Android项...

  • 地图导航

    URI跳转方式地图导航的代码实践iOS调用第三方地图路线导航IOS实现应用内打开第三方地图app进行导航 高德 i...

  • 开发问题笔记(十三)

    目录 1.App内打开第三方地图进行导航 1.App内打开第三方地图进行导航 App内打开第三方地图进行导航;举例...

  • Android打开第三方应用方法总结

    在Android开发中,有很多地方都需要启动其他的程序,调起第三方应用(“QQ”、“微信”、“支付宝”、“高德地图...

  • 应用内调起地图导航

    上述代码中的导航中的URL字符串iosamap://path和baidumap://map/direction实现...

网友评论

    本文标题:Android 调起第三方地图应用进行导航

    本文链接:https://www.haomeiwen.com/subject/yizlattx.html