Ich entwickle eine App für Android OS. Ich kann nicht überprüfen, ob die Ortungsdienste aktiviert sind oder nicht.
Ich benötige eine Methode, die "true" zurückgibt, wenn sie aktiviert sind, und "false", wenn nicht (daher kann ich im letzten Fall einen Dialog anzeigen, um sie zu aktivieren).
Antworten:
Mit dem folgenden Code können Sie überprüfen, ob GPS-Anbieter und Netzwerkanbieter aktiviert sind oder nicht.
In der Manifestdatei müssen Sie die folgenden Berechtigungen hinzufügen
quelle
lm.getAllProviders().contains(LocationManager.GPS_PROVIDER)
(oderNETWORK_PROVIDER
) würde sicherstellen, dass Sie den Benutzer nicht auf eine Einstellungsseite werfen, auf der es keine Netzwerkoption gibt.Settings.ACTION_SECURITY_SETTINGS
sollteSettings.ACTION_LOCATION_SOURCE_SETTINGS
Ich benutze diesen Code zur Überprüfung:
quelle
Wie jetzt im Jahr 2020
Neuester, bester und kürzester Weg ist
quelle
LocationManager.class
ingetSystemService
Verfahren wegen Aufruf API erfordert 23 ;-)Mit diesem Code können Sie Benutzer zu Einstellungen weiterleiten, in denen sie GPS aktivieren können:
quelle
isProviderEnabled()
und beeinflusstgetProviders(true)
.isProviderEnabled()
undgetProviders(true)
Methoden reagieren, wenn eine solche Einstellung aktiviert (oder deaktiviert, je nachdem, wie Sie sie betrachten), wäre ich sehr gespannt, auf was Sie gestoßen sind.Migrieren Sie zu Android X und verwenden Sie
und verwenden Sie LocationManagerCompat
In Java
In Kotlin
quelle
Before API version LOLLIPOP [API Level 21], this method would throw SecurityException if the location permissions were not sufficient to use the specified provider.
Wenn Sie keine Berechtigung für das Netzwerk oder den GPS-Anbieter haben, wird möglicherweise eine Ausnahme ausgelöst, je nachdem, welche aktiviert ist. Überprüfen Sie den Quellcode für weitere Informationen.Wenn Sie die obige Antwort abarbeiten, müssen Sie in API 23 "gefährliche" Berechtigungsprüfungen sowie die Überprüfung des Systems selbst hinzufügen:
quelle
Wenn kein Anbieter aktiviert ist, ist "passiv" der beste zurückgegebene Anbieter. Siehe https://stackoverflow.com/a/4519414/621690
quelle
Ja, Sie können unten den Code überprüfen:
mit der Erlaubnis in der Manifestdatei:
quelle
Diese if-Klausel überprüft meiner Meinung nach leicht, ob Ortungsdienste verfügbar sind:
quelle
Ich benutze so für NETWORK_PROVIDER, aber Sie können hinzufügen und für GPS .
In onCreate habe ich gesetzt
Und Methode der Überprüfung
quelle
locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
Dies ist eine sehr nützliche Methode, die "
true
" zurückgibt, wenn dieLocation services
aktiviert sind:quelle
Um den aktuellen Geo- Standort in Android Google Maps zu erhalten, sollten Sie die Option für den Standort Ihres Geräts aktivieren. Um zu überprüfen, ob der Standort aktiviert ist oder nicht, können Sie diese Methode einfach über Ihre
onCreate()
Methode aufrufen .quelle
Für Kotlin
Dialog
so anrufen
Hinweis: Der Dialog benötigt die folgenden Importe (Android Studio sollte dies für Sie erledigen)
Und im Manifest benötigen Sie die folgenden Berechtigungen
quelle
Sie können die Standortaktualisierungen anfordern und den Dialog gemeinsam anzeigen, wie dies auch bei GoogleMaps doas der Fall ist. Hier ist der Code:
Wenn Sie weitere Informationen benötigen, überprüfen Sie die LocationRequest- Klasse.
quelle
Ich benutze den ersten Code begin create Methode isLocationEnabled
und ich überprüfe Bedingung, wenn ture Öffnen Sie die Karte und geben Sie die falsche Absicht ACTION_LOCATION_SOURCE_SETTINGS
quelle
Kann auf einfachste Weise tun
quelle
Wenn Sie AndroidX verwenden, verwenden Sie den folgenden Code, um zu überprüfen, ob der Ortungsdienst aktiviert ist oder nicht:
quelle
Um nach einem Netzwerkanbieter zu suchen, müssen Sie nur die an isProviderEnabled übergebene Zeichenfolge in LocationManager.NETWORK_PROVIDER ändern, wenn Sie die Rückgabewerte sowohl für den GPS-Anbieter als auch für den NETwork-Anbieter überprüfen. Beide Werte bedeuten, dass keine Standortdienste vorhanden sind
quelle
quelle
quelle
}}
Verwenden Sie die Methode isLocationEnabled, um festzustellen, ob die Ortungsdienste aktiviert sind.
Auf der Seite https://github.com/Polidea/RxAndroidBle/issues/327# finden Sie weitere Informationen, warum Sie nicht den passiven Anbieter verwenden, sondern den Standortmodus.
quelle