Ionic Diagnostic Plugin 总是 returns "DENIE_ALWAYS" on android

Ionic Diagnostic Plugin always returns "DENIE_ALWAYS" on android

我正在使用 Ionic 4,我的所有 IOS 诊断权限都在工作..

但是在 android 上,如果我请求访问任何内容(例如 CAMERA)。它 returns 一个 DENIE_ALWAYS 响应。如果我进入设置 > 应用程序设置 > 权限这是说该应用程序不需要任何权限。我已验证 androidManifest.xml 中存在权限。但是我无法提示用户权限。

如有任何帮助,我们将不胜感激。

示例代码

   this.diagnostic.getCameraAuthorizationStatus()
    .then( async (status) => {
      debugger;
      if (status === this.diagnostic.permissionStatus.GRANTED
        || status === this.diagnostic.permissionStatus.GRANTED_WHEN_IN_USE) {
        this.appSettings.camera.enabled = true;
        this.updateAppSettings();
      } else if (status === this.diagnostic.permissionStatus.NOT_REQUESTED) {
        this.diagnostic.requestCameraAuthorization()
          .then((res) => {
           // HERE IS ALWAYS DENIE_ALWAYS WITHOUT EVER PROMPTING USER
            debugger;
            if (res === this.diagnostic.permissionStatus.GRANTED
              || res === this.diagnostic.permissionStatus.GRANTED_WHEN_IN_USE) {
              this.appSettings.camera.enabled = true;
              this.updateAppSettings();
            } else {
              this.appSettings.camera.enabled = false;
              this.updateAppSettings();
            }
          });

经过数小时的搜索,我终于找到了答案..

在平台下>android>AndroidManifest.xml您需要确保这包括您的所有权限

    <uses-permission android:name="android.permission.CAMERA" />

但是由于某些原因,这个 AndroidManifest 与

下使用的不一样

平台 > android> app> src > main> AndroidManifest.xml

并且构建也没有更新该文件。所以我将正确的 AndroidManifest.xml 复制到该路径并开始工作。

这比本来应该的要难得多。我不知道为什么添加和删除平台或重建不会更新该清单。