У меня есть AlarmNotification в моем приложении, и каждый раз, когда оно появляется, я хочу нажать на него и открыть родительское приложение Activity / wakeup из фона. Почему это не работает? Он будет показывать уведомление в определенное время, поэтому сигнальная часть работает, как и предполагалось, но не будет выполнять никаких действий при нажатии.
Сначала я должен создать уведомление:
private fun createNotification(){
val vibrateFreq = longArrayOf(1000, 1000, 1000, 1000, 1000)
nb = NotificationCompat.Builder(a, channelId)
.setSmallIcon(R.drawable.logo)
.setContentTitle(title)
.setContentText(text)
.setVibrate(vibrateFreq)
.setStyle(NotificationCompat.BigTextStyle().bigText(textLong))
.setAutoCancel(true)
}
Затем мне нужнозарегистрировать сигнал тревоги, чтобы показать уведомление в определенное время:
private fun createAlarm(){
val pInt = app.createAlarmPendingIntent(a, nb)
val cal = Calendar.getInstance()
cal.add(Calendar.MINUTE, delta)
app.aManager.set(AlarmManager.RTC_WAKEUP, cal.timeInMillis, pInt)
}
fun createAlarmPendingIntent(a: Activity, nb: NotificationCompat.Builder?): PendingIntent{
val nInt = Intent(a, AlarmReceiver::class.java)
nInt.putExtra(
AlarmReceiver.NOTIFICATION_ID,
AlarmNotification.NOTIFICATION_NAME
)
nInt.putExtra(AlarmReceiver.NOTIFICATION, nb?.build())
val pInt = PendingIntent.getBroadcast(
a,
0,
nInt,
PendingIntent.FLAG_UPDATE_CURRENT
)
return pInt
}
Затем он вызовет BroadcastReceiver
, чтобы открыть уведомление:
class AlarmReceiver: BroadcastReceiver(){
companion object{
const val NOTIFICATION_ID = "20288855447-99899"
const val NOTIFICATION = "alarmNotify"
}
override fun onReceive(context: Context?, intent: Intent?) {
val notificationManager = context?.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
val notification: Notification? = intent?.getParcelableExtra(NOTIFICATION)
val id = intent?.getIntExtra(NOTIFICATION_ID, 0)
id?.let {
notificationManager.notify(id, notification)
}
}
}