Android与H5相机、相册笔记
来源:互联网 发布:域名反解析 编辑:程序博客网 时间:2024/05/16 17:10
公司项目中android内嵌H5页面,H5页面需要选择上传图片功能。H5的标签无法调起android照相机和图库功能,所以只能android进行处理。本人第一次做,借鉴网上诸多的代码,总结如下:
我们用WebView加载H5页面,需要使用WebView上传文件。默认情况下情况下,使用Android的WebView是不能够支持上传文件的。这时,需要webView设置WebChromeClient,重写一些方法,如下:
介绍一下上面的方法:
openFileChooser():系统未暴露的接口,因此不需要加Override的注解,同时不同版本有不同的参数.参数:ValueCallback: 选择完文件后,接收文件回调到网页内处理acceptType:接受的文件mime type。
onShowFileChooser:Android 5.0之后,系统提供了来让我们实现选择文件的方法。参数:FileChooserParams:在该参数中,同样包括acceptType。我们可以根据acceptType,来打开系统的或者我们自己创建文件选择器。
注意:
- 由于不同版本的差别,Android 5.0以下的版本,ValueCallback 的onReceiveValue接收的参数类型是Uri, 5.0及以上版本接收的是Uri数组,在传值的时候需要注意。
- 即使获取的结果为null,也要传给webview,即直接调用mUploadMessage.onReceiveValue(null),否则网页会阻塞。
选择文件会使用系统提供的组件或者其他支持的app,返回的uri有的直接是文件的url,有的是contentprovider的uri,因此我们需要统一处理一下,转成文件的uri
在打release包的时候,因为我们会混淆,要特别设置不要混淆WebChromeClient子类里面的openFileChooser方法,由于不是继承的方法,所以默认会被混淆,然后就无法选择文件了。
H5前端调用时的代码:
<input capture="camera" class="upload-input" type="file" accept="image/*" onchange="angular.element(this).scope().img_upload(this.files)"/>
效果图:(模拟器运行效果)
真机测试是OK 的。
Demo下载地址:https://github.com/xufei5789651/UploadH5Demo
借鉴如下:
http://teachcourse.cn/2224.html
0 0
- Android与H5相机、相册笔记
- Android-相机与相册
- H5 调 android 相机和相册
- android相机与相册功能
- android之 h5调用系统相机和相册并显示
- android调用系统相机拍照与打开相册选择照片进行截取保存笔记
- H5移动端调用相机/相册
- Android调用相机,相册
- android相机和相册
- android 相机、相册、剪切
- Android 打开相机,相册
- 简单操作--相机与相册
- android调用相机和相册
- android调用相机和相册
- android 打开相机和相册
- Android相机、相册获取图片
- Android调用相机和相册
- Android 相机相册权限设置
- WebService学习详解
- RHCSA测试题及答案
- 微信读书的优势分析
- 反向传播
- 重新开始吧
- Android与H5相机、相册笔记
- mysql 绿色版安装图解
- 深入JDBC
- iOS中ARC与MRC代码的兼容
- 全排列算法
- Dubbo的注册中心
- 借助Stetho在Chrome上调试Android网络&数据库
- 爬虫与正则表达式
- 搭建以太坊环境truffle框架时出现的问题