Android Intent跳转第三方地图应用,传入地址

因为项目中需要,网上的资料感觉很乱,就自己整理一下,在应用内跳转高德、百度、腾讯地图。

在进行跳转之前,首先要check一下本机有没有安装安装第三方的地图(app非网页哦)

包名:

高德:

com.autonavi.minimap

百度:

com.baidu.BaiduMap

腾讯:

com.tencent.map

方法两种,

第一种:高德,百度,亲测有效,貌似腾讯不行

public boolean isAvailable(String mapPackageName) {
    PackageInfo packageInfo;
    try {
        packageInfo = activity.getPackageManager().getPackageInfo(mapPackageName, 0);
    } catch (PackageManager.NameNotFoundException e) {
        packageInfo = null;
        e.printStackTrace();
    }
    return packageInfo == null ? false : true;
}

第二种:高德,百度,腾讯均有效(以腾讯为例)

new File("/data/data/com.tencent.map").exists()

跳转地图

高德:address传入目的地名称

try {
    String act = "android.intent.action.VIEW";
    String dat = "androidamap://keywordNavi?sourceApplication=softname&keyword=" + address + " &style=2";
    String pkg = "com.autonavi.minimap";
    Intent intent = new Intent(act, Uri.parse(dat));
    intent.setPackage(pkg);
    startActivity(intent);
} catch (Exception e) {
    e.printStackTrace();
}

百度:address传入目的地名称

try {
    Intent i1 = new Intent();
    i1.setData(Uri.parse("baidumap://map/geocoder?src=openApiDemo&address=" + address));
    startActivity(i1);
} catch (Exception e) {
    e.printStackTrace();
}

腾讯:address传入目的地名称 ,gotoLatitude和gotoLongitude(经纬度 必传否则会默认当前位置)

try {
    String pathUrl = "qqmap://map/routeplan?type=drive&to=" + address + "&tocoord=" + gotoLatitude + "," + gotoLongitude + "&policy=2&referer=myapp";
    Intent intent = new Intent();
    intent.setData(Uri.parse(pathUrl));
    activity.startActivity(intent);
} catch (Exception e) {
    e.printStackTrace();
}



你可能感兴趣的:(Android,跳转地图,intent跳转)