H5 调用android原生相机代码分析

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,身份:教师);请勿随意上传图片,本系统有人在使用,谢谢支持配合。


  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值