2010-10-18 3 views
10

Aufgrund der überwältigenden Benutzerbeschwerden habe ich mich entschieden, den Benutzern meiner Android-Anwendung zu erlauben, sie auf die SD-Karte gemäß the official documentation zu verschieben. Eine Kernfunktion meiner Anwendung erfordert jedoch, dass ein Hintergrunddienst kontinuierlich ausgeführt wird. Wenn jemand, der meine App auf seine SD-Karte verschoben hat, aus irgendeinem Grund seine SD-Karte einlegt, wird mein Hintergrunddienst beendet.Neustart der App auf der SD-Karte, wenn die SD-Karte wieder eingelegt wird

Das ist alles okay für mich, solange ich den Dienst bei der ersten verfügbaren Gelegenheit neu starten kann. Leider, trotz der install-location Anleitung behaupten, ich kann die Broadcast Intent ACTION_EXTERNAL_APPLICATIONS_AVAILABLE zu erkennen, wenn die SD-Karte lokal remounted, die Dokumentation für diese Flagge selbst, this newsgroup discussion, und meine eigenen Tests zeigen, dass diese Sendung nicht an die Anwendungen geliefert wird, die verfügbar werden . Nur Anwendungen, die nicht auf die SD-Karte verschoben wurden, erhalten den Broadcast Intent.

Gibt es eine Möglichkeit, meinen Hintergrunddienst neu zu starten, ohne darauf zu warten, dass der Benutzer meine App öffnet, nachdem die SD-Karte neu installiert wurde?

+0

Hey Alex, ich habe das gleiche Problem. Wie haben Sie es geschafft, Ihren Dienst im Hintergrund neu zu starten? – Spynet

Antwort

7

Nicht zuverlässig. Sie könnten sich in die permission-less broadcast Intents (z. B. ACTION_SCREEN_OFF) einklinken, die schließlich ausgelöst werden und die Kontrolle auf diese Weise erhalten sollte. Wie Frau Hackborn angibt, ist die richtige Antwort für ACTION_EXTERNAL_APPLICATIONS_AVAILABLE zu beheben. Sie können auch sehen, ob eine SD-Karten-bezogene Übertragung auftritt, nachdem externe Anwendungen verfügbar sind (z. B. ACTION_MEDIA_MOUNTED), obwohl ich erwarte, dass all diese Daten bestanden haben, bevor die externe Anwendung verfügbar ist.

Verwandte Themen