IInputConnection 接口
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
InputConnection 接口是从一个 InputMethod
回发到接收其输入的应用程序的信道。
[Android.Runtime.Register("android/view/inputmethod/InputConnection", "", "Android.Views.InputMethods.IInputConnectionInvoker")]
public interface IInputConnection : Android.Runtime.IJavaObject, IDisposable, Java.Interop.IJavaPeerable
[<Android.Runtime.Register("android/view/inputmethod/InputConnection", "", "Android.Views.InputMethods.IInputConnectionInvoker")>]
type IInputConnection = interface
interface IJavaObject
interface IDisposable
interface IJavaPeerable
- 派生
- 属性
- 实现
注解
InputConnection 接口是从一个 InputMethod
回发到接收其输入的应用程序的信道。 它用于执行诸如在光标周围读取文本、将文本提交到文本框以及向应用程序发送原始键事件等操作。
从 API 级别 android.os.Build.VERSION_CODES#N
开始,系统可以处理应用程序直接实现此类的情况,但未实现以下一个或多个方法。
<乌尔><利>#getSelectedText(int)
,这是介绍。android.os.Build.VERSION_CODES#GINGERBREAD
</li li><#setComposingRegion(int, int)
>,这是介绍的。<android.os.Build.VERSION_CODES#GINGERBREAD
/li li><#commitCorrection(CorrectionInfo)
>,这是介绍的。<android.os.Build.VERSION_CODES#HONEYCOMB
/li li><#requestCursorUpdates(int)
>,这是介绍的。<android.os.Build.VERSION_CODES#LOLLIPOP
/li li><#deleteSurroundingTextInCodePoints(int, int)
>,这是介绍的。<android.os.Build.VERSION_CODES#N
/li li><#getHandler()
>,这是介绍的。<android.os.Build.VERSION_CODES#N
/li li><#closeConnection()
>,这是介绍的。<android.os.Build.VERSION_CODES#N
/li li><#commitContent(InputContentInfo, int, Bundle)
>,这是介绍的。<android.os.Build.VERSION_CODES#N_MR1
/li></ul>
<h3>实现 IME 或编辑器</h3>
文本输入是两个基本组件的协同效应的结果:输入法引擎(IME)和编辑器。 IME 可以是软件键盘、手写界面、表情符号调色板、语音转文本引擎等。 通常,在任何给定的 Android 设备上都安装了多个 IME。 在 Android 中,IME 扩展 android.inputmethodservice.InputMethodService
。 有关如何创建 IME 的详细信息,请参阅 “创建输入法 指南”。
编辑器是接收文本并显示文本的组件。 通常,这是一个 android.widget.EditText
实例,但某些应用程序可能会出于各种原因选择实现自己的编辑器。 这是一项大型而复杂的任务,并且应用程序需要确保行为与 Android 中的标准 EditText 行为一致。 编辑器需要与 IME 交互,通过此 InputConnection 接口接收命令,并通过该接口发送命令 android.view.inputmethod.InputMethodManager
。 编辑器应首先实现 android.view.View#onCreateInputConnection(EditorInfo)
以返回自己的输入连接。
如果要实现自己的 IME,则需要调用此接口中的方法以与应用程序交互。 请务必使用各种应用程序(包括浏览器和 RTF 编辑器)测试 IME,因为有些应用程序可能需要处理的特殊性。 请记住,你的 IME 可能不是文本上唯一的更改来源,并且尽量保守你发送的数据,并在收到的数据中尽可能自由。
如果要实现自己的编辑器,可能需要提供自己的子类 BaseInputConnection
来回答来自 IME 的命令。 请务必使用尽可能多的 IME 测试编辑器,因为其行为可能会有所不同。 此外,请务必使用各种语言进行测试,包括 CJK 语言和从右到左的语言(如阿拉伯语),因为这些语言可能有不同的输入要求。 如果对特定调用应采用的行为表示怀疑,请在最新的 Android 版本中模仿默认的 TextView 实现,如果你决定偏离该行为,请仔细考虑文本编辑器行为中的不一致几乎普遍认为用户认为这是一件坏事。
<h3>游标、选择和合成</h3>
在 Android 中,光标和选择是一个和相同的内容。 “cursor”只是零大小选择的特殊情况。 因此,本文档可互换使用它们。 如果存在一个方法,则“游标前”的任何方法都将在选定内容的开始前执行,任何“游标后”操作的方法都将在选定内容的末尾后执行。
编辑器需要能够跟踪当前“撰写”区域,就像标准版小组件一样。 组合以特定样式标记:请参阅 android.text.Spanned#SPAN_COMPOSING
。 IME 使用它来帮助用户跟踪他们当前关注的文本的哪些部分,并使用和 / InputConnection#setComposingRegion(int, int)
与InputConnection#finishComposingText()
编辑器InputConnection#setComposingText(CharSequence, int)
交互。 组合区域和选择彼此完全独立,IME 可以使用它们,但它们看起来合适。
适用于 . 的 android.view.inputmethod.InputConnection
Java 文档
本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。
属性
Handle |
获取基础 Android 对象的 JNI 值。 (继承自 IJavaObject) |
Handler |
InputConnection 接口是从一个 |
JniIdentityHashCode |
返回包装实例的值 |
JniManagedPeerState |
托管对等方的状态。 (继承自 IJavaPeerable) |
JniPeerMembers |
成员访问和调用支持。 (继承自 IJavaPeerable) |
PeerReference |
返回 JniObjectReference 包装的 Java 对象实例。 (继承自 IJavaPeerable) |
方法
BeginBatchEdit() |
告知编辑器你正在启动一批编辑器操作。 |
ClearMetaKeyStates(MetaKeyStates) |
清除给定输入连接中按下的给定元键状态。 |
CloseConnection() |
系统最多调用一次,以通知系统即将使输入法和应用程序之间的连接失效。 |
CommitCompletion(CompletionInfo) |
提交完成,用户已从以前报告的可能项 |
CommitContent(InputContentInfo, InputContentFlags, Bundle) |
由输入法调用以将 PNG 图像等内容提交到编辑器。 |
CommitCorrection(CorrectionInfo) |
提交对原始用户的输入自动执行的更正。 |
CommitText(ICharSequence, Int32) |
将文本提交到文本框并设置新的光标位置。 |
CommitText(ICharSequence, Int32, TextAttribute) |
的变体。 |
CommitText(String, Int32, TextAttribute) |
的变体。 |
DeleteSurroundingText(Int32, Int32) |
删除 <当前光标位置前文本的 var>beforeLength</var> 字符,并在当前光标位置后删除 <文本的 var>afterLength</var> 字符,不包括所选内容。 |
DeleteSurroundingTextInCodePoints(Int32, Int32) |
的变体。 |
Disposed() |
在释放实例时调用。 (继承自 IJavaPeerable) |
DisposeUnlessReferenced() |
如果没有对此实例的未完成引用,则调用 |
EndBatchEdit() |
告诉编辑器,你已完成以前启动 |
Finalized() |
在实例完成时调用。 (继承自 IJavaPeerable) |
FinishComposingText() |
让文本编辑器完成当前处于活动状态的任何撰写文本。 |
GetCursorCapsMode(CapitalizationMode) |
检索当前大写模式,该模式在文本中的当前光标位置生效。 |
GetExtractedText(ExtractedTextRequest, GetTextFlags) |
检索输入连接编辑器中的当前文本,并监视对它所做的任何更改。 |
GetSelectedTextFormatted(GetTextFlags) |
获取所选文本(如果有)。 |
GetSurroundingText(Int32, Int32, Int32) |
获取当前游标周围的文本,在<光标(所选内容开始)之前,文本的 var>beforeLength<</var> 字符、<游标后的文本 var>> 后(选定内容结束)和所有选定文本。 |
GetTextAfterCursorFormatted(Int32, GetTextFlags) |
获取 <当前光标位置后文本的 var>n</var> 字符。 |
GetTextBeforeCursorFormatted(Int32, GetTextFlags) |
获取 <当前光标位置前文本的 var>n</var> 字符。 |
PerformContextMenuAction(Int32) |
对字段执行上下文菜单操作。 |
PerformEditorAction(ImeAction) |
让编辑执行它说可以执行的操作。 |
PerformHandwritingGesture(HandwritingGesture, IExecutor, IIntConsumer) |
对文本执行手写手势。 |
PerformPrivateCommand(String, Bundle) |
用于将专用命令从输入法发送到其连接的编辑器的 API。 |
PerformSpellCheck() |
让编辑器对完整内容执行拼写检查。 |
PreviewHandwritingGesture(PreviewableHandwritingGesture, CancellationSignal) |
预览文本上的手写手势。 |
ReplaceText(Int32, Int32, ICharSequence, Int32, TextAttribute) |
将编辑器中的特定范围替换为建议的文本。 |
ReplaceText(Int32, Int32, String, Int32, TextAttribute) |
将编辑器中的特定范围替换为建议的文本。 |
ReportFullscreenMode(Boolean) |
当连接的 IME 在全屏模式和正常模式之间切换时回叫。 |
RequestCursorUpdates(Int32) |
输入方法调用以要求编辑器回 |
RequestCursorUpdates(Int32, Int32) |
输入方法调用以要求编辑器回 |
RequestTextBoundsInfo(RectF, IExecutor, IConsumer) |
输入法调用以请求 |
SendKeyEvent(KeyEvent) |
将密钥事件发送到当前通过此输入连接附加的进程。 |
SetComposingRegion(Int32, Int32) |
将某一文本区域标记为撰写文本。 |
SetComposingRegion(Int32, Int32, TextAttribute) |
的变体。 |
SetComposingText(ICharSequence, Int32) |
将当前撰写的文本替换为给定文本,并设置新的光标位置。 |
SetComposingText(ICharSequence, Int32, TextAttribute) |
的变体。 |
SetComposingText(String, Int32, TextAttribute) |
的变体。 |
SetImeConsumesInput(Boolean) |
由输入法调用以指示它本身使用所有输入,或不再使用它。 |
SetJniIdentityHashCode(Int32) |
设置由 |
SetJniManagedPeerState(JniManagedPeerStates) |
InputConnection 接口是从一个 |
SetPeerReference(JniObjectReference) |
设置由 |
SetSelection(Int32, Int32) |
设置文本编辑器的选择。 |
TakeSnapshot() |
当系统需要以原子方式拍摄多个文本相关数据的快照时,由系统调用。 |
UnregisterFromRuntime() |
取消注册此实例,以便运行时不会从将来 Java.Interop.JniRuntime+JniValueManager.PeekValue 的调用中返回它。 (继承自 IJavaPeerable) |
扩展方法
JavaCast<TResult>(IJavaObject) |
执行 Android 运行时检查的类型转换。 |
CommitText(IInputConnection, String, Int32) |
InputConnection 接口是从一个 |
CommitText(IInputConnection, String, Int32, TextAttribute) |
InputConnection 接口是从一个 |
GetSelectedText(IInputConnection, GetTextFlags) |
InputConnection 接口是从一个 |
GetTextAfterCursor(IInputConnection, Int32, GetTextFlags) |
InputConnection 接口是从一个 |
GetTextBeforeCursor(IInputConnection, Int32, GetTextFlags) |
InputConnection 接口是从一个 |
ReplaceText(IInputConnection, Int32, Int32, String, Int32, TextAttribute) |
InputConnection 接口是从一个 |
SetComposingText(IInputConnection, String, Int32) |
InputConnection 接口是从一个 |
SetComposingText(IInputConnection, String, Int32, TextAttribute) |
InputConnection 接口是从一个 |
JavaCast<TResult>(IJavaObject) |
InputConnection 接口是从一个 |
GetJniTypeName(IJavaPeerable) |
InputConnection 接口是从一个 |