2012-09-18 6 views
9

Mi manca qualcosa qui e spero che qualcuno possa darmi una mano. Sto installando un allarme utilizzando il seguente:Invia dati al ricevitore di broadcast manager di allarme

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); 

e il ricevitore di broadcast utilizzando il seguente:

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 Tuttavia intento apperently "vuoto". Sto vedendo il valore nullo per getStringExtra. Quindi i dati non vengono trasmessi al destinatario della trasmissione. Che cosa sto facendo di sbagliato? Come posso passare i dati.

Grazie mille

+0

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

+0

vedere la risposta da @Theus penso che sia quello che ti serve – lemoncodes

risposta

17

È necessario aggiungere gli extra per l'Intento prima si passa alla 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

penso che questo possa aiutarti, assegnare prima l'extra prima di te psas it to the pending intent – lemoncodes

+0

Great it works wowww, l'ho fatto Non so che l'ordine conta come se fosse lo stesso oggetto. Ti ringrazio – Snake