onRequestPermissionsResult wird unendlich aufgerufen

8

Ich verwende eine Laufzeitberechtigungsanfrage, aber es gibt ein Problem damit. Es scheint, dass die Callback-Methode onRequestPermissionsResult unendlich aufgerufen wird. Wenn der Benutzer die Anfrage ablehnt, reagiert die App nicht mehr.

Der Berechtigungsdialog erscheint jedes Mal, wenn der Benutzer auf "verweigern" klickt. Nur durch Klicken auf "nie mehr fragen" wird es nicht wieder angezeigt. * Wenn Sie auf "Zulassen" drücken, funktioniert es problemlos - ohne Probleme.

Gibt es eine Möglichkeit, die aufgerufene Methode nach einer bestimmten Zeit abzubrechen?

%Vor%     
BVtp 15.08.2016, 10:32
quelle

1 Antwort

13

Das Problem hier ist, wie Sie in den Kommentaren erwähnt haben, dass der Code, der den Anfrage-Erlaubnis-Dialog auslöst, in der Methode onResume aufgerufen wird.

Wenn die Berechtigung zum Anfordern des Dialogfelds endet, ruft die Laufzeitumgebung onResume für die Aktivität auf, die sie ausgelöst hat, genau wie jede Aktivität im Dialogfeld.

In Ihrem Fall würde die Ablehnung der Berechtigung einen Aufruf von onResume erneut auslösen, was wiederum den Dialog anzeigen und einen endlosen Zyklus verursachen würde.

Durch das Verschieben dieser Berechtigungsanforderung in onCreate oder einen anderen Flow wird Ihr Problem gelöst.

    
Gil Moshayof 15.08.2016, 11:38
quelle

Tags und Links