Schöner Codeausschnitt. Ich habe die @ SuppressWarnings entfernt und erhalte keine Warnungen ... Vielleicht sind sie unnötig?
Span
30
Ich würde empfehlen, alertfür die gesamte Aktivität zu deklarieren, damit Sie sie in onDestroy schließen können, um einen Speicherverlust zu vermeiden ( if(alert != null) { alert.dismiss(); })
Cameron
Was ist, wenn ich auf Batteriesparen bin? Funktioniert das immer noch?
Prakhar Mohan Srivastava
3
@PrakharMohanSrivastava Wenn Ihre Standorteinstellungen auf Energiesparen sind, wird dies false zurückgeben, jedoch LocationManager.NETWORK_PROVIDERtrue zurückgeben
Tim
129
In Android können wir mit LocationManager leicht überprüfen, ob GPS im Gerät aktiviert ist oder nicht.
Hier ist ein einfaches Programm zu überprüfen.
GPS aktiviert oder nicht: - Fügen Sie die folgende Benutzerberechtigungszeile in AndroidManifest.xml zum Zugriff auf den Speicherort hinzu
publicclassExampleAppextendsActivity{/** Called when the activity is first created. */protectedvoid onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);
setContentView(R.layout.main);LocationManager locationManager =(LocationManager) getSystemService(LOCATION_SERVICE);if(locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)){Toast.makeText(this,"GPS is Enabled in your devide",Toast.LENGTH_SHORT).show();}else{
showGPSDisabledAlertToUser();}}privatevoid showGPSDisabledAlertToUser(){AlertDialog.Builder alertDialogBuilder =newAlertDialog.Builder(this);
alertDialogBuilder.setMessage("GPS is disabled in your device. Would you like to enable it?").setCancelable(false).setPositiveButton("Goto Settings Page To Enable GPS",newDialogInterface.OnClickListener(){publicvoid onClick(DialogInterface dialog,int id){Intent callGPSSettingIntent =newIntent(
android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(callGPSSettingIntent);}});
alertDialogBuilder.setNegativeButton("Cancel",newDialogInterface.OnClickListener(){publicvoid onClick(DialogInterface dialog,int id){
dialog.cancel();}});AlertDialog alert = alertDialogBuilder.create();
alert.show();}}
Nichts passiert, wenn ich Ihre Funktion versuche. Ich habe keine Fehler bekommen, als ich es getestet habe.
Erik
Ich habe es geschafft! :) Vielen Dank, aber ich kann nicht abstimmen, bis Sie Ihre Antwort bearbeitet haben: /
Erik
3
kein Problem @Erik Edgren du bekommst eine Lösung, also bin ich glücklich ENjoy ... !!
@ user647826: Ausgezeichnet! Funktioniert gut. Du hast meine Nacht gerettet
Addi
1
Ein Tipp: Deklarieren Sie alertfür die gesamte Aktivität, damit Sie sie schließen können, onDestroy()um einen Speicherverlust zu vermeiden ( if(alert != null) { alert.dismiss(); })
naXa
38
Ja, GPS-Einstellungen können nicht mehr programmgesteuert geändert werden, da es sich um Datenschutzeinstellungen handelt. Wir müssen überprüfen, ob sie im Programm aktiviert sind oder nicht, und sie verarbeiten, wenn sie nicht aktiviert sind. Sie können den Benutzer benachrichtigen, dass das GPS ausgeschaltet ist, und auf diese Weise dem Benutzer den Einstellungsbildschirm anzeigen, wenn Sie möchten.
Überprüfen Sie, ob Standortanbieter verfügbar sind
String provider =Settings.Secure.getString(getContentResolver(),Settings.Secure.LOCATION_PROVIDERS_ALLOWED);if(provider !=null){Log.v(TAG," Location providers: "+provider);//Start searching for location and update the location text when update available
startFetchingLocation();}else{// Notify users and show settings if they want to enable GPS}
Wenn der Benutzer GPS aktivieren möchte, können Sie den Einstellungsbildschirm auf diese Weise anzeigen.
In Ihrem onActivityResult können Sie sehen, ob der Benutzer es aktiviert hat oder nicht
protectedvoid onActivityResult(int requestCode,int resultCode,Intent data){if(requestCode == REQUEST_CODE && resultCode ==0){String provider =Settings.Secure.getString(getContentResolver(),Settings.Secure.LOCATION_PROVIDERS_ALLOWED);if(provider !=null){Log.v(TAG," Location providers: "+provider);//Start searching for location and update the location text when update available. // Do whatever you want
startFetchingLocation();}else{//Users did not switch on the GPS}}}
Das ist eine Möglichkeit und ich hoffe, es hilft. Lassen Sie mich wissen, wenn ich etwas falsch mache.
Hallo, ich habe ein ähnliches Problem ... kannst du kurz erklären, was der "REQUEST_CODE" ist und wofür er ist?
Poeschlorn
2
@poeschlorn Anna hat den unten angegebenen Link gepostet. In einfachen Worten, der RequestCode ermöglicht die Verwendung startActivityForResultmit mehreren Absichten. Wenn die Absichten zu Ihrer Aktivität zurückkehren, überprüfen Sie den RequestCode, um festzustellen, welche Absicht zurückgegeben wird, und reagieren entsprechend.
Farray
2
Das providerkann eine leere Zeichenfolge sein. Ich musste den Scheck ändern(provider != null && !provider.isEmpty())
Pawan
Da der Anbieter "" sein kann, sollten Sie int mode = Settings.Secure.getInt (getContentResolver (), Settings.Secure.LOCATION_MODE) verwenden. Wenn Modus = 0 GPS ist aus
Levon Petrosyan
31
Hier sind die Schritte:
Schritt 1: Erstellen Sie Dienste, die im Hintergrund ausgeführt werden.
Schritt 2: Sie benötigen auch die folgende Berechtigung in der Manifest-Datei:
android.permission.ACCESS_FINE_LOCATION
Schritt 3: Code schreiben:
finalLocationManager manager =(LocationManager)context.getSystemService (Context.LOCATION_SERVICE );if(!manager.isProviderEnabled(LocationManager.GPS_PROVIDER ))Toast.makeText(context,"GPS is disabled!",Toast.LENGTH_LONG).show();elseToast.makeText(context,"GPS is enabled!",Toast.LENGTH_LONG).show();
Schritt 4: Oder Sie können einfach überprüfen mit:
GPS wird verwendet, wenn der Benutzer die Verwendung in seinen Einstellungen zugelassen hat.
Sie können dies nicht mehr explizit einschalten, müssen es aber nicht - es ist wirklich eine Datenschutzeinstellung, also möchten Sie es nicht optimieren. Wenn der Benutzer damit einverstanden ist, dass Apps präzise Koordinaten erhalten, wird sie aktiviert. Dann verwendet die Location Manager-API GPS, wenn dies möglich ist.
Wenn Ihre App ohne GPS wirklich nicht nützlich ist und ausgeschaltet ist, können Sie die Einstellungs-App auf dem rechten Bildschirm mit einer Absicht öffnen, damit der Benutzer sie aktivieren kann.
In Ihren LocationListenerImplementierungs- onProviderEnabledund onProviderDisabledEreignishandlern. Wenn Sie anrufen requestLocationUpdates(...)und GPS auf dem Telefon deaktiviert ist, onProviderDisabledwird angerufen. Wenn der Benutzer GPS aktiviert, onProviderEnabledwird aufgerufen.
InKotlin:-How to check GPS is enable ornot
val manager = getSystemService(Context.LOCATION_SERVICE)asLocationManagerif(!manager.isProviderEnabled(LocationManager.GPS_PROVIDER)){
checkGPSEnable()}private fun checkGPSEnable(){
val dialogBuilder =AlertDialog.Builder(this)
dialogBuilder.setMessage("Your GPS seems to be disabled, do you want to enable it?").setCancelable(false).setPositiveButton("Yes",DialogInterface.OnClickListener{ dialog, id
->
startActivity(Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS))}).setNegativeButton("No",DialogInterface.OnClickListener{ dialog, id ->
dialog.cancel()})
val alert = dialogBuilder.create()
alert.show()}
Antworten:
Der beste Weg scheint der folgende zu sein:
quelle
alert
für die gesamte Aktivität zu deklarieren, damit Sie sie in onDestroy schließen können, um einen Speicherverlust zu vermeiden (if(alert != null) { alert.dismiss(); }
)LocationManager.NETWORK_PROVIDER
true zurückgebenIn Android können wir mit LocationManager leicht überprüfen, ob GPS im Gerät aktiviert ist oder nicht.
Hier ist ein einfaches Programm zu überprüfen.
GPS aktiviert oder nicht: - Fügen Sie die folgende Benutzerberechtigungszeile in AndroidManifest.xml zum Zugriff auf den Speicherort hinzu
Ihre Java-Klassendatei sollte sein
Die Ausgabe sieht so aus
quelle
alert
für die gesamte Aktivität, damit Sie sie schließen können,onDestroy()
um einen Speicherverlust zu vermeiden (if(alert != null) { alert.dismiss(); }
)Ja, GPS-Einstellungen können nicht mehr programmgesteuert geändert werden, da es sich um Datenschutzeinstellungen handelt. Wir müssen überprüfen, ob sie im Programm aktiviert sind oder nicht, und sie verarbeiten, wenn sie nicht aktiviert sind. Sie können den Benutzer benachrichtigen, dass das GPS ausgeschaltet ist, und auf diese Weise dem Benutzer den Einstellungsbildschirm anzeigen, wenn Sie möchten.
Überprüfen Sie, ob Standortanbieter verfügbar sind
Wenn der Benutzer GPS aktivieren möchte, können Sie den Einstellungsbildschirm auf diese Weise anzeigen.
In Ihrem onActivityResult können Sie sehen, ob der Benutzer es aktiviert hat oder nicht
Das ist eine Möglichkeit und ich hoffe, es hilft. Lassen Sie mich wissen, wenn ich etwas falsch mache.
quelle
startActivityForResult
mit mehreren Absichten. Wenn die Absichten zu Ihrer Aktivität zurückkehren, überprüfen Sie den RequestCode, um festzustellen, welche Absicht zurückgegeben wird, und reagieren entsprechend.provider
kann eine leere Zeichenfolge sein. Ich musste den Scheck ändern(provider != null && !provider.isEmpty())
Hier sind die Schritte:
Schritt 1: Erstellen Sie Dienste, die im Hintergrund ausgeführt werden.
Schritt 2: Sie benötigen auch die folgende Berechtigung in der Manifest-Datei:
Schritt 3: Code schreiben:
Schritt 4: Oder Sie können einfach überprüfen mit:
Schritt 5: Führen Sie Ihre Dienste kontinuierlich aus, um die Verbindung zu überwachen.
quelle
Ja, Sie können unten den Code überprüfen:
quelle
Diese Methode verwendet den LocationManager- Dienst.
Quelle Link -
quelle
GPS wird verwendet, wenn der Benutzer die Verwendung in seinen Einstellungen zugelassen hat.
Sie können dies nicht mehr explizit einschalten, müssen es aber nicht - es ist wirklich eine Datenschutzeinstellung, also möchten Sie es nicht optimieren. Wenn der Benutzer damit einverstanden ist, dass Apps präzise Koordinaten erhalten, wird sie aktiviert. Dann verwendet die Location Manager-API GPS, wenn dies möglich ist.
Wenn Ihre App ohne GPS wirklich nicht nützlich ist und ausgeschaltet ist, können Sie die Einstellungs-App auf dem rechten Bildschirm mit einer Absicht öffnen, damit der Benutzer sie aktivieren kann.
quelle
Dieser Code überprüft den GPS-Status
`
quelle
In Ihren
LocationListener
Implementierungs-onProviderEnabled
undonProviderDisabled
Ereignishandlern. Wenn Sie anrufenrequestLocationUpdates(...)
und GPS auf dem Telefon deaktiviert ist,onProviderDisabled
wird angerufen. Wenn der Benutzer GPS aktiviert,onProviderEnabled
wird aufgerufen.quelle
quelle