False Positive Lint-Berechtigungsfehler, auch nachdem zur Laufzeit um Erlaubnis gebeten wurde

Ich habe Schwierigkeiten, den von Android verwendeten Ansatz der Laufzeitberechtigung zu verstehen. Für diejenigen, die dies lesen, frage ich hier nicht, wie man die Laufzeitberechtigung aufruft. Ich kann einen Berechtigungsdialog anzeigen, wenn er noch nicht erteilt wurde, und erhalte sogar das Ergebnis in onRequestPermissionsResult () in fragmen

mit diesem Code

 if (ContextCompat.checkSelfPermission(mActivity, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
        FragmentCompat.requestPermissions(this,new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, RQ_GET_LOCATION);
        Log.e("permission", "asking permission");
        return;
    }
   Log.e("permission", "permission already granted");
   accessLocation();

Getting Ergebnis inonRequestPermissionsResult

 @Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults)
{
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);

    switch (requestCode) {
        case RQ_GET_LOCATION:
            if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                Log.e("permission", "onRequestPermissionsResult : permission granted, access location here");
                accessLocation();
            }
            else {
                Log.e("permission", "onRequestPermissionsResult : permission denied");
            }
            break;
    }
}

code insideaccessLocation() ist

 private void accessLocation()
{
    Log.e("permission", "accessing location permission");
    Location mLastLocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);
    if (mLastLocation != null) {
        userDetail.setLat(String.valueOf(mLastLocation.getLatitude()));
        userDetail.setLat(String.valueOf(mLastLocation.getLongitude()));
    }
    else {
        if (!isLocationEnabled()) {
            mShowAlert();
        }
    }
}

So weit, ist es gut. aber was mich stört ist, dass in meinemaccessLocation() Methode Ich erhalte einen falsch-positiven Fehler in der Zeile

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

das sag

Call erfordert eine Berechtigung, die vom Benutzer abgelehnt werden kann: Code sollte explizit prüfen, ob eine Berechtigung verfügbar ist (mitcheckPermission) oder explizit mit einem potentiellen @ umgehSecurityException

Ich weiß, das kommt, wenn Sie nicht auf Erlaubnis prüfen. Dieser Fehler tritt auf, sobald ich die Methode mit @ annotier@SuppressWarnings("MissingPermission")

Ich weiß nicht, wie Entwickler solche Fehler tatsächlich behandeln, wenn sie in ihrer Klasse mehrmals method aufrufen müssen. entweder muss ich @ verwend@SuppressWarnings("MissingPermission") oder ? (ich weiß es nicht

Angenommen, ich fordere eine Erlaubnis an, wie ich es im ersten Codeblock oben tue.> Erlaubnisdialog erscheint.> Benutzer erteilt ErlaubnionRequestPermissionsResult und wieder schreibe ich Code für den Zugriff auf den Standort, aber das zeigt mir auch einen falsch positiven Fehler, wenn ich die Berechtigung nicht überprüfe.

weder mache ich etwas Schreckliches oder ich glaube, ich habe das Erlaubnismodell falsch verstanden oder es gibt einen Fehler mit Flusen (ich glaube WIRKLICH nicht, dass dies das Problem ist) ..

Ich habe schon indiese Stapelüberlauf-Frage unddieses Studio Bug aber mit den antworten bin ich nicht zufrieden.

SO BITTE SAGEN SIE MIR, WAS ICH FALSCH TUN?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage