Kotlin

Enviar un mensaje

Es hora de enviar el primer mensaje.

Para enviar un mensaje, registre una devolución de llamada dentro de onCreate método:

findViewById<View>(R.id.sendMessageButton).setOnClickListener { sendMessage() }

Añadir sendMessage método inside MainActivity:

private fun sendMessage() {
    val message = messageEditText.text.toString()

    if (message.trim { it <= ' ' }.isEmpty()) {
        Toast.makeText(this, "Message is blank", Toast.LENGTH_SHORT).show()
        return
    }

    messageEditText.setText("")
    hideKeyboard()

    conversation?.sendMessage(NexmoMessage.fromText(message), object : NexmoRequestListener<Void?> {
        override fun onError(apiError: NexmoApiError) {
            Toast.makeText(this@MainActivity, "Error sending message", Toast.LENGTH_SHORT).show()
        }

        override fun onSuccess(aVoid: Void?) {}
    })
}

El método anterior oculta el teclado, borra el campo de texto y envía el mensaje.

Ahora en el MainActivity añadir lo que falta hideKeyboard método - el método de utilidad que oculta el teclado del sistema Android:

private fun hideKeyboard() {
    val inputMethodManager = ContextCompat.getSystemService(this, InputMethodManager::class.java)

    val view = currentFocus ?: View(this)
    inputMethodManager?.hideSoftInputFromWindow(view.windowToken, 0)
}

Verás que, aunque el mensaje se ha enviado, la conversación no lo incluye. Vamos a hacerlo en el siguiente paso.