Разрешение на отображение до загрузки активности - PullRequest
0 голосов
/ 09 марта 2019

Я заметил несколько плакатов о переполнении стека, пытаясь это сделать, но моя ситуация немного отличается. У меня есть класс Login, и когда пользователь проходит аутентификацию, я объявляю ему Intent для моего класса NavDrawer, который служит в качестве основного действия. Я использую фрагмент карты, чтобы показать карту Google, но когда пользователь входит в систему в первый раз, синяя точка (вызов setMyLocationEnabled = true) не отображается. Это связано с загрузкой карты в фоновом режиме до загрузки запроса разрешения местоположения. Конечно, после предоставления разрешения и перезапуска приложения вручную синяя точка становится видимой, поскольку разрешение уже предоставлено.

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

Видимо, это известная ошибка: https://issuetracker.google.com/issues/73122459

И одно из предложений в приведенной выше ссылке - запросить разрешение в Activity перед вызовом setContentView. Я попытался сделать это, но моя Карта все еще загружается в фоновом режиме. Поскольку местоположение является неотъемлемой частью приложения, я подумал, что мог бы открыть экран, который не позволяет отображать карту, которая приводит их к своим настройкам. Затем, когда они вернутся, карта будет видна.

Мне нравится, как это делает LimeBike с прозрачной картой позади, так что вы все еще видите, что там должно быть. Как только вы перейдете к своим настройкам и включите местоположение и возврат, их карта загрузится и появится синяя точка. У кого-нибудь есть опыт внедрения чего-то подобного?

IMG:

Ответы [ 2 ]

0 голосов
/ 09 марта 2019

поместите этот код полномочий в onstart, только после успешного разрешения, вызовите createview.

0 голосов
/ 09 марта 2019

Если показывать синюю точку так важно при первом запуске до предоставления разрешений - почему бы не попытаться запросить разрешение на предыдущем экране. Прямо на экране входа. И чтобы не беспокоить пользователей слишком рано - делайте это после успешного входа пользователя.

т.е. 1. Пользователь входит в систему 2. Пользователь остается на экране входа в систему, видит всплывающее окно с разрешением 3. Принимает или отклоняет - в любом случае переходит к экрану карты

...