Измените режим местоположения экономии заряда батареи на Высокая точность с помощью SettingsClient и startResolutionForResult. - PullRequest
0 голосов
/ 22 апреля 2019

Я работаю с приложением на основе местоположения. Для определения местоположения я использую этот подход ( example1 , example2 ) с диалоговым окном настроек местоположения для пользователя. Но я отмечаю одну интересную вещь. Если пользователь установил режим экономии заряда батареи (Безопасность и местоположение> Местоположение> Режим) и после этого приложение создаст диалоговое окно настроек местоположения для запроса местоположения с помощью .setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); и пользователь выберет ОК - в onActivityResult () результат будет RESULT_CANCELED, и режим местоположения будет выберите только устройство, но не высокую точность.

Я проверял это на разных телефонах с разными версиями Android, но результат тот же. Также я тестировал эту вещь на разных приложениях. Похоже, что приложение Google Maps обрабатывает эту ситуацию правильно и после режима экономии заряда батареи меняет режим на Высокая точность (после нажатия на значок «Мое местоположение» и выбора «ОК» в диалоговом окне настроек местоположения).

Можно ли изменить режим экономии заряда батареи на высокую точность в диалоговом окне настроек? Я знаю, что могу открыть активность настроек местоположения после RESULT_CANCELED с этим кодом (например, здесь ):

Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivityForResult(intent, 1);

и в onActivityResult () проверьте, включены ли провайдеры сети и GPS. Но похоже, что приложение Google Maps может справиться с этим без дополнительных действий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...