最近在将APP部分模块原生的换乘了H5页面,该页面需要安卓端完成上传图片
网上查阅很多资料都是说给webView设置WebChromeClient,,然后WebChromeClient添加方法
//图片上传 Android > 4.1.1 调用这个方法 @Deprecated public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture) { Intent i = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); startActivityForResult(Intent.createChooser(i, "选择图片"), 0); } //图片上传 Android > 5.0 调用这个方法 @Override public boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> filePathCallback, FileChooserParams fileChooserParams) { Intent i = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); startActivityForResult(Intent.createChooser(i, "选择图片"), 0); return true; }
便可以跳转到原生选择图片页面,然后我试了多次发现在上传图片页面都没有调用这两个方法,还好经历多次的猜测与实践后面终于解决了,产生该现象是因为给webView添加的链接点击按钮会跳转到多个子页面,而上传图片就是它的三级页面,而WebChromeClient只有在加载第一个H5时调用,后面就没有调用,因此后面我在WebViewClient中的onPageStarted中再主动调用了一次webview.setWebChromeClient就可以了
以此文记录一下自己的成长之路~~