Ich weiß , dass die Frage , Ein / Aus - GPS über das Einschalten programmatisch Android hat bereits diskutiert viele Male , und die Antwort ist immer die gleiche:
"Aus Sicherheits- / Datenschutzgründen können Sie dies nicht tun. Sie müssen zum Bildschirm mit den Standorteinstellungen weiterleiten und ihn vom Benutzer aktivieren / deaktivieren lassen."
Ich verstehe, dass ich Tasker jedoch kürzlich vom Markt gekauft habe. Neben vielen anderen Dingen, die Sie damit erreichen können, können Sie Regeln festlegen, um GPS beim Eingeben vordefinierter Anwendungen automatisch zu aktivieren und beim Beenden zu deaktivieren (siehe hier für Tutorial, wie es geht, und es funktioniert einfach!) und diese App kann nicht mit dem Firmware-Signaturschlüssel signiert werden, da sie auf vielen Android-Versionen und verschiedenen Geräten funktioniert und Sie nicht einmal gerootet werden müssen.
Ich möchte dies in meiner App tun. Natürlich möchte ich die Privatsphäre des Benutzers nicht in die Luft jagen, daher würde ich den Benutzer zuerst fragen, ob er sie automatisch mit dem typischen Kontrollkästchen "Meine Entscheidung merken" aktivieren möchte, und wenn er mit "Ja" antwortet, aktivieren Sie sie.
Hat jemand eine Idee oder eine Ahnung, wie Tasker dies erreicht?
Alle diese Antworten sind jetzt nicht erlaubt. Hier ist der richtige:
Für alle, die noch nach der Antwort suchen:
So machen es OLA Cabs und andere solche Apps.
Fügen Sie dies in Ihrem onCreate hinzu
Dies sind die implementierten Methoden:
Hier ist die Android-Dokumentation dafür.
Dies soll anderen helfen, wenn sie immer noch Probleme haben:
Bearbeiten : Hinzufügen von Irfan Razas Kommentar für weitere Hilfe.
quelle
GPS AKTIVIEREN:
GPS deaktivieren:
quelle
Dieser Code funktioniert auf ROOTED- Telefonen, wenn die App verschoben wurde
/system/aps
, und sie haben die folgenden Berechtigungen im Manifest :Code
quelle
Seit Android Version 4.4 können Sie GPS nicht mehr programmgesteuert aktivieren / deaktivieren. Wenn Sie den in dieser Antwort vorgeschlagenen Code ausprobieren , wird eine Ausnahme ausgelöst.
quelle
Anstatt die Absicht Settings.ACTION_LOCATION_SOURCE_SETTINGS zu verwenden, können Sie Popups in Ihrer App wie Google Map und auf GPS direkt anzeigen, indem Sie auf die Schaltfläche OK klicken. Sie müssen nicht zur Einstellung umleiten, sondern müssen lediglich meinen Code als verwenden
Hinweis: Diese Codezeile öffnet automatisch das Dialogfeld, wenn Standort nicht aktiviert ist. Diese Linie wird auch in Google Map verwendet
quelle
Um GPS programmgesteuert ein- oder auszuschalten, müssen Sie den Root-Zugriff und die BusyBox installiert haben. Selbst mit diesen ist die Aufgabe nicht trivial.
Beispiele hier: Google Drive , Github , Sourceforge
Getestet mit 2.3.5 und 4.1.2 Androiden.
quelle
Die obige richtige Antwort ist sehr alt, sie braucht etwas Neues. Hier ist die Antwort
Wie im letzten Update haben wir Androidx-Unterstützung, also fügen Sie zuerst die Abhängigkeit in Ihre build.gradle-Datei auf App-Ebene ein
Fügen Sie dann Ihre Manifestdatei hinzu:
Vergessen Sie nicht, die Zustimmung des Benutzers für diese Berechtigungen einzuholen, wenn Sie diese freigeben
Jetzt hier ist Code, benutze ihn einfach
Wenn etwas schief geht, pingen Sie mich bitte an
quelle
Eine Antwort wurde in einer anderen Frage entwickelt, aber sie wurde geschlossen, und ich möchte, dass die Community sie auch ausprobiert.
Siehe diesen Kommentar
Diese Lösung würde die Berechtigungen
WRITE_SETTINGS
und erfordernWRITE_SECURE_SETTINGS
.quelle
android.permission.WRITE_SECURE_SETTINGS
Berechtigung im Manifest erforderlich .Vielleicht mit Reflexionstricks in der Klasse
android.server.LocationManagerService
.Es gibt auch eine Methode (seit API 8)
android.provider.Settings.Secure.setLocationProviderEnabled
quelle
Settings.Secure
Klasse scheint vielversprechend, aber ich erhalte eine Sicherheitsausnahme, die besagt, dass ich android.permission.WRITE_SECURE_SETTINGS benötige, und ich erhalte immer wieder den Fehler, wenn ich diese Berechtigung (und auch WRITE_SETTINGS) zu meinem Manifest hinzufüge. Aber es scheint ein guter Weg zu sein, weiter zu suchen. Danke :)WRITE_SECURE_SETTINGS
hat eine Schutzstufe, diesystemOrSignature
Sie benötigen, um diese App zu einer System-App zu machen, damit sie funktioniert, was auch in dieser Antwort erwähnt wird .Dies ist die beste Lösung von
Google Developers
. Rufen Sie diese Methode nach der Initialisierung einfach in onResume von onCreate aufGoogleApiClient
.Hinweis: Diese Codezeile öffnet automatisch das Dialogfeld, wenn sie
Location
nicht aktiviert ist.Diese Linie wird auch in Google Map verwendetquelle
run time
erteilte Erlaubnis.Dieser Code funktioniert auf ROOTED-Telefonen:
Zum Ausschalten von GPS können Sie stattdessen diesen Befehl verwenden
Sie können die Netzwerkgenauigkeit auch mit den folgenden Befehlen umschalten: Zum Einschalten der Verwendung:
und zum Ausschalten können Sie verwenden:
quelle
Seit diese Frage gestellt wurde, haben sich die Dinge geändert. Mit der neuen Google Services-API können Sie Benutzer auffordern, GPS zu aktivieren:
https://developers.google.com/places/android-api/current-place
Sie müssen die Berechtigung ACCESS_FINE_LOCATION in Ihrem Manifest anfordern:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
Sehen Sie sich auch dieses Video an:
https://www.youtube.com/watch?v=F0Kh_RnSM0w
quelle
Dieser arbeitet für mich.
Es ist einfacher als die Antwort von Rj0078 in dieser Frage ( https://stackoverflow.com/a/42556648/11211963 ), aber diese Frage funktioniert auch.
Es zeigt einen Dialog wie diesen:
(Geschrieben in Kotlin)
quelle
Sie müssen nur die entfernen
LocationListener
ausLocationManager
quelle
Verwenden Sie diesen Code Einfach und leicht zugänglich:
Berechtigungen:
Befolgen Sie diesen Code, um programmgesteuert auf das GPS zuzugreifen:
quelle