Ионный диагностический плагин всегда возвращает «DENIE_ALWAYS» на Android

#android #ionic-framework #ionic4

#Android #ionic-framework #ionic4

Вопрос:

Я использую Ionic 4, и все мои диагностические разрешения IOS работают..

Но на Android, если я запрашиваю доступ к чему-либо (например, к КАМЕРЕ). Он возвращает ответ 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:

Я, наконец, нашел ответ после нескольких часов поиска..

В разделе платформы> android>AndroidManifest.xml вы должны убедиться, что это включает в себя все ваши разрешения

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

Но по какой-то причине этот AndroidManifest не был тем, который использовался в

платформы> android> приложение> src> главная> AndroidManifest.xml

И сборка также не обновляла этот файл. Итак, я скопировал правильный AndroidManifest.xml на этот путь, и он начал работать.

Это было намного сложнее, чем должно было быть.. Я не знаю, почему добавление и удаление платформы или перестройка не привели бы к обновлению этого манифеста..

Комментарии:

1. я попытался проверить папку. Но нет AndroidManifest.xml файл внутри платформы> android. Файл существует в platforms> android> app> src> main> AndroidManifest.xml Этот файл не содержит разрешения, но node_modules > cordova-android > bin> шаблоны> проект > AndroidManifest.xml содержит разрешение

2. @vbharath прошло несколько месяцев с тех пор, как я понял это.. Я просто помню, что это был кошмар. Все сводилось к тому, что разрешения не были в нужном месте в нужное время.

3. @caden311 Вы нашли причину, по которой разрешения не добавляются в файл манифеста?

4. @SanjaySharma это было довольно давно. Но, если я правильно помню, это был какой-то странный кварк. После удаления и повторного добавления на другой машине он, казалось, работал правильно. Я не знаю, как он изначально попал в это состояние.