如果可以,先得到这3个条件,然后在调起地图的请求中传进去。
使用这个方法判断手机中是否包含应用:
/**
* 检查手机上是否安装了指定的软件
*
* @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);
}
//百度
if (isAvilible(getApplicationContext(), "com.baidu.BaiduMap")) {
baiduHave = true;
}
//高德
if (isAvilible(getApplicationContext(), "com.autonavi.minimap")) {
gaodeHave = true;
}
//腾讯
if (isAvilible(getApplicationContext(), "com.tencent.map")) {
tentcentHave = true;
}
百度:
1、已安装:
/**
* 调起百度地图
*
* @param chufa 出发地
* @param mudi 目的地
* @param city 城市
*/
public void intentMap(String chufa, String mudi, String city) {
try {
Intent intent = Intent.getIntent(
"intent://map/direction?origin=" + chufa + "&destination=" + mudi + "&mode=driving®ion=" + city + "&referer=Autohome|GasStation#Intent;scheme=bdapp;package=com.baidu.BaiduMap;end");
startActivity(intent);
} catch (URISyntaxException e) {
e.printStackTrace();
MyToast.makeTextAnim(getApplication(), "路径解析错误", 0, R.style.Lite_Animation_Toast).show();
} catch (BaiduMapAppNotSupportNaviException e) {
e.printStackTrace();
showDialog();
} catch (ActivityNotFoundException e) {
e.printStackTrace();
showDialog();
}
}
2、未安装(通过浏览器调起)
String uristr = "http://api.map.baidu.com/direction?origin=latlng:0,0|name:"+chufaText+"&destination="+distinationText+"&mode=driving®ion="+originText+"&output=html&src=APP名称";
Uri uri = Uri.parse(uristr);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
高德:
1、已安装
/**
* 高德
* @param chufa 出发地
* @param mudi 目的地
*/
public void initGaoDeMap(String chufa, String mudi) {
Intent intent;
try {
intent = Intent.getIntent("androidamap://navi?sourceApplication=" + chufa + "&poiname=" + mudi + "&lat=" + 0 + "&lon=" + 0 + "&dev=0");
startActivity(intent);
} catch (URISyntaxException e) {
e.printStackTrace();
}
}
2、未安装
Uri uri = Uri.parse("http://mo.amap.com/navi?start=&dest=" + 0 + "&destName=" + distinationText + "&key=");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
腾讯 已安装和未安装都是这样
Uri uri = Uri.parse("http://apis.map.qq.com/uri/v1/routeplan?type=drive&from=" + chufaText + "&to=" + distinationText + "&policy=0&referer=myapp");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);