Можно ли включить службы определения местоположения (GPS или Google NetworkLocation) через ADB или эмулятор терминала? Я на рутированном телефоне.
Дополнительные баллы: можно ли изменить другие системные настройки?
Можно ли включить службы определения местоположения (GPS или Google NetworkLocation) через ADB или эмулятор терминала? Я на рутированном телефоне.
Дополнительные баллы: можно ли изменить другие системные настройки?
Ответы:
Можно ли включить службы определения местоположения (GPS или Google NetworkLocation) через ADB или эмулятор терминала?
Команда:
adb shell settings put secure location_providers_allowed gps
где,
settings
будет вносить изменения в settings.db
(часть com.android.providers.settings
)put
обновить ключ location_providers_allowed
со значением gps
в таблице secure
.Вышеуказанная команда не включит службу определения местоположения Google. Чтобы включить его, выполните команду:
adb shell settings put secure location_providers_allowed gps,network
Вам будет показано всплывающее окно, чтобы согласиться на услуги определения местоположения. В моем Android 4.2.1 я должен согласиться через графический интерфейс или input keyevent
каждый раз, когда я включаю сервис с нуля.
Тем не менее, в моем Android 5.0 я могу сохранить настройки в диалоговом окне, и выполнение команды сделает все идеально в следующий раз.
Некоторые устройства, такие как Lollipop, имеют три режима Locations, и соответствующие значения, которые должны быть переданы в вышеупомянутой команде:
gps,wifi,network
или gps,network
(если вы не хотите, чтобы Wi-Fi был включен)wifi,network
или network
толькоgps
adb shell settings put secure location_providers_allowed ' '
Можно ли изменить другие системные настройки?
Видеть :
Но я уже дал большую идею, используя settings put
.
location_providers_allowed
( developer.android.com/reference/android/provider/… ). Идеи?
adb shell am start -a android.settings.LOCATION_SOURCE_SETTINGS
затем нажмите кнопку переключения.
Для Android 6.0
Чтобы включить использование:
Для GPS: adb shell settings put secure location_providers_allowed +gps
Для сети: adb shell settings put secure location_providers_allowed +network
Отключить :
GPS : adb shell settings put secure location_providers_allowed -gps
Для сети: adb shell settings put secure location_providers_allowed -network
Android Location Service поставляется с различными вариантами:
1) высокая точность: gps, network
Включить:
adb shell settings put secure location_providers_allowed +gps,network
Отключить:
adb shell settings put secure location_providers_allowed -gps,network
2) Только телефон: gps
Включить:
adb shell settings put secure location_providers_allowed +gps
Отключить: adb shell settings put secure location_providers_allowed -gps
3) Экономия батареи: network
Включить:
adb shell settings put secure location_providers_allowed +network
Отключить: adb shell settings put secure location_providers_allowed -network
location_providers_allowed
больше не работает для Android 10 (уровень API 29).
Вместо этого вы можете установить location_mode
значение LOCATION_MODE_HIGH_ACCURACY
со значением 3:
adb shell settings put secure location_mode 3
ПРИМЕЧАНИЕ. Вероятно, не будет работать> v29, поскольку это уже устарело, поскольку в документации по режиму местоположения упоминается:
Эта константа устарела на уровне API 28. Предпочтительные методы для проверки режима местоположения и прослушивания изменений через
LocationManager#isLocationEnabled()
иLocationManager#MODE_CHANGED_ACTION
.
Не знаю, каким будет программный способ сделать это через оболочку, когда эта константа исчезнет.