본문 바로가기
안드로이드/메세징

안드로이드 Message Notification

by 김어찐 2022. 6. 13.
728x90

안드로이드 9.0에서 새롭게 추가된 Notification
다자간의 메시지 내용을 표시하는 용도로 사용한다.

 

package com.example.messagenotification

import android.app.NotificationChannel
import android.app.NotificationManager
import android.content.Context
import android.graphics.Color
import android.os.Build
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.core.app.NotificationCompat
import androidx.core.app.Person
import androidx.core.graphics.drawable.IconCompat
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        button.setOnClickListener {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
                val builder1 = getNotificationBuilder("message","message style")
                builder1.setContentTitle("Message Style")
                builder1.setContentText("Message Style Notification")

                val persionBuilder1 = Person.Builder()
                val icon1 = IconCompat.createWithResource(this,android.R.drawable.ic_media_next)
                persionBuilder1.setIcon(icon1)
                persionBuilder1.setName("홍길동")
                val person1 = persionBuilder1.build()

                val persionBuilder2 = Person.Builder()
                val icon2 = IconCompat.createWithResource(this,R.mipmap.ic_launcher)
                persionBuilder1.setIcon(icon2)
                persionBuilder1.setName("최길동")
                val person2 = persionBuilder2.build()

                val messageStyle = NotificationCompat.MessagingStyle(person1)

                messageStyle.addMessage("첫 번째 메시지",System.currentTimeMillis(),person1)
                messageStyle.addMessage("두 번째 메시지",System.currentTimeMillis(),person2)
                messageStyle.addMessage("세 번째 메시지",System.currentTimeMillis(),person1)
                messageStyle.addMessage("네 번째 메시지",System.currentTimeMillis(),person2)

                builder1.setStyle(messageStyle)

                val notification = builder1.build()
                val manager = getSystemService(Context.NOTIFICATION_SERVICE )as NotificationManager
                manager.notify(10,notification)
            }
        }
    }
    fun getNotificationBuilder(id: String, name: String): NotificationCompat.Builder {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            val manager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
            val channel = NotificationChannel(id, name, NotificationManager.IMPORTANCE_HIGH)
            channel.enableLights(true)
            channel.lightColor = Color.RED
            channel.enableVibration(true)
            manager.createNotificationChannel(channel)
            val builder1 = NotificationCompat.Builder(this, id)
            return builder1
        } else {
            val builder2 = NotificationCompat.Builder(this)
            return builder2
        }
    }
}
728x90

'안드로이드 > 메세징' 카테고리의 다른 글

안드로이드 다양한 Notification  (0) 2022.06.13
안드로이드 PendingIntent  (0) 2022.06.13
안드로이드 Notification  (0) 2022.06.13
안드로이드 항목 선택 Dialog  (0) 2022.06.13
안드로이드 ListDialog  (0) 2022.06.13