В настоящее время в моей основной деятельности я использую клиент Google API для управления жизненным циклом Nearby. Если Nearby не включен или не имеет разрешения на запуск, сработает OnConnectionFailedListener клиента. Оттуда я ввожу новое действие с помощью startActivityForResult и прослушиваю его событие закрытия, чтобы снова проверить, включено ли и работает ли Nearby. Это был мой подход к проблеме, поскольку Google, похоже, официально не предоставляет способ прослушивания отображаемого диалогового окна, предлагающего вам разрешение или что-то близкое к этому.
Я разработал по крайней мере одну стратегию для достижения своей цели, которая состоит в том, чтобы отслеживать ввод пользователя, когда он принимает/отклоняет разрешение на использование поблизости.
Моя стратегия заключалась бы в том, чтобы найти среди представлений этот диалог, представленный Google, и прослушать кнопки, которые у него есть. Я отлаживал свой код во время отображения диалогового окна и нигде не мог его найти. Это может быть связано с тем, что, по-видимому, диалог инициируется внутри новой «GoogleApiActivity» (которую я даже мог видеть, входя и выходя из экрана). Как я могу получить к этому доступ?
Я также ищу другие пути решения этой проблемы. Но я бы хотел избавиться от этого вторичного экрана, который я использую сегодня, и зависеть только от диалога API. Я пытаюсь заставить свое приложение работать на API 16+ и нескольких типах устройств без проблем с совместимостью.
Заранее благодарю вас за ваше время и за то, что поделились своими знаниями.
Оказывается, я на самом деле ответил себе на свой вопрос. В своем вопросе я указал, что Google открывает GoogleApiActivity, чтобы отобразить диалоговое окно, и открытие этого действия приостановит жизненный цикл моего основного действия, точно так же, как когда я использовал это вспомогательное новое действие, которое я описал в своем вопросе. Более того, когда Google вызывает свою GoogleApiActivity, используется команда startActivityForResult(), и она использует код 65537 для целей идентификации. Если я проверю этот код в onActivityResult(), я смогу проверить, дал ли пользователь разрешение на основе resultCode. Если resultCode равен Activity.RESULT_OK
, это означает, что разрешение было дано.
Я только хотел бы, чтобы это было в документах, я не мог найти его нигде.