Я чувствую себя немного потерянным. Я создал подкласс TextureView, который должен поддерживать текстовый ввод через клавиатуру. Я проверил свой код на физическом устройстве с Android 12 и эмулятором, и он работает нормально. Но это терпит неудачу при использовании Android 9. Мне нужна поддержка для этого от Android 9+. Кто -нибудь может намекнуть меня, пожалуйста, в чем может быть проблема? Вот мой код: < /p>
import "android.content.*"
import "android.text.InputType"
import "android.util.AttributeSet"
import "android.view.*"
import "android.view.inputmethod.*"
import "androidx.core.view.ViewCompat"
val myView = object : TextureView(context as Context) {
private var inputConnection: BaseInputConnection? = null
override fun onAttachedToWindow() {
super.onAttachedToWindow()
isFocusable = true
isFocusableInTouchMode = true
requestFocus()
showKeyboard()
ViewCompat.setOnReceiveContentListener(
this,
arrayOf(ClipDescription.MIMETYPE_TEXT_PLAIN)
) { _, content ->
val text = content.clip.getItemAt(0).coerceToText(context as Context)
if (text.isNotEmpty()) {
(cbreceivecontent as Function1).invoke(text.toString())
}
null
}
}
private fun showKeyboard() {
((context as Context).getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager)
.showSoftInput(this, InputMethodManager.SHOW_IMPLICIT)
}
override fun onCreateInputConnection(outAttrs: EditorInfo?): InputConnection {
outAttrs?.apply {
inputType = InputType.TYPE_CLASS_TEXT
imeOptions = EditorInfo.IME_ACTION_DONE
}
inputConnection = object : BaseInputConnection(this, true) {
override fun commitText(text: CharSequence?, newCursorPosition: Int): Boolean {
text?.let {
(cbcommittext as Function1).invoke(it.toString())
}
return super.commitText(text, newCursorPosition)
}
}
return inputConnection!!
}
override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
event?.unicodeChar?.takeIf { it != 0 }?.let {
(cbkeydown as Function1).invoke(it.toChar().toString())
return true
}
return super.onKeyDown(keyCode, event)
}
}
Подробнее здесь: https://stackoverflow.com/questions/795 ... -android-9