Чи можна ввімкнути служби локації через Shell?


14

Чи можна ввімкнути Служби локації (GPS або Google NetworkLocation) через ADB або термінальний емулятор? Я на укоріненому телефоні.

Додаткові бали: Чи можлива також зміна інших системних налаштувань?



2
@Izzy Я не думаю, що це повністю дублікат.
Матвій

2
@Izzy не пов’язаний. Питання, з яким ви пов’язані, не має нічого спільного з послугами локації.
lorddev

1
@lorddev Ні, вони прямо не згадуються. Але ви можете використовувати той самий код, щоб викликати наміри для служб локації. Що мене трохи бентежить, - це фразування мого коментаря, що передбачає «прямий удар» (і тут ви обидва правильні: це не зовсім те саме). Важко сказати, через півроку, що я мав на увазі тоді ...
Izzy

Відповіді:


12

Чи можна ввімкнути Служби локації (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 я маю згоду через GUI або input keyeventкожен раз, коли я вмикаю послугу з нуля.

                                                                    IMG: 4.2.1

Однак у своєму Android 5.0 я можу зберегти налаштування в діалоговому вікні, і виконання команд робить наступне завдання ідеально виконаним.

                                                                    IMG: 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.


Чи можна було б досягти того ж, але з консолі пристрою, а не через ADB зовнішнього комп'ютера?
подарунок

1
Так, абсолютно. Вам знадобиться кореневий доступ або бездротовий доступ ADB, який працює на пристрої. Подивіться на цю відповідь як приклад. Ви б отримали ідею.
Firelord

Це працювало на Android 5, але більше не працює на Android 6. З коренем або без нього налаштування не змінюється і залишається таким же, як налаштовано в системі. Це, мабуть, має відношення до location_providers_allowedзастарілого ( developer.android.com/reference/android/provider/… ). Ідеї?
gw0

Якщо ви просто хочете ввімкнути / вимкнути функціональність GPS, ви можете перейти на сторінку з налаштуваннями, а потім натиснути кнопку перемикання. Ця операція також може бути досягнута командою:, adb shell am start -a android.settings.LOCATION_SOURCE_SETTINGSпотім натисніть кнопку перемикання.
Едді

13

Для 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


Це працювало для мене, а не прийнята відповідь.
TheMonkeyKing

Дякую, це працює. Чи все-таки ми можемо ввімкнути / відключити gps та мережу за допомогою однієї рядкової команди adb. Мені це потрібно для локатону високої точності. gps + network = висока точність
Suban Dhyako

4

Служба локації Android має різні варіанти:

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


0

location_providers_allowed більше не працює для Android 10 (рівень 29 API).

Замість цього, ви можете встановити , location_modeщоб LOCATION_MODE_HIGH_ACCURACYіз значенням 3:

adb shell settings put secure location_mode 3

ПРИМІТКА. Ймовірно, не буде працювати> v29, оскільки це вже застаріло, оскільки документи в "Location Mode" згадують:

Ця константа була знята на рівні 28 API. Кращі методи перевірки режиму розташування та прослуховування змін є через LocationManager#isLocationEnabled()і LocationManager#MODE_CHANGED_ACTION.

Не знаю, який програмний спосіб зробити це через оболонку, як тільки ця константа зникне.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.