En fait, lorsqu’on veut ouvrir une application dans le développement Android, nous utilisons la méthode startActivity
qui permet, comme son nom l’indique, de démarrer une Activity
. Une Activity
n’est pas vraiment un écran ou une application mais elle permet d’en afficher un ou plusieurs écrans à travers des Fragment
ou d’afficher directement un écran dans son propre contenu.
Dans ZdS Notificateur, j’utilise 2 choses importantes pour permettre la récupération des notifications ZdS en arrière plan et leurs affichages dans une notification Android : un Service
et des BroadcastReceiver
. J’ai plusieurs broadcast et ils ont chacun leurs utilités. Par exemple, StarterReceiver
me permet de lancer mon Service
toutes les 15 minutes.
Pour le bug corrigé dans la 0.2.2., il portait sur le contenu de OperationNotificationReceiver
. Ce broadcast permettait de réagir à l’ouverture ou la fermeture d’une notification Android. Dans le cas où vous fermiez la notification, aucun problème mais si vous cliquez dessus (donc si vous l’ouvrez), je faisais un startActivity
avec un Intent
en paramètre. Les Intent
me permettant de spécifier quelle Activity
je veux lancer avec une configuration si besoin.
Le bug se trouvait précisément sur la configuration de ces Intent
qui ne me permettait pas de charger une Activity
si je ne spécifiais pas le flag FLAG_ACTIVITY_NEW_TASK
dans sa configuration.
Pour ceux à qui ça parle, voici la stack que je récupère depuis Firebase :
| Exception android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
android.app.ContextImpl.startActivity (ContextImpl.java:682)
android.app.ContextImpl.startActivity (ContextImpl.java:669)
android.content.ContextWrapper.startActivity (ContextWrapper.java:337)
android.content.ContextWrapper.startActivity (ContextWrapper.java:337)
com.zestedesavoir.android.notification.services.OperationNotificationReceiver.lambda$onReceive$0 (OperationNotificationReceiver.java:54)
|