Poiché l'SDK 23 di Android offre agli utenti la possibilità di negare l'accesso ad alcune funzionalità, volevo aggiornare una delle mie app per richiedere le autorizzazioni come descritto qui: https://developer.android.com/preview/features/runtime-permissions.html.Richiesta di autorizzazione duplicata dopo il cambio di orientamento
In una delle attività ho incorporato uno SupportMapFragment. Per farlo funzionare è necessario disporre dell'autorizzazione WRITE_EXTERNAL_STORAGE
, quindi lo richiedo quando avvio l'attività che risulta in una creazione di una finestra di dialogo di richiesta di autorizzazione.
Ora il problema è che quando la finestra di dialogo è ancora aperta e ruoto il dispositivo, l'attività verrà riavviata e aprirà una nuova finestra di dialogo di richiesta di autorizzazione mentre quella precedente è ancora lì. Il risultato sono due di questi dialoghi uno sopra l'altro e solo uno di essi è utile.
C'è un modo per sbarazzarsi della finestra di dialogo che è stata avviata prima?
Poiché non hai creato il dialogo, non sono a conoscenza di alcun modo per te di sbarazzartene. Metti un 'boolean' nello stato di istanza salvato' Bundle' che indica che la richiesta di autorizzazione è in sospeso e non richiedi nuovamente l'autorizzazione. Oppure, attendi di richiedere l'autorizzazione fino a quando non invii qualche tipo di input dell'utente (ad esempio, toccando l'elemento della barra delle azioni che lancia il 'SupportMapFragment'), nel qual caso dovresti essere sicuro, poiché l'utente non può toccare di nuovo quell'elemento mentre la finestra di dialogo è visibile. – CommonsWare
Sì, è così. Non pensavo che sarebbe stata un'opzione in quanto la "vecchia" finestra di dialogo sarebbe stata legata solo alla "vecchia" attività, ma l'ho appena provata e il risultato è stato ricevuto dalla "nuova" attività. – Thorben