公司有个业务需求,需要在H5页中可以分别调起相同中的相机、相册。拿到该H5页看了一下,H5中调起相机和打开相册的源码分别是:
#调起相机
<input type="file" accept="image/*" capture="camera"/>
#打开相册
<input type="file" accept="image/*" multiple="multiple"/>
从这两个代码分析出打开相机可能用到capture属性,打开相册中的multiple属性应该是表示可以选择多张图片。在Android Webview中,当type为file的<input>标签被点击时,WebChromClient中的onShowFileChooser方法将被回调,因此,打开相册或者调起系统相机的业务逻辑可以从这里开始。
public boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> filePathCallback, FileChooserParams fileChooserParams);
接下来,分析一下这个方法,怎样才能知道何时打开相册,何时调起相机。
这个方法只有3个参数,分别是
webview:这个就不用说了;
filePathCallback:回调接口,返回选择到的文件Uri。注意,只有当onShowFileChooser返回true时才调用这个回调接口;
fileChooserParams:描述文件选择的模式和用到的一些可选项;
因此,可以知道H5中<input>标签的一些属性值应该可以从fileChooserParams中获取得到;再跟踪FileChooserPara

本文介绍了如何在Android的Webview中实现调用系统相机和相册的功能。通过分析H5源码,发现使用<input>标签的capture和multiple属性来触发相机或相册。当type为file的标签被点击时,WebChromeClient的onShowFileChooser方法会被调用。通过fileChooserParams对象可以获取到H5中的属性值,从而判断是打开相机还是相册。最后,给出了具体的实现示例。
最低0.47元/天 解锁文章
1115

被折叠的 条评论
为什么被折叠?



