由于项目需求,需要在一个h5页面上实现图片上传的功能。整个流程是当点击h5然后webview会监听到这个事件接着在android原生这部分获取选中图片并将图片路径传回给h5页面处理并上传。监听这个选择图片的监听是需要去继承一个WebChromeClient并重写它里面的方法(webview初始化时需要webView.setWebChromeClient(new MyWebClient()) 这样监听才会发生),因为由于各个系统版本webview的差异是需要重写多个方法才能适配不同的系统版本的手机,代码如下:
private class MyWebClient extends WebChromeClient {
// For Android 5.0+
//接受一个uris[]
@Override
public boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> valueCallback
, FileChooserParams fileChooserParams) {
LuheLogUtils.LogI("LuheGoodsShowActivity", "openFileChooser--5.0+");
mValueCallback = valueCallback;
goToPhotos();
return true;
}
// For Android 3.0+
//只能单独传一个uri
public void openFileChooser(ValueCallback uploadMsg) {
LuheLogUtils.LogI("LuheGoodsShowActivity", "openFileChooser--3.0+");