我正在为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()时收到通知?
答案 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
}
}
});