H5 页面在webView中调用原声相机:
H5 端的代码:如下:
<input id="upload" type="file" accept="image/*;" capture="camera" > //文本输入框;
android端的代码:
webView.setWebChromeClient(newLiuyyWebChromeClient(this));
这里的 LiuyyWebChromeClient是自定义的 WebChromeClient对象;
下面贴一下LiuyyWebChromeClient类的代码
/** * 作用: {1, 自定的实现webView拍照上传的工具类} * 作者:liuyiyuan * 日期:2016/11/10 10:48 * 邮箱:liuyiyuan@xnihuamm.net * weixin: Dkalan */ public class LiuyyWebChromeClient extends WebChromeClient { public interface OpenFileChooserCallBack { void openFileChooserCallBack(ValueCallback<Uri> uploadMsg, String acceptType); void openFileChooserCallBackAndroid5(ValueCallback<Uri[]> uploadMsg, String acceptType); } private OpenFileChooserCallBack mOpenFileChooserCallBack; //选择图片回调接口 public LiuyyWebChromeClient(OpenFileChooserCallBack mOpenFileChooserCallBack) { this.mOpenFileChooserCallBack=mOpenFileChooserCallBack; } //For Android 3.0+ public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType) { mOpenFileChooserCallBack.openFileChooserCallBack(uploadMsg, acceptType); } // For Android < 3.0 public void openFileChooser(ValueCallback<Uri> uploadMsg) { openFileChooser(uploadMsg, ""); } // For Android > 4.1.1 public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture) { openFileChooser(uploadMsg, acceptType); } // For Android > 5.0 @Override public boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> uploadMsg, WebChromeClient.FileChooserParams fileChooserParams) { mOpenFileChooserCallBack.openFileChooserCallBackAndroid5(uploadMsg,""); return true; } }这里实现了对android 5.0 通过webView调用本地相机的支持;
工程demo对android 6.0系统也做了适配
如果需要完整的工程代码请下载附件 或者私信我(邮箱:liuyiyuan@xinhuamm.net)
demo页面测试账号( 王长顺, 123456,身份:教师);请勿随意上传图片,本系统有人在使用,谢谢支持配合。