cordova-plugin-camera:在 Android 4.4 设备上出现“未选择图像”错误

问题描述 投票:0回答:3

我正在开发一个使用 Ionic 1.x 构建的混合移动应用程序。目前,我正在处理与运行 Android 4.4 的设备上的

cordova-plugin-camera
相关的奇怪行为(KitKat - 也在 4.3 中进行了测试)。当我运行以下代码时:

var options = {
    quality: 50,
    mediaType: Camera.MediaType.PICTURE,
    destinationType: Camera.DestinationType.FILE_URI,
    sourceType: Camera.PictureSourceType.CAMERA,
    allowEdit: false,
    encodingType: Camera.EncodingType.JPEG,
    saveToPhotoAlbum: false,
    correctOrientation: true
};

navigator.camera.getPicture(function (imageData) {
    console.log(imageData);
}, function (err) {
    console.log(err);
}, options);

错误回调会被立即触发,并将“未选择图像”打印到控制台。也就是说:在拍照之前,打开相机应用程序并在打开相机时触发错误回调。

但是相同的代码适用于具有新 Android 版本的设备(在 Android 7.0 设备上测试)。

我正在使用:

  • 科尔多瓦8.0
  • cordova-android 6.4.0
  • cordova-插件相机 4.0.2

已尝试过此解决方案,但得到相同的结果。那么,我该如何解决这个问题呢?我是不是忘记了什么?

感谢您的帮助。

android cordova ionic-framework cordova-plugins
3个回答
6
投票

经过两天的努力,以及在 StackOverflow 上发表这篇文章 30 分钟后,按照此 GitHub 评论中描述的步骤解决了问题:

  1. 将以下行添加到您的 config.xml 中:
    <preference name="AndroidLaunchMode" value="singleTop" />
  2. 删除目录
    platforms/android/
  3. 奔跑
    ionic cordova prepare android

似乎问题是由安装

cordova-plugin-background-mode
插件引起的,我也在使用该插件。


1
投票

修复问题:将以下行添加到您的

config.xml
:

< preference name="AndroidLaunchMode" value="singleTop" />

注意:如果您使用 Appsflyer onelink 进行深度链接,请检查应用程序。


0
投票

我能够通过删除allowEdit:true来解决它

const options: CameraOptions = {
      quality: 100,
      destinationType: this.camera.DestinationType.DATA_URL,
      encodingType: this.camera.EncodingType.JPEG,
      mediaType: this.camera.MediaType.PICTURE,
      correctOrientation: true,
      // allowEdit: true
    }
© www.soinside.com 2019 - 2024. All rights reserved.