0

毎日17時に起動するアプリを作ろうとしています。"calendar.set ()" を使用して 18 時に設定すると、アラームはすぐに開始されます。一方、「calendar.add ()」を使用すると機能しません。つまり、デバイスの時計が設定した値 (たとえば 17 時) に一致しても、アラームはまったく開始されません。

     Calendar calendar = Calendar.getInstance();

 //calendar.add(Calendar.HOUR_OF_DAY, 17);
 //calendar.add(Calendar.MINUTE, 0);
 //calendar.add(Calendar.SECOND, 0);

 calendar.set(Calendar.HOUR_OF_DAY, 17);
 calendar.set(Calendar.MINUTE, 0);
 calendar.set(Calendar.SECOND, 0);

 Intent intent = new Intent(this, MyBroadcastReceiver.class);

    PendingIntent pendingIntent = PendingIntent.getBroadcast(this.getApplicationContext(), 123, intent, PendingIntent.FLAG_UPDATE_CURRENT);

    AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 
    alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);

ここで何が欠けていますか?ありがとう

4

1 に答える 1

0

DAY_OF_YEAR現在の時刻が 17:00 を過ぎている場合は、フィールドを 1 つ増やす必要があります。

Calendar.getInstance()現在の時刻を使用して新しい Calendar オブジェクトをインスタンス化します。この行が実行されたときが 7 月 1 日の 18:00 であるとしましょう。時、分、秒を設定すると、カレンダーは 7 月 1 日の 17:00 を保存します。アラームを設定すると、AlarmManagerこの時刻が過去であることを認識し、すぐにアラームを起動します。

于 2013-07-03T18:36:27.580 に答える