一般在项目中与js交互,可能会遇到上传文件图片等操作,避免不了一些坑,下面简单说一下,Android 在不同版本中webView调用相机,选择相册的方法是不一样的,3.0以下的调用
public void openFileChooser(ValueCallback<Uri> uploadMsg)
3.0以上:
public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType)
4.4以下:
public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture)
5.0以上:
public boolean onShowFileChooser(WebView mWebView, ValueCallback<Uri[]> filePathCallback, FileChooserParams fileChooserParams)
那下面具体的贴下代码:
继承自WebChromeClient,重写
//3.0++ public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType) { openFileChooserImpl(uploadMsg); } //3.0-- public void openFileChooser(ValueCallback<Uri> uploadMsg) { openFileChooserImpl(uploadMsg); } //4.1 public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture) { openFileChooserImpl(uploadMsg); } @Override public boolean onShowFileChooser(WebView mWebView, ValueCallback<Uri[]> filePathCallback, FileChooserParams fileChooserParams) { openFileChooserImplForAndroid5(filePathCallback); return true; }
外层定义接收返回值:
private ValueCallback<Uri> mUploadMessage; private ValueCallback<Uri[]> mU