Клавиатура с изображениями: выбор расширенного содержимого (Gif, Stickers) возобновляет работу - PullRequest
1 голос
/ 10 июня 2019

Я пытаюсь реализовать поддержку графической клавиатуры в своем приложении. Я следовал за официальной документацией . Для поддержки этого мне нужно было переопределить EditText onCreateInputConnection, чтобы сообщить программной клавиатуре, что приложение поддерживает, и обратный вызов для получения выбранного Uri контента.

EditText:

override fun onCreateInputConnection(editorInfo: EditorInfo): InputConnection {
    val ic: InputConnection = super.onCreateInputConnection(editorInfo)
    EditorInfoCompat.setContentMimeTypes(editorInfo, arrayOf("image/jpeg", "image/png"))

    val callback =
        InputConnectionCompat.OnCommitContentListener { inputContentInfo, flags, opts ->
            val lacksPermission = (flags and
                    InputConnectionCompat.INPUT_CONTENT_GRANT_READ_URI_PERMISSION) != 0
            // read and display inputContentInfo asynchronously
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1 && lacksPermission) {
                try {
                    inputContentInfo.requestPermission()
                } catch (e: Exception) {
                    return@OnCommitContentListener false // return false if failed
                }
            }

            // read and display inputContentInfo asynchronously.
            // call inputContentInfo.releasePermission() as needed.

            true  // return true if succeeded
        }
    return InputConnectionCompat.createWrapper(ic, editorInfo, callback)
}

работает нормально. Сюрприз !!!

проблема - это когда я добавил фильтр намерений в действие. После добавления фильтра намерений обратный вызов InputConnectionCompat.OnCommitContentListener больше не вызывается, и открывается действие с поддерживаемым фильтром намерений.

Манифест:

<activity
            android:name=".Main2Activity"
            android:label="@string/title_activity_main2">

        <intent-filter> <-- this filter is added
            <action android:name="android.intent.action.SEND"/>

            <category android:name="android.intent.category.DEFAULT"/>

            <data android:mimeType="image/*"/>
        </intent-filter>
    </activity>

образец доступен в github Заранее спасибо.

1 Ответ

1 голос
/ 11 июня 2019

Не знаю почему и как, но изменение с

EditorInfoCompat.setContentMimeTypes(editorInfo, arrayOf("image/jpeg", "image/png"))

на

EditorInfoCompat.setContentMimeTypes(editorInfo, arrayOf("image/*"))

решило проблему

...