оставить пользователю уведомление, если уведомление было пропущено - PullRequest
0 голосов
/ 20 января 2020

Привет, в моем приложении пользователь может получить уведомление о вызове, которое исчезает через некоторое время. это уведомление имеет полноэкранное действие, если экран заблокирован, и две функциональные кнопки запускают широковещательные приемники.

Теперь моя проблема в том, что я хочу оставить пользователю новое уведомление с надписью «Пропущенный звонок от» если пользователь не нажал ни одной кнопки или отклонил вызов. в настоящее время я использую отсчет времени с продолжительностью уведомления о вызове и 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())

        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...