2013-07-17 2 views
0

J'ai une application qui doit démarrer et arrêter des activités. Jusqu'à présent, nous sommes prêts à commencer l'activité.Apparemment, mon intention n'est pas transmise

Le problème survient lorsque j'essaie d'arrêter l'activité.

C'est le AlarmManager qui diffuse l'intention de fermer l'activité:

 Intent ftue = new Intent(ctxt, VideoActivty.class); 
     ftue.putExtra("finish", true); 
     PendingIntent pftue = PendingIntent.getBroadcast(ctxt, 0, ftue, 0); 
     Calendar calSet4 = Calendar.getInstance(); 
     calSet4.set(Calendar.MONTH, c.get(Calendar.MONTH)); 
     calSet4.set(Calendar.YEAR, c.get(Calendar.YEAR)); 
     calSet4.set(Calendar.DAY_OF_WEEK, 3); 
     calSet4.set(Calendar.HOUR_OF_DAY, hftue); 
     calSet4.set(Calendar.MINUTE, mftue); 
     calSet4.set(Calendar.SECOND, 0); 
     calSet4.set(Calendar.MILLISECOND, 0); 

     //calSet.setTimeZone(TimeZone.getTimeZone("UTC")); 
     mgr.setRepeating(AlarmManager.RTC_WAKEUP, calSet4.getTimeInMillis(), 
       7 * 24 * 60 * 60 * 1000, pftue); 

Et dans mon activty j'ai mis en place un BroadcastReceiver qui devrait fermer le activty.

Mais sans succès ...

@Override 
public void onResume() { 
super.onResume(); 
IntentFilter f=new IntentFilter(); 
registerReceiver(receiver, f); 
} 


@Override 
public void onPause() { 
unregisterReceiver(receiver); 
super.onPause(); 
} 

BroadcastReceiver receiver=new BroadcastReceiver() { 
    public void onReceive(Context context, Intent intent) { 
     Log.e("","intento ricevuto"); 
     if(intent.getBooleanExtra("finish",false))finish(); 

    } 
}; 
+0

Quel est votre chat? Est-ce que l'intento ricevuto? – yarian

+0

@yarian non ... –

+0

Votre 'IntentFilter' est vide, ce qui signifie qu'il ne diffusera aucune émission pour votre activité. – yarian

Répondre

1

Laissez-moi faire mon commentaire une réponse et exposons sur elle.

Si vous utilisez un IntentFilter vide, votre activité ne recevra jamais d'intentions diffusées. Toutefois, si votre intention de diffusion fait spécifiquement référence à un type de BroadcastReceiver, cela fonctionnera.

Donc, si vous avez défini une classe MyReceiver extends BroadcastReceiver dans votre VideoActivity puis formé l'intention de diffusion comme new Intent(context, VideoActivity.MyReceiver.class) que serait livrer.

Espérons que cela a du sens.

+0

merci cela fait parfaitement sens. S'il vous plaît que dois-je mettre dans le filtre pour obtenir quelque chose livré? –

+0

Cela devrait expliquer comment s'y prendre. http://www.sohailaziz.com/2012/05/broadcast-receiver-two-ways-to.html – yarian

+0

merci beaucoup, je comprends, mais s'il vous plaît dans ce cas, que dois-je mettre dans mon filtre? –

Questions connexes