android 跳转第三方地图(百度,高德,谷歌)

简介: android 跳转第三方地图(百度,高德,谷歌)

现在我们在做app的时候除了功能性以外,还会考虑开发时间和开发成本 ,所以很多功能我们可以技巧性的避开自己开发,直接跳转到三方软件。


比如  地图的导航功能,我们完全可以不必集成三方的sdk,


这样做的好处有几点


1.减少自身开发成本  


2.减少项目及app大小


3.功能性自己做不如三方app的全面


但是同时也有弊端


就是一些客户倘若没有安装任何一款三方的地图软件  这样的话可能使用时会有一些不方便,但是感觉这种用户比较少,即使没有安装,也可以跳转到应用市场对应的三方软件下载界面。


话不多说 ,直接说正题 地图跳转实现


在做跳转之前 要先判断当前机器上有没有安装相关的三方软件,方法如下

  /*
   * 检查手机上是否安装了指定的软件
   * 
   * @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);
  }

经纬度变量换成自己的

mLatitude 
mLongitude 

目的地

mAreaName 

1.百度地图跳转

if (isAvilible(context, "com.baidu.BaiduMap")) {// 传入指定应用包名
            try {
              Intent intent = Intent.getIntent("intent://map/direction?destination=latlng:"
                      + mLatitude + ","
                      + mLongitude + "|name:"+mAreaName + // 终点
                      "&mode=driving&" + // 导航路线方式
                      "region=北京" + //
                      "&src=新疆和田#Intent;scheme=bdapp;package=com.baidu.BaiduMap;end");
              context.startActivity(intent); // 启动调用
            } catch (URISyntaxException e) {
              Log.e("intent", e.getMessage());
            }
          } else {// 未安装
            Toast.makeText(context, "您尚未安装百度地图", Toast.LENGTH_LONG)
                .show();
            Uri uri = Uri
                .parse("market://details?id=com.baidu.BaiduMap");
            Intent intent = new Intent(Intent.ACTION_VIEW, uri);
            context.startActivity(intent);
          }

2.高德地图跳转

if (isAvilible(context, "com.autonavi.minimap")) {
            try {
              Intent intent = Intent.getIntent("androidamap://navi?sourceApplication=新疆和田&poiname="+mAreaName+"&lat="
                      + mLatitude
                      + "&lon="
                      + mLongitude + "&dev=0");
              context.startActivity(intent);
            } catch (URISyntaxException e) {
              e.printStackTrace();
            }
          } else {
            Toast.makeText(context, "您尚未安装高德地图", Toast.LENGTH_LONG)
                .show();
            Uri uri = Uri
                .parse("market://details?id=com.autonavi.minimap");
            Intent intent = new Intent(Intent.ACTION_VIEW, uri);
            context.startActivity(intent);
          }

3.谷歌地图跳转

  if (isAvilible(context, "com.google.android.apps.maps")) {
            Uri gmmIntentUri = Uri.parse("google.navigation:q="
                + mLatitude + "," + mLongitude
                + ", + Sydney +Australia");
            Intent mapIntent = new Intent(Intent.ACTION_VIEW,
                gmmIntentUri);
            mapIntent.setPackage("com.google.android.apps.maps");
            context.startActivity(mapIntent);
          } else {
            Toast.makeText(context, "您尚未安装谷歌地图", Toast.LENGTH_LONG)
                .show();
            Uri uri = Uri
                .parse("market://details?id=com.google.android.apps.maps");
            Intent intent = new Intent(Intent.ACTION_VIEW, uri);
            context.startActivity(intent);
          }


相关文章
|
7月前
|
Linux 调度 Android开发
【系统启动】Kernel怎么跳转到Android:linux与安卓的交界
【系统启动】Kernel怎么跳转到Android:linux与安卓的交界
111 0
|
2月前
|
程序员 开发工具 Android开发
Android|WebView 禁止长按,限制非白名单域名的跳转层级
如何限制 WebView 仅域名白名单网址能随意跳转,并禁用长按选择文字。
43 2
|
7月前
|
Java 开发工具 Android开发
如何在Eclipse中查看Android源码或者第三方组件包源码(转)
如何在Eclipse中查看Android源码或者第三方组件包源码(转)
57 4
|
3月前
|
Android开发 UED Kotlin
Android中如何跳转到Wi-Fi开关设置页
本文介绍如何在Android应用开发中使用隐式Intent引导用户至特定系统设置页面,如Wi-Fi设置页,并提供Kotlin代码示例。通过设置Intent的Action属性并检查设备兼容性,可轻松实现跳转功能,提升用户体验。此外,还列举了其他常用设置页面的Intent Action及注意事项。
92 15
|
7月前
|
机器学习/深度学习 Java Shell
[RK3568][Android12.0]--- 系统自带预置第三方APK方法
[RK3568][Android12.0]--- 系统自带预置第三方APK方法
709 0
|
7月前
|
存储 Java Android开发
Android系统 设置第三方应用为默认Launcher实现和原理分析
Android系统 设置第三方应用为默认Launcher实现和原理分析
1057 0
|
4月前
|
存储 安全 物联网
Android经典实战之跳转到系统设置页面或其他系统应用页面大全
本文首发于公众号“AntDream”,关注获取更多技巧。文章总结了Android开发中跳转至系统设置页面的方法,包括设备信息、Wi-Fi、显示与声音设置等,并涉及应用详情与电池优化页面。通过简单的Intent动作即可实现,需注意权限与版本兼容性。每日进步,尽在“AntDream”。
471 2
|
4月前
|
Android开发 iOS开发
Android项目架构设计问题之将隐式跳转的逻辑进行抽象和封装如何解决
Android项目架构设计问题之将隐式跳转的逻辑进行抽象和封装如何解决
48 0
|
5月前
|
Android开发
Android仿高德首页三段式滑动
Android仿高德首页三段式滑动
159 0
|
5月前
|
Android开发
Android 开发中跳转到评论页面
Android 开发中跳转到评论页面
72 0