Наложение приложения Android N, O остается после отклонения запроса на разрешение - PullRequest
0 голосов
/ 05 июня 2018

У меня есть приложение, которому нужен доступ к учетным записям пользователей.
Когда пользователь отклоняет диалог доступа к контактам, начинается странное поведение.

Как обычно, появляется диалоговое окно, и приложение в фоновом режиме получает наложение для затемнения содержимого.Если пользователь отклоняет разрешение сейчас, диалоговое окно исчезает, но затемняющее наложение остается (оно также запрещает взаимодействие с пользователем).
Содержимое, видимое за наложением, изменяется в соответствии с отклоненным разрешением.Ошибка возникает только на устройствах с Android N и Android O, M выглядит отлично после снижения, а более низкие уровни API не имеют разрешений во время выполнения, поэтому они также выполняют свою работу.

Несколько характеристик:

  • minSdk 16
  • compileSdk 27 ​​
  • targetSdk 27 ​​
  • Buildtools Версия 27.0.3
  • supportLib 27.1.1
  • com.google.android.gms.auth 15.0.1

Также есть другие запросы на разрешение, которые работают так же, как и должны (например, Местоположение).
Только диалоговое окно, показанное для GET_ACCOUNTS (Группа разрешений для контактов), не обрабатывает право наложения.

Было бы замечательно, если бы кто-нибудь дал мне несколько подсказок, какие зависимости могут существовать, которых я не видел.
Заранее большое спасибо всем, кто читает это, высказывает мою проблему, думает, делитсяпохожая история даже без решения.Будут оценены все подсказки или ввод: D

Обновление:

Я удалил диалоговое окно с разрешениями и представил accountChooser пользователю, но неправильное поведение остается.Единственное отличие состоит в том, что даже после выбора учетной записи (и, следовательно, предоставления разрешения для этой учетной записи) оверлей остается.Поскольку в фоновом режиме приложение видно, я могу проверить функциональность функций и доступны онлайн данные.

1 Ответ

0 голосов
/ 09 июля 2018

после продолжительного поиска возникла проблема не с диалоговым окном разрешений или выбором учетной записи, а с базовым progressDialog, который активировался нажатием кнопки.Запрещенный теперь прогрессирующий диалог был запущен, а фон был серым и неактивным.Теперь два официально подозреваемых диалогов вступили в силу. После их подтверждения они были скрыты правильно.Неактивное серое наложение было частью старого диалога прогресса.Я уверен, что ошибка произошла из-за проблемы синхронизации во время сокрытия progressDialog, который был прерван двумя системными диалоговыми окнами.

Решение для меня состояло в том, чтобы удалить старый файл progressDialog и создать замену (custom alertstdialog), котораяпоказано и отменено в отдельных темах.Пользовательский диалог теперь скрывается, как и должен, и даже серый наложение исчезает правильно.

Спасибо всем, я надеюсь, что это может помочь другим быстрее найти свое решение;)

...