android 如何在前台服务中显示多条通知?

fdbelqdn  于 2023-01-19  发布在  Android
关注(0)|答案(1)|浏览(328)

我正在做一个笔记应用程序,它有一个在通知中固定笔记的选项。
我正在使用前台服务,但问题是当我想钉多个注意,第二个通知取代第一个。
我使用每个音符的唯一ID notificationId,代码如下:

class MyService : Service() {

    lateinit var note: Note

    override fun onBind(p0: Intent?): IBinder? {
        return null
    }

    override fun onCreate() {
        super.onCreate()
        createNotificationChannel()
    }

    override fun onStartCommand(intent: Intent, flags: Int, startId: Int): Int {
        note = intent.getParcelableExtra(NOTIFICATION_MESSAGE_EXTRA)!!
        showNotification()
        return START_STICKY
    }

    private fun showNotification() {
        val notificationIntent = Intent(this, MyService::class.java)

        val pendingIntent = PendingIntent.getActivity(
            this, 0, notificationIntent,
            PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_MUTABLE
        )

        val notification = NotificationCompat.Builder(this, CHANNEL_ID)
            .setSmallIcon(R.drawable.ic_notification)
            .setContentTitle("Title")
            .setContentText(note.noteText)
            .setContentIntent(pendingIntent)
            .setGroup(CHANNEL_GROUP_KEY)
            .build()

        startForeground(note.id, notification)

    }

    private fun createNotificationChannel() {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            val channel = NotificationChannel(
                CHANNEL_ID,
                CHANNEL_NAME,
                NotificationManager.IMPORTANCE_DEFAULT
            )
            val notificationManager =
                getSystemService(NotificationManager::class.java)

            notificationManager.createNotificationChannel(channel)
        }
    }
}
llew8vvj

llew8vvj1#

您可以通过在服务的onCreate方法中使用startForeground(notifyId.toInt(),notificationBuilder),然后在onStartCommand中使用notificationManager.notify(notifyId.toInt(),notificationBuilder)来完成此操作;
基本上你只需要使用startForeground一次,然后你需要使用通知管理器来显示通知。这样你就可以显示所有的通知,并且所有的通知都使用前台服务

相关问题