【问题标题】:Cordova camera saves to gallery even on false即使在错误的情况下,Cordova 相机也会保存到画廊
【发布时间】:2017-03-11 16:52:36
【问题描述】:

我的处境非常糟糕……

我的客户想要一个 Ionic Framework v1 中的 Cordova 应用程序,并且相机必须不将图像保存到图库。但是,当我将保存到图库的参数设置为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) {

    });
  }

【问题讨论】:

  • 我很困惑——如果你在做一个 Cordova 应用程序,Java 会在哪里出现?
  • 好吧插件是用java为android编写的......所以也许有java知识的人已经遇到过这个问题......
  • 我已经验证了相同的,但它按预期工作。我已将 saveToGallery 标志设置为 true。如果我取消,则不保存图像。当我点击确定时,图像被保存到画廊。
  • @bvakiti 以及当您将 saveToGallery 设置为 false 然后您拍摄照片并取消它时会发生什么?
  • 你能显示你使用的代码吗?你能详细说明一下这个问题吗

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


【解决方案1】:

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

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

【讨论】:

  • 当你将savetogallery设置为false并在拍摄后取消图片时,你没有将它保存到画廊?
  • 没有。当您取消时,它会再次显示要拍摄的相机。图像未保存在图库中。在其他设备上验证一次
  • 我验证了正常的cordova应用程序,它按预期工作,使用相同的代码
  • @bvakiti 告诉我问题出在离子平台上。继续编辑您的问题以澄清这一点。
  • 刚刚尝试使用 $cordovaCamera.getPicture 的常规科尔多瓦代码 navigator.camera.getPicture ...仍然遇到同样的问题..我会尝试检查其他版本并在此处更新它...
【解决方案2】:

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

navigator.camera.cleanup(onSuccess, onFail);

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

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

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

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

【讨论】:

    【解决方案3】:

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

    由于在科尔多瓦,您无法很好地控制操作系统,您可以使用一种变通方法:您可以将图像放在隐藏目录中(以 . 开头,例如 .appdata),这样可以防止Android 从“图库”应用程序中自动查看图像。我在 Ionic App 中遇到了这个问题,并通过这种方式解决了。

    【讨论】:

    • 他正在将图像放入 storage/emulated/0/DCIM/Camera 。你是如何通过改变图像路径来管理这个解决方案的,你能给我提示吗?
    • 如果你想隐藏它们,你可以把它们放在 /storage/emulated/sdcard/.mdir 或类似的地方
    猜你喜欢
    • 1970-01-01
    • 2011-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-25
    • 2015-09-19
    相关资源
    最近更新 更多