Apps werden auf Android 9.0 Pie nicht automatisch gestartet

Ich habe einen billigen Blackview BV5900 gekauft, der auf Android 9.0 läuft (ich nehme an, ein benutzerdefiniertes ROM), da ich zu Testzwecken etwas Robustes und mit langer Akkulaufzeit brauchte. Ich habe Mühe, Antworten darauf zu finden, warum Apps nicht automatisch starten, wenn sie sollen. Die fragliche App ist in erster Linie Grandstream Wave - Video, das effektiv ein SIP-Client ist. Auf einem alten Samsung Galaxy V6 startet es automatisch.

Ich habe verschiedene Autostart-Apps ausprobiert, um zu sehen, ob ich sie umgehen könnte, aber es scheint, dass sie beim Booten nicht so gut geladen werden, sodass sie nicht die Aufgabe erfüllen, die sie ausführen sollen. Ich habe mit dem Hersteller Kontakt aufgenommen und die Antwort ist, dass es einfach nicht geht.

Da es sich um ein Testtelefon handelt, bin ich ziemlich glücklich, es zu rooten, obwohl ich völlig neu bei Android bin, bin ich mir sicher, dass ich genug Informationen finden werde, um mit ein bisschen Googeln anzufangen.

Was ich suche, ist ein bisschen Hilfe, wonach man suchen und wie man es findet. Soweit ich weiß, sucht die App nach einer BOOT_COMPLETEArt Nachricht, also vermute ich, dass sie irgendwo deaktiviert ist? Bei allen Antworten gehen Sie bitte davon aus, dass ich nichts weiß, Sie werden Recht haben.

BEARBEITEN 11. Mai 2020

Versuchte den hier angeforderten Shell-Befehl - keine Freude. Ergebnis von Shell unten. Sie sind sich nicht sicher, ob dies nur bedeutet, dass ich nicht über ausreichende Berechtigungen zum Ausführen verfüge oder dass es in irgendeiner Weise deaktiviert ist?

Broadcasting: Intent { act=android.intent.action.BOOT_COMPLETED flg=0x400000 pkg=com.grandstream.wave }
Security exception: Permission Denial: not allowed to send broadcast android.intent.action.BOOT_COMPLETED from pid=5834, uid=2000

java.lang.SecurityException: Permission Denial: not allowed to send broadcast android.intent.action.BOOT_COMPLETED from pid=5834, uid=2000
    at com.android.server.am.ActivityManagerService.broadcastIntentLocked(ActivityManagerService.java:21774)
    at com.android.server.am.ActivityManagerService.broadcastIntent(ActivityManagerService.java:22411)
    at com.android.server.am.ActivityManagerShellCommand.runSendBroadcast(ActivityManagerShellCommand.java:690)
    at com.android.server.am.ActivityManagerShellCommand.onCommand(ActivityManagerShellCommand.java:174)
    at android.os.ShellCommand.exec(ShellCommand.java:103)
    at com.android.server.am.ActivityManagerService.onShellCommand(ActivityManagerService.java:16434)
    at android.os.Binder.shellCommand(Binder.java:634) at android.os.Binder.onTransact(Binder.java:532)
    at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:3551)
    at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:3397)
    at android.os.Binder.execTransact(Binder.java:731)
BOOT_COMPLETED ist nicht das einzige, was erforderlich ist, damit eine App im Hintergrund ausgeführt wird. Kann helfen: Deaktivieren Sie den Autostart beim Booten und beschränken Sie die Ausführung im Hintergrund
Antwort auf EDIT 11. Mai 2020 : ACTION_BOOT_COMPLETED „ist eine geschützte Absicht, die nur vom System gesendet werden kann.“ : developer.android.com/reference/android/content/… . Sie benötigen also Root-Zugriff.

Antworten (2)

Dies wäre keine vollständige Antwort auf Ihr Problem. Aber wenn Sie vermuten, dass BOOT_COMPLETED-Broadcast aus irgendeinem Grund deaktiviert ist, können Sie versuchen, es manuell mit der Adb-Shell zu senden und sehen, ob Ihre App startet.

Es ist besser, den Broadcast direkt an Ihre App zu senden, indem Sie den Paketnamen angeben. Wenn Sie den Paketnamen Ihrer Anwendung nicht kennen, müssen Sie ihn zuerst finden. Um eine Liste aller installierten Pakete auf Ihrem Gerät zu erhalten, können Sie den folgenden Befehl verwenden.

$ adb shell pm list packages

Nachdem Sie den Paketnamen Ihrer App aus der Ausgabe des obigen Befehls gefunden haben, können Sie den folgenden Befehl verwenden, um die Sendung an Ihre App zu senden und zu sehen, ob sie startet, nachdem sie die Sendung empfangen hat.

$ adb shell am broadcast -a android.intent.action.BOOT_COMPLETED -p <com.your.apps.package.name.comes.here>

Ersetzen Sie im obigen Befehl <com.your.apps.package.name.comes.here>durch den Paketnamen Ihrer App.

Danke, ich werde die Shell später in der Woche ausprobieren, wenn ich etwas Zeit habe, und die Ergebnisse hier posten.
Anscheinend haben Sie keine Berechtigung zum Senden von BOOT_COMPLETED-Broadcasts über die Adb-Shell. Bitte überprüfen Sie, ob Sie diesen Befehl ausführen und Root-Zugriff über die Adb-Shell erhalten können: wie hieradb root erwähnt . Wenn Sie Root-Zugriff erhalten, können Sie die Sendung senden.
Danke, ich bin mir ziemlich sicher, dass ich keinen Root-Zugriff habe, aber ich werde es überprüfen.

Dieses Problem ist darauf zurückzuführen, dass in allen Firmwares auf allen Smartphones die automatische Ausführung der Anwendung deaktiviert ist

Dieses Problem lässt sich sehr einfach mit Root-Zugriff lösen. Sie müssen nur eine Zeile in der Datei /system/build.prop korrigieren :

  • ro.freeme_freemanager=1
  • ro.hct_autostart_manager=1

In diesen Zeilen müssen Sie 1 in 0 ändern. Sie können die Datei /system/build.prop mit Total Commander oder irgendetwas anderem bearbeiten.

Erfolgreich getestet auf BV5900

Ihre Antwort könnte durch zusätzliche unterstützende Informationen verbessert werden. Bitte bearbeiten Sie , um weitere Details wie Zitate oder Dokumentation hinzuzufügen, damit andere bestätigen können, dass Ihre Antwort richtig ist. Weitere Informationen zum Verfassen guter Antworten finden Sie in der Hilfe .