Ich habe versucht, den Beispielcode in diesem Link zu verwenden, aber er scheint veraltet zu sein und hat nicht funktioniert. Welche Änderungen muss ich vornehmen und an welchen Dateien muss meine App automatisch gestartet werden, wenn Android den Startvorgang abgeschlossen hat?
android
broadcastreceiver
startup
Poojan
quelle
quelle
Intent.ACTION_BOOT_COMPLETED
die Zeichenfolge in Ihrem Receiver zu verwenden, anstatt sie fest zu codieren. Sollte auch den neuenIntent(context, MySystemService.class)
Konstruktor beim Erstellen der Absicht verwenden.Multiple markers at this line - BroadcastReceiver cannot be resolved to a type - The public type StartMyServiceAtBootReceiver must be defined in its own file
in derpublic class
Leitung. Irgendwelche Ideen?So wird eine Aktivität nach dem Neustart des Android-Geräts gestartet:
Fügen Sie diesen Code in Ihre
AndroidManifest.xml
Datei innerhalb des<application>
Elements ein ( nicht innerhalb des<activity>
Elements):Erstellen Sie dann eine neue Klasse
yourActivityRunOnStartup
(die mit derandroid:name
für das<receiver>
Element im Manifest angegebenen übereinstimmt ):Hinweis: Der Aufruf
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
ist wichtig, da die Aktivität aus einem Kontext außerhalb der Aktivität gestartet wird. Ohne dies wird die Aktivität nicht gestartet.Auch die Werte
android:enabled
,android:exported
undandroid:permission
in dem<receiver>
Tag nicht zwingend erscheinen. Die App empfängt das Ereignis ohne diese Werte. Siehe das Beispiel hier .quelle
Application
? Vielleicht innerhalbonCreate()
?onReceive()
einesBroadcastReceiver
Hören Sie auf ACTION_BOOT_COMPLETE und tun Sie von dort aus, was Sie brauchen. Hier gibt es ein Code-Snippet .
Aktualisieren:
Der ursprüngliche Link bei der Antwort ist ausgefallen. Basierend auf den Kommentaren handelt es sich hier um verknüpften Code, da niemand den Code jemals verpassen würde, wenn die Links ausgefallen sind.
In AndroidManifest.xml (Anwendungsteil):
...
...
Quelle: https://web.archive.org/web/20150520124552/http://www.androidsnippets.com/autostart-an-application-at-bootup
quelle
Darüber hinaus können Sie eine App wie AutoStart verwenden, wenn Sie den Code nicht ändern möchten, um beim Start eine Android-Anwendung zu starten: AutoStart - Kein Root
quelle
Die Lösung von Sean hat anfangs bei mir nicht funktioniert (Android 4.2.2). Ich musste dem gleichen Android-Projekt eine Dummy-Aktivität hinzufügen und die Aktivität mindestens einmal manuell auf dem Gerät ausführen. Dann begann die Lösung von Sean zu funktionieren und der BroadcastReceiver wurde nach nachfolgenden Neustarts benachrichtigt.
quelle
Ich möchte einen Punkt in diese Frage aufnehmen, mit dem ich einige Tage lang konfrontiert war. Ich habe alle Antworten ausprobiert, aber diese haben bei mir nicht funktioniert. Wenn Sie Android Version 5.1 verwenden, ändern Sie bitte diese Einstellungen.
Wenn Sie Android Version 5.1 verwenden, müssen Sie die App-Einstellungen deaktivieren (Zum Starten einschränken).
Einstellungen> App> Ihre App> Auf Start beschränken (deaktivieren)
quelle
Ein anderer Ansatz besteht darin, Verzögerungen während des Startvorgangs zu vermeiden,
android.intent.action.USER_PRESENT
anstatt sieandroid.intent.action.BOOT_COMPLETED
zu vermeiden. Dies ist jedoch nur möglich,true
wenn der Benutzer den Sperrbildschirm aktiviert hat. Andernfalls wird diese Absicht niemals gesendet.Referenzblog - Das Problem mit der ACTION_USER_PRESENT-Absicht von Android
quelle