Можно ли включить службы определения местоположения (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толькоgpsadb 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.
Не знаю, каким будет программный способ сделать это через оболочку, когда эта константа исчезнет.