Cómo habilitar el acceso a la ubicación mediante programación en android?

Estoy trabajando en la aplicación relacionada con el mapa android y tengo que comprobar el acceso a la ubicación habilitar o no en el desarrollo del lado del cliente si los servicios de ubicación no está habilitado mostrar el mensaje de diálogo.

Cómo habilitar el "acceso a la ubicación" Programatically in android? Por favor, dame alguna sugerencia y cualquier fuente de ejemplo.

Utilice debajo del código para comprobar. Si está deshabilitado, se generará un cuadro de diálogo

public void statusCheck() { final LocationManager manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); if (!manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { buildAlertMessageNoGps(); } } private void buildAlertMessageNoGps() { final AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setMessage("Your GPS seems to be disabled, do you want to enable it?") .setCancelable(false) .setPositiveButton("Yes", new DialogInterface.OnClickListener() { public void onClick(final DialogInterface dialog, final int id) { startActivity(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS)); } }) .setNegativeButton("No", new DialogInterface.OnClickListener() { public void onClick(final DialogInterface dialog, final int id) { dialog.cancel(); } }); final AlertDialog alert = builder.create(); alert.show(); } 

Puede probar estos métodos a continuación:

Para comprobar si el GPS y el proveedor de red están habilitados:

 public boolean canGetLocation() { boolean result = true; LocationManager lm; boolean gps_enabled = false; boolean network_enabled = false; if (lm == null) lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); // exceptions will be thrown if provider is not permitted. try { gps_enabled = lm.isProviderEnabled(LocationManager.GPS_PROVIDER); } catch (Exception ex) { } try { network_enabled = lm .isProviderEnabled(LocationManager.NETWORK_PROVIDER); } catch (Exception ex) { } if (gps_enabled == false || network_enabled == false) { result = false; } else { result = true; } return result; } 

Alert Dialog si el código anterior devuelve false:

 public void showSettingsAlert() { AlertDialog.Builder alertDialog = new AlertDialog.Builder(this); // Setting Dialog Title alertDialog.setTitle("Error!"); // Setting Dialog Message alertDialog.setMessage("Please "); // On pressing Settings button alertDialog.setPositiveButton( getResources().getString(R.string.button_ok), new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { Intent intent = new Intent( Settings.ACTION_LOCATION_SOURCE_SETTINGS); startActivity(intent); } }); alertDialog.show(); } 

Cómo utilizar los dos métodos anteriores:

 if (canGetLocation() == true) { //DO SOMETHING USEFUL HERE. ALL GPS PROVIDERS ARE CURRENTLY ENABLED } else { //SHOW OUR SETTINGS ALERT, AND LET THE USE TURN ON ALL THE GPS PROVIDERS showSettingsAlert(); } 

acaba de cerrar el siguiente subproceso: ¿Cómo comprobar si los servicios de ubicación están habilitados? Proporciona un buen ejemplo de cómo comprobar si el servicio de ubicación estaba habilitado o no.

Con la reciente actualización de Marshmallow, incluso cuando la configuración de Ubicación esté activada, su aplicación requerirá pedir permiso explícitamente. La forma recomendada de hacerlo es mostrar la sección Permisos de su aplicación en la que el usuario puede alternar el permiso según sea necesario. El fragmento de código para hacer esto es el siguiente:

 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (this.checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { final AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("Location Permission"); builder.setMessage("The app needs location permissions. Please grant this permission to continue using the features of the app."); builder.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { requestPermissions(new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, PERMISSION_REQUEST_COARSE_LOCATION); } }); builder.setNegativeButton(android.R.string.no, null); builder.show(); } } else { LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); boolean isGpsProviderEnabled, isNetworkProviderEnabled; isGpsProviderEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER); isNetworkProviderEnabled = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER); if(!isGpsProviderEnabled && !isNetworkProviderEnabled) { final AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("Location Permission"); builder.setMessage("The app needs location permissions. Please grant this permission to continue using the features of the app."); builder.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); startActivity(intent); } }); builder.setNegativeButton(android.R.string.no, null); builder.show(); } } 

Y sobreescriba el método onRequestPermissionsResult como se muestra a continuación:

 @Override public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) { switch (requestCode) { case PERMISSION_REQUEST_COARSE_LOCATION: { if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { Log.d(TAG, "coarse location permission granted"); } else { Intent intent = new Intent(); intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); Uri uri = Uri.fromParts("package", getPackageName(), null); intent.setData(uri); startActivity(intent); } } } } 

Otro enfoque es que también puede usar SettingsApi para saber qué proveedor (es) de ubicación está habilitado. Si no está activado, puede solicitar un diálogo para cambiar la configuración desde la aplicación.

  • ¿Es posible encontrar otros teléfonos cercanos?
  • Algoritmo / teoría para la eliminación de la fluctuación de posición GPS
  • Método getSupportFragmentManager () no está definido
  • Cómo obtener el número de satélites del objeto Ubicación
  • ¿Cómo funciona getAltitude () de Android GPS Location Works
  • Android: comprueba si el GPS está buscando, tiene una corrección o no está en uso
  • ¿Cómo activar / desactivar los gps y los datos móviles en android mediante programación?
  • Recuperación de # de satélites utilizados en la reparación de gps de Android
  • Convertir latitud y longitud en esri arcGIS MapPoint
  • ¿Cómo conseguir la localización de los gps una vez para el androide de 5 minutos?
  • OnLocationChanged no se llama automáticamente
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.