要调起第三方应用,首先需要判断手机中是否安装了地图app,然后调起导航。
百度地图包名:com.baidu.BaiduMap
高德地图包名:com.autonavi.minimap
一、工具类:
/**
* 检查手机上是否安装了指定的软件
* @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);
}
二、根据URI跳转,进行导航
高德:http://lbs.amap.com/api/amap-mobile/guide/android/route
百度:http://lbsyun.baidu.com/index.php?title=uri/api/android
// 百度地图
Uri mUri = Uri.parse("baidumap://map/direction?origin=我的位置&destination=name:" + mallName + "|latlng:" + lat + "," + lng + "&coord_type=gcj02&src=com.xxx.xxx");
Intent mIntent = new Intent(Intent.ACTION_VIEW, mUri);
startActivity(mIntent);
// 高德地图
Uri mUri = Uri.parse("amapuri://route/plan/?sname=我的位置&dlat=" + lat + "&dlon=" + lng + "&dname=" + mallName + "&dev=0&t=0&sourceApplication=com.xxx.xxx");
Intent mIntent = new Intent(Intent.ACTION_VIEW, mUri);
startActivity(mIntent);
网友评论