2011-02-26 47 views
1

我在安排鬧鐘時遇到問題。我想讓每個警報的唯一呼叫都是獨一無二的,這樣它就不會重疊我之前設置的警報。 這是我的代碼:如何讓我的每個電話都與我的alarmManager保持一致?

public void compareDates() 
{ 
String callName; 
String dateStart; 
String dateDue; 
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm"); 
long callTime = System.currentTimeMillis(); 
Date callsDateStart = new Date(); 
Date dateNow = new Date(); 

GlucoseDatabaseAdapter gda = new GlucoseDatabaseAdapter(this); 
gda.open(); 
Cursor c = gda.getEntries(GlucoseDatabaseAdapter.TABLE_CALLS, null,null,null,null,null,null); 

AlarmManager callsAlarm = (AlarmManager)getSystemService(ALARM_SERVICE); 
Intent alarmIntent = new Intent(this,callsNotify.class); 
callAlarm = PendingIntent.getService(this, 0, alarmIntent, 0); 
    if(c.moveToFirst()) 
    { 
     do 
     { 
    //GET DATA 
     callName = c.getString(GlucoseDatabaseAdapter.CALLS_NAME_KEY); 
     dateStart = c.getString(GlucoseDatabaseAdapter.CALLS_DATE_START_KEY); 
     dateDue = c.getString(GlucoseDatabaseAdapter.CALLS_DATE_DUE_KEY); 

    //COMPARE DATES 
     try 
     { 
     callsDateStart = sdf1.parse(dateStart); } 
     catch (ParseException e) 
     { // TODO Auto-generated catch block 
     e.printStackTrace(); } 

     if(callsDateStart.after(dateNow)) 
     { 
      long callsDs = callsDateStart.getTime(); 
      long ff = callsDs - callTime; 
      callsAlarm.set(AlarmManager.RTC, System.currentTimeMillis() + ff, callAlarm); 
    } 
    }while(c.moveToNext()); } 

//我打電話callsAlarm在此代碼多次。當我在這裏設置callsAlarm時,它只設置最新的一個。我如何使每一組都具有獨特性?

回答

0

您必須確保您傳入的Intent是唯一的或者只能被調用一次。它看起來像你一遍又一遍地使用同一個,所以它已經越過了書面。你可能想改變你的懸而未決的意圖看起來像什麼如下,讀android documentation其他可能的標誌設置

PendingIntent sender = PendingIntent.getBroadcast(con, 0, intent, PendingIntent.FLAG_ONE_SHOT); 
+0

我已經試過了,但它不會工作:( – madel 2011-02-27 03:48:15

+0

我已經得到了答案。您必須在你的alarmManager中爲pendingIntent插入這段代碼。 – madel 2011-03-02 16:17:49

相關問題