webview在Android中主要用作展示URL的页面,但是其中有很多的坑,因为做一个签协议的功能遇到很多的问题,现在记录下来
1、在页面中下载文件
下载文件需要webview.setDownloadListener(),然后实现onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength)的方法
我使用的是唤起外部浏览器去下载,这种方法最省事儿,也可以使用内部的各种下载工具实现
@Override
public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) {
try {
if (!TextUtils.isEmpty(url)) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.addCategory(Intent.CATEGORY_BROWSABLE);
intent.setData(Uri.parse(url));
startActivity(intent);
}
} catch (Exception e) {
}
}
2、在webview中打开本地的图库或者相机
打开本地的图库和相机主要是要在网页内上传图片,之前没做过不知道怎么实现后来看网上其他人的实现方法,主要是继承WebChromeClient然后重写onShowFileChooser(
WebViewwebView,ValueCallback<Uri[]>filePathCallback, FileChooserParams fileChooserParams),当然还有低版本的几个方法openFileChooser()
|
|
3、在模拟器上测试Webview的功能
在模拟器的4.4.2的版本上测试WebView唤起图库和相机,一直不成功,一直以为是代码的问题,后来用真机测试完全没问题
4、低版本和高版本中适配HTTP和HTTPS
在低版本4.4.2上的webView还有一个奇怪的问题就是不图片不展示,或者不能监听到onDownloadStart(xxx),后来发现原因在于使用了HTTPS的文件路径引起的,如果全部
替换为HTTP就不会有问题了。
5、申请权限的问题(主要是onShowFileChooser(xx)方法的返回值true or false,高版本的问题)
申请6.0以上的权限目前用原生的或者用EasyPermission,一般用EasyPermission比较好,调用比较方便。主要想记录下onShowFileChooser(xxx)这个方法的使用问题
6、标签的问题(rotate)
标签适配要把HTML的标签适配写全,如果没把标签写全的话可能存在不适配的问题,不能只写rotate。
7、画布闪烁的问题
在4.4.2的华为荣耀3x畅玩版上(已root)存在签名画布闪烁的问题,没发现原因,但是不排除root的原因,因为在相同4.4.2版本华为荣耀6plus不存在这个问题