40

ich die Position des Benutzers immer durchAndroid Studio - entfernen Sicherheitsausnahme Warnung

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

Diese Codezeile innerhalb einer Methode ist und vor dem Aufruf dieser Methode I für Android Laufzeit Berechtigungen überprüfen Sie. Nur wenn die Berechtigung vom Benutzer verfügbar ist, rufe ich diese Methode auf. Code funktioniert perfekt.

Das Problem ist, dass Android Studio immer noch einen Fehler in dieser Zeile zeigt nicht erkennen, dass ich bereits überprüft habe, bevor diese Funktion aufgerufen wird.

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` 

Wie entferne ich diese Warnung? Ich habe bereits nach Berechtigungen gesucht und möchte diese nicht mehr überprüfen, um diese Warnung zu entfernen. Ich habe versucht, @SuppressWarnings() hinzuzufügen, aber kenne nicht die genaue Zeichenfolge, um in diese zu gelangen. @SuppressWarnings ({"all"}) funktioniert, aber es ist offensichtlich nicht zu empfehlen.

Wie entferne ich diese Warnung?

EDIT 1: Das ist mein genauen Code -

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

Aber wenn ich die Berechtigungsprüfung innerhalb getLocation() Methode setzen dann verschwindet die Warnung. @SuppressWarnings ({"MissingPermission"}) hat nicht funktioniert.

EDIT 2: ich entdeckt habe, dass der einzige Weg, um die Warnung zu unterdrücken -

Hinzufügen diesen Kommentar auf diesem bestimmten Stück Code - die

//noinspection ResourceType 

oder die Hinzufügen -

@SuppressWarnings({"ResourceType"}) 
+0

Wenn meine bearbeitete Antwort funktioniert, markieren Sie sie bitte als akzeptiert. – Renascienza

Antwort

108

Sie suchen (aktualisiert Klarheit zu verbessern):

@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); 


     } 
} 

EDITED:

Die richtige Flusen Regel ist MissingPermission, aber es scheint ein Fehler zu sein, dass es für manche Leute verlegen.

Versuchen Sie also bitte @SuppressWarnings ({"ResourceType"}), auch.

+2

Es funktioniert nicht. –

+0

Bist du sicher? Ich aktualisierte meine Antwort zur besten Klärung. Dieser Code wird analysiert und kompiliert auf meinem Android Studio (2.0-Preview 7) ohne Warnung, von Gradle oder Flusen. – Renascienza

+0

Sie haben die Berechtigung auch in Ihrer Manifestdatei deklariert, richtig? – Renascienza

6

Wenn Sie schauen, diese Flusen Warnung zu ignorieren, können Sie entweder tun, um diese inline:

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

oder bei Verfahren Ebene:

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

Sie können Android Studio Inspection nutzen zu generieren @SuppressWarnings({"MissingPermission"}) Für Ihre Methode oder Klasse

android studio missing permission check

Verwandte Themen