さて、StackOverflow のすべてのスレッドを調べましたが、私の状況に関連するスレッドが見つかりませんでした。皆さんがここで私を助けてくれることを願っています。:)
さまざまな時間に設定されたさまざまなリマインダーについて、複数 (2 つまたはそれ以上) のステータス通知を表示する必要があるアプリがあります。例: リマインダー 1 が午前 9 時 40 分に設定されているため、午前 9 時 40 分に通知がポップアップします。リマインダー 2 は午前 10 時 10 分に設定されているため、午前 9 時 40 分に表示された通知の下に、午前 10 時 10 分に別のステータス通知が表示されます。
リマインダーが鳴ったときにアプリから他の通知がない場合、私のコードは機能します。ただし、既存の通知 (リマインダー 1 と呼びましょう) があり、ユーザーがそれを閉じていない場合、新しい通知 (リマインダー 2 と呼びましょう) は表示されず、リマインダー 1 はそのタイムスタンプをリマインダー 2 の時刻に更新するだけです。出発するはずだった。基本的に、私のコードは、異なる時間に鳴り、互いに共存するはずの複数の個別のリマインダーに対して機能していません。
通知でリマインダーの名前を設定したときのコードは次のとおりです。
/* Create a unique notifID that increments itself by 1 every time a new reminder is saved. */
int notifID = 0;
notifID = notifID + 1;
Toast toast = Toast.makeText(context, context.getString(R.string.reminder_saved), Toast.LENGTH_LONG);
toast.show();
c.set(mYear, mMonth, mDay); //Set the notification date.
c.set(Calendar.HOUR_OF_DAY, pHour); //Set the notification hour.
c.set(Calendar.MINUTE, pMinute); //Set the notification minute.
c.set(Calendar.SECOND, 0); //Set the notification second (always 0).
//Use AlarmManager to trigger the notification/alarm.
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
//Get the current date and time.
Calendar calendar = Calendar.getInstance();
//Set the time for the notification to occur.
calendar.set(Calendar.YEAR, mYear);
calendar.set(Calendar.MONTH, mMonth);
calendar.set(Calendar.DAY_OF_MONTH, mDay);
calendar.set(Calendar.HOUR_OF_DAY, pHour);
calendar.set(Calendar.MINUTE, pMinute);
calendar.set(Calendar.SECOND, 0);
//PendingIntent to launch activity when the alarm triggers.
Intent i = new Intent();
/* Assign a notification ID to each notification. Because it is incremented by 1 for each new notification (see lines 1 and 2), there shouldn't be any duplicates. */
i.putExtra("NotifID", notifID);
/* Get the name of reminder from the textbox and pass it into the intent. */
i.putExtra("Reminder_Name", editRemindMeTo.getText().toString());
PendingIntent displayIntent = PendingIntent.getActivity(
getBaseContext(), 0, i, 0);
//Set the alarm to trigger.
alarmManager.set(AlarmManager.RTC_WAKEUP,
calendar.getTimeInMillis(), displayIntent);
Intent intent = new Intent(this, ViewLocalReminders.class);
startActivity(intent);
これが私の実際の通知コードです(アクティビティを拡張する別のファイルにあります):
public class DisplayReminderNotification extends SherlockActivity {
@SuppressWarnings("deprecation")
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Get the notification ID from the saved reminder (see previous code block).
int notifID = getIntent().getExtras().getInt("NotifID");
//PendingIntent stores the Activity that should be launched when the user taps the notification.
Intent i = new Intent();
i.putExtra("NotifID", notifID);
PendingIntent detailsIntent =
PendingIntent.getActivity(this, 0, i, 0);
//Get the name of the reminder from the previous activity (see previous code block)
String reminderName = getIntent().getExtras().getString("Reminder_Name");
NotificationManager nm = (NotificationManager)
getSystemService(NOTIFICATION_SERVICE);
Notification notif = new Notification(
R.drawable.flag_red_large,
"App Name",
System.currentTimeMillis());
CharSequence from = "App Name";
//Print the name of the reminder as the notification body.
CharSequence message = reminderName;
notif.setLatestEventInfo(this, from, message, detailsIntent);
//Pause for 100ms, vibrate for 250ms, pause for 100ms, and vibrate for 500ms.
notif.defaults |= Notification.DEFAULT_SOUND;
notif.vibrate = new long[] { 100, 250, 100, 500};
nm.notify(notifID, notif);
//Destroy the activity/notification.
finish();
}
}
ここで私が間違っていることを誰かが知っていますか? 私は何日もこれを理解しようとしてきましたが、それは私を夢中にさせてきました. 2 つ以上のリマインダーが共存し、名前が異なり、異なる時間にオフになる場合に必要です。繰り返しますが、アプリから通知が 1 つしかない場合、すべてが完全に機能します。通知ドロワーに手つかずの通知が1つあり、別の通知が入ろうとしている場合にのみ機能しません.notifIDに何か問題があると思いますが、それが何であるかはわかりません。ご助力いただきありがとうございます!