[問題] alarm manager 用intent傳遞內容

看板AndroidDev作者 (Jimmy)時間7年前 (2017/08/03 14:52), 編輯推噓0(007)
留言7則, 2人參與, 最新討論串1/1
大家好,小弟最近嘗試做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沒辦法覆蓋新值, 想問一下是出了甚麼問題呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.225.84.155 ※ 文章網址: https://www.ptt.cc/bbs/AndroidDev/M.1501743144.A.0EF.html

08/03 15:14, , 1F
看一下PendingIntent.getBroadcast第四個參數的說明吧
08/03 15:14, 1F

08/03 15:20, , 2F
PendingIntent的get系列方法在已經有(extra以外)相同intent
08/03 15:20, 2F

08/03 15:21, , 3F
建立的PendingIntent存在時,就會回傳現有的
08/03 15:21, 3F

08/03 15:24, , 4F
如果同時只需要一個但要更新extra可用FLAG_UPDATE_CURRENT
08/03 15:24, 4F

08/03 15:25, , 5F
要多個的話必須用不同的intent或request code
08/03 15:25, 5F

08/03 16:05, , 6F
@@昨天試的時候update_current是失敗的,沒想到剛剛又成
08/03 16:05, 6F

08/03 16:06, , 7F
功了,太感謝了^^
08/03 16:06, 7F
文章代碼(AID): #1PWiWe3l (AndroidDev)
文章代碼(AID): #1PWiWe3l (AndroidDev)