Da das Android SDK 23 Benutzern die Möglichkeit gibt, Apps den Zugriff auf bestimmte Funktionen zu verweigern, wollte ich eine meiner Apps aktualisieren, um Berechtigungen wie hier beschrieben anzufordern: https://developer.android.com/preview/features/runtime-permissions.html.Doppelte Erlaubnisanfrage nach Orientierungsänderung
In einer der Aktivitäten bette ich eine ein. Damit es funktioniert, benötigen Sie die Berechtigung WRITE_EXTERNAL_STORAGE
, also fordere ich sie an, wenn ich die Aktivität starte, was zur Erstellung eines Berechtigungsanforderungsdialogs führt.
Jetzt ist das Problem, dass, wenn der Dialog noch geöffnet ist und ich das Gerät rotiere, die Aktivität neu gestartet wird und einen neuen Erlaubnisanforderungsdialog öffnet, während der alte noch da ist. Das Ergebnis sind zwei dieser Dialoge übereinander und nur eines davon ist nützlich.
Gibt es eine Möglichkeit, den Dialog, der zuerst gestartet wurde, loszuwerden?
Da Sie den Dialog nicht erstellt haben, ist mir keine Möglichkeit bekannt, ihn zu entfernen. Setzen Sie einen 'boolean' in Ihren gespeicherten Instanzzustand' Bundle', der angibt, dass die Berechtigungsanforderung aussteht, und fordern Sie die Berechtigung nicht erneut an. Oder warten Sie, bis Sie die Erlaubnis erhalten, bis Sie eine Art von Benutzereingabe erhalten (z. B. durch Antippen des Aktionsleistenelements, das das 'SupportMapFragment' startet). In diesem Fall sollten Sie sicher sein, da der Benutzer das Element während des Dialogs nicht erneut antippen kann ist sichtbar. – CommonsWare
Yup, das macht es. Ich glaube nicht, dass dies eine Option wäre, da der "alte" Dialog nur an die "alte" Aktivität gebunden wäre, aber ich habe es gerade versucht und das Ergebnis wird von der "neuen" Aktivität empfangen. – Thorben