Ist es möglich, Ortungsdienste über Shell zu aktivieren?
14
Ist es möglich, Ortungsdienste (GPS oder Google NetworkLocation) über ADB oder Terminal Emulator zu aktivieren? Ich bin auf einem verwurzelten Telefon.
Extra Points: Können auch andere systembezogene Einstellungen geändert werden?
@ Izzy Ich glaube nicht, dass das ein Duplikat ist.
Matthew Read
2
@ Izzy nicht verwandt. Die Frage, mit der Sie verknüpft sind, hat nichts mit Ortungsdiensten zu tun.
Lorddev
1
@lorddev Nein, sie werden nicht ausdrücklich erwähnt. Sie können jedoch denselben Code verwenden, um die Absicht für Ortungsdienste aufzurufen. Was mich ein wenig verwirrt, ist die Formulierung meines Kommentars, die einen "direkten Treffer" suggeriert (und hier haben Sie beide Recht: Es ist nicht genau dasselbe). Schwer zu sagen, ein halbes Jahr später, was ich damals im Sinn hatte ...
Izzy
Antworten:
12
Ist es möglich, Ortungsdienste (GPS oder Google NetworkLocation) über ADB oder Terminalemulator zu aktivieren?
Der Befehl lautet:
adb shell settings put secure location_providers_allowed gps
wo,
settingswürde Änderungen an settings.db(Teil von com.android.providers.settings) vornehmen
putist das Aktualisieren des Schlüssels location_providers_allowedmit dem Wert gpsin der Tabelle secure.
Mit dem oben genannten Befehl wird der Standortdienst von Google nicht aktiviert. Um es ebenfalls zu aktivieren, geben Sie den folgenden Befehl ein:
adb shell settings put secure location_providers_allowed gps,network
Es wird ein Popup-Fenster angezeigt, in dem Sie den Standortdiensten zustimmen. In meinem Android 4.2.1 muss ich über die GUI zustimmen oder input keyeventjedes Mal, wenn ich den Dienst von Grund auf neu aktiviere.
In meinem Android 5.0 kann ich jedoch die Einstellungen im Dialog speichern und die Befehlsausführung macht die Dinge ab dem nächsten Mal perfekt.
Einige Geräte wie Lollipop haben drei Locations-Modi, und die relevanten Werte, die im oben genannten Befehl übergeben werden müssen, sind:
Hohe Genauigkeit: gps,wifi,networkoder gps,network(wenn Sie kein WLAN möchten)
Batteriesparen: wifi,networkoder networknur
Nur Gerät: gps
So deaktivieren Sie den Standortmodus
adb shell settings put secure location_providers_allowed ' '
Ist es auch möglich, andere systembezogene Einstellungen zu ändern?
Wäre es möglich, dasselbe zu erreichen, aber von der Gerätekonsole aus, nicht über die ADB eines externen Computers?
Davide
1
Ja absolut. Sie benötigen jedoch Root-Zugriff oder ADB-WLAN auf dem Gerät. Schauen Sie sich diese Antwort als Beispiel an. Sie würden eine Idee bekommen.
Feuerfürst
Dies funktionierte unter Android 5, aber nicht mehr unter Android 6. Mit oder ohne Root ändert sich die Einstellung nicht und bleibt unverändert, wie sie auf dem System konfiguriert ist. Es hat wahrscheinlich etwas damit zu tun, location_providers_alloweddass es veraltet ist ( developer.android.com/reference/android/provider/… ). Ideen?
gw0
Wenn Sie nur die GPS-Funktionalität ein- und ausschalten möchten, können Sie zur Seite mit den Standorteinstellungen wechseln und dann auf die Schaltfläche zum Umschalten klicken. Diese Operation kann auch mit dem Befehl: ausgeführt adb shell am start -a android.settings.LOCATION_SOURCE_SETTINGSwerden. Klicken Sie dann auf die Schaltfläche zum Umschalten.
Eddy
13
Für Android 6.0
So aktivieren Sie die Verwendung:
Für GPS: adb shell settings put secure location_providers_allowed +gps
Für Netzwerk: adb shell settings put secure location_providers_allowed +network
Etwas deaktivieren :
GEOGRAPHISCHES POSITIONIERUNGS SYSTEM : adb shell settings put secure location_providers_allowed -gps
Für Netzwerk: adb shell settings put secure location_providers_allowed -network
Das hat bei mir geklappt, nicht die akzeptierte Antwort.
Matt D
Danke, es funktioniert. Gibt es sowieso können wir GPS und Netzwerk mit einem Zeilen-ADB-Befehl aktivieren / deaktivieren. Ich brauche es für eine genaue Ortung. GPS + Netzwerk = hohe Genauigkeit
Suban Dhyako
4
Der Android Location Service bietet verschiedene Optionen:
1) Hohe Genauigkeit:gps, network
Aktivieren:adb shell settings put secure location_providers_allowed +gps,network
Deaktivieren:adb shell settings put secure location_providers_allowed -gps,network
2) Nur Telefon:gps
Aktivieren:adb shell settings put secure location_providers_allowed +gps
Deaktivieren:adb shell settings put secure location_providers_allowed -gps
3) Batteriesparen:network
Aktivieren:adb shell settings put secure location_providers_allowed +network
Deaktivieren:adb shell settings put secure location_providers_allowed -network
location_providers_allowed funktioniert nicht mehr für Android 10 (API Level 29).
Stattdessen können Sie das location_modeauf LOCATION_MODE_HIGH_ACCURACYmit einem Wert von 3 festlegen :
adb shell settings put secure location_mode 3
HINWEIS: Funktioniert wahrscheinlich nicht> v29, da dies bereits veraltet ist, da in den Dokumenten zum Standortmodus Folgendes erwähnt wird:
Diese Konstante wurde in API-Ebene 28 nicht mehr empfohlen. Die bevorzugten Methoden zum Überprüfen des Standortmodus und zum Abhören von Änderungen sind über LocationManager#isLocationEnabled()und LocationManager#MODE_CHANGED_ACTION.
Ich weiß nicht, wie man das programmatisch durch die Shell machen kann, wenn diese Konstante verschwindet.
Antworten:
Der Befehl lautet:
wo,
settings
würde Änderungen ansettings.db
(Teil voncom.android.providers.settings
) vornehmenput
ist das Aktualisieren des Schlüsselslocation_providers_allowed
mit dem Wertgps
in der Tabellesecure
.Mit dem oben genannten Befehl wird der Standortdienst von Google nicht aktiviert. Um es ebenfalls zu aktivieren, geben Sie den folgenden Befehl ein:
Es wird ein Popup-Fenster angezeigt, in dem Sie den Standortdiensten zustimmen. In meinem Android 4.2.1 muss ich über die GUI zustimmen oder
input keyevent
jedes Mal, wenn ich den Dienst von Grund auf neu aktiviere.In meinem Android 5.0 kann ich jedoch die Einstellungen im Dialog speichern und die Befehlsausführung macht die Dinge ab dem nächsten Mal perfekt.
Einige Geräte wie Lollipop haben drei Locations-Modi, und die relevanten Werte, die im oben genannten Befehl übergeben werden müssen, sind:
gps,wifi,network
odergps,network
(wenn Sie kein WLAN möchten)wifi,network
odernetwork
nurgps
So deaktivieren Sie den Standortmodus
Sehen :
Aber ich habe schon eine große Idee mit gegeben
settings put
.quelle
location_providers_allowed
dass es veraltet ist ( developer.android.com/reference/android/provider/… ). Ideen?adb shell am start -a android.settings.LOCATION_SOURCE_SETTINGS
werden. Klicken Sie dann auf die Schaltfläche zum Umschalten.Für Android 6.0
So aktivieren Sie die Verwendung:
Für GPS:
adb shell settings put secure location_providers_allowed +gps
Für Netzwerk:
adb shell settings put secure location_providers_allowed +network
Etwas deaktivieren :
GEOGRAPHISCHES POSITIONIERUNGS SYSTEM :
adb shell settings put secure location_providers_allowed -gps
Für Netzwerk:
adb shell settings put secure location_providers_allowed -network
quelle
Der Android Location Service bietet verschiedene Optionen:
1) Hohe Genauigkeit:
gps, network
Aktivieren:
adb shell settings put secure location_providers_allowed +gps,network
Deaktivieren:
adb shell settings put secure location_providers_allowed -gps,network
2) Nur Telefon:
gps
Aktivieren:
adb shell settings put secure location_providers_allowed +gps
Deaktivieren:
adb shell settings put secure location_providers_allowed -gps
3) Batteriesparen:
network
Aktivieren:
adb shell settings put secure location_providers_allowed +network
Deaktivieren:
adb shell settings put secure location_providers_allowed -network
quelle
location_providers_allowed
funktioniert nicht mehr für Android 10 (API Level 29).Stattdessen können Sie das
location_mode
aufLOCATION_MODE_HIGH_ACCURACY
mit einem Wert von 3 festlegen :HINWEIS: Funktioniert wahrscheinlich nicht> v29, da dies bereits veraltet ist, da in den Dokumenten zum Standortmodus Folgendes erwähnt wird:
Ich weiß nicht, wie man das programmatisch durch die Shell machen kann, wenn diese Konstante verschwindet.
quelle