Cordova相机即使在假的情况下也可以保存到画廊

时间:2016-10-28 18:27:42

标签: javascript java angularjs ionic-framework cordova-plugins

我处于非常恶劣的境地......

我的客户想要在Ionic Framework v1中使用Cordova应用程序,并且相机不能将图像保存到图库是必要的。但是,当我将保存到gallery的参数设置为false时,它仍然保存到图库。

当你拍照并取消它时,Android上会出现问题。然后它会将该图片保存到图库,有时甚至会保存所有其他图片。

我真的很欢迎任何帮助;到目前为止我发现的所有解决方案都是我发现很难理解的,因为我对Java的了解是零。

这是我的JS代码

function capturePhoto() {
    var maxDimension = 1280;
    var options = {
      quality: 80,
      destinationType: Camera.DestinationType.DATA_URL,
      sourceType: Camera.PictureSourceType.CAMERA,
      correctOrientation: true,
      targetWidth: maxDimension,
      targetHeight: maxDimension,
      saveToPhotoAlbum: false

    };

这适用于相机选项。

 $cordovaCamera.getPicture(options).then(function (imageData) {
      var src = "data:image/jpeg;base64," + imageData;
      $scope.photoPreviewSrc = src;
    }).catch(function (err) {

    });
  }

3 个答案:

答案 0 :(得分:2)

我已使用cordova检查了您的代码。它按预期工作正常。 在其他设备上验证您的应用一次。

我还没有在离子平台上检查过它。

答案 1 :(得分:0)

您可能希望在收到图像数据后尝试运行以下内容:

navigator.camera.cleanup(onSuccess, onFail);

function onSuccess() {
    console.log("Camera cleanup success.")
}

function onFail(message) {
    alert('Failed because: ' + message);
}

来自the docs:" camera.cleanup()删除在调用camera.getPicture后保存在临时存储中的中间图像文件。仅当Camera.sourceType的值等于Camera.PictureSourceType.CAMERACamera.destinationType等于Camera.DestinationType.FILE_URI时才适用。"

以上内容与您的使用案例直接相关。

答案 2 :(得分:0)

它真的要进入照片库,还是只是出现在Android的照片应用中? Android默认照片浏览器将显示所有照片,屏幕截图等。它甚至还会显示随机图像 - 其他应用程序可能在文件系统上,但不是照片。

由于在cordova中,您无法很好地控制操作系统,因此您可以使用解决方法:您可以将图像放在隐藏目录中(以. .appdata开头)这将阻止Android自动查看“图库”应用中的图像。我在Ionic App中遇到了这个问题并以这种方式解决了。