728x90
reply action 추가
package com.anushka.notificationdemo
import android.app.NotificationChannel
import android.app.NotificationManager
import android.app.PendingIntent
import android.content.Context
import android.content.Intent
import android.os.Build
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import androidx.core.app.NotificationCompat
import androidx.core.app.RemoteInput
class MainActivity : AppCompatActivity() {
private val channelID = "com.anushka.notificationdemo.channel1"
private var notificationManager: NotificationManager? = null
private val KEY_REPLY = "key_reply"
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val button = findViewById<Button>(R.id.button)
notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
createNotificationChannel(channelID,"DemoChannel","this is a demo")
button.setOnClickListener {
displayNotification()
}
}
private fun displayNotification(){
val notificationId = 45
val tapResultIntent = Intent(this, SecondActivity::class.java)
val pendingIntent: PendingIntent = PendingIntent.getActivity(
this,
0,
tapResultIntent,
PendingIntent.FLAG_UPDATE_CURRENT
)
//reply action
val remoteInput: RemoteInput = RemoteInput.Builder(KEY_REPLY).run{
setLabel("Insert you name here")
build()
}
val replyAction : NotificationCompat.Action = NotificationCompat.Action.Builder(
0,
"REPLY",
pendingIntent
).addRemoteInput(remoteInput)
.build()
//action button 1
val intent2 = Intent(this, DetailsActivity::class.java)
val pendingIntent2: PendingIntent = PendingIntent.getActivity(
this,
0,
intent2,
PendingIntent.FLAG_UPDATE_CURRENT
)
val action2 : NotificationCompat.Action =
NotificationCompat.Action.Builder(0,"Details",pendingIntent2).build()
// action button 2
val intent3 = Intent(this, SettingsActivity::class.java)
val pendingIntent3: PendingIntent = PendingIntent.getActivity(
this,
0,
intent3,
PendingIntent.FLAG_UPDATE_CURRENT
)
val action3 : NotificationCompat.Action =
NotificationCompat.Action.Builder(0,"Settings",pendingIntent3).build()
val notification = NotificationCompat.Builder(this@MainActivity,channelID)
.setContentTitle("Demo Title")
.setContentText("This is a demo notification")
.setSmallIcon(android.R.drawable.ic_dialog_info)
.setAutoCancel(true)
.setPriority(NotificationCompat.PRIORITY_DEFAULT)
.addAction(action2)
.addAction(action3)
.addAction(replyAction)
.build()
notificationManager?.notify(notificationId,notification)
}
private fun createNotificationChannel(id : String, name:String, channelDescription:String){
if(Build.VERSION.SDK_INT>= Build.VERSION_CODES.O){
val importance = NotificationManager.IMPORTANCE_HIGH
val channel = NotificationChannel(id,name,importance).apply {
description = channelDescription
}
notificationManager?.createNotificationChannel(channel)
}
}
}
reply action 입력값 받고 textview에 표시
package com.anushka.notificationdemo
import android.app.NotificationManager
import android.app.RemoteInput
import android.content.Context
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.TextView
import androidx.core.app.NotificationCompat
class SecondActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_second)
receiveInput()
}
private fun receiveInput() {
val KEY_REPLY = "key_reply"
val result_text_view = findViewById<TextView>(R.id.result_text_view)
val intent = this.intent
val remoteInput = RemoteInput.getResultsFromIntent(intent)
if (remoteInput != null) {
val inputString = remoteInput.getCharSequence(KEY_REPLY).toString()
result_text_view.text = inputString
// 아래 내용용 Notificatin reply 와 상관없음
val channelID = "com.anushka.notificationdemo.channel1"
val notificationId = 45
val repliedNotification = NotificationCompat.Builder(this,channelID)
.setSmallIcon(android.R.drawable.ic_dialog_info)
.setContentText("Your reply received")
.build()
val notificationManager: NotificationManager =
getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
notificationManager.notify(notificationId,repliedNotification)
}
}
}
728x90
'안드로이드 > Notification' 카테고리의 다른 글
안드로이드 Notification Action Button (0) | 2022.11.28 |
---|---|
안드로이드 Notification Tap Action (0) | 2022.11.28 |
안드로이드 기본 Notification (0) | 2022.11.28 |