在這篇文章中,我們將探討如何在待辦事項管理應用中添加通知提醒功能,讓用戶能夠及時獲取待辦事項的更新和提醒。以下是實現此功能的步驟:
在 Android 8.0(API 26)及以上版本中,必須為通知創建一個管道。這樣用戶可以管理不同類型通知的行為。首先,在 MainActivity
中創建一個方法來設置通知管道。
private void createNotificationChannel() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
CharSequence name = "Todo Notifications";
String description = "Channel for Todo reminders";
int importance = NotificationManager.IMPORTANCE_DEFAULT;
NotificationChannel channel = new NotificationChannel("TODO_CHANNEL", name, importance);
channel.setDescription(description);
NotificationManager notificationManager = getSystemService(NotificationManager.class);
notificationManager.createNotificationChannel(channel);
}
}
我們需要決定何時觸發通知。可以在用戶新增待辦事項時,讓用戶選擇提醒時間。這可以通過 DatePicker
和 TimePicker
來實現,並將選擇的時間存儲在 TodoItem
中。
接下來,我們需要建立一個方法來發送通知。這個方法將使用 NotificationCompat.Builder
來組成通知,並在指定的時間發送。
private void sendNotification(String title, String message) {
NotificationCompat.Builder builder = new
NotificationCompat.Builder(this, "TODO_CHANNEL")
.setSmallIcon(R.drawable.ic_notification)
.setContentTitle(title)
.setContentText(message)
.setPriority(NotificationCompat.PRIORITY_DEFAULT);
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this);
notificationManager.notify(1, builder.build());
}
為了在指定時間發送通知,我們需要使用 AlarmManager
。在用戶選擇提醒時間後,設置一個 PendingIntent
,並將其與 AlarmManager
進行綁定。
private void scheduleNotification(long triggerAtMillis, String title, String message) {
Intent intent = new Intent(this, NotificationReceiver.class);
intent.putExtra("title", title);
intent.putExtra("message", message);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarmManager.setExact(AlarmManager.RTC_WAKEUP, triggerAtMillis, pendingIntent);
}
最後,我們需要建立一個 BroadcastReceiver
來接收 AlarmManager
的觸發,並在接收到事件時發送通知。
public class NotificationReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String title = intent.getStringExtra("title");
String message = intent.getStringExtra("message");
sendNotification(context, title, message);
}
}
通過以上步驟,我們成功地在待辦事項管理應用中添加了通知提醒功能。這不僅提升了用戶體驗,還使得App更加實用。在接下來的文章中,我們將進一步探討如何整合 SQLite 資料庫,管理待辦事項資料。