Android Webview页面加载事件

时间:2018-03-11 14:49:49

标签: android cordova webview hybrid

我正在为Android编写SDK,需要通过枚举UI将JavaScript代码注入到它找到的webview中。

找到webview后,代码使用 setWebViewClient()设置 WebViewClient ,并等待 onPageFinished()执行实际注入

一切运行良好,直到我尝试在 Cordova 8 应用程序上使用此方法。

Cordova 8 使用的WebView是一个子类( org.apache.cordova.engine.SystemWebView ),它会覆盖 setWebViewClient()方法如下:

public void setWebViewClient(WebViewClient client) {
    this.viewClient = (SystemWebViewClient)client;
    super.setWebViewClient(client);
 }

由于转换为 SystemWebViewClient ,我得到了一个强制转换异常。

我希望我的解决方案尽可能通用,因此扩展 SystemWebViewClient 不是一个选项,但我仍然需要知道何时加载webview页面才能注入JavaScript。

有没有办法在webview完成加载页面而不使用 WebViewClient webView.setWebViewClient()时收到通知?

1 个答案:

答案 0 :(得分:0)

可能的解决方法是使用WebChromeClient,并覆盖其onProgressChanged方法,如下所示:

WebView webView = new WebView(this);
webView.setWebChromeClient(new WebChromeClient() {
    @Override
    public void onProgressChanged(WebView view, int newProgress) {
        if (newProgress == 100) {
            // Do your injection here
        }
    }
});