Android 网页视图页面加载事件



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

找到 Web 视图后,代码使用setWebViewClient() 设置WebViewClient,并等待onPageDone()执行实际注入。

一切正常,直到我尝试在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不是一种选择,但我仍然需要知道何时加载Web视图页面以注入JavaScript。

有没有办法在不使用WebViewClientwebView.setWebViewClient()的情况下完成页面加载时获得通知?

一个可能的解决方法是改用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
}
}
});

最新更新