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_COMPLETE
Art 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)
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.
adb root
erwähnt . Wenn Sie Root-Zugriff erhalten, können Sie die Sendung senden.
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 :
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
Irfan Latif
Irfan Latif
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.