Ich verwende Android 4.3 Jelly Bean auf einem Samsung Galaxy SIII.
Ich versuche herauszufinden, wie Anwendungen wie Skype so konfiguriert werden können, dass sie automatisch gestartet werden, sobald das System den Bootstrapping-Prozess durchlaufen hat, das Booten abgeschlossen und gestartet wurde. Ich möchte dies über eine Anwendung tun können, die möglichst kein Rooten meines Geräts erfordert. Wenn ich mir die Informationen zu Skype im standardmäßigen Anwendungsmanager ansehe, sehe ich, dass die Skype-Anwendung die Berechtigung „Beim Start ausführen“ verwendet, was bedeutet, dass es möglich sein sollte, diese App so zu konfigurieren, dass sie beim Start ausgeführt wird, aber ich konnte weder auf diesem Bildschirm noch in den Skype-Anwendungseinstellungen ein Kontrollkästchen dafür finden. Eine ähnliche Situation kann auch bei anderen Apps auftreten.
Dieser Beitrag befasst sich mit dem Verhindern des Starts von Apps und erwähnt nützliche Anwendungen von Drittanbietern wie den Autorun Manager , der anscheinend hauptsächlich damit beschäftigt ist, Anwendungen am Starten und Neustarten zu hindern, nachdem sie beendet wurden, oder zumindest entnehme ich dies der Beschreibung der App im Play Store und Autostarts , die auslösen, die verwalten, welche Apps durch Ereignisse ausgelöst werden.
Hier also meine Fragen:
Warum gibt es auf Android keine vorinstallierte native Startup Manager-App, um zu steuern, welche Apps standardmäßig gestartet werden sollen und welche nicht?
Wenn Skype die Berechtigung "Beim Start ausführen" erfordert und es im Betriebssystem oder in der App keinen Platz gibt, um eine solche App für den automatischen Start zu konfigurieren, was bewirkt diese Berechtigung dann?
Danke.
Es wäre wirklich schön, einen Startup-Manager mit dem System zu haben, der den Benutzer entscheiden lässt, was gestartet werden soll und was nicht. Dem ist aber nicht so, es funktioniert etwas anders:
Apps mit der Berechtigung „Beim Start ausführen“ können einen „Zuhörer“ für die BOOT_COMPLETED
Übertragung registrieren – die das System immer bei diesem Ereignis ausgibt. Auf diese Weise werden sie über dieses Ereignis benachrichtigt und können entscheiden, eine Aktion durchzuführen. Das könnte ein Hintergrunddienst sein, der weiterläuft – aber sie könnten auch etwas Kleines tun und sich dann wieder beenden.
IMHO Skype hat eine Option, um Sie nach dem Booten automatisch anzumelden, sodass Sie für eingehende Anrufe verfügbar sind. AFAIR ist das sogar das Standardverhalten der App. Wenn dafür kein Hintergrunddienst läuft, kann es sich dann für Cloud-Messaging registrieren – was es wiederum „aufwecken“ würde, um eingehende Anrufe zu bearbeiten. Auf diese Weise musste die App nicht dauerhaft im Hintergrund laufen. Allerdings deklariert die App auch die com.google.android.c2dm.permission.RECEIVE
Berechtigung (C2DM steht für „Cloud 2 Device Messaging“, was jetzt GCM = Google Cloud Messaging ist), also könnte dies die Erklärung sein.
AKTUALISIEREN:
Andrew T. bestätigte dies in den Kommentaren:
Ich habe schließlich das Android-Manifest von Skype überprüft, indem ich seine APK-Datei (
base.apk
) geöffnet habe, und tatsächlich gibt es einencom.skype.android.push.DeviceBootReceiver
mit Absichtsfilterandroid.intent.action.BOOT_COMPLETED
. Ich habe jedoch nicht untersucht, was es tut. Außerdem habe ich vergessen, dass der Broadcast-Empfänger nicht unter dem laufenden Prozess aufgeführt ist, wie John erwähnt hat (ich kann bestätigen, dass dies ein Entwickler ist). Du liegst also richtig mit deiner Vermutung :)
com.google.android.c2dm.permission.RECEIVE
. Da Skype unter meiner Vermutung nicht aufgeführt RUNNING
ist, dass kein Prozess oder Dienst im Hintergrund läuft, sondern die Berechtigung "Beim Start ausführen" (android.permission.RECEIVE_BOOT_COMPLETED) Skype erlaubt, einen Broadcast-Empfänger für C2DM zu registrieren, und wann Wenn die C2DM-Nachricht vom Server eintrifft, startet der Broadcast-Empfänger die Skype-Aktivität.RUNNING
Meine Vermutung ist, dass Broadcast-Empfänger im Anwendungsmanager
nicht aufgeführt sind , da diese von einem anderen Systemdienst (dessen Name mir gerade nicht einfällt) gestartet werden. Korrigieren Sie mich, wenn ich falsch liege. Danke.base.apk
) geöffnet habe, und tatsächlich gibt es einen com.skype.android.push.DeviceBootReceiver
mit Absichtsfilter android.intent.action.BOOT_COMPLETED
. Ich habe jedoch nicht untersucht, was es tut. Außerdem habe ich vergessen, dass der Broadcast-Empfänger nicht unter dem laufenden Prozess aufgeführt ist, wie John erwähnt hat (ich kann bestätigen, dass dies ein Entwickler ist). Du liegst also richtig mit deiner Vermutung :)
Andreas T.
John Sonderson
John Sonderson
Andreas T.
John Sonderson
Joaquin Iurchuk
John Sonderson