我有以下代码用于一次性警报...

        public boolean onMenuItemClick(MenuItem item) {
            Intent intent = new Intent(CalendarViewActivity.this, OneShotAlarm.class);
            Bundle bun = new Bundle();
            bun.putString("data", "hello this is my message...");
            intent.putExtras(bun);
            PendingIntent sender = PendingIntent.getBroadcast(CalendarViewActivity.this,
                    0, intent, 0);

            // We want the alarm to go off 5 seconds from now. TODO
            Calendar calendar = Calendar.getInstance();
            calendar.setTimeInMillis(System.currentTimeMillis());
            calendar.add(Calendar.SECOND, 5);

            // Schedule the alarm!
            AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
            am.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), sender);
            return false;
        }
    });
}



public class OneShotAlarm extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
    // TODO
    Toast.makeText(context, "Alarm! " + intent.getExtras().getString("data"), Toast.LENGTH_SHORT).show();
}

}


警报正确发出,但由于某种原因未检索到“额外的数据”,并将其设置为null。

谢谢您的帮助!

最佳答案

尝试:

Intent intent = new Intent(CalendarViewActivity.this, OneShotAlarm.class);
intent.putExtra("data", "hello this is my message...");
PendingIntent sender = PendingIntent.getBroadcast(CalendarViewActivity.this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

10-07 19:28
查看更多