2012-11-22 2 views
4

Je construis un petit widget à des fins d'apprentissage, il a simplement une activité de configuration où je règle l'intervalle de mise à jour. cela fonctionne normalement et je peux créer plusieurs instances de celui-ci. mais lorsque je redémarre le téléphone, le gestionnaire d'alarmes s'arrête et le widget ne se met pas à jour. après une recherche et google'ng j'ai appris que je dois ajouter un récepteur BOOT COMPLETE mais après plusieurs tentatives j'ai échoué à mettre en œuvre donc quelqu'un a une idée sur la façon d'ajouter cela ou tout bon exemple de code source sur les widgets.Restaurer le gestionnaire d'alarmes après le redémarrage du téléphone

+0

définir "failed to implement". http://whathaveyoutried.com? – njzk2

+0

ce que vous entendez par «je n'ai pas réussi à mettre en œuvre» s'il vous plaît élaborer ... –

+0

j'ai essayé d'ajouter le récepteur de démarrage complet similaire à ce que warpitz répondu, mais cela n'a pas fonctionné ... je n'ai pas beaucoup de temps pour bien comprendre l'alarme Le concept de gestionnaire comme je suis à court de temps donc essayé quelques codes que j'ai obtenus à partir des recherches, mais non travaillé – user1844755

Répondre

7

Pour faire quelque chose au démarrage, il vous suffit de suivre.

D'abord dans le manifest, cela est ajouté sous étiquette d'application:

<receiver android:name="AlarmReceiver"> 
    <intent-filter> 
     <action android:name="packagename.ACTION"/> 
     <action android:name="packagename.ACTION2"/> 
    </intent-filter> 
</receiver> 

<receiver android:name="BootSetter" > 
    <intent-filter> 
     <action 
      android:name="android.intent.action.BOOT_COMPLETED" /> 
    </intent-filter> 
</receiver> 

Pour que cela fonctionne, vous devez ajouter la permission de recevoir la diffusion dans le manifeste avec la ligne suivante:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 

Ensuite, vous avez une BootSetter de classe:

public class BootSetter extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     // Do your stuff 
    } 
} 

Il est un message similaire, mais pas complètement le même here. Il s'agit d'une alarme tous les jours à midi.

+0

c'est le truc dans le onRecieve qui a un problème avec .... quel code je dois mettre là pour réactiver l'alarme pour toutes les instances – user1844755

+0

@ user1844755 Vous devez enregistrer les alarmes dans la préférence partagée ou un autre stockage persistant, puis Réglez-les à nouveau, oui chacun d'entre eux. Tout comme vous les avez définis la première fois. – Warpzit

0

Je pense que vous configurez gestionnaire d'alarme en classe autre que AppWidgetProvider classe étendue (classe Widget) .Better vous devez définir une AlarmManager dans la méthode OnUpdateAppWidgetProvider classe étendue (classe widget) alors il ne sera pas nécessaire de mettre la Alarme à nouveau après le démarrage.

Questions connexes