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

一、资料

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

        Android包名:com.autonavi.minimap

        iOS Scheme:iosamap

(2)百度地图的官方文档:https://lbs.amap.com/api/amap-mobile/gettingstarted

        Android包名:com.baidu.BaiduMap

       iOS Scheme:baidumap

二、实现

2.1 H5调用方式举例:

导航

 

2.2  android端实现

 


		/**
		 * 检测程序是否安装
		 *
		 * @param packageName
		 * @return
		 */
		private boolean isInstalled(String packageName) {
			PackageManager manager = mContext.getPackageManager();
			//获取所有已安装程序的包信息
			List 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;
            
        }

   

 

你可能感兴趣的:(移动)