Я сделал уведомление с прямым ответом в Android. Работает нормально. Но мне нужна новая функциональность, чтобы он также мог отвечать с экрана блокировки, не разблокируя экран. [Как и в случае уведомлений WhatsApp, на уведомления WhatsApp также приходят ответы с экрана блокировки на Android P]
Пожалуйста, проверьте следующий код: -
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
createNotificationChannel()
notification()
}
private fun createNotificationChannel() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
val importance = NotificationManager.IMPORTANCE_HIGH
val channel = NotificationChannel("ID", "name", importance).apply {
description = "description"
lockscreenVisibility = Notification.VISIBILITY_PUBLIC
}
val notificationManager: NotificationManager =
getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
notificationManager.createNotificationChannel(channel)
}
}
private fun notification() {
val KEY_TEXT_REPLY = "key_text_reply"
val replyLabel: String = "replyLabel"
var remoteInput: RemoteInput = RemoteInput.Builder(KEY_TEXT_REPLY).run {
setLabel(replyLabel)
build()
}
var replyPendingIntent: PendingIntent =
PendingIntent.getBroadcast(applicationContext, 1, Intent(), PendingIntent.FLAG_UPDATE_CURRENT)
var action: NotificationCompat.Action =
NotificationCompat.Action.Builder(
0,
"label", replyPendingIntent
).addRemoteInput(remoteInput)
.build()
val newMessageNotification = NotificationCompat.Builder(this, "ID")
.setSmallIcon(R.mipmap.ic_launcher)
.setContentTitle("title")
.setContentText("content text")
.addAction(action)
.setPriority(NotificationCompat.PRIORITY_MAX)
.setDefaults(NotificationCompat.DEFAULT_ALL)
.setCategory(NotificationCompat.CATEGORY_STATUS)
.setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
.setOngoing()
.build()
with(NotificationManagerCompat.from(this)) {
notify(1, newMessageNotification)
}
}