Android和IOS启动第三方地图APP
2017-08-30 17:05
302 查看
最近客户新提了需求,地址字段要能通过第三方的地图进行定位,于是对Android和IOS端进行了调整。
以下是调用地图部分的代码。
android可按照包名来判断app是否存在:
方法:
这是调用,我的是直接调用启动地图。你可以用原生实现一个操作表让用户选择后启动相应的APP。
IOS可用canOpenURL来判断Schema是否存在判断,代码如下:
记得添加 lsapplicationqueriesschemes
以下是调用地图部分的代码。
android可按照包名来判断app是否存在:
方法:
/* * check the app is installed */ private boolean isAppInstalled(Context context, String packagename) { PackageInfo packageInfo; try { packageInfo = context.getPackageManager().getPackageInfo(packagename, 0); } catch (PackageManager.NameNotFoundException e) { packageInfo = null; e.printStackTrace(); } if (packageInfo == null) { //System.out.println("没有安装"); return false; } else { //System.out.println("已经安装"); return true; } }
这是调用,我的是直接调用启动地图。你可以用原生实现一个操作表让用户选择后启动相应的APP。
if (isAppInstalled(context, "com.autonavi.minimap")) { url = "amapuri://poi?sourceApplication=ewpower.com&keywords="+address; showToast("启动高德地图"); }else if (isAppInstalled(context, "com.baidu.BaiduMap")) { url = "baidumap://map/geocoder?src=openApiDemo&address="+address; showToast("启动百度地图"); } else { showToast("检测到您未安装地图APP,无法开始导航,建议您安装最新版的高德地图或百度地图"); return; }
IOS可用canOpenURL来判断Schema是否存在判断,代码如下:
记得添加 lsapplicationqueriesschemes
if([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"iosamap://"]]) { url = [[NSString stringWithFormat:@"iosamap://poi?sourceApplication=applicationName&name=%@",address]stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; } else if([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"baidumap://"]]) { url = [[NSString stringWithFormat:@"baidumap://map/geocoder?address=%@&src=%@",address,@"ewpower.com"] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; }else { UIAlertView *alert = [[UIAlertView alloc]initWithTitle:nil message:@"检测到您未安装地图APP,无法开始导航,建议您安装最新版的高德地图或百度地图" delegate:self cancelButtonTitle:@"知道啦"otherButtonTitles:nil, nil]; [alert show]; return; } NSURL *schema = [NSURL URLWithString:url]; if ([[UIDevice currentDevice].systemVersion integerValue] >= 10) { //iOS10以后,使用新API [[UIApplication sharedApplication] openURL:schema options:@{} completionHandler:^(BOOL success) { NSLog(@"scheme调用结束"); }]; } else { //iOS10以前,使用旧API [[UIApplication sharedApplication] openURL:schema]; }
相关文章推荐
- android APP中启动第三方地图
- Android从APP启动第三方地图导航
- IOS 调用第三方地图APP导航
- Android Bug分析系列:第三方平台安装app启动后,home键回到桌面后点击app启动时会再次启动入口类bug的原因剖析
- Android app调用第三方地图(百度地图,高德地图)导航
- Android app中调用启动其他应用(系统应用和第三方应用)2016.10.25新增android 6.0打电话api
- Android QQ等第三方平台安装app启动后,home键回到桌面后点击app启动时会再次启动入口类bug的原因剖析
- iOS开发 - iOS实现应用内打开第三方地图app进行导航
- Android-->最全的启动第三方APP,应用程序(按需启动,历史启动)
- IOS实现应用内打开第三方地图app进行导航
- Android app中调用启动其他应用(系统应用和第三方应用)
- android app调用第三方地图路线规划导航(百度,高德,腾讯)
- 【转载】Android Bug分析系列:第三方平台安装app启动后,home键回到桌面后点击app启动时会再次启动入口类bug的原因剖析
- Android 调用第三方地图类App (高德 百度 百度网页版)
- Android 中如何从一个App启动另外一个App(如启动支付界面、启动地图界面、应用商场下载App等场景)
- Android从一个应用程序启动第三方应用app
- android 读取本地安装app 包名并启动第三方app
- Android&iOS:如何在外部启动app(若有安裝APP, 则自动启动app(使用 URL Schema), 若没有安装, 则询问是不是到应用市场下载)