È possibile abilitare i servizi di localizzazione (GPS o Google NetworkLocation) tramite ADB o Terminal Emulator? Sono su un telefono rootato.
Punti extra: è anche possibile modificare altre impostazioni relative al sistema?
È possibile abilitare i servizi di localizzazione (GPS o Google NetworkLocation) tramite ADB o Terminal Emulator? Sono su un telefono rootato.
Punti extra: è anche possibile modificare altre impostazioni relative al sistema?
Risposte:
È possibile abilitare i servizi di localizzazione (GPS o Google NetworkLocation) tramite ADB o Terminal Emulator?
Il comando è:
adb shell settings put secure location_providers_allowed gps
dove,
settings
renderebbe le modifiche in settings.db
(parte di com.android.providers.settings
)put
è aggiornare la chiave location_providers_allowed
con valore gps
nella tabella secure
.Il suddetto comando non abiliterebbe il servizio di localizzazione di Google. Per abilitarlo anche, emetti il comando:
adb shell settings put secure location_providers_allowed gps,network
Ti verrà mostrato un popup per accettare i servizi di localizzazione. Nel mio Android 4.2.1, devo accettare la GUI o input keyevent
ogni volta che abilito il servizio da zero.
Tuttavia, nel mio Android 5.0 posso salvare le impostazioni nella finestra di dialogo e l'esecuzione del comando rende le cose perfettamente fatte dalla prossima volta.
Alcuni dispositivi come quelli di Lollipop hanno tre modalità di localizzazione e i valori rilevanti da passare nel suddetto comando sarebbero:
gps,wifi,network
oppure gps,network
(se non si desidera abilitare il Wi-Fi)wifi,network
o network
sologps
adb shell settings put secure location_providers_allowed ' '
È anche possibile modificare altre impostazioni relative al sistema?
Vedi:
Ma ho già dato una grande idea usando settings put
.
location_providers_allowed
essere deprecato ( developer.android.com/reference/android/provider/… ). Idee?
adb shell am start -a android.settings.LOCATION_SOURCE_SETTINGS
quindi fare clic sul pulsante di commutazione.
Per Android 6.0
Per abilitare l'uso:
Per GPS: adb shell settings put secure location_providers_allowed +gps
Per rete: adb shell settings put secure location_providers_allowed +network
Disabilitare :
GPS : adb shell settings put secure location_providers_allowed -gps
Per rete: adb shell settings put secure location_providers_allowed -network
Il servizio di localizzazione Android include diverse opzioni:
1) Alta precisione: gps, network
Abilitare:
adb shell settings put secure location_providers_allowed +gps,network
Disattivare:
adb shell settings put secure location_providers_allowed -gps,network
2) Solo telefono: gps
Abilitare:
adb shell settings put secure location_providers_allowed +gps
Disattivare: adb shell settings put secure location_providers_allowed -gps
3) Risparmio batteria: network
Abilitare:
adb shell settings put secure location_providers_allowed +network
Disattivare: adb shell settings put secure location_providers_allowed -network
location_providers_allowed
non funziona più per Android 10 (livello API 29).
Invece, puoi impostare location_mode
a LOCATION_MODE_HIGH_ACCURACY
con un valore di 3:
adb shell settings put secure location_mode 3
NOTA: Probabilmente non funzionerà> v29 poiché questo è già obsoleto come menzionano i documenti sulla modalità di localizzazione:
Questa costante è stata deprecata nel livello API 28. I metodi preferiti per controllare la modalità di localizzazione e ascoltare le modifiche sono tramite
LocationManager#isLocationEnabled()
eLocationManager#MODE_CHANGED_ACTION
.
Non so quale sarà un modo programmatico di farlo attraverso la shell una volta che questa costante scompare.