Обработка вставки картинки в EditText

Есть следующий кастомный EditText
Он отлавливает событие, когда пытаешься вставить картинку из буфера обмена.
На некоторых устройствах, если есть картинка в буфере обмена, но при открытии клавиатуры вверху появляется подсказка с превью картинку. По клику срабатывает событие.

Проблема в том, что на 1ом устройстве, если сделать скриншот, это подсказка появляется (превью в подсказке верное), но вставляется другая картинка (последняя картинка, которая была именно скопирована в буфер).
Проблема ТОЛЬКО со скриншотом.

class EditTextWithImageClipBoard @JvmOverloads constructor(
    context: Context, attrs: AttributeSet? = null
) : androidx.appcompat.widget.AppCompatEditText(context, attrs) {

    private val mimeTypesArray = arrayOf("image/*")

    var onClipBoardPaste: (ClipData.Item) -> Unit = {}

    override fun onCreateInputConnection(outAttrs: EditorInfo): InputConnection? {
        var ic = super.onCreateInputConnection(outAttrs) ?: return null
        EditorInfoCompat.setContentMimeTypes(outAttrs, mimeTypesArray)
        val mimeTypes = ViewCompat.getOnReceiveContentMimeTypes(this)
        if (mimeTypes != null) {
            EditorInfoCompat.setContentMimeTypes(outAttrs, mimeTypes)
            ic = InputConnectionCompat.createWrapper(this, ic, outAttrs)
        }
        return ic
    }


    init {
        ViewCompat.setOnReceiveContentListener(
            this,
            mimeTypesArray,
            object : OnReceiveContentListener {
                override fun onReceiveContent(
                    view: View,
                    payload: ContentInfoCompat
                ): ContentInfoCompat? {
                    runCatching { payload.clip.getItemAt(CLIPBOARD_PRIMARY_INDEX) }.getOrNull()
                        ?.let {
                            onClipBoardPaste(it)
                        }
                    return null
                }
            })
    }

    companion object {
        private const val CLIPBOARD_PRIMARY_INDEX = 0
    }

}

Ответы (0 шт):