H5开发的移动应用打开高德地图、百度地图

一、资料

(1)高德地图的官方文档: https://lbs.amap.com/api/amap-mobile/gettingstarted

        Android包名:com.autonavi.minimap

        iOS Scheme:iosamap

(2)百度地图的官方文档:http://lbsyun.baidu.com/index.php?title=uri/api/android

        Android包名:com.baidu.BaiduMap

       iOS Scheme:baidumap

二、实现

2.1 H5调用方式举例:

<a href="androidamap://navi?sourceApplication=appname&amp;poiname=fangheng&amp;lat=36.547901&amp;lon=104.258354&amp;dev=1&amp;style=2">导航</a>

 

2.2  android端实现

 


		/**
		 * 检测程序是否安装
		 *
		 * @param packageName
		 * @return
		 */
		private boolean isInstalled(String packageName) {
			PackageManager manager = mContext.getPackageManager();
			//获取所有已安装程序的包信息
			List<PackageInfo> installedPackages = manager.getInstalledPackages(0);
			if (installedPackages != null) {
				for (PackageInfo info : installedPackages) {
					if (info.packageName.equals(packageName))
						return true;
				}
			}
			return false;

		}

		/**
		 * 根据URI打开第三方app
		 * @param uri
		 */
		private void openThird(String uri){
			Intent intent = new Intent();
			intent.setAction(Intent.ACTION_VIEW);
			intent.setData(Uri.parse(uri));
			mActivity.startActivity(intent);
		}

 

        @Override
		public boolean shouldOverrideUrlLoading(final WebView view, String url) {
			 Log.i("加载:",url);
		

			//高德地图
			if (url.startsWith("androidamap://") && isInstalled(GAODE_PACKAGENAME)){
				openThird(url);
				return true;
			}

			//百度地图
			if (url.startsWith("baidumap://") && isInstalled(BAIDUMAP_PACKAGENAME)){
				openThird(url);
				return true;
			}


			
			return super.shouldOverrideUrlLoading(view, url);
		}

2.3 iOS端实现

2.3.1 添加白名单

2.3.2 webview代理方法拦截处理

- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler{
         //处理高德和百度地图
        if ([_connDistinct contains:@"iosamap://"] || [_connDistinct contains:@"baidumap://"] ) {
            [self openThird:_connDistinct];
            decisionHandler(WKNavigationActionPolicyCancel);
            return;
            
        }

   

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值