2012-09-18 73 views
9

我错过了这里的东西,我希望有人能帮助我。我使用以下设置报警:发送数据到报警管理器广播接收机

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

,并使用以下广播接收器:

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

    } 

} 

然而意图小号apperently“空”。我看到getStringExtra的空值。所以数据没有被传递给广播接收机。我究竟做错了什么?我怎样才能传递数据。

谢谢你这么多

+0

看到这个帖子http://stackoverflow.com/questions/ 2844274/multiple-calls-to-alarmmanager-setrepeating-deliver-the-same-intent-pendinginten –

+0

查看@Theus的答案我认为那就是你需要的那个 – lemoncodes

回答

17

您需要前将额外添加到意图你将它传递给的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

我认为这个人可能会帮助你,先分配一些额外的东西psas它待定的意图 – lemoncodes

+0

伟大的工程wowww,我没有不知道秩序作为它的同一个对象。我感谢你 – Snake