728x90
안녕하세요.
오늘은 알림 내에서 Broadcast Receiver로 Action Button을 구현하는 방법을 알아보겠습니다.
더보기
왜 Broadcast Receiver를 사용하는가?
Action Button을 클릭할 때 앱이 닫혀있을 수 있기 때문입니다.
알림에서 Action Button을 클릭할 때마다 브로드캐스트를 수신하고 특정 코드를 실행하도록 설정하겠습니다.
https://developer.android.com/guide/components/broadcasts
1. Broadcast Receiver(브로드캐스트 수신기) 등록
' MyReceiver ' 라는 이름으로 새 클래스를 만들고 다음 코드를 추가합니다.
class MyReceiver : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
//여기 있는 코드는 액션 버튼을 누를 때 실행
val message = intent?.getStringExtra("MESSAGE")
if (message != null) {
Toast.makeText(
context,
message,
Toast.LENGTH_LONG
).show()
}
}
}
Pending Intent 를 사용하여 Broadcast Receiver를 트리거합니다.
여기에서 알림에서 전달된 "MESSAGE" 문자열을 추출합니다.
그리고 해당 메시지가 실제로 존재하는 경우에만 간단한 Toast 메시지를 함께 표시합니다.
그런 다음 매니페스트 파일에 Broadcast Receiver를 등록해야 합니다.
<application> 태그 안에 다음 코드를 추가합니다.
<application>
...
<receiver android:name="MyReceiver"/>
...
</application>
2. Action Button 추가하기
const val MY_URI = "https://stevdza-san.com"
const val MY_ARG = "message"
@Singleton
@Provides
fun provideNotificationBuilder(
@ApplicationContext context: Context
): NotificationCompat.Builder {
// "MyReceiver" 에 대한 인텐트를 생성
val intent = Intent(context, MyReceiver::class.java).apply {
putExtra("MESSAGE", "Clicked!") //전달할 메시지("Clicked!")와 해당 메시지를 사용할 수 있는 키("MESSAGE") 설정
}
// flag 생성, API 레벨 6.0 이상을 사용 하는 경우 Immutable 또는 Mutable 플래그를 지정해줘야 함
val flag =
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
PendingIntent.FLAG_IMMUTABLE
else
0
// getBroadcast() 함수 를 사용하여 Pending Intent를 구성
val pendingIntent = PendingIntent.getBroadcast(
context,
0,
intent,
flag
)
return NotificationCompat.Builder(context, "Main Channel ID")
.setContentTitle("Welcome")
.setContentText("YouTube Channel: Stevdza-San")
.setSmallIcon(R.drawable.ic_baseline_notifications_24)
.setPriority(NotificationCompat.PRIORITY_DEFAULT)
.setVisibility(VISIBILITY_PRIVATE)
.setPublicVersion(
NotificationCompat.Builder(context, "Main Channel ID")
.setContentTitle("Hidden")
.setContentText("Unlock to see the message.")
.build()
)
.addAction(0, "ACTION", pendingIntent)
}
3. 결과
'안드로이드 코틀린' 카테고리의 다른 글
[Kotlin][Android] Jetpack Compose에서 폰트 추가해서 사용하기 (0) | 2022.11.03 |
---|---|
[Kotlin][Android] 인앱 업데이트 (0) | 2022.10.19 |
[Kotlin][Android] Jetpack Compose로 system bar 색 변경하기 (0) | 2022.09.27 |
[Kotlin][Android] PhotoView 라이브러리 사용법(사진 줌인&줌아웃&드래그 이동) (0) | 2022.09.12 |
[Kotlin][Android] 사용한 오픈소스 라이선스 표시하기 (2) | 2022.08.28 |