离子诊断插件在Android上始终返回“ DENIE_ALWAYS”

时间:2019-04-12 17:03:02

标签: android ionic-framework ionic4

我正在使用Ionic 4,并且我所有的IOS诊断权限都在起作用。

但是在android上,如果我请求访问任何内容(例如说CAMERA)。它返回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();
            }
          });

1 个答案:

答案 0 :(得分:0)

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

在平台下> android> AndroidManifest.xml,您需要确保其中包含所有权限

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

但是由于某种原因,这个AndroidManifest与下面使用的AndroidManifest不同

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

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

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