Bonito fragmento de código. Eliminé @SuppressWarnings y no recibo ninguna advertencia ... ¿tal vez son innecesarias?
abarcan el
30
Aconsejaría declarar alerttoda la actividad para que pueda descartarla en onDestroy para evitar una pérdida de memoria ( if(alert != null) { alert.dismiss(); })
Cameron
¿Y qué pasa si estoy ahorrando batería? ¿Funcionará?
Prakhar Mohan Srivastava
3
@PrakharMohanSrivastava si la configuración de ubicación está en Ahorro de energía, esto será falso, sin embargo, LocationManager.NETWORK_PROVIDERserá verdadero
Tim
129
En Android, podemos verificar fácilmente si el GPS está habilitado en el dispositivo o no usando LocationManager.
Aquí hay un programa simple para verificar.
GPS habilitado o no: - Agregue la siguiente línea de permiso de usuario en AndroidManifest.xml para acceder a la ubicación
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();}}
No pasa nada cuando pruebo tu función. Sin embargo, no obtuve errores cuando lo pruebo.
Airikr
¡Lo tengo funcionando! :) Muchas gracias pero no puedo votar hasta que haya editado su respuesta: /
Airikr
3
no hay problema @Erik Edgren obtienes una solución, así que estoy feliz ¡DISFRUTA ...!
@ user647826: ¡Excelente! Funciona bien Me salvaste la noche
Addi
1
Un consejo: declara alerttoda la actividad para que puedas descartarla onDestroy()para evitar una pérdida de memoria ( if(alert != null) { alert.dismiss(); })
naXa
38
sí, la configuración del GPS ya no se puede cambiar programáticamente, ya que son configuraciones de privacidad y tenemos que verificar si están activadas o no desde el programa y manejarlas si no están activadas. puede notificar al usuario que el GPS está apagado y usar algo como esto para mostrar la pantalla de configuración al usuario si lo desea.
Verifique si hay proveedores de ubicación disponibles
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}
Si el usuario desea habilitar el GPS, puede mostrar la pantalla de configuración de esta manera.
Y en su onActivityResult puede ver si el usuario lo ha habilitado o no
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}}}
Esa es una forma de hacerlo y espero que ayude. Avísame si estoy haciendo algo mal.
hola, tengo un problema similar ... ¿puedes explicar brevemente qué es el "REQUEST_CODE" y para qué sirve?
Poeschlorn
2
@poeschlorn Anna publicó el enlace que se detalla a continuación. En términos simples, RequestCode le permite usar startActivityForResultcon múltiples intentos. Cuando los intentos regresan a su actividad, usted verifica el RequestCode para ver qué intento regresa y responde en consecuencia.
Farray
2
El providerpuede ser una cadena vacía. Tuve que cambiar el cheque a(provider != null && !provider.isEmpty())
Pawan
Como el proveedor puede ser "", considere usar int mode = Settings.Secure.getInt (getContentResolver (), Settings.Secure.LOCATION_MODE); Si el modo = 0 GPS está apagado
Levon Petrosyan
31
Aquí están los pasos:
Paso 1: crear servicios que se ejecutan en segundo plano.
Paso 2: También necesita el siguiente permiso en el archivo de manifiesto:
android.permission.ACCESS_FINE_LOCATION
Paso 3: escribe el código:
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();
Se usará el GPS si el usuario ha permitido que se use en su configuración.
Ya no puede activarlo explícitamente, pero no tiene que hacerlo: es una configuración de privacidad realmente, por lo que no desea modificarlo. Si el usuario está de acuerdo con que las aplicaciones obtengan coordenadas precisas, estará activado. Luego, la API del administrador de ubicación usará GPS si puede.
Si su aplicación realmente no es útil sin GPS, y está desactivada, puede abrir la aplicación de configuración en la pantalla derecha con una intención para que el usuario pueda habilitarla.
En sus controladores de LocationListenerimplementación onProviderEnabledy onProviderDisabledeventos. Cuando llame requestLocationUpdates(...), si el GPS está deshabilitado en el teléfono, onProviderDisabledse le llamará; si el usuario habilita el GPS, onProviderEnabledse le llamará.
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()}
Respuestas:
La mejor manera parece ser la siguiente:
fuente
alert
toda la actividad para que pueda descartarla en onDestroy para evitar una pérdida de memoria (if(alert != null) { alert.dismiss(); }
)LocationManager.NETWORK_PROVIDER
será verdaderoEn Android, podemos verificar fácilmente si el GPS está habilitado en el dispositivo o no usando LocationManager.
Aquí hay un programa simple para verificar.
GPS habilitado o no: - Agregue la siguiente línea de permiso de usuario en AndroidManifest.xml para acceder a la ubicación
Su archivo de clase de Java debe ser
La salida se verá como
fuente
alert
toda la actividad para que puedas descartarlaonDestroy()
para evitar una pérdida de memoria (if(alert != null) { alert.dismiss(); }
)sí, la configuración del GPS ya no se puede cambiar programáticamente, ya que son configuraciones de privacidad y tenemos que verificar si están activadas o no desde el programa y manejarlas si no están activadas. puede notificar al usuario que el GPS está apagado y usar algo como esto para mostrar la pantalla de configuración al usuario si lo desea.
Verifique si hay proveedores de ubicación disponibles
Si el usuario desea habilitar el GPS, puede mostrar la pantalla de configuración de esta manera.
Y en su onActivityResult puede ver si el usuario lo ha habilitado o no
Esa es una forma de hacerlo y espero que ayude. Avísame si estoy haciendo algo mal.
fuente
startActivityForResult
con múltiples intentos. Cuando los intentos regresan a su actividad, usted verifica el RequestCode para ver qué intento regresa y responde en consecuencia.provider
puede ser una cadena vacía. Tuve que cambiar el cheque a(provider != null && !provider.isEmpty())
Aquí están los pasos:
Paso 1: crear servicios que se ejecutan en segundo plano.
Paso 2: También necesita el siguiente permiso en el archivo de manifiesto:
Paso 3: escribe el código:
Paso 4: O simplemente puedes verificar usando:
Paso 5: Ejecute sus servicios continuamente para monitorear la conexión.
fuente
Sí, puedes verificar a continuación el código:
fuente
Este método usará el servicio LocationManager .
Enlace fuente
fuente
Se usará el GPS si el usuario ha permitido que se use en su configuración.
Ya no puede activarlo explícitamente, pero no tiene que hacerlo: es una configuración de privacidad realmente, por lo que no desea modificarlo. Si el usuario está de acuerdo con que las aplicaciones obtengan coordenadas precisas, estará activado. Luego, la API del administrador de ubicación usará GPS si puede.
Si su aplicación realmente no es útil sin GPS, y está desactivada, puede abrir la aplicación de configuración en la pantalla derecha con una intención para que el usuario pueda habilitarla.
fuente
Este código comprueba el estado del GPS
``
fuente
En sus controladores de
LocationListener
implementaciónonProviderEnabled
yonProviderDisabled
eventos. Cuando llamerequestLocationUpdates(...)
, si el GPS está deshabilitado en el teléfono,onProviderDisabled
se le llamará; si el usuario habilita el GPS,onProviderEnabled
se le llamará.fuente
fuente