It appears you do not do any trust management.
Smack will consider keys that get imported as undecided until you mark them as trusted using openPgpContact.trust(fingerprint)
.
You can get a list of trusted keys using openPgpContact.getTrustedAnnouncedKeys()
. This is the set of keys Smack will consider for encryption.
Sometimes I encounter the issue that my server does not properly deliver the keys of my contacts to me via pep notifications. To work around this you could use openPgpContact.updateKeys(connection)
which will explicitly query for keys of the contact.
Then you should trust the keys and be good to go 
Here is a patched onClick method:
editorBtn.setOnClickListener {
val texEditor = findViewById<EditText>(R.id.editor)
val chatWith = findViewById<EditText>(R.id.chatWith)
val jid: BareJid = JidCreate.bareFrom("${chatWith.text}")
val message: String = texEditor.text.toString()
val contact = openPgpManager?.getOpenPgpContact(jid.asEntityBareJidIfPossible());
// workaround for possible pep issues. Only necessary if you notice that your server does not deliver pep items
contact?.updateKeys(connection)
// in production you should replace this with some elaborate trust model (eg. TOFU)
for (key in contact?.announcedPublicKeys!!) {
contact?.trust(OpenPgpV4Fingerprint(key.publicKey))
}
oxManager?.sendOxMessage(
openPgpManager?.getOpenPgpContact(jid.asEntityBareJidIfPossible()),
message
)
texEditor.setText("")
}