Привет, в моем приложении пользователь может получить уведомление о вызове, которое исчезает через некоторое время. это уведомление имеет полноэкранное действие, если экран заблокирован, и две функциональные кнопки запускают широковещательные приемники.
Теперь моя проблема в том, что я хочу оставить пользователю новое уведомление с надписью «Пропущенный звонок от» если пользователь не нажал ни одной кнопки или отклонил вызов. в настоящее время я использую отсчет времени с продолжительностью уведомления о вызове и onfini sh, начиная новое уведомление, если вызывается широковещательный приемник, я использую общие настройки для отмены таймера, однако это не работает, если телефон заблокирован и полноэкранный режим активность используется, и, как правило, выглядит как очень плохая работа.
val sharedPreferences= context.getSharedPreferences("count", 0)
val timer = object : CountDownTimer(duration+4000, 500) {
override fun onTick(millisUntilFinished: Long) {
if (sharedPreferences.getBoolean(notificationId.toString(), false)) {
this.cancel()
val edit = sharedPreferences.edit()
edit.remove(notificationId.toString())
edit.apply()
}
}
override fun onFinish() {
val edit = sharedPreferences.edit()
edit.remove(notificationId.toString())
edit.apply()
unheardNotification(displayName,context)
Log.d("NOTIFICATION","unheardCalled")
}
}
получатели:
override fun onReceive(context: Context?, intent: Intent?) {
if (intent != null && intent.extras != null) {
val uniqueId = intent.getStringExtra("notificationId")
val sharedPreferences = context!!.getSharedPreferences("count", 0)
val edit = sharedPreferences.edit()
edit.putBoolean(uniqueId, true)
edit.apply()
HelperUtil.endCurrentNotification(context, uniqueId.toInt())
}
}