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.
- ¿Se puede ampliar el tamaño de la superposición con el mapa de google en android?
- ¿De dónde viene la ubicación y la ubicación actual de Bestest? En Android Dev Guide (Obtención de la ubicación del usuario)
- Lista de ordenación de los puntos lon \ lat, comience con los puntos más cercanos
- Accede al GPS en Android desde C ++
- LocationListener funciona en el emulador, no en el teléfono
- Android cómo detener gps
- ¿Cómo puedo obtener la distancia entre dos puntos por latlng?
- Cómo crear mapas que detectan la ubicación automática en React-Native
- A-GPS, restablecimiento de GPS y sendExtraCommand
- Problema de Android para averiguar la última corrección GPS reciente
- Mover marcador con gps en google map android
- Android: LocationManager vs Servicios de Google Play
- Android gps proveedor y gps icono
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.
- los elementos del lugar de visualización de la cuadrícula de Android de derecha a izquierda
- ¿Cómo puedo forzar globalmente la orientación de la pantalla en Android?