因为项目中需要,网上的资料感觉很乱,就自己整理一下,在应用内跳转高德、百度、腾讯地图。
在进行跳转之前,首先要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(); }