1:实现逻辑,点击一个按钮去判断当前使用的Android手机中是否有安装导航app(百度,高德)
点击按钮判断逻辑实现
@Override
public void onClick(View v) {
if (isNavigationApk(MainActivity.this, "com.baidu.BaiduMap")) {
//百度地图
goBaiduMap(MainActivity.this, latitude, longtitude, address);
} else if (isNavigationApk(MainActivity.this, "com.autonavi.minimap")) {
//高德地图
goGaodeMap(MainActivity.this, latitude, longtitude, address);
} else {
Toast.makeText(MainActivity.this, "您尚未安装百度地图", Toast.LENGTH_SHORT).show();
}
}
判断是否安装代码块
/**
* 判断手机中是否有导航app
* @param activity
* @param packagename 包名
*/
public static boolean isNavigationApk(Activity activity, String packagename) {
List<PackageInfo> packages = activity.getPackageManager().getInstalledPackages(0);
for (int i = 0; i < packages.size(); i++) {
PackageInfo packageInfo = packages.get(i);
if (packageInfo.packageName.equals(packagename)) {
return true;
} else {
continue;
}
}
return false;
}
跳转百度地图,这里需要自己去定位获取当前位置的纬度和经度,及导航的目的地
/**
* 跳转到百度地图
* @param activity
* @param latitude 纬度
* @param longtitude 经度
* @param address 终点
* */
private void goBaiduMap(Activity activity,String latitude, String longtitude, String address) {
if (isNavigationApk(activity, "com.baidu.BaiduMap")) {
try {
Intent intent = Intent.getIntent("intent://map/direction?destination=latlng:"
+ latitude + ","
+ longtitude + "|name:" + address + //终点:该地址会在导航页面的终点输入框显示
"&mode=driving&" + //选择导航方式 此处为驾驶
"region=" + //
"&src=#Intent;scheme=bdapp;package=com.baidu.BaiduMap;end");
activity.startActivity(intent);
} catch (URISyntaxException e) {
Log.e("goError", e.getMessage());
}
} else {
Toast.makeText(activity, "您尚未安装百度地图", Toast.LENGTH_SHORT).show();
}
}
跳转到高德地图
/**
* 跳转到高德地图
* @param activity
* @param latitude 纬度
* @param longtitude 经度
* @param address 终点
* */
private void goGaodeMap(Activity activity,String latitude, String longtitude, String address) {
if (isNavigationApk(activity, "com.autonavi.minimap")) {
try {
Intent intent = Intent.getIntent("androidamap://navi?sourceApplication=&poiname=" + address + "&lat=" + latitude
+ "&lon=" + longtitude + "&dev=0");
activity.startActivity(intent);
} catch (URISyntaxException e) {
Log.e("goError", e.getMessage());
}
} else {
Toast.makeText(activity, "您尚未安装高德地图", Toast.LENGTH_SHORT).show();
}
}