Как напрямую ответить на локскрин? - PullRequest
0 голосов
/ 28 марта 2019

Я сделал уведомление с прямым ответом в 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)

        }

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...