62 lines
2.5 KiB
Kotlin
62 lines
2.5 KiB
Kotlin
package com.example.ppb_kelompok2
|
|
|
|
import android.Manifest
|
|
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.content.pm.PackageManager
|
|
import android.os.Build
|
|
import androidx.core.app.ActivityCompat
|
|
import androidx.core.app.NotificationCompat
|
|
import androidx.core.app.NotificationManagerCompat
|
|
|
|
class ReminderReceiver : BroadcastReceiver() {
|
|
override fun onReceive(context: Context, intent: Intent) {
|
|
val title = intent.getStringExtra("title") ?: "MindTrack Reminder"
|
|
val message = intent.getStringExtra("message") ?: "Waktunya untuk check-in kesehatan mental Anda!"
|
|
|
|
showNotification(context, title, message)
|
|
}
|
|
|
|
private fun showNotification(context: Context, title: String, message: String) {
|
|
val channelId = "mindtrack_reminders"
|
|
|
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
|
val name = "MindTrack Reminders"
|
|
val descriptionText = "Daily reminders for journaling and tests"
|
|
val importance = NotificationManager.IMPORTANCE_DEFAULT
|
|
val channel = NotificationChannel(channelId, name, importance).apply {
|
|
description = descriptionText
|
|
}
|
|
val notificationManager: NotificationManager =
|
|
context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
|
|
notificationManager.createNotificationChannel(channel)
|
|
}
|
|
|
|
val intent = Intent(context, MainActivity::class.java).apply {
|
|
flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
|
|
}
|
|
val pendingIntent: PendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_IMMUTABLE)
|
|
|
|
val builder = NotificationCompat.Builder(context, channelId)
|
|
.setSmallIcon(android.R.drawable.ic_dialog_info) // Ganti dengan icon aplikasi Anda jika ada
|
|
.setContentTitle(title)
|
|
.setContentText(message)
|
|
.setPriority(NotificationCompat.PRIORITY_DEFAULT)
|
|
.setContentIntent(pendingIntent)
|
|
.setAutoCancel(true)
|
|
|
|
with(NotificationManagerCompat.from(context)) {
|
|
if (ActivityCompat.checkSelfPermission(
|
|
context,
|
|
Manifest.permission.POST_NOTIFICATIONS
|
|
) == PackageManager.PERMISSION_GRANTED
|
|
) {
|
|
notify(1001, builder.build())
|
|
}
|
|
}
|
|
}
|
|
} |