首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么CordovaWebViewClient不再在科多瓦6工作了

为什么CordovaWebViewClient不再在科多瓦6工作了
EN

Stack Overflow用户
提问于 2016-05-25 08:48:23
回答 3查看 3K关注 0票数 5

我已经编写了定制的webviewclient类来覆盖cordova 3.7中的onPageStarted, onPageFinished etc,它运行得很好。

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

代码语言:javascript
复制
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年给出的不适用的解决方案。我觉得科多瓦的医生帮不上忙。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-07-20 08:42:53

它被SystemWebViewClient取代了

你应该这样做:

代码语言:javascript
复制
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);
    }
});
票数 9
EN

Stack Overflow用户

发布于 2016-07-20 07:28:16

Cordova 4删除了CordovaWebViewClient看这儿

您可以使用WebViewClient而不是CordovaWebViewClient ( cordova-插件-inappbrowser插件使用它来覆盖onPageStarted事件)。

代码语言:javascript
复制
public class CustomCordovaWebViewClient extends WebViewClient
票数 1
EN

Stack Overflow用户

发布于 2016-07-20 08:40:22

Apache删除了CordovaWebViewClient,以支持像人行横道这样的外部like视图。如果在下面的14 changed files中签出提交链接链接,您可以看到CordovaWebViewClient被删除并添加了AndroidWebViewClient。

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

您可能可以尝试使用org.apache.cordova.engine.SystemWebViewClient代替。

事实上,这里也回答了同样的问题,并且也被接受了。因此,我认为这是解决这一问题的可能办法。希望能帮上忙。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37432072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档