【发布时间】:2020-08-11 11:19:33
【问题描述】:
我想为警报管理器设置特定的日期和时间来触发通知。我找到了一个有用的代码,可以同时显示日期片段和时间片段。我的问题是当我设置警报时,通知没有在指定的日期和时间弹出,而是立即弹出。请各位前辈帮帮我。
这是我的代码。
对于开放时间选择器
mOpenTimePicker.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final Calendar date;
final Calendar currentDate = Calendar.getInstance();
date = Calendar.getInstance();
new DatePickerDialog(MainActivity.this, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
date.set(year, monthOfYear, dayOfMonth);
new TimePickerDialog(MainActivity.this, new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
date.set(Calendar.HOUR_OF_DAY, hourOfDay);
date.set(Calendar.MINUTE, minute);
Log.v(TAG, "The choosen one " + date.getTime());
}
}, currentDate.get(Calendar.HOUR_OF_DAY), currentDate.get(Calendar.MINUTE), false).show();
}
}, currentDate.get(Calendar.YEAR), currentDate.get(Calendar.MONTH), currentDate.get(Calendar.DATE)).show();
DateFormat dateFormat = android.text.format.DateFormat.getDateFormat(getApplicationContext());
mTextView.setText(dateFormat.format(date.getTime()));
startAlarm(date);
}
});
用于启动警报
private void startAlarm(Calendar c) {
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
//Passing data
String title = mTitle.getText().toString();
String message = mMessage.getText().toString();
id = (int) System.currentTimeMillis();
Intent intent = new Intent(this, AlertReceiver.class);
intent.putExtra("Title", title);
intent.putExtra("Message", message);
intent.putExtra("ID", id);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, id, intent, 0);
alarmManager.setExact(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), pendingIntent);
}
【问题讨论】: