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) {
...
}