Как создать вызванное время Уведомление, которое работает на всех устройствах Android

Я пытаюсь сделать уведомление, которое срабатывает после определенного количества времени. В попытке достичь этого у меня есть этот класс AlarmReceiver, который наследуется от приемника BroadCast и работает на устройствах, работающих примерно до API 23. Он не работает на моем эмуляторе, который работает в настоящее время API 27. Любые подсказки, что я делаю неправильно?

class AlarmReceiver : BroadcastReceiver() { companion object { val PRIMARY_CHANNEL = "dj" } override fun onReceive(context: Context, intent: Intent) { val notificationManager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager val notificationIntent = Intent(context, NotificationActivity::class.java) val stackBuilder = TaskStackBuilder.create(context) stackBuilder.addParentStack(NotificationActivity::class.java) stackBuilder.addNextIntent(notificationIntent) val pendingIntent = stackBuilder.getPendingIntent(100, PendingIntent.FLAG_UPDATE_CURRENT) if (android.os.Build.VERSION_CODES.O <= android.os.Build.VERSION.SDK_INT){ //I create the notification channel on the next line, but it doesn't seem to work val notificationChannel = NotificationChannel(PRIMARY_CHANNEL, "DailyJokes", NotificationManager.IMPORTANCE_DEFAULT) notificationChannel.lightColor = Color.GREEN notificationChannel.lockscreenVisibility = Notification.VISIBILITY_PRIVATE notificationManager.createNotificationChannel(notificationChannel) val notification = Notification.Builder(context, PRIMARY_CHANNEL) .setContentIntent(pendingIntent) .setChannelId("dj") .setContentText("KDW") .setSmallIcon(R.mipmap.ic_launcher_round) .setContentTitle("CCC") .build() notificationManager.notify(1,notification) } else { var builder = NotificationCompat.Builder(context, "dj") val sound = Uri.parse("android.resource://" + context.packageName + "/" + "raw/drumroll") builder = builder .setSmallIcon(R.mipmap.ic_launcher_round) .setColor(Color.BLUE) .setContentTitle("Content Title") .setTicker("TICKER Text") .setContentText("KDW setContentText") .setAutoCancel(true) .setContentIntent(pendingIntent) .setChannelId("dj") .setSound(sound) notificationManager.notify(1, builder!!.build()) } } } 

Вот код, который вызывает уведомление, что-нибудь здесь?

 class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_notification) val alarmManager = getSystemService(Context.ALARM_SERVICE) as AlarmManager val notificationIntent = Intent("android.media.action.DISPLAY_NOTIFICATION") notificationIntent.addCategory("android.intent.category.DEFAULT") val broadcast = getBroadcast(this, 100, notificationIntent, FLAG_UPDATE_CURRENT) val cal = Calendar.getInstance() cal.add(Calendar.SECOND, 5) alarmManager.set(AlarmManager.RTC_WAKEUP, cal.timeInMillis, broadcast) } } 

У меня также есть приемник в моем манифесте:

 <receiver android:name=".AlarmReceiver"> <intent-filter> <action android:name="android.media.action.DISPLAY_NOTIFICATION" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </receiver> 

Даже при этом ошибка все еще скрывается. Я новичок в Котлине, сегодня делает неделю с тех пор, как я начал. Мой быстрый опыт подготовил меня хорошо, но я просто не могу получить уведомления: /

Из того, что я могу сказать из вашего кода, вам необходимо зарегистрировать приемник либо в манифесте, либо в контексте.

https://developer.android.com/guide/components/broadcasts.html

ваш канал даже создан? ваше сравнение находится в неправильном направлении ->

android.os.Build.VERSION_CODES.O <= android.os.Build.VERSION.SDK_INT это должно быть >= вместо

и только создание канала должно быть защищено от O, а не за создание уведомления.

Intereting Posts
Что представляет собой редакторский редактор для Kotlin Android Extensions for Views? Попытка использования ресурсов в Котлине IncompatibleClassChangeError: класс 'java.lang.VirtualMachineError' не реализует интерфейс 'java.lang.CharSequence' Количество экземпляров каждого тега с использованием функционального программирования Kotlin – Как реализовать ItemClickListener для RecyclerView Anko DSL пересматривает странное поведение при добавлении элементов Могу ли я иметь несколько выходных файлов при использовании Kotlin JS Есть ли способ ограничить видимость функций stdlib в Котлине? Могут ли `SendChannel.offer`,` CompletableDeferred.complete` и подобные быть вызваны внешними сопрограммами? Размер RealmResults возвращается Zero Новое – неразрешенная ссылка: kotlinx Как присоединиться к двум RxJava2 Obvervables по ключу? Kotlin & Spring Boot @ConfigurationProperties Котлин. Базовое приложение JavaFX Как написать пользовательский getter, если свойства класса определены в конструкторе?