Griff Berechtigungen ändern, während in der app
Ich bin eine harte Zeit zu verstehen, den richtigen Weg zu handle ein Benutzer das ändern einer Berechtigung, während die app noch läuft im hintergrund.
In meiner app habe ich eine Lage Klasse, Register Speicherort ändert und wenn sich die Lage ändert den status an einen server gesendet. Doch diese läuft im hintergrund.
Wenn meine app gestartet wird ich überprüfen, mit dem Benutzer, wenn seine ok, um die Ortungsdienste nutzen und wenn ja, habe ich, gehen mit dem Aufbau, Klasse. Jedoch kann der Benutzer den hintergrund meiner app und gehen Sie in die Einstellungen und entfernen Sie diese Berechtigung. Ich kann und werde sicherlich prüfen, dass die Berechtigung aktiviert ist, in meiner Lage-Klasse, bevor Sie Fragen, für eine Position aus dem location-service, einen Krach zu vermeiden. Jedoch bin ich nicht in einer Aktivität, wenn eine Lage kommt, so bin ich nicht sicher, wie Sie Sie auffordern, dass Sie meine app "Ortungsdienste".
EDIT:
Scheint es, dass android startet Ihre app, wenn eine Berechtigung widerrufen worden ist, in den Einstellungen. Ich habe jedoch bestätigt, dass ab sofort android NICHT starten Sie Ihre app, wenn eine Erlaubnis erteilt wurde, obwohl die Einstellungen.
- Konsultieren Sie dieses. inthecheesefactory.com/blog/...
- Nur true, wenn eine Berechtigung widerrufen wird, nicht gewährt. Sehen Sie auf Bearbeiten.
- android startet Ihre app, wenn eine Berechtigung widerrufen wurde ... ist dieses Verhalten irgendwo dokumentiert, die von Android?
- Android nicht Neustart, sondern tötet die laufende Anwendung, wenn eine Berechtigung widerrufen wird. Aber auf einem Samsung Gerät, habe ich gemerkt, dass es "Neustarts" the running app und verursacht einen Absturz.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe irgendwo gelesen, dass die app getötet wird, wenn der Benutzer ändert die Berechtigungen auf Android-M-so können Sie sicher sein, dass Sie diese nicht ändern, während Ihre app ausgeführt wird. Es wird getötet, wenn diese änderungen.
Als Referenz, überprüfen Sie dieses video: https://www.youtube.com/watch?v=f17qe9vZ8RM
Erheben
Notification
, warnt die Benutzer, dass die app nicht seine vorgesehene Arbeit ohne die Erlaubnis widerrufen. DieNotification
Band in eineActivity
über einePendingIntent
wo die Benutzer werden in der Lage zu gewähren, die Erlaubnis.START_STICKY
oderSTART_REDELIVER_INTENT
. Dann, Ihrem service merkt, dass es fehlt die Genehmigung, und Sie müssen etwas tun, wie das, was ich vorgeschlagen, in meiner Antwort.Zusammen mit CommonsWare Vorschlag haben, können Sie die onProviderDisabled() zu wissen, welche provider (gps, network) wurde deaktiviert und entsprechend requestLocationUpdate() für die, die noch aktiviert ist. Wenn beide deaktiviert sind, sehen, wenn Sie mindestens Zelle Lage ist nützlich für Ihre app. Wenn dem so ist, kannst du die Zelle Lage, zumindest bis der Benutzer sehen, die Benachrichtigung, und aktivieren Sie die Berechtigung.Verwenden PhoneStateListener zu tun.