现在我们在做app的时候除了功能性以外,还会考虑开发时间和开发成本 ,所以很多功能我们可以技巧性的避开自己开发,直接跳转到三方软件。
比如 地图的导航功能,我们完全可以不必集成三方的sdk,
这样做的好处有几点
1.减少自身开发成本
2.减少项目及app大小
3.功能性自己做不如三方app的全面
但是同时也有弊端
就是一些客户倘若没有安装任何一款三方的地图软件 这样的话可能使用时会有一些不方便,但是感觉这种用户比较少,即使没有安装,也可以跳转到应用市场对应的三方软件下载界面。
话不多说 ,直接说正题 地图跳转实现
在做跳转之前 要先判断当前机器上有没有安装相关的三方软件,方法如下
代码语言:javascript复制 /*
* 检查手机上是否安装了指定的软件
*
* @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);
}
经纬度变量换成自己的
代码语言:javascript复制mLatitude
代码语言:javascript复制mLongitude
目的地
代码语言:javascript复制mAreaName
1.百度地图跳转
代码语言:javascript复制if (isAvilible(context, "com.baidu.BaiduMap")) {// 传入指定应用包名
try {
Intent intent = Intent.getIntent("intent://map/direction?destination=latlng:"
mLatitude ","
mLongitude "|name:" mAreaName // 终点
"&mode=driving&" // 导航路线方式
"region=北京" //
"&src=新疆和田#Intent;scheme=bdapp;package=com.baidu.BaiduMap;end");
context.startActivity(intent); // 启动调用
} catch (URISyntaxException e) {
Log.e("intent", e.getMessage());
}
} else {// 未安装
Toast.makeText(context, "您尚未安装百度地图", Toast.LENGTH_LONG)
.show();
Uri uri = Uri
.parse("market://details?id=com.baidu.BaiduMap");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
context.startActivity(intent);
}
2.高德地图跳转
代码语言:javascript复制if (isAvilible(context, "com.autonavi.minimap")) {
try {
Intent intent = Intent.getIntent("androidamap://navi?sourceApplication=新疆和田&poiname=" mAreaName "&lat="
mLatitude
"&lon="
mLongitude "&dev=0");
context.startActivity(intent);
} catch (URISyntaxException e) {
e.printStackTrace();
}
} else {
Toast.makeText(context, "您尚未安装高德地图", Toast.LENGTH_LONG)
.show();
Uri uri = Uri
.parse("market://details?id=com.autonavi.minimap");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
context.startActivity(intent);
}
3.谷歌地图跳转
代码语言:javascript复制 if (isAvilible(context, "com.google.android.apps.maps")) {
Uri gmmIntentUri = Uri.parse("google.navigation:q="
mLatitude "," mLongitude
", Sydney Australia");
Intent mapIntent = new Intent(Intent.ACTION_VIEW,
gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
context.startActivity(mapIntent);
} else {
Toast.makeText(context, "您尚未安装谷歌地图", Toast.LENGTH_LONG)
.show();
Uri uri = Uri
.parse("market://details?id=com.google.android.apps.maps");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
context.startActivity(intent);
}
讲道理 很简单 ,比起自己开发一大套导航的业务要简单很多,当然要不要自己开发也要根据自己的业务而定。