webview怎么适配html5实现照片视频上传
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章主要介绍了webview怎么适配html5实现照片视频上传的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇webview怎么适配html5实现照片视频上传文章都会有
千家信息网最后更新 2025年11月07日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安全错误
数据库的锁怎样保障安全
名源数据库
网络安全设计包括
里巴巴中国网络技术有限公司
2022网络安全行业全景图
车辆管理系统服务器
有居竹网络技术
软件开发女的厉害描述
数据库重启后查询超时
局域网设置代理服务器
数据库一个中文字占几个字符
无极下载软件开发
哈利波特网易服务器类别
职高网络技术怎么样
网络安全法治日宣传
nba2k20端游无法连服务器
软件开发商做什么生意好
合肥装修网络安全
云服务器适合什么操作系统
学习云计算要用几台阿里云服务器
香港打水服务器租用
直销软件开发与定制
域名服务器怎么样
网络安全研究生就业情况
进华为做软件开发很难吗
sql数据库模式的创建
灿若星河能转哪些服务器
网络安全进监狱
基于模型的软件开发pv
学软件开发怎么起步
大型软件开发用例图