Kotlin Android - 通知未显示为抬头

时间:2021-04-10 05:01:27

标签: android kotlin

(我的设备运行的是 Android 5.1。)

你好

对于我制作的应用程序,我创建了一种通知类,包含方法等,可以轻松创建通知。

我尝试将其配置为使用“提醒”通知,尽管它对我不起作用。它只是显示为常规通知:也许我做错了什么?

通知助手类和接口:

interface NotificationHelper {
        fun startNotification(title: String, text: String, priority: Int, smallIcon: Int)
    }
    
    class DefaultNotificationHelper(private val context: Context) : NotificationHelper {
        private val channelID = "channel_01"

        private fun registerNotificationManagerWithSystem(channel: NotificationChannel) {
            if (Build.VERSION.SDK_INT > Build.VERSION_CODES.O) {
                (context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager).createNotificationChannel(channel)
            }
        }

        private fun createNotificationChannel() {
            if (Build.VERSION.SDK_INT > Build.VERSION_CODES.O) {
                val notificationChannelInstance = NotificationChannel(channelID, "Channel 1", NotificationManager.IMPORTANCE_HIGH).let {
                    it.lockscreenVisibility = Notification.VISIBILITY_PUBLIC
                    it.setShowBadge(true)

                    registerNotificationManagerWithSystem(it)
                }
            }
        }

        private fun createNotificationInstance(title: String, text: String, priority: Int, smallIcon: Int): NotificationCompat.Builder {
            return NotificationCompat.Builder(context, channelID)
                    .setContentTitle(title)
                    .setContentText(text)
                    .setPriority(priority)
                    .setDefaults(DEFAULT_VIBRATE)
                    .setDefaults(DEFAULT_SOUND)
                    .setSmallIcon(smallIcon)
        }

        private fun notify(notificationCompat: NotificationCompat.Builder) {
            (context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager).notify(1, notificationCompat.build())
        }

        override fun startNotification(title: String, text: String, priority: Int, smallIcon: Int) {
            createNotificationChannel()
            notify(createNotificationInstance(title, text, priority, smallIcon))
        }
    }

实施:

val notificationHelper = DefaultNotificationHelper(this)
        notificationHelper.startNotification("Hello", "Hello", NotificationCompat.PRIORITY_HIGH, R.drawable.fire_gradient)

感谢您的帮助 - 不过这可能与我的手机有关。

干杯,

汤姆·乔尼

编辑:我已经确定这只是我手机的问题,无论我怎么努力都没有关系 - 它永远不会工作。如果您想测试抬头通知,请不要购买华为 Y6 Elite,无论您多么努力,它都不会奏效。

1 个答案:

答案 0 :(得分:1)

这是 Github 项目链接,它有一个自定义的抬头通知代码。 https://github.com/kavitamp/CustomHeadsUpNotification

我已在 Android 10 上对其进行了测试,并且运行良好。这是屏幕截图。 enter image description here

相关问题