Как сделать каждый звонок на мой alarmManager уникальным? - PullRequest
1 голос
/ 26 февраля 2011

У меня проблема с расписанием будильника.Я хочу, чтобы каждый вызов моего будильника был уникальным, чтобы он не перекрывал предыдущий будильник, который я уже установил.Это мой код:

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

// Я звоню callAlarm несколько раз в этом коде.Когда я устанавливаю callAlarm здесь, он устанавливает только самый последний.Как мне сделать каждый набор здесь уникальным?

1 Ответ

0 голосов
/ 26 февраля 2011

Вы должны убедиться, что намерение, которое вы передаете, уникально или может быть вызвано только один раз.Похоже, вы используете один и тот же снова и снова, поэтому он перезаписан.Вы можете изменить свое ожидающее намерение, чтобы оно выглядело примерно следующим образом, и прочитайте документацию для Android , чтобы узнать другие возможные флаги для установки

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