Android Utils - 打开外部地图导航(百度、高德、腾讯)

外部打开腾讯地图网页版: 

1、腾讯地图官方文档说明 

 

 Intent tengXuIntent = new Intent();
                    // 驾车路线规划
                    tengXuIntent.setData(Uri.parse("qqmap://map/routeplan?type=drive&from=我的位置&fromcoord=" + LbsService.instance().getLatitude() + "," + LbsService.instance().getLongitude() + "&to=" + 目的地地址信息+ "&tocoord=" + 目的地纬度+ "," + 目的地经度));
                    if (isInstallByread("com.tencent.map")) {
                        //启动该页面即可
                        ActivityManager.getTopActivity().startActivity(tengXuIntent);
                    } else {
                    //如果没有安装则跳转到应用市场
                        Toast.makeText(ActivityManager.getTopActivity(), "您尚未安装腾讯地图,请先安装地图", Toast.LENGTH_LONG).show();
                        Uri uri = Uri.parse("market://details?id=com.tencent.map");
                        Intent intent = new Intent(Intent.ACTION_VIEW, uri);
                        if (intent.resolveActivity(ActivityManager.getTopActivity().getPackageManager()) != null) {
                            ActivityManager.getTopActivity().startActivity(intent);
                        }
                    }

外部打开高德地图进行导航:

2、高德地图官方文档URI·API 

 Intent gaoDeIntent = new Intent();
                    gaoDeIntent.setAction(Intent.ACTION_VIEW);
                    gaoDeIntent.addCategory(Intent.CATEGORY_DEFAULT);
                    gaoDeIntent.setPackage("com.autonavi.minimap");
                    gaoDeIntent.setData(Uri.parse("androidamap://route/plan/?slat=" + LbsService.instance().getLatitude() + "&slon=" + LbsService.instance().getLongitude() + "&sname=我的位置&dlat=" + 目的地纬度+ "&dlon=" + 目的地经度+ "&dname=" + 目的地位置信息+ "&dev=0&t=0"));

                    if (isInstallByread("com.autonavi.minimap")) {
                        ActivityManager.getTopActivity().startActivity(gaoDeIntent);
                        Log.e("GasStation", "高德地图客户端已经安装");
                    } else {
                 //如果没有安装则跳转到应用市场
                        Toast.makeText(ActivityManager.getTopActivity(), "您尚未安装高德地图客户端,请先安装地图", Toast.LENGTH_LONG).show();
                        Uri uri = Uri.parse("market://details?id=com.autonavi.minimap");
                        Intent intent = new Intent(Intent.ACTION_VIEW, uri);
                        if (intent.resolveActivity(ActivityManager.getTopActivity().getPackageManager()) != null) {
                            ActivityManager.getTopActivity().startActivity(intent);
                        }
                    }

外部打开百度地图进行导航:

3、百度地图官方文档URL·API 说明

 // 驾车路线规划
                    Intent baiDuIntent = new Intent();
                    baiDuIntent.setData(Uri.parse("baidumap://map/direction?coord_type=gcj02&src=App英文名称|App中文名称&region=" + LbsService.instance().getLocCity() + "&origin=" + LbsService.instance().getLatitude() + "," + LbsService.instance().getLongitude() + "&destination=" + 目的地纬度+ "," + 目的地经度+ "&mode=driving&sy=3"));
                    if (isInstallByread("com.baidu.BaiduMap")) {
                        ActivityManager.getTopActivity().startActivity(baiDuIntent);
                        Log.e("GasStation", "百度地图客户端已经安装");
                    } else {
 //如果没有安装则跳转到应用市场
                        Toast.makeText(ActivityManager.getTopActivity(), "您尚未安装百度地图客户端,请先安装地图", Toast.LENGTH_LONG).show();
                        Uri uri = Uri.parse("market://details?id=com.baidu.BaiduMap");
                        Intent intent = new Intent(Intent.ACTION_VIEW, uri);
                        if (intent.resolveActivity(ActivityManager.getTopActivity().getPackageManager()) != null) {
                            ActivityManager.getTopActivity().startActivity(intent);
                        }
                    }

以上代码涉及到的ActivityManager以及LbService均是封装好可以直接使用的工具类

ActivityManager是自己封装的一个管理activity的工具类,一般用在获取上下文或者是在fragment获取当前activity中去使用

LbService 是自己封装的定位的工具类,很通用,用于定位,存储定位信息,获取经纬度,城市信息等等

 

关于其中的工具类ActivityManager

import android.app.Activity;
import java.util.ArrayList;
import java.util.List;

/**
 * Created by Administrator on 2016/5/14 0014.
 */
public class ActivityManager {

    private static final List<BaseActivity> ActivityStack = new ArrayList<>();

    public static List<BaseActivity> getStack(){
        return ActivityStack;
    }

    public static void add( BaseActivity activity ) {
        ActivityStack.add( activity );
    }

    public static void remove( Activity activity ) {
        for( int i = ActivityStack.size()-1; i >= 0; i-- )
        {
            if( ActivityStack.get(i) == activity ) {
                ActivityStack.remove(i);
                break;
            }
        }
    }

    public static BaseActivity getTopActivity() {
       if( ActivityStack.size() > 0 ) {
           return ActivityStack.get( ActivityStack.size()-1 );
       } else {
          throw new NullPointerException("栈顶没有Activity");
       }
    }

    public static int getActivityCount() {
        if( ListUtil.isEmpty(ActivityStack) ) return 0;
        return ActivityStack.size();
    }

    public static BaseActivity getActivity( int position ) {
        if( position < getActivityCount() ) {
            return ActivityStack.get(position);
        } else {
            return null;
        }
    }

    public static void removeActivity( int position ) {
        if( position < getActivityCount() ) {
            ActivityStack.remove( position );
        }
    }

    public static boolean contains( Class zClass ) {
        for( int i = 0; i < ActivityStack.size(); i++ ) {
            if( ActivityStack.get(i).getClass().toString().equals( zClass.toString() ) ) return true;
        }
        return false;
    }

}

判断是否安装目标应用

 /**
     * 判断是否安装目标应用
     *
     * @param packageName 目标应用安装后的包名
     * @return 是否已安装目标应用
     */
    private boolean isInstallByread(String packageName) {
        return new File("/data/data/" + packageName).exists();
    }

 

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值