JS input 在 Android 中无法打开相机的问题

JS 嵌入 Android 后无法打开相机的问题

问题描述

最近项目中,前端和安卓协同开发,安卓端把 JS 前端项目,直接打包嵌入到安卓应用中,安卓的同事反馈,无法打开安卓的相机进行拍照。
在这里插入图片描述

如果是 iOS 或者移动端浏览器中,可以打开相机并进行拍照。

具体的代码如下,我使用 React JSX 语法,其中 input 输入图片。

<input
  multiple
  type="file"
  capture="camera"
  accept="image/*"
  ref='camera_upload_image'
  onClick={this.onClick}
  onChange={this.onChange}
/>

问题原因

经调研:这是JS在安卓端兼容性问题。input 有 capture 和 multiple 两个属性。capture="camera" 表示调用照相机进行拍照,multiple 表示多选上传。

在浏览器网页或者 ios 系统中,都可以直接打开相机进行拍照。

在某些安卓原生应用中,这两个属性冲突,也就是设置了 multiple 后 capture 就失效了,表现为安卓原生应用无法直接打开相机拍照。
HTML官方图片

我们实际的代码中,设置了 multiple 和 capture 两个属性,所以无法直接打开安卓的相机。

解决

因为拍照只能同时拍摄一张,设置 multiple 没有意义,所以直接去掉 multiple 即可。上线后安卓真机测试基本正常。

<input
  type="file"
  capture="camera"
  accept="image/*"
  ref='camera_upload_image'
  onClick={this.onClick}
  onChange={this.onChange}
/>

在这里插入图片描述

参考

W3官网

CSDN

CSDN

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值