我正在尝试在我的应用程序中实现图像键盘支持。我关注了official documentation。为了支持此功能,我需要重写EditText
的{{1}}来告诉软键盘支持哪些应用程序,并提供回调以获取选定的内容Uri。
EditText:
onCreateInputConnection
其工作正常。惊喜!!!
问题 是我向活动添加意图过滤器的时候。添加了意图过滤器后,回调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
示例在github中可用 预先感谢。
答案 0 :(得分:1)
不确定原因和方式,但从
更改EditorInfoCompat.setContentMimeTypes(editorInfo, arrayOf("image/jpeg", "image/png"))
至
EditorInfoCompat.setContentMimeTypes(editorInfo, arrayOf("image/*"))
解决了问题