You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pixel(Android 14)设备中<input type='file'>调用相机失败问题求助

Android 14 Pixel设备上react-native-webview中input[type=file]调用相机失败问题

我是Web开发者,对Android相关知识了解有限。我们团队发现,基于react-native-webview层开发的PWA应用,其<input type='file' capture>元素调用相机的功能仅在搭载Android 14系统的Pixel设备(至少Pixel 6和8)上出现异常,而在Android 13及以下系统的Pixel设备上可正常唤起相机。

我们怀疑这和Android 14的SAF加强文件访问权限管控有关,但不确定前端或React Native端可以采取什么措施解决。补充说明:我们使用capture=''来强制打开相机而非照片文件选择器,相关代码如下:

<input id="camera" type="file" name="picture" accept="image/*" capture={'' as any} ref={inputFileRef} onChange={(e) => handlePhotoChanges(e)} />

在handlePhotoChanges函数中,我们通过inputFileRef.current.click()触发相机,但该代码能执行却无法打开相机。

可能的排查方向与解决建议

  • 调整capture属性值:Android 14的WebView内核可能对空值capture=''的解析逻辑有变更,尝试将capture设为"user"(前置相机)或"environment"(后置相机),明确指定相机类型。
  • 检查WebView权限配置:确保AndroidManifest.xml中已添加android.permission.CAMERA和android.permission.READ_MEDIA_IMAGES(Android 13+必填)权限;同时确认react-native-webview的配置中,allowFileAccess、allowContentAccess设为true,mediaPlaybackRequiresUserGesture设为false(避免手势限制)。
  • 修改触发方式:Android 14可能限制了非用户直接交互触发的相机唤起操作,尝试将触发逻辑改为让用户直接点击input元素,而非通过代码调用click()。
  • 适配WebView版本:Pixel设备的Android System WebView通常是最新版本,可尝试升级react-native-webview依赖包,或测试降级WebView版本(需在设备设置中调整),确认是否为版本兼容性问题。
  • 绕开input调用相机:如果上述方案无效,可以考虑开发React Native原生模块,直接调用Android相机API完成拍摄,再将图片数据传递给WebView中的PWA使用,彻底绕开input元素的限制。

内容的提问来源于stack exchange,提问作者ScalableDale

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 15:33:31