项目中有一个需求在h5上点击某个按钮,然后android端打开相机拍照,最开始想到的就是用到android与js交互,后来发现还不需要那么麻烦,因为他们之间并没有涉及到传值,所以js想出来一个方法,当点击h5上的按钮时,h5模拟发送一个协议,hgj://take/photo
代码如下图:
然后android在WebViewClient中的shouldOverrideUrlLoading方法中进行拦截,
mWebView.setWebViewClient(new WebViewClient() {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// 重写此方法表明点击网页里面的链接还是在当前的webview里跳转,不跳到浏览器那边
if(url.contains(“hgj://take/photo”)){
//如果请求的url中包含”hgj://take/photo”,
// 然后本地调用拍照等功能
Toast.makeText(MainActivity.this,”拍照”,Toast.LENGTH_SHORT).show();
}
else {
view.loadUrl(url);
}
return true;
}
@Override
public void onPageFinished(WebView view, String url) {
}
});
下载地址:http://download.csdn.net/download/lzq520210/9708915