2011-10-10 10 views

Respuesta

33

Puede iniciar un intento de opciones para la configuración de ubicación.

Intent gpsOptionsIntent = new Intent( 
    android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS); 
startActivity(gpsOptionsIntent); 
+1

pero esto hará que el bucle en la pantalla de configuración, donde cada vez que vaya de nuevo, se llevará a la pantalla de configuración –

+0

¿Por qué causa un bucle? –

+1

Creo que depende de dónde coloque este código. Si comienzas la actividad cada vez que se reanuda, puedes terminar en un bucle. Pero no es causado por el código en sí. –

5

puede utilizar

Intent intent = new Intent(Settings.ACTION_SECURITY_SETTINGS); 
     startActivity(intent); 

después de comprobar GPS.

fuente completo se puede encontrar HERE o puede referirse a SO ANSWER

+0

cambiar ACTION_LOCATION_SOURCE_SETTINGS en ACTION_SECURITY_SETTINGS – Xenione

+0

Enlace útil a otro SO ¡Respuesta! –

8

LOCATION_MODE será LOCATION_MODE_OFF si el GPS está apagado, que devolverá el valor 0.

int off = Settings.Secure.getInt(getContentResolver(), Settings.Secure.LOCATION_MODE); 
    if(off==0){ 
     Intent onGPS = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); 
     startActivity(onGPS); 
    } 
1

Implementar LocationListner: por lo

@Override 
public void onLocationChanged(Location location) { 

} 

@Override 
public void onStatusChanged(String provider, int status, Bundle extras) { 

} 

@Override 
public void onProviderEnabled(String provider) { 

} 

@Override 
public void onProviderDisabled(String provider) 
{ 
if (provider.equals(LocationManager.GPS_PROVIDER)) 
{ 
    showGPSDiabledDialog(); 
} 
}  

Mostrar el diálogo para abrir Configuración:

public void showGPSDiabledDialog() { 
AlertDialog.Builder builder = new AlertDialog.Builder(this); 
builder.setTitle("GPS Disabled"); 
builder.setMessage("Gps is disabled, in order to use the application properly you need to enable GPS of your device"); 
builder.setPositiveButton("Enable GPS", new DialogInterface.OnClickListener() { 
    @Override 
    public void onClick(DialogInterface dialog, int which) { 
     startActivityForResult(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS), GPS_ENABLE_REQUEST); 
    } 
}).setNegativeButton("No, Just Exit", new DialogInterface.OnClickListener() { 
    @Override 
    public void onClick(DialogInterface dialog, int which) { 

    } 
}); 
mGPSDialog = builder.create(); 
mGPSDialog.show(); 
} 

En su OnCreate llamada Método:

LocationManager mLocationManager = (LocationManager) getSystemService(LOCATION_SERVICE); 
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) 
{ 
    return; 
} 
mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this); 

Y ovveride onActivityResult método para probar si el usuario activado correctamente gps

@Override 

    protected void onActivityResult(int requestCode, int resultCode, Intent data) 
    { 
if (requestCode == GPS_ENABLE_REQUEST) 
{ 
    if (mLocationManager == null) 
    { 
     mLocationManager = (LocationManager) getSystemService(LOCATION_SERVICE); 
    } 

    if (!mLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) 
    { 
     showGPSDiabledDialog(); 
    } 
} 
else 
{ 
    super.onActivityResult(requestCode, resultCode, data); 
} 
} 
Cuestiones relacionadas