【问题标题】:Android Error - Access denied unable to save cropped imageAndroid 错误 - 访问被拒绝无法保存裁剪的图像
【发布时间】:2021-05-15 06:03:30
【问题描述】:

我有一个 Ionic 5/Angular 应用程序,它使用 Ionic Native Camera 插件来拍照和裁剪图像。在我更新到 Android 11(使用 note 10 plus)之前,该功能运行良好。更新后裁剪时出现如下错误:无法保存裁剪后的图片 - 访问被拒绝。

TS 代码:

takePicture() {
    this.androidPermissions.requestPermissions([this.androidPermissions.PERMISSION.READ_EXTERNAL_STORAGE, 
    this.androidPermissions.PERMISSION.WRITE_EXTERNAL_STORAGE]);

    const options: CameraOptions = {
      quality: 100,
      targetHeight: 1920,
      targetWidth: 1080,
      sourceType: 1, // CAMERA
      destinationType: 0, // DATA_URL
      encodingType: this.camera.EncodingType.JPEG,
      correctOrientation: true,
      allowEdit: true
    };

    this.camera.getPicture(options).then((imageData) => {
     // Persist image data
    });
  }

应用在其他设备上运行良好。还检查了我的应用程序、图库应用程序和照片编辑器应用程序是否具有存储和相机权限。我可以拍照并打开裁剪器 - 点击完成后,会显示消息“拒绝访问”,紧随其后的是“无法保存裁剪的图像”。

  1. 可能导致错误的原因是什么?
  2. 如何查看设置为设备默认裁剪应用的应用?
  3. 如何清除/重置默认裁剪应用?

注意:我在另一台运行 Android 11 的设备上对此进行了测试,结果出现了同样的错误。

【问题讨论】:

  • access denied. 好的。但是为了什么?
  • updated to Android 11.4你在哪里看到那四个?
  • 请问您找到解决方案了吗?
  • 我也遇到了这个问题,正在寻找一个好的解决方案

标签: android ionic-framework ionic-native ionic5


【解决方案1】:

尝试通过使用属性 android:requestLegacyExternalStorage 更新您的 AndroidManifest.xml 来退出范围存储:

<manifest ... >
  <application android:requestLegacyExternalStorage="true" ... >
    ...
  </application>
</manifest>

来源:https://developer.android.com/training/data-storage/use-cases#opt-out-scoped-storage

【讨论】:

  • OP 说目标是 Android 11 并且该链接指出: 注意:在您将应用更新为目标 Android 11(API 级别 30)后,系统会在您的应用运行时忽略 requestLegacyExternalStorage 属性Android 11 设备,因此您的应用必须准备好支持范围存储并为这些设备上的用户迁移应用数据。
  • 实际上他说他是在 Android 11 设备上运行,而不是他针对 API Level 30,这是不同的。我应该警告此解决方案适用于 API 级别
【解决方案2】:

请检查 Android 11 对外部存储的更改。

您必须对 Android 11 使用一种方法,点击上面的链接并更新您的照片编辑器应用。

【讨论】:

  • 那么这里的实际解决方案是什么?
【解决方案3】:

如果可以的话,我最好的选择是降级。 上一个版本可以工作,对吗?

【讨论】:

  • 它确实有效,但降级并不能解决实际问题,并且不能指望用户降级他们的操作系统来解决单个应用程序中的错误。
【解决方案4】:

就我而言,“裁剪图像”导致了这个问题。因此,如果您不关心裁剪,请将 'allowEdit: true' 更改为 'allowEdit: false'。然后错误将被删除。但是,不要忘记您将无法裁剪图片。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-09
    • 1970-01-01
    相关资源
    最近更新 更多