0

次のコードを使用して、木曜日と金曜日に通知を送信しようとしています: このコードは木曜日用です

Calendar updateTime = Calendar.getInstance();
updateTime.set(Calendar.HOUR_OF_DAY, 14);
updateTime.set(Calendar.MINUTE, 44);
updateTime.set(Calendar.SECOND, 0);
updateTime.set(Calendar.DAY_OF_WEEK, 5);
if(updateTime.before(new GregorianCalendar())){
    updateTime.add(GregorianCalendar.DAY_OF_MONTH, 7);
}
Intent intent = new Intent(context, Alarm4.class);
intent.putExtra(ONE_TIME, Boolean.TRUE);
PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, updateTime.getTimeInMillis(), pi);

ただし、時間がすでに通知時間を過ぎている場合、このコードは通知ポップアップを直接動作させません。

私は何が欠けていますか?

4

2 に答える 2

0

どうやら、あなたのコードは問題ありませんが、中途半端です。ここで、通知を設定する必要がある場所から、BroadcastReceiver を作成する必要があります。この記事を読むことができます。この記事は役に立ちます。ここで、繰り返しではなく、ユーザーに単一のアラームを設定することを言及したいと思います。繰り返すには、public void setRepeating (int type, long triggerAtMillis, long intervalMillis, PendingIntent operation)の代わりに使用する必要がありpublic void set (int type, long triggerAtMillis, PendingIntent operation)ます。それでも定期的に繰り返します。

特定のタイプの繰り返しについての私の考えでは、さまざまな方法で配置できます。を使用して、最初は翌日だけのアラームを設定します(翌日のアラームを確認した後)public void set (int type, long triggerAtMillis, PendingIntent operation)。とてもシンプルになります。アラームがシステムによってブロードキャストされ、あなたBroadcastReceiverが呼び出されるとき。で、通知を設定し、翌日のアラームを設定しonRecieve()ますBroadcastReceiver(翌日のアラームを確認した後)。このようにして、繰り返されるプロセス全体を制御し、そのロジックを簡単に設定できます。

于 2013-01-04T12:41:43.857 に答える