2

ユーザーが「いいえ」を選択できるという点でアラームマネージャーの概念を使用しているという点で、1つのアラートアプリを開発しています。アラートが発生するまでの日数 (例: 彼が 5 日間を選択した場合、アラートは 5 日前に発生します) 日数リストの比較は sqlite データベースから来ています。コードをいくつか書きます。 5 の代わりに 3) 設定前 (5 日) アラームがクリアされない 合計 8 つのアラームが発生しました (5+3) 誰か私の問題を解決してください。

dbcal.set(currentcal.get(Calendar.YEAR), mnth,dt);
Log.e("dbCal Alarm","first"+dbcal.getTime());
if(!dbcal.getTime().before(currentcal.getTime())){
    uniqueno++;
    alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
    Intent intent = new Intent(SampledateActivity.this,AlarmReceiver.class);
    PendingIntent pi = PendingIntent.getBroadcast(SampledateActivity.this, uniqueno, intent, 0);
    alarmManager.set(AlarmManager.RTC_WAKEUP, dbcal.getTimeInMillis(), pi);
}
for(int k = 1 ; k <= time ;k++){
   Log.e("Entered to alarm","yes");
   dbcal.add(Calendar.HOUR, -24);
   if(!dbcal.getTime().before(currentcal.getTime())){
        uniqueno++;
        Intent intentlocal = new Intent(SampledateActivity.this,AlarmReceiver.class);
        PendingIntent pilocal = PendingIntent.getBroadcast(SampledateActivity.this, uniqueno, intentlocal, 0);
        alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
        alarmManager.set(AlarmManager.RTC_WAKEUP, dbcal.getTimeInMillis(), pilocal);
        Log.e("dbCal Alarm","k: "+"k value:"+k+(time*i+k)+":"+dbcal.getTime());
  }
}
4

2 に答える 2

8

を作成するために使用したものPendingIntentと同じrequestCodeものを使用して を作成し、PendingInentを開始しAlarmます。

Intent intentlocal = new Intent(SampledateActivity.this,AlarmReceiver.class);
PendingIntent pilocal = PendingIntent.getBroadcast(SampledateActivity.this,
                                                       uniqueno, intentlocal, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.cancel(pilocal);
pilocal.cancel();
于 2012-02-15T09:32:36.880 に答える
0

私は私の問題の解決策を得ました。アクティビティを更新するたびに。つまり、アラームの設定ボタンをクリックすると、アクティビティが更新されます。そのため、アラームを設定する前に削除され、新しく入力されたアラームが作成されます。

于 2012-02-16T06:36:30.767 に答える