studio remove programacion móviles libro desarrollo desarrollar curso bar aprende aplicaciones android android-studio suppress-warnings runtime-permissions

remove - programacion android pdf 2018



Android Studio: eliminar la advertencia de excepción de seguridad (3)

Estoy obteniendo la ubicación del usuario a través de

Location location = LocationServices.FusedLocationApi.getLastLocation( mGoogleApiClient);

Esta línea de código está dentro de un método y antes de llamar a este método compruebo los permisos de tiempo de ejecución de Android. Solo si el permiso está disponible por parte del usuario, entonces llamo a este método. El código funciona perfectamente.

El problema es que Android Studio todavía muestra un error en esta línea sin reconocer que ya lo he verificado antes de llamar a esta función.

Call requires permission which may be rejected by user: code should explicitly check to see if permission is available (with `checkPermission`) or explicitly handle a potential `SecurityException`

Ahora, ¿cómo elimino esta advertencia? Ya he verificado los permisos y no quiero volver a verificarlos solo para eliminar esta advertencia. Intenté agregar @SuppressWarnings () pero no sé la cadena exacta para pasar a esto. @SuppressWarnings ({"all"}) funciona, pero obviamente no se recomienda.

¿Cómo elimino esta advertencia?

EDITAR 1: Este es mi código exacto -

private void checkPermissions() { if (ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) getLocation(); //Method called if I have permission } private void getLocation() { //Android studio shows warning at this line. Location location = LocationServices.FusedLocationApi.getLastLocation( mGoogleApiClient); }

Pero si pongo la verificación de permisos dentro del método getLocation (), la advertencia desaparece. @SuppressWarnings ({"MissingPermission"}) no funcionó.

EDIT 2: descubrí que la única forma de suprimir la advertencia son:

Agregar este comentario encima de ese fragmento de código en particular:

//noinspection ResourceType

o agregando esto -

@SuppressWarnings({"ResourceType"})


Está buscando (actualizado para mejorar la claridad):

@Override @SuppressWarnings({"MissingPermission"}) public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { if (LOCATION_REQUEST_CODE == requestCode) { if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { lastLocation = LocationServices.FusedLocationApi.getLastLocation(googleApiClient); } }

EDITADO:

La regla correcta de pelusa es MissingPermission , pero parece haber un error que algunas personas lo extravían .

Por lo tanto, pruebe @SuppressWarnings ({"ResourceType"}) también.


Si desea ignorar esta advertencia de pelusa, puede hacer esto en línea:

//noinspection MissingPermission Location lastLocation = FusedLocationApi.getLastLocation(locationClient);

o a nivel de método:

@SuppressWarnings({"MissingPermission"}) public void toggleGPS(boolean enableGPS) { ... }


puedes usar Android Studio Inspection para generar @SuppressWarnings({"MissingPermission"}) para tu método o clase