在项目开发过程中,webview常用于显示网页或h5页面,这样可以实时更新,遇到问题可以迅速修复。由于android碎片化严重,所以webview在每个版本都有修改,因此在开发过程中遇到过各种各样的坑,现在总结一些曾经遇到的坑。
1,加载完成回调不正确。
onPageStarted与onPageFinished次数不一致,如果你在start中进行进度条加载处理,finish中结束,会导致进度条一直不消失。因此可以在onProgressChanged进行处理。当newProgress为100时表示页面加载完成。
对于WebViewClient.onPageFinished()。你永远无法确定当WebView调用这个方法的时候,网页内容是否真的加载完毕了。当前正在加载的网页产生跳转的时候这个方法可能会被多次调用,StackOverflow上有比较具体的解释(How to listen for a Webview finishing loading a URL in Android?), 但其中列举的解决方法并不完美。所以当你的WebView需要加载各种各样的网页并且需要在页面加载完成时采取一些操作的话,可能WebChromeClient.onProgressChanged()比WebViewClient.onPageFinished()都要靠谱一些。
2,文件选择函数修改。
2,文件选择函数修改。
// FILE UPLOAD <3.0
public void openFileChooser(ValueCallback<Uri> uploadFile) {
chooseFile(uploadFile, null, null);
}
/** * 4.x * @param uploadFile * @param acceptType * @param capture */
public void openFileChooser(ValueCallback<Uri> uploadFile, String acceptType, String capture) {
chooseFile(uploadFile, acceptType, capture);
}