【问题标题】:Send data to the alarm manager broadcast receiver向报警管理器广播接收器发送数据
【发布时间】:2012-09-18 04:37:44
【问题描述】:

我在这里遗漏了一些东西,我希望有人可以帮助我。我正在使用以下方法设置警报:

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

    }

}

但是意图显然是“空的”。我看到 getStringExtra 的空值。所以数据没有被传递给广播接收器。我究竟做错了什么?如何传递数据。

非常感谢

【问题讨论】:

标签: android broadcastreceiver alarmmanager


【解决方案1】:

您需要在将额外内容添加到 Intent 之前将其传递给 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);

【讨论】:

  • 我认为这个可能会对您有所帮助,请先分配额外的,然后再将其分配给待处理的意图
  • 很好用,哇,我不知道顺序很重要,因为它是同一个对象。谢谢你
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多