Ionic-v1项目安卓11系统调用相机无法打开问题咨询
Ionic v1 安卓11相机失效问题解决方案
核心诱因
安卓11针对存储权限和包可见性引入的两项变更,刚好击中Ionic v1配套旧版相机插件的适配盲区:
- 旧版
cordova-plugin-camera(低于4.1.0版本)未适配安卓11的包可见性规则,应用无法检测到系统相机应用的存在,调用时直接返回失败 - 安卓11废弃了
WRITE_EXTERNAL_STORAGE等旧存储权限,旧插件默认请求过期权限,无法拿到相机调用必要的临时文件访问权限
可落地修复步骤
- 先更新相机插件到适配安卓11的版本,执行命令:
cordova plugin rm cordova-plugin-camera cordova plugin add cordova-plugin-camera@4.1.0
- 在
AndroidManifest.xml的manifest节点下新增包可见性查询声明,适配安卓11的应用可见性要求:
<queries> <intent> <action android:name="android.media.action.IMAGE_CAPTURE" /> </intent> </queries>
- 调整相机调用参数,关闭
saveToPhotoAlbum配置,避免请求已废弃的存储权限,改用临时文件路径处理拍照结果:
navigator.camera.getPicture(onSuccess, onFail, { quality: 50, destinationType: Camera.DestinationType.FILE_URI, sourceType: Camera.PictureSourceType.CAMERA, saveToPhotoAlbum: false, correctOrientation: true });
- 如果使用了
cordova-plugin-file配套处理文件,同步更新到6.0.2及以上版本,避免文件路径解析异常。
验证注意事项
- 不要直接修改
platforms/android目录下的配置文件,要把变更写到项目根目录的config.xml里,避免下次构建时配置被覆盖 - 打包前先删除本地的
platforms和plugins目录,重新安装所有插件,避免旧版本缓存干扰适配效果
内容的提问来源于stack exchange,提问作者Paulo Henrique Santos
相关产品推荐
相关产品推荐

