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

안드로이드 다양한 Notification

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

안드로이드 4.1에 새롭게 추가된 부분으로 4.0 이하 버전에서는 기본 알림 메시지로 표시된다.
안드로이드 4.1 이후 부터는 알림 메시지를 접었다 폈다 하면서 부가 정보를 표시할 수 있다.

 

Big Picture Style

메시지를 펼쳤을 때 이미지를 표시할 수 있다.

 

Big Text Style

메시지를 펼쳤을 때 장문의 문자열을 표시할 수 있다.

 

InBox Style

메시지를 펼쳤을 때 문자열 들을 표시할 수 있다.

 

package com.example.stylenotification

import android.app.NotificationChannel
import android.app.NotificationManager
import android.content.Context
import android.graphics.BitmapFactory
import android.graphics.Color
import android.os.Build
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.core.app.NotificationCompat
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 {
            val builder1 = getNotificationBuilder("style","style Notification")
            builder1.setContentTitle("Big Picture")
            builder1.setContentText("Big Picture Notification")
            builder1.setSmallIcon(android.R.drawable.ic_menu_camera)

            // BigPicture Notification 객체를 생성한다.
            val big = NotificationCompat.BigPictureStyle(builder1)
            // 보여줄 이미지를 설정한다.
            val bitmap = BitmapFactory.decodeResource(resources,R.drawable.img_android)
            big.bigPicture(bitmap)
            big.setBigContentTitle("Big Content Title")
            big.setSummaryText("Summary Text")



            val notification = builder1.build()
            val manager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
            manager.notify(10,notification)

        }

        button2.setOnClickListener {
            val builder1 = getNotificationBuilder("style","style Notification")
            builder1.setContentTitle("Big Text")
            builder1.setContentText("Big Text Notification")
            builder1.setSmallIcon(android.R.drawable.ic_menu_camera)

            // Big Text Notification을 생성한다.
            val big = NotificationCompat.BigTextStyle(builder1)
            big.setSummaryText("Summary Text")
            big.setBigContentTitle("Big Content Title")
            big.bigText("afsdgajfhdsakfhksdafkjsdkjfsdkfksdhfkkassdfhksdhf")


            val notification = builder1.build()
            val manager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
            manager.notify(20,notification)
        }

        button3.setOnClickListener {
            val builder1 = getNotificationBuilder("style","style Notification")
            builder1.setContentTitle("INBOX")
            builder1.setContentText("INbox Notification")
            builder1.setSmallIcon(android.R.drawable.ic_menu_camera)

            // InBox Style Notification을 생성한다.
            val inbox = NotificationCompat.InboxStyle(builder1)
            inbox.setSummaryText("Summary Text")
            inbox.addLine("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA")
            inbox.addLine("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA")
            inbox.addLine("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA")
            inbox.addLine("CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC")


            val notification = builder1.build()
            val manager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
            manager.notify(30,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

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

안드로이드 Message 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