web-dev-qa-db-fra.com

Enregistrement du récepteur BOOT_COMPLETED dans Android 8

Nous sommes sur le point de mettre à jour notre application Android API 26. Dans la documentation sur récepteur de diffusion , il est dit que

Les applications qui ciblent Android 8.0 ou supérieur ne peuvent plus enregistrer de récepteurs de diffusion pour des diffusions implicites dans leur manifeste

Les récepteurs de diffusion implicites sont décrits comme

une diffusion qui ne cible pas spécifiquement cette application. Par exemple, ACTION_PACKAGE_REPLACED

Je suppose donc que Android.intent.action.BOOT_COMPLETED Est considéré comme un récepteur implicite.

En outre, il indique que les récepteurs implicites doivent être enregistrés dans un Activity en utilisant Context.registerReceiver(). Mais cela n'aurait aucun sens pour un récepteur, qui écoute l'événement BOOT_COMPLETED.

Quelle est la bonne façon de gérer cela? Puis-je conserver ce récepteur dans mon manifeste?

13
4ndro1d

BOOT_COMPLETED est toujours accepté.

https://developer.Android.com/guide/components/broadcast-exceptions.html

Pas besoin de changer quoi que ce soit. Assurez-vous de tester dans Android 8.

13
Frank

ACTION_BOOT_COMPLETED est activé la liste blanche de diffusion implicite , et vous pouvez donc vous y inscrire dans le manifeste.

9
CommonsWare