2012-03-13 4 views
4

J'ai un problème très étrange, et aucune des questions déjà sur le site Web ont une réponse ou le même problème.BOOT_COMPLETED non appelé sur Honeycomb après l'exportation

J'ai une application qui reçoit BOOT_COMPLETED. Je me suis assuré qu'il pourrait recevoir l'intention en définissant android: installLocation à internalOnly. J'ai un Log.Debug dans ma classe OnBoot, confirmant si oui ou non il a été appelé.

J'ai deux appareils, un Android 2.2 et un Honeycomb. Sur Android 2.2, il fonctionne très bien, mais en nid d'abeille ...

  • Si j'installe l'application sur la tablette en nid d'abeille avec le bouton « run » de l'éclipse, onboot est appelée lorsque les bottes de la tablette.

  • Si j'installe l'application sur la tablette en nid d'abeille après l'exportation du fichier * .apk, onBoot n'est jamais appelé. Si j'installe l'application sur la tablette en nid d'abeille après avoir exporté le fichier * .apk, et que vous démarrez manuellement une activité avant de redémarrer, onBoot est appelée.

Il semble que l'application a besoin de son activité à démarrer au moins une fois pour le récepteur à enregistrer ... Il ne se sent pas bien, car une application peut avoir aucune activité, et la Froyo n » t fonctionne de cette façon ...

+0

Où avez-vous votre récepteur de radiodiffusion? Codé dans Activité ou inclus dans le manifeste? –

Répondre

9

Cela fonctionne comme prévu, en supposant que vous utilisez Android 3.1. et ensuite.

Les applications installées sur 3.1 et ultérieures sont dans l'état arrêté après l'installation. Ils doivent être explicitement démarrés par l'utilisateur au moins une fois pour en sortir.

Les applications à l'état arrêté ne reçoivent aucune intention de diffusion, y compris BOOT_COMPLETED.

Voir Android 3.1. - API Overview - Launch controls on stopped applications

+1

Je n'étais pas au courant de cela, mais je pensais qu'il y avait quelque chose que je ne savais pas. Merci beaucoup pour votre réponse. – Setsuki

+0

@alextsc Merci pour votre réponse. Cette nouvelle logique 3.1 s'applique-t-elle uniquement aux applications tierces utilisant le SDK ou à une application signée avec la clé de plate-forme (ou existe-t-il un moyen de contourner ce problème via une autorisation uniquement disponible pour l'utilisateur android.uid.system)? –

+0

@MathiasLin Je ne sais pas. J'imagine qu'il doit y avoir une sorte d'exception pour les applications système, mais c'est juste moi devinant dans le bleu. Je travaille rarement en dehors des applications SDK normales, donc je n'ai jamais vérifié cette direction. –

Questions connexes