2010-05-30 18 views
2

Je crée une application d'événement et l'utilisateur peut définir un rappel pour les événements qu'il souhaite. J'utilise donc alarmManager pour créer des alarmes. Je voudrais mettre une option annuler toutes à mon activité principale afin que je puisse annuler toutes les alarmes créées par mon application. La méthode habituelle pour annuler l'alarme avec la même intention n'aide pas vraiment parce que je mets les alarmes sur une activité différente de celle que je veux les annuler. Y at-il un moyen d'annuler toutes les alarmes créées par mon application? Merci!Android annulant tous les ensembles d'alarmes

Répondre

2

Le code qui exécute l'annulation ne doit pas être l'origine de l'alarme. Votre code identifie l'alarme à annuler en identifiant le PendingIntent qui l'a créé. Vous pouvez «fabriquer» un fac-similé de l'original PendingIntent comme suit. . .

String pname = this.getPackageName(); 

    // manufacture an appropriate context 
    Context mycontext = null; 
    try { 
     mycontext = createPackageContext(pname,CONTEXT_IGNORE_SECURITY); 
    } catch (NameNotFoundException e) { 
     // handle exception here 
     e.printStackTrace(); 
    } 
    // and generate a pendingintent 
    PendingIntent pi = PendingIntent.getService(mycontext, 
        0, new Intent(mycontext, myalarmreceiver.class), 0); 
    // Now use alarmmanager to terminate the alarm 
    AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE); 
    am.cancel(pi); 

Cela peut ne pas fonctionner dans votre situation, mais si vous n'avez pas essayé cette approche, c'est peut-être un bon point de départ!