webview怎么适配html5实现照片视频上传
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍了webview怎么适配html5实现照片视频上传的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇webview怎么适配html5实现照片视频上传文章都会有
千家信息网最后更新 2026年11月01日webview怎么适配html5实现照片视频上传
这篇文章主要介绍了webview怎么适配html5实现照片视频上传的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇webview怎么适配html5实现照片视频上传文章都会有所收获,下面我们一起来看看吧。
一、需要实现的功能:
用H5实现的App中需要在H5获取手机中的照片或者视频文件上传到服务器。
二、分析实现方法:
由于不懂前端开发,不知道H5中有 input file之类的标签控件,可以用来选择文件,刚开始的思路还是想着native 端是否要通过提供inputstream流方式,将文件内容传递给JS。后来和前端沟通之后,H5在电脑端都是用input 设置type为 file 来实现文件选择功能,于是才开始搜索资料,发现时需要在webview中设置 setWebChromeClient ,其中有对input 的响应回调:
三、具体实现:
前端代码:
native端代码:
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)@Overridepublic boolean onShowFileChooser(WebView webView, ValueCallback filePathCallback, WebChromeClient.FileChooserParams fileChooserParams) { mFilePathCallbacks = filePathCallback; // TODO: 根据标签中得接收类型,启动对应的文件类型选择器 String[] acceptTypes = fileChooserParams.getAcceptTypes(); for (String type : acceptTypes) { Log.d(TAG, "acceptTypes=" + type); } // 针对拍照后马上进入上传状态处理 if ((acceptTypes.length > 0) && acceptTypes[0].equals("image/example")) { Log.d(TAG, "onShowFileChooser takePhoto"); Intent it = CameraFunction.takePhoto(mContext); startActivityForResult(it, TAKE_PHOTO_AND_UPLOAD_REQUEST); return true; } // 针对录像后马上进入上传状态处理 if ((acceptTypes.length > 0) && acceptTypes[0].equals("video/example")) { Log.d(TAG, "onShowFileChooser record video"); Intent it = CameraFunction.recordVideo(mContext); startActivityForResult(it, RECORD_VIDEO_AND_UPLOAD_REQUEST); return true; } Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.addCategory(Intent.CATEGORY_OPENABLE); if (acceptTypes.length > 0) { if (acceptTypes[0].contains("image")) { intent.setType("image/*"); } else if (acceptTypes[0].contains("video")) { intent.setType("video/*"); } else { intent.setType("*/*"); } } else { intent.setType("*/*"); } WebViewActivity.this.startActivityForResult(Intent.createChooser(intent, "File Chooser"), REQUEST_FILE_PICKER); return true;} 回调设置uri:
/** * 设置input 标签出发的回调选择文件路径,优先使用path参数, * 其次使用uri参数 * @param uriParam * @param pathParam */private void setFilePathCallback(Uri uriParam, String pathParam) { //都为空,则设置null if (uriParam == null && pathParam == null) { if (mFilePathCallback != null) { mFilePathCallback.onReceiveValue(null); } if (mFilePathCallbacks != null) { mFilePathCallbacks.onReceiveValue(null); } } else if (null != pathParam) { // 优先使用path if (mFilePathCallback != null) { Uri uri = Uri.fromFile(new File(pathParam)); mFilePathCallback.onReceiveValue(uri); } if (mFilePathCallbacks != null) { Uri uri = Uri.fromFile(new File(pathParam)); mFilePathCallbacks.onReceiveValue(new Uri[] { uri }); } } else if (null != uriParam) { //其次使用uri if (mFilePathCallback != null) { String path = UriUtils.getPath(getApplicationContext(), uriParam); Uri uri = Uri.fromFile(new File(path)); mFilePathCallback.onReceiveValue(uri); } if (mFilePathCallbacks != null) { String path = UriUtils.getPath(getApplicationContext(), uriParam); Uri uri = Uri.fromFile(new File(path)); mFilePathCallbacks.onReceiveValue(new Uri[] { uri }); } } mFilePathCallback = null; mFilePathCallbacks = null;}针对各个请求场景进行处理:
public void onActivityResult(int requestCode, int resultCode, Intent intent) {关于"webview怎么适配html5实现照片视频上传"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"webview怎么适配html5实现照片视频上传"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。
文件
照片
视频
适配
选择
内容
前端
标签
知识
处理
代码
功能
参数
状态
篇文章
类型
马上
价值
场景
录像
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
什么是科技互联网
互联网科技公司华为
互联网品科技
互联网科技有限公司图片
齐家互联网科技
杭州互联网科技公司
奇酷互联网络科技
丰台科技园 互联网
互联网女皇 腾讯科技
新浪科技互联网
上海卓越科技 互联网
汉立互联网科技有限公司联系电话
昭通云南众福互联网科技有限公司
南山科技园互联网公司有哪些
辽宁互联网新科技
阿里互联网科技企业
杭州融税互联网科技有限公司
互联网科技对化妆品行业
互联网科技自媒体灵感
银川新华互联网科技学校招聘
深圳恒合互联网络科技有限公司
科技互联网政务服务
智能科技公司是互联网公司吗
互联网巨头反垄断金融科技
凡科互联网科技
成都仁贤领冠互联网科技有限公司
荆州市昕露互联网络科技有限公司
易租星互联网科技有限公司
科技和互联网行业的特点
山东蛋芒互联网科技有限公司