我已经编写了定制的webviewclient类来覆盖cordova 3.7中的onPageStarted, onPageFinished etc,它运行得很好。
在下面的代码中,我已经将www目录托管到web服务器,并从那里交互了cordova插件(barcodescanner、nfc、蓝牙等)。
public class MainActivity extends CordovaActivity {
private WebView webView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.init();
loadUrl("https://example.com");
}
public class CustomCordovaWebViewClient extends CordovaWebViewClient {
public CustomCordovaWebViewClient(CordovaInterface cordova, CordovaWebView view) {
super(cordova, view);
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
Log.i("CSP Log", "onPageStarted: " + url);
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
Log.i("CSP Log", "onPageFinished: " + url);
}
@Override
public void doUpdateVisitedHistory(WebView view, String url, boolean isReload){
super.doUpdateVisitedHistory(view, url, isReload);
}
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl);
}
}
}一年后,我将项目从cordova 3.7迁移到了cordova 6,但是我发现上面的代码被破坏了,就像CordovaWebViewClient, super.onPageStarted etc无法解析符号一样。我也试过CordovaWebViewImpl,我自己也很困惑。
在谷歌上搜索了大量内容之后,我找到了大部分是在2011-14年给出的不适用的解决方案。我觉得科多瓦的医生帮不上忙。
发布于 2016-07-20 08:42:53
它被SystemWebViewClient取代了
你应该这样做:
SystemWebView wv = (SystemWebView)appView.getView();
wv.setWebViewClient(new SystemWebViewClient((SystemWebViewEngine)appView.getEngine()){
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
Log.i("CSP Log", "onPageStarted: " + url);
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
Log.i("CSP Log", "onPageFinished: " + url);
}
@Override
public void doUpdateVisitedHistory(WebView view, String url, boolean isReload){
super.doUpdateVisitedHistory(view, url, isReload);
}
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl);
}
});发布于 2016-07-20 07:28:16
Cordova 4删除了CordovaWebViewClient:看这儿
您可以使用WebViewClient而不是CordovaWebViewClient ( cordova-插件-inappbrowser插件使用它来覆盖onPageStarted事件)。
public class CustomCordovaWebViewClient extends WebViewClient发布于 2016-07-20 08:40:22
https://stackoverflow.com/questions/37432072
复制相似问题