我正在开发一个使用 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 设备上测试)。
我正在使用:
已尝试过此解决方案,但得到相同的结果。那么,我该如何解决这个问题呢?我是不是忘记了什么?
感谢您的帮助。
经过两天的努力,以及在 StackOverflow 上发表这篇文章 30 分钟后,按照此 GitHub 评论中描述的步骤解决了问题:
<preference name="AndroidLaunchMode" value="singleTop" />
platforms/android/
ionic cordova prepare android
似乎问题是由安装
cordova-plugin-background-mode
插件引起的,我也在使用该插件。
修复问题:将以下行添加到您的
config.xml
:
< preference name="AndroidLaunchMode" value="singleTop" />
注意:如果您使用 Appsflyer onelink 进行深度链接,请检查应用程序。
我能够通过删除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
}