#android #kotlin #notifications #alarmmanager
#Android #kotlin #уведомления #alarmmanager
Вопрос:
Я тестирую отправку уведомлений с помощью alarm Manager при закрытии приложения. Прямо сейчас после нажатия кнопки через 10 секунд запускается уведомление, и я закрываю приложение. Уведомление отображается, когда приложение открыто, но не при закрытии.
Вот мой код:
Запуск уведомления в TimeTableScheduleActivity:
private fun setUpAlarm(c: Calendar){
val cal = Calendar.getInstance()
cal.add(Calendar.SECOND, 10)
val alarmManager = getSystemService(Context.ALARM_SERVICE) as AlarmManager
val intent = Intent(this, AlertReceiver::class.java)
val pendingIntent = PendingIntent.getBroadcast(this, 1, intent, PendingIntent.FLAG_UPDATE_CURRENT)
Toast.makeText(this, "notification in 10 secs", Toast.LENGTH_SHORT).show()
alarmManager.set(AlarmManager.RTC_WAKEUP, cal.timeInMillis, pendingIntent)
}
Класс AlertReceiver:
class AlertReceiver : BroadcastReceiver(){
override fun onReceive(context: Context?, intent: Intent?) {
val intent = Intent(context, TimeTableScheduleActivity::class.java)
intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP
val pendingIntent = PendingIntent.getActivity(context, 100, intent, PendingIntent.FLAG_UPDATE_CURRENT)
val builder = NotificationCompat.Builder(context!!, Navigation.CHANNEL_ID)
.setSmallIcon(R.mipmap.ic_stat_call_white)
.setLargeIcon(BitmapFactory.decodeResource(context!!.getResources(), R.mipmap.icon_round))
.setContentTitle("title")
.setContentText("body")
.setColor(Color.parseColor("#138FF7"))
.setContentIntent(pendingIntent)
.setVibrate(longArrayOf(100, 200, 300, 400, 500, 400, 300, 200, 400))
.setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION))
.setLights(Color.WHITE, 500, 500)
.setPriority(NotificationCompat.PRIORITY_HIGH)
val notificationManagerCompat = NotificationManagerCompat.from(context)
notificationManagerCompat.notify(1, builder.build())
Toast.makeText(context,"alert receive",Toast.LENGTH_LONG).show()
}
}
Комментарии:
1. Попробуйте использовать
#setExact
, поскольку все сигналы тревоги неточны после API19. Посмотрите документы , чтобы получить лучшее представление об этом.2. Я пробовал setExact и setExactAndAllowWhileIdle оба, но ни один из них не работает