最近的开发项目中有一个需求,就是在嵌入webview上,需要在webview端来调起本地的相机拍照,或者调起本地文件选择图片并上传到服务器,当然上传这一块的接口是Web端的事情啦,所以我们只管把我们拍照/选取文件的文件地址传给webview端,就可以了,因为我也是刚工作没多久,这个需求以前也是从没接触过,所以这些东西也是从网上参考过来的,然后经过自己的修改,最后测试成功。
这里说一下思路,webview端要调起手机端的拍照或者选取文件夹,必须是有一个input事件的,查了一下资料,我们可以在android端的webview.setWebChromeClient方法中,重写指定的方法,来拦截webview的input事件,并做我们相应的操作。这里先可以放一下web端的代码,因为对H5的了解也是一知半解,所以只能把H5的代码也贴出来了,供大家参考吧:、
H5代码:
<div class="conThree">
<div class="conHead">调配设备照片</div>
<div class="conThreeCon">
<div id="preview"></div>
<label class="input-group-btn">
<input id="fileImage" type="file" size="30" name="fileselect[]" accept="image/jpeg,image/png,image/gif">
<img src="../../../../img/Group.png" alt="">
</label>
<!-- <div class="upload_submit">
<button type="button" id="fileSubmit" class="upload_submit_btn">确认上传图片</button>
</div> -->
</div>
</div>
这个是H5的代码,这里大家可以看到有一个input元素,我们需要拦截到这个input元素,然后根据我们的需求做下一步操作。
下面贴Android端代码:
webView.setWebChromeClient(new WebChromeClient() {
@Override
public void onProgressChanged(WebView view, int newProgress) {
if (newProgress == 100) {