我编写了一个自定义的webviewclient类,覆盖了cordova 3.7中的onPageStarted, onPageFinished
等方法,这个功能一直运作良好。
下面的代码中,我将www目录托管到Web服务器上,并从那里与cordova插件进行交互(例如条形码扫描器、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等
无法解析符号。我也尝试过CordovaWebViewImpl
,但是让自己感到困惑。
在谷歌上搜索了很多之后,我发现大部分解决方案都是在2011-2014年提供的,现在已经不适用了。我没有找到cordova文档有用的地方。