Mir fällt es schwer, den von Android verwendeten Laufzeitberechtigungsansatz zu verstehen. Für diejenigen, die das lesen, frage ich hier nicht, wie man die Laufzeitberechtigung aufruft. Ich kann ein Erlaubnisdialog zeigen, wenn es nicht bereits gewährt wurde, und es sogar in onRequestPermissionsResult () im Fragment erhalten.
mit diesem Code
%Vor% Ergebnis in onRequestPermissionsResult
Code in accessLocation()
ist
so weit so gut .. Aber was mich stört, ist, dass ich in meiner accessLocation()
Methode einen falschen positiven Fehler in der Zeile bekomme
das sagt
Aufruf erfordert eine Berechtigung, die vom Benutzer abgelehnt werden kann: Code sollte explizit prüfen, ob die Berechtigung verfügbar ist (mit
umgehencheckPermission
) oder explizit mit einem potenziellenSecurityException
Ich weiß, das kommt, wenn du nicht nach einer Erlaubnis suchst. Dieser Fehler tritt auf, sobald ich die Methode mit @SuppressWarnings("MissingPermission")
Ich weiß nicht, wie Entwickler solche Fehler behandeln, wenn sie die Methode mehrfach in ihrer Klasse aufrufen müssen.
entweder muss ich @SuppressWarnings("MissingPermission")
oder? (Ich weiß es nicht)
Angenommen, ich beantrage eine Erlaubnis wie im ersten Codeblock oben & gt; Erlaubnisdialog erscheint & gt; Benutzer erteilt Erlaubnis & gt; Der Ablauf geht zu onRequestPermissionsResult
und wieder schreibe ich Code für den Zugriff auf den Standort, aber das zeigt mir auch einen falsch positiven Fehler für die Überprüfung der Erlaubnis.
Entweder mache ich etwas Schreckliches oder ich denke, ich habe das Erlaubnismodell missverstanden oder es gibt einen Bug mit Flusen (ich glaube wirklich, das ist nicht das Problem) ..
Ich habe bereits diese Stackoverflow-Frage und dieser Studio Bug , aber ich bin nicht zufrieden mit den Antworten dort.
Bitte sagen Sie mir, was mache ich falsch?
Zunächst einmal: Sie machen nichts falsch. Ihr Code wird wie erwartet funktionieren.
Ich würde empfehlen, die Warnung einfach zu unterdrücken, da dies eindeutig falsch ist.
Wenn Sie jedoch die Lint-Anforderungen erfüllen möchten, müssen Sie Ihren Code in das folgende Schema umgestalten
%Vor%Ja, dies führt zu einer doppelten Überprüfung, wenn die Berechtigung nicht früher erteilt wurde. Ja, der resultierende Code ist schlecht zu lesen. Aber die Warnung wird weggehen.
Das Laufzeit-Berechtigungssystem ist schrecklich und wir können nichts dagegen tun.
Tags und Links java android android-permissions