项目,在网页中要调用系统相机拍照并上传图片,以为已经一切OK了,结果机器系统是Android4.4.4和4.0.4的点击没反应,找了好久才找到方法解决问题。没有多少测试机器,不知道其他版本有没有问题,华为Android8.0(我的华为P10,没改之前也是可以的)和小米Android4.4.4KTU84P等目前是没问题的。
借鉴文章:
在Android5.0之前,通过openFileChooser方法,当WebView加载一个HTML页面, 点击按钮需要模拟form提交的方式去上传文件时, 就会回调此方法。5.0之后,通过onShowFileChooser。
以下Android各版本支持的方法,只是大致,并不一定:
//Android 2.2<= <=2.3
public void openFileChooser(ValueCallback<Uri> uploadMsg)
//Andorid 3.0<= <=4.0.3
public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType)
//Andorid 4.0+ (4.4.4和4.0.4没反应)
public void openFileChooser(ValueCallback<Uri> uploadMsg,
String acceptType, String capture)
//Andorid 5.0+
@Override
public boolean onShowFileChooser(WebView webView,
ValueCallback<Uri[]> filePathCallback,
FileChooserParams fileChooserParams)
创建类,继承WebChromeClient 。
public class MyWebChromeClientUtil extends WebChromeClient {
public static ValueCallback<Uri> uriValueCallback;
public static ValueCallback<Uri[]> valu