下面的setWebViewClient代碼一旦開啟,registerHandler的代碼就會無效,是沖突么?求教大神怎么破?
// webView.setWebViewClient(new WebViewClient() {
// @Override
// public boolean shouldOverrideUrlLoading(WebView view, String url) {
//
// if (url.startsWith("tel:") || url.startsWith("mailto:")) {
// // 打開安卓電話或郵件功能
// Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
// startActivity(intent);
//
// }
//
// return true;
// }
// });
webView.registerHandler("login", new BridgeHandler() {
@Override
public void handler(String data, CallBackFunction function) {
function.onCallBack("login");
}
});
uj5u.com熱心網友回復:
請問你解決了嗎uj5u.com熱心網友回復:
沒有,找其他方法繞過去了。
uj5u.com熱心網友回復:
用什么辦法繞過去的,問下uj5u.com熱心網友回復:
BridgeWebView在構造方法中初始化設定了setWebViewClient,如果你再次setWebViewClient會覆寫導致registerHandler失效,uj5u.com熱心網友回復:
在BridgeWebViewClient 中的onPageFinished方法中可以實作(不確定會不會有別的影響),代碼如下:class MyWebViewClient extends BridgeWebViewClient {
public MyWebViewClient(BridgeWebView webView) {
super(webView);
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
/**
* 前端發送訊息給客戶端 submitFromWeb 是js呼叫的方法名 安卓回傳給js
*/
webView.registerHandler("AndroidQRcode", new BridgeHandler() {
@Override
public void handler(String data, CallBackFunction function) {
//顯示接收的訊息
// showToast(data);
showToast("js呼叫二維碼");
//回傳給html的訊息
// function.onCallBack("回傳給Toast的alert");
}
});
}
}
uj5u.com熱心網友回復:
https://github.com/liulingfeng/CommonWebview 看我這邊的解決方式轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/126738.html
標籤:Android
上一篇:nodobjc
下一篇:ios開發新人
