andriod与ios 中webview 拦截url实现通讯
想实现andriod与ios通过url调用原生的功能,比如拍照,扫描二维码等
那么andriod与ios中的webview提供了拦截url的功能,通过拦截可以实现h5与原生的调用
先看andriod的
webView.setWebViewClient(new WebViewClient() { @Override // 在点击请求的是链接是才会调用,重写此方法返回true表明点击网页里面的链接还是在当前的webview里跳转,不跳到浏览器那边。这个函数我们可以做很多操作,比如我们读取到某些特殊的URL,于是就可以不打开地址,取消这个操作,进行预先定义的其他操作,这对一个程序是非常必要的。 public boolean shouldOverrideUrlLoading(WebView view, String url) { // 判断url链接中是否含有某个字段,如果有就执行指定的跳转(不执行跳转url链接),如果没有就加载url链接 if (url.contains("bfw://scan")) { Intent i = new Intent(MainActivity.this, ScanActivity.class); startActivity(i); return true; } else { return false; } } });ok
再看看ios的
#pragma mark - UIWebViewDelegate - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { NSURL *URL = request.URL; NSString *scheme = [URL scheme]; if ([request.URL.absoluteString hasPrefix:@"bfw://scan"]) { //调用原生的扫描组件 return NO; } return YES; }
网友评论0