Android webview上传图片(适配3.0,4.0,5.0,6.0)

来源:互联网 发布:阿里云ecs sn型号 编辑:程序博客网 时间:2024/05/26 07:30

最近有个h5页面上传图片的需求,适配起多版本来,真是麻烦呀

废话不多说,上代码

 private ValueCallback<Uri> mUploadMessage;    /**     * 适配5.0系统     */    private ValueCallback<Uri[]> mUploadMessage5;    private final static int FILECHOOSER_RESULTCODE = 1;private class WebViewChromeClient extends WebChromeClient {public void openFileChooser(ValueCallback<Uri> uploadFile) {            mUploadMessage = uploadFile;            Intent i = new Intent(Intent.ACTION_GET_CONTENT);            i.addCategory(Intent.CATEGORY_OPENABLE);            i.setType("image/*");            startActivityForResult(                    Intent.createChooser(i, "File Chooser"),                    FILECHOOSER_RESULTCODE);        }        public void openFileChooser(ValueCallback<Uri> uploadFile,                                    String acceptType) {            openFileChooser(uploadFile);        }        public void openFileChooser(ValueCallback<Uri> uploadFile,                                    String acceptType, String capture) {            openFileChooser(uploadFile);        }        //适配5.0系统        @TargetApi(Build.VERSION_CODES.LOLLIPOP)        public boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> filePathCallback, FileChooserParams fileChooserParams) {            mUploadMessage5 = filePathCallback;            Intent i = new Intent(Intent.ACTION_GET_CONTENT);            i.addCategory(Intent.CATEGORY_OPENABLE);            i.setType("image/*");            startActivityForResult(Intent.createChooser(i, "File Chooser"), FILECHOOSER_RESULTCODE);            return true;        }    }

然后再给webview设置上这个 webView.setWebChromeClient(new WebViewChromeClient());

继续

 protected void onActivityResult(int requestCode, int resultCode, Intent data) {        Log.e("xingyun", "request" + requestCode +" result" + resultCode);        if (requestCode == FILECHOOSER_RESULTCODE) {            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){                if (null == mUploadMessage5)                    return;                if (resultCode == RESULT_CANCELED) {                    if (mUploadMessage5 != null) {                        mUploadMessage5.onReceiveValue(null);                        mUploadMessage5 = null;                        return;                    }                }            }else {                if (null == mUploadMessage)                    return;                if (resultCode == RESULT_CANCELED) {                    if (mUploadMessage != null) {                        mUploadMessage.onReceiveValue(null);                        mUploadMessage = null;                        return;                    }                }            }            if (data==null)                return;            Uri result = data == null || resultCode != RESULT_OK ? null : data                    .getData();            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {                mUploadMessage5.onReceiveValue(new Uri[]{result});            } else {                mUploadMessage.onReceiveValue(result);            }//            mUploadMessage.onReceiveValue(result);//            mUploadMessage = null;        }    }

完、

1 0
原创粉丝点击