ubicación ubicacion servicio remotamente quitar icono google fotos encontrar dispositivo desde desactivar con como activar android gps location-services

android - servicio - fotos con ubicacion gps



¿Cómo habilitar el acceso a la ubicación mediante programación en Android? (4)

Estoy trabajando en la aplicación de Android relacionada con el mapa y necesito verificar si el acceso a la ubicación está habilitado o no en el desarrollo del lado del cliente si los servicios de ubicación no están habilitados muestran el mensaje de diálogo.

¿Cómo habilitar el "Acceso a la ubicación" mediante programación en Android?


Con la actualización reciente de Marshmallow, incluso cuando la configuración de Ubicación esté activada, su aplicación requerirá pedir explícitamente permiso. La forma recomendada de hacerlo es mostrar la sección Permisos de su aplicación, donde 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 anule el método onRequestPermissionsResult siguiente manera:

@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 averiguar qué proveedor (es) de ubicación están habilitados. Si ninguno está habilitado, puede solicitar un diálogo para cambiar la configuración desde dentro de la aplicación.


Puede probar estos métodos a continuación:

Para verificar 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; }

Diálogo de alerta si el código anterior devuelve falso:

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 usar 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(); }


Use el código a continuación para verificar. Si está deshabilitado, se generará el 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(); }