Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 为什么CordovaWebViewClient不再在Cordova6中工作_Android_Cordova_Android Webview - Fatal编程技术网

Android 为什么CordovaWebViewClient不再在Cordova6中工作

Android 为什么CordovaWebViewClient不再在Cordova6中工作,android,cordova,android-webview,Android,Cordova,Android Webview,我已经编写了自定义webviewclient类来覆盖cordova 3.7中的onPageStarted、onPageFinished等,该类工作正常 在下面的代码中,我已经将www目录托管到web服务器,并从那里交互cordova插件(条形码扫描仪、nfc、蓝牙等) 一年后,我将项目从cordova 3.7迁移到cordova 6,但我发现上面的代码被破坏了,如CordovaWebViewClient、super.onPageStarted等无法解析符号。我还尝试了CordovaWebView

我已经编写了自定义webviewclient类来覆盖cordova 3.7中的
onPageStarted、onPageFinished等,该类工作正常

在下面的代码中,我已经将www目录托管到web服务器,并从那里交互cordova插件(条形码扫描仪、nfc、蓝牙等)

一年后,我将项目从cordova 3.7迁移到cordova 6,但我发现上面的代码被破坏了,如
CordovaWebViewClient、super.onPageStarted等
无法解析符号。我还尝试了
CordovaWebViewImpl
,弄糊涂了


在谷歌上搜索了很多后,我发现2011-14年给出的解决方案大多不适用。我找不到有帮助的cordova文档。

cordova 4删除了
CordovaWebViewClient

您可以使用
WebViewClient
而不是
CordovaWebViewClient
(插件将其用于覆盖
onPageStarted
事件)


Apache cordova删除了CordovaWebViewClient,以支持Crosswalk等外部网络视图。如果您查看下面的
14更改的文件
链接,您会看到CordovaWebViewClient被删除,AndroidWebViewClient被添加

因此,我想您不能在Cordova 6.0中使用相同的旧代码

您可能可以尝试改用
org.apache.cordova.engine.SystemWebViewClient


事实上,同样的问题得到了回答,也被接受了。因此,我相信这是解决这个问题的可能办法。希望有帮助。

它被
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);
    }
});

我不知道为什么它在浏览器中打开url重定向调用而不是应用程序在config.xml中是否有http/https的allow intent标记?对不起,我晚上不在家。删除allow intent redirect不起作用后,请使用allow navigation替换它们,而不是删除allow intent
public class CustomCordovaWebViewClient extends WebViewClient
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);
    }
});