2015-09-22 9 views
12

erhält Anwendung erhält Broadcast oder jede Art von Alarm, wenn seine Berechtigung Einstellung von Einstellungen geändert wird? Ich habe ein Szenario, in dem wir eine Art Protokollierung starten, wenn die Anwendung startet und LOCATION GROUP-Berechtigungen hat. Aber wenn Benutzer diese Berechtigung widerrufen, stürzt unsere Anwendung ab. Keine Möglichkeit, die Protokollierung zu stoppen, wenn der Benutzer die Protokollierung abbricht. Diese Protokollierung stammt aus der Bibliothek von Drittanbietern, daher können wir dazwischen auch keine Überprüfung der Zugriffsrechte vornehmen.Broadcast Aktion auf Erlaubnis Änderung in android M

+0

Es gibt keine Broadcasts, alles, was Sie tun können, ist zu überprüfen, ob die Berechtigungen gewährt wurden oder nicht – tyczj

+1

Das ist ein bisschen suxors, besonders wenn Sie einen Dienst haben, der im Hintergrund mit einem * erforderlich * ausgeführt wird, aufgefordert und genehmigt Erlaubnis, aber jemand mucks w/Berechtigungen und leugnet es * während * es läuft. Ohne ein Ereignis zu erfahren, dass die Berechtigung geändert wurde, scheint der Dienst normal weiter zu laufen. Es muss der naiv empfohlenen Praxis folgen, nach Berechtigungen für jeden Aufruf der bereits genehmigten Berechtigung zu testen. Es wäre besser, ein Ereignis abzufangen und den Dienst anzuhalten und mit einer erstklassigen Benachrichtigung darauf hinzuweisen, dass die Berechtigung zum Fortsetzen erforderlich ist. – swooby

Antwort

18

empfängt die Anwendung Broadcast oder irgendeine Art von Warnung, wenn ihre Berechtigungseinstellung von Settings geändert wird?

Nicht das ist dokumentiert.

Wenn der Benutzer eine Berechtigung widerruft, die Ihnen zuvor erteilt wurde, wird Ihr Prozess beendet. Wenn Sie das nächste Mal ausführen, werden Sie im Zuge der Berechtigungensprüfung die Berechtigungsänderung erfahren. Wenn der Benutzer eine Berechtigung erteilt, die zuvor verweigert wurde, ist Ihr Prozess nicht beendet. Wenn Sie jedoch erneut checkSelfPermission() anrufen, werden Sie feststellen, dass Sie Zugriff haben.

Die Lektion hier ist: Cache-Lookup-Ergebnisse nicht zwischenspeichern. Sie scheinen ziemlich billig Anrufe zu sein, also rufen Sie einfach checkSelfPermission() nach Bedarf.

Wenn Ihr targetSdkVersion unter 23 ist, wird checkSelfPermission() nicht helfen, aber Sie sollten falsche Daten werden immer eher als ein SecurityException. Im Fall von Standortkorrekturen sollten Sie keine Standorte abrufen, wenn der Benutzer Ihre Standortzugriffsberechtigungen widerrufen hat.

Aber wenn der Benutzer diese Berechtigung zwischen unserer Anwendung widerruft stürzt

ich kein Szenario versucht haben, in dem ein Hintergrunddienst ausgeführt wird und der Benutzer widerruft eine Genehmigung. Es sollte Ihren Prozess beenden, und so würden Sie über die Erlaubnis ändern, wenn Ihr Dienst für das nächste Mal ausgeführt wird. Wenn Sie feststellen, dass Ihr Prozess nicht beendet ist, kann dies ein Zeichen für einen Fehler in Android sein.

+0

Eigentlich kann ich die Berechtigung aus den Einstellungen/App widerrufen und dann wieder zu meiner App wechseln. –

+0

Ich habe die Berechtigung widerrufen, und jetzt, wenn ich ps mache, sehe ich den Prozess nicht, aber meine Anwendung ist immer noch in der Liste der letzten Apps und ich kann sie von dort starten. Kann ich es auch aus der Liste der letzten Apps entfernen? –

+0

@SumitShrivastava: "aber meine Anwendung ist immer noch in der letzten Liste der Apps" - sicher. Auf Android 5.0 und höher wird es für immer da sein. "Kann ich es auch aus der Liste der letzten Apps entfernen?" - nicht, wenn der Benutzer die Berechtigungen in den Einstellungen wechselt. Bitte erläutern Sie, welches Problem durch Ihre App im Bildschirm "Übersicht/Zuletzt Apps" verursacht wird. – CommonsWare

Verwandte Themen