2012-09-18 15 views
9

Me falta algo aquí y espero que alguien me pueda ayudar. Estoy instalando una alarma utilizando la siguiente:Enviar datos al receptor de difusión del administrador de alarmas

AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 

    Intent broadcast_intent = new Intent(this, AlarmBroadcastReceiver.class); 
    PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, broadcast_intent, 0); 

    broadcast_intent.putExtra("test", "ValueReceived"); //data to pass 
    Date date = someVariable.getDateTime(); 


    long triggerAtTime = date.getTime(); 

    alarmManager.set(AlarmManager.RTC_WAKEUP, triggerAtTime, pendingIntent); 

y el receptor de difusión utilizando la siguiente:

public class AlarmBroadcastReceiver extends BroadcastReceiver{ 

    @Override 
    public void onReceive(Context context, Intent intent) { 

     Toast.makeText(context, "Alarm has been received "+intent.getStringExtra("test"), Toast.LENGTH_LONG).show(); 

    } 

} 

s Sin embargo intención Apperently "vacío". Estoy viendo un valor nulo para getStringExtra. Por lo tanto, los datos no se pasan al receptor de difusión. ¿Qué estoy haciendo mal? ¿Cómo puedo pasar datos?

Muchas gracias

+0

ver este post http://stackoverflow.com/questions/ 2844274/multiple-calls-to-alarmmanager-setrepeating-deliver-the-same-intent-pendinginten –

+0

ver la respuesta de @Theus creo que ese es el que necesita – lemoncodes

Respuesta

17

Es necesario añadir los extras a la Intención antes se le pasa a la PendingIntent:

Intent broadcast_intent = new Intent(this, AlarmBroadcastReceiver.class); 
broadcast_intent.putExtra("test", "ValueReceived"); //data to pass 

PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, broadcast_intent, 0); 
+1

Creo que este podría ayudarlo, asigne primero el extra antes que usted Se trata de la intención pendiente – lemoncodes

+0

Genial, funciona, wow, lo hice no saber el orden importa ya que es el mismo objeto. Te agradezco – Snake

Cuestiones relacionadas