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

Android 14下Ionic Angular Cordova应用调用相机崩溃问题求助

解决Android 14上Ionic Angular应用调用相机崩溃的问题

根据你提供的环境和错误信息,问题源于Android 14的权限变更、相机插件兼容性以及主线程阻塞限制,以下是具体解决步骤:

  • 升级相机插件到兼容Android 14的版本
    当前使用的cordova-plugin-camera@7.0.0对Android 14适配不完善,优先升级到最新稳定版:

    # 移除旧插件
    cordova plugin remove cordova-plugin-camera
    # 安装最新版
    cordova plugin add cordova-plugin-camera@latest
    # 同步更新awesome插件
    npm install @awesome-cordova-plugins/camera@latest
    
  • 适配Android 14的权限要求
    Android 14废弃了旧的READ_EXTERNAL_STORAGE权限,改用READ_MEDIA_IMAGES,需要在config.xml中添加权限配置:

    <platform name="android">
        <config-file parent="/manifest" target="AndroidManifest.xml" xmlns:android="http://schemas.android.com/apk/res/android">
            <!-- 相机权限 -->
            <uses-permission android:name="android.permission.CAMERA" />
            <!-- Android 14 媒体读取权限 -->
            <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
        </config-file>
    </platform>
    

    代码中请求权限时,需针对Android版本判断,优先请求READ_MEDIA_IMAGES而非旧存储权限。

  • 优化相机调用参数
    避免使用可能导致主线程阻塞的配置:

    • 优先使用destinationType: this.camera.DestinationType.NATIVE_URI替代DATA_URL,减少内存占用和线程阻塞
    • 关闭不必要的allowEdit等耗时操作
      示例调用:
    const options: CameraOptions = {
      quality: 80,
      destinationType: this.camera.DestinationType.NATIVE_URI,
      encodingType: this.camera.EncodingType.JPEG,
      mediaType: this.camera.MediaType.PICTURE,
      correctOrientation: true
    };
    
    this.camera.getPicture(options).then((imageData) => {
      // 处理图片逻辑
    }, (err) => {
      console.error(err);
    });
    
  • 手动修复主线程阻塞问题(若升级插件后仍存在)
    日志中的THREAD WARNING提示插件在主线程执行耗时操作,若升级后仍有问题,可修改插件源码:
    找到插件目录下的src/android/Camera.java,将takePicture的逻辑放到线程池执行:

    // 替换原exec方法中的takePicture逻辑
    cordova.getThreadPool().execute(new Runnable() {
        @Override
        public void run() {
            // 原takePicture的代码逻辑
        }
    });
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 11:13:16