Почему проверка наличия уведомления Android Kotlin всегда возвращает true? ⇐ Android
-
Гость
Почему проверка наличия уведомления Android Kotlin всегда возвращает true?
Чтобы избежать создания уведомления каждый раз, я создал этот метод:
fun checkAlarm(context: Context): Boolean { val AlarmIntent = Intent(context, NotifierReceiver::class.java) AlarmIntent.action = ACTION_BD_NOTIFICATION val intFlags = if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){ Ожидающее намерение.FLAG_IMMUTABLE } еще{ PendingIntent.FLAG_NO_CREATE } вернуть PendingIntent.getBroadcast( контекст, идентификатор уведомления, сигнализацияIntent, intFlags ) != ноль } Это метод set
fun setAlarm(context: Context, NotificationFrequency: Long) { val NotificationFrequencyMs = TimeUnit.MINUTES.toMillis(notificationFrequency) AlarmManager = context.getSystemService(Context.ALARM_SERVICE) как AlarmManager val AlarmIntent = Intent(context, NotifierReceiver::class.java) AlarmIntent.action = ACTION_BD_NOTIFICATION val intFlags = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){ PendingIntent.FLAG_UPDATE_CURRENT или PendingIntent.FLAG_IMMUTABLE } еще{ Ожидающее намерение.FLAG_UPDATE_CURRENT } val pendingAlarmIntent = PendingIntent.getBroadcast( контекст, идентификатор уведомления, сигнализацияIntent, intFlags ) AlarmManager!!.setRepeating( AlarmManager.RTC_WAKEUP, Система.currentTimeMillis(), уведомлениеЧастотаMs, ожиданиеAlarmIntent ) /* Перезапускаем, если перезагрузился */ val получатель = ИмяКомпонента(контекст, BootReceiver::class.java) context.packageManager.setComponentEnabledSetting( получатель, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP ) } В «Моих фрагментах» я называю это:
if (!alarm.checkAlarm(requireContext()) && NotificationIsActive) { Alarm.setAlarm( требуетсяКонтекст(), 30 ) } checkAlarm всегда возвращает true, и уведомление никогда не устанавливается, как это возможно? Я вызываю этот метод в OnStart фрагмента и setAlarm, он никогда раньше не вызывался
Чтобы избежать создания уведомления каждый раз, я создал этот метод:
fun checkAlarm(context: Context): Boolean { val AlarmIntent = Intent(context, NotifierReceiver::class.java) AlarmIntent.action = ACTION_BD_NOTIFICATION val intFlags = if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){ Ожидающее намерение.FLAG_IMMUTABLE } еще{ PendingIntent.FLAG_NO_CREATE } вернуть PendingIntent.getBroadcast( контекст, идентификатор уведомления, сигнализацияIntent, intFlags ) != ноль } Это метод set
fun setAlarm(context: Context, NotificationFrequency: Long) { val NotificationFrequencyMs = TimeUnit.MINUTES.toMillis(notificationFrequency) AlarmManager = context.getSystemService(Context.ALARM_SERVICE) как AlarmManager val AlarmIntent = Intent(context, NotifierReceiver::class.java) AlarmIntent.action = ACTION_BD_NOTIFICATION val intFlags = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){ PendingIntent.FLAG_UPDATE_CURRENT или PendingIntent.FLAG_IMMUTABLE } еще{ Ожидающее намерение.FLAG_UPDATE_CURRENT } val pendingAlarmIntent = PendingIntent.getBroadcast( контекст, идентификатор уведомления, сигнализацияIntent, intFlags ) AlarmManager!!.setRepeating( AlarmManager.RTC_WAKEUP, Система.currentTimeMillis(), уведомлениеЧастотаMs, ожиданиеAlarmIntent ) /* Перезапускаем, если перезагрузился */ val получатель = ИмяКомпонента(контекст, BootReceiver::class.java) context.packageManager.setComponentEnabledSetting( получатель, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP ) } В «Моих фрагментах» я называю это:
if (!alarm.checkAlarm(requireContext()) && NotificationIsActive) { Alarm.setAlarm( требуетсяКонтекст(), 30 ) } checkAlarm всегда возвращает true, и уведомление никогда не устанавливается, как это возможно? Я вызываю этот метод в OnStart фрагмента и setAlarm, он никогда раньше не вызывался
Мобильная версия