64 lines
2.4 KiB
Kotlin
64 lines
2.4 KiB
Kotlin
package com.example.scanwich
|
|
|
|
import android.app.NotificationChannel
|
|
import android.app.NotificationManager
|
|
import android.app.PendingIntent
|
|
import android.content.BroadcastReceiver
|
|
import android.content.Context
|
|
import android.content.Intent
|
|
import android.os.Build
|
|
import androidx.core.app.NotificationCompat
|
|
|
|
class MealReminderReceiver : BroadcastReceiver() {
|
|
override fun onReceive(context: Context, intent: Intent) {
|
|
if (intent.action == Intent.ACTION_BOOT_COMPLETED) {
|
|
NotificationHelper.scheduleReminders(context)
|
|
return
|
|
}
|
|
|
|
val mealType = intent.getStringExtra("meal_type") ?: "repas"
|
|
showNotification(context, mealType)
|
|
}
|
|
|
|
private fun showNotification(context: Context, mealType: String) {
|
|
val channelId = "meal_reminders"
|
|
val notificationManager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
|
|
|
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
|
val channel = NotificationChannel(
|
|
channelId,
|
|
"Rappels de repas",
|
|
NotificationManager.IMPORTANCE_DEFAULT
|
|
).apply {
|
|
description = "Notifications pour ne pas oublier d'entrer vos repas"
|
|
}
|
|
notificationManager.createNotificationChannel(channel)
|
|
}
|
|
|
|
val activityIntent = Intent(context, MainActivity::class.java).apply {
|
|
flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
|
|
}
|
|
val pendingIntent = PendingIntent.getActivity(
|
|
context, 0, activityIntent,
|
|
PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
|
|
)
|
|
|
|
val notification = NotificationCompat.Builder(context, channelId)
|
|
.setSmallIcon(android.R.drawable.ic_dialog_info) // À remplacer par l'icône de l'app si dispo
|
|
.setContentTitle("N'oubliez pas votre $mealType !")
|
|
.setContentText("Prenez un moment pour enregistrer ce que vous avez mangé.")
|
|
.setPriority(NotificationCompat.PRIORITY_DEFAULT)
|
|
.setContentIntent(pendingIntent)
|
|
.setAutoCancel(true)
|
|
.build()
|
|
|
|
val notificationId = when(mealType.lowercase()) {
|
|
"déjeuner" -> 1
|
|
"dîner" -> 2
|
|
"souper" -> 3
|
|
else -> 0
|
|
}
|
|
notificationManager.notify(notificationId, notification)
|
|
}
|
|
}
|