[问题] alarm manager 用intent传递内容

楼主: pig98520 (CheinFeng)   2017-08-03 14:52:21
大家好,小弟最近尝试做alarm manager,想使用intent来传递title跟text,
时间的设定是使用timepickerdialog,程式码如下:
private void alarmManager(Calendar calendarTime,int id) {
if(id==0)
intent.putExtra("contentText",decimalFormat.format(m_calendar.getTime().getHours())+"
: "
+decimalFormat.format(m_calendar.getTime().getMinutes()));
else if(id==1)
intent.putExtra("contentText",decimalFormat.format(e_calendar.getTime().getHours())+"
: "
+decimalFormat.format(e_calendar.getTime().getMinutes()));
pendingIntent = PendingIntent.getBroadcast(this, id, intent, 0);
if(calendarTime.before(now)) {
calendarTime.add(Calendar.DATE,1); //如果时间早于现在就加一天
manager.setRepeating(AlarmManager.RTC_WAKEUP,
calendarTime.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);
calendarTime.add(Calendar.DATE,-1); //把加上去的日期扣回来
}
else
manager.setRepeating(AlarmManager.RTC_WAKEUP,
calendarTime.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);
}
这是我的程式码,而我在broadreceiver那边使用intent.getExtra("contentText")
来取值,但是发现一个很严重的问题是,当我重传递值过去时,
它显示出来的依旧是我第一次设定的value,也就是说value没办法覆蓋新值,
想问一下是出了什么问题呢?
作者: ssccg (23)   2017-08-03 15:14:00
看一下PendingIntent.getBroadcast第四个参数的说明吧PendingIntent的get系列方法在已经有(extra以外)相同intent建立的PendingIntent存在时,就会回传现有的如果同时只需要一个但要更新extra可用FLAG_UPDATE_CURRENT要多个的话必须用不同的intent或request code
楼主: pig98520 (CheinFeng)   2017-08-03 16:05:00
@@昨天试的时候update_current是失败的,没想到刚刚又成功了,太感谢了^^

Links booklink

Contact Us: admin [ a t ] ucptt.com