IInputConnection 介面
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
InputConnection 介面是從 back 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 介面是從 back InputMethod 到 接收輸入的應用程式之間的通訊通道。 它用於執行如閱讀游標周圍文字、將文字提交到文字框,以及向應用程式傳送原始金鑰事件等。
從 API 層 android.os.Build.VERSION_CODES#N級開始,系統可以處理應用程式直接實作此類別,但未實作以下一種或多項方法的情況。
<UL><LI>#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為 。 欲了解更多如何建立輸入輸入法的資訊,請參閱 「建立輸入法 指南」。
編輯器是接收文字並顯示的元件。 通常這是一個 android.widget.EditText 實例,但有些應用程式可能因各種原因選擇實作自己的編輯器。 這是一項龐大且複雜的任務,執行此任務的應用程式必須確保行為與 Android 標準的編輯文字行為一致。 編輯器需要與 IME 互動,透過此 InputConnection 介面接收指令,並透過 android.view.inputmethod.InputMethodManager發送指令。 編輯器應該先實作 android.view.View#onCreateInputConnection(EditorInfo) 回傳自己的輸入連線。
如果你是自己實作 IME,你需要呼叫這個介面裡的方法來與應用程式互動。 務必用多種應用程式測試你的 IME,包括瀏覽器和富文字編輯器,因為有些應用程式可能有特殊需要處理的特殊情況。 記得你的獨立醫學評估(IME)可能不是文本變動的唯一來源,請盡量在你提供的資料上保持保守,在收到的資料上則盡量自由。
如果你是實作自己的編輯器,可能需要提供自己的子類別 BaseInputConnection 來回應 IME 的指令。 請務必用盡可能多的獨立醫學報告測試你的編輯,因為他們的行為差異很大。 另外也要用多種語言測試,包括中日韓語言和像阿拉伯語這類從右到左的語言,因為這些語言的輸入需求可能不同。 若對特定通話行為有疑慮,請模仿最新 Android 版本的預設 TextView 實作;若決定偏離此模式,請仔細考慮文字編輯器行為不一致幾乎被使用者普遍視為負面。
<h3>游標、選擇與組合</h3>
在 Android 中,游標和選擇是一體的。 「游標」只是零大小選擇的特殊情況。 因此,本文件將兩者交替使用。 任何「在游標前」作用的方法,若有選擇開始,則會在選擇開始前行動;任何「游標之後」的方法,則會在選擇結束後行動。
編輯器需要能夠追蹤目前正在「作曲」的區域,就像標準版的小工具一樣。 該組合以特定風格標示:參見 android.text.Spanned#SPAN_COMPOSING。 IME 利用此方法幫助使用者追蹤當前正聚焦的文本部分,並透過 、 InputConnection#setComposingRegion(int, int)InputConnection#finishComposingText()和 與編輯器InputConnection#setComposingText(CharSequence, int)互動。 作曲區域與選曲完全獨立,IME可依其意願使用。
Java 文件 android.view.inputmethod.InputConnection。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
屬性
| 名稱 | Description |
|---|---|
| Handle |
取得底層 Android 物件的 JNI 值。 (繼承來源 IJavaObject) |
| Handler |
InputConnection 介面是從 back |
| JniIdentityHashCode |
回傳包裹實例的 |
| JniManagedPeerState |
管理貴族的狀況。 (繼承來源 IJavaPeerable) |
| JniPeerMembers |
成員存取與召喚支援。 (繼承來源 IJavaPeerable) |
| PeerReference |
回傳JniObjectReference包裹後的 Java 物件實例。 (繼承來源 IJavaPeerable) |
方法
| 名稱 | Description |
|---|---|
| BeginBatchEdit() |
告訴編輯你正在開始一批編輯作業。 |
| ClearMetaKeyStates(MetaKeyStates) |
清除給定的元鍵在該輸入連線中按下的狀態。 |
| CloseConnection() |
系統最多只能呼叫一次,以通知系統即將使輸入法與應用程式之間的連線失效。 |
| CommitCompletion(CompletionInfo) |
提交使用者從先前回報的 |
| CommitContent(InputContentInfo, InputContentFlags, Bundle) |
輸入法呼叫它來將內容(如 PNG 圖片)提交給編輯器。 |
| CommitCorrection(CorrectionInfo) |
根據原始使用者的輸入自動執行修正。 |
| CommitText(ICharSequence, Int32, TextAttribute) |
的 |
| CommitText(ICharSequence, Int32) |
將文字提交到文字框,並設定新的游標位置。 |
| CommitText(String, Int32, TextAttribute) |
的 |
| DeleteSurroundingText(Int32, Int32) |
刪除 <var>前<>/當前游標位置前的文字字元,刪除 <var 後><的 var>/var 字元,排除選取區。 |
| DeleteSurroundingTextInCodePoints(Int32, Int32) |
的變體 |
| Disposed() |
當實例被處理後才被召喚。 (繼承來源 IJavaPeerable) |
| DisposeUnlessReferenced() |
如果沒有未解決的參考資料,則 |
| EndBatchEdit() |
告訴編輯者你已經完成之前從 |
| Finalized() |
當實例完成後才會被通知。 (繼承來源 IJavaPeerable) |
| FinishComposingText() |
讓文字編輯器完成目前正在進行的寫作文字。 |
| GetCursorCapsMode(CapitalizationMode) |
取得目前在文字游標位置生效的大小寫模式。 |
| GetExtractedText(ExtractedTextRequest, GetTextFlags) |
在輸入連線的編輯器中擷取目前的文字,並監控是否有任何變更。 |
| GetSelectedTextFormatted(GetTextFlags) |
如果有的話,會取得所選的文字。 |
| GetSurroundingText(Int32, Int32, Int32) |
取得當前游標周圍的文字,游<標前為 var 字元/游標前為 var><> 字元(<選擇開始),var 後為 varLength></游標後為 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, Int32) |
輸入法呼叫它,請編輯器回撥 |
| RequestCursorUpdates(Int32) |
輸入法呼叫它,請編輯器回撥 |
| RequestTextBoundsInfo(RectF, IExecutor, IConsumer) |
由輸入法呼叫, |
| SendKeyEvent(KeyEvent) |
將一個關鍵事件傳送給目前透過此輸入連線連接的程序。 |
| SetComposingRegion(Int32, Int32, TextAttribute) |
的 |
| SetComposingRegion(Int32, Int32) |
將某個區域標記為正在創作的文字。 |
| SetComposingText(ICharSequence, Int32, TextAttribute) |
的 |
| SetComposingText(ICharSequence, Int32) |
將目前正在合成的文字替換成給定的文字,並設定新的游標位置。 |
| SetComposingText(String, Int32, TextAttribute) |
的 |
| SetImeConsumesInput(Boolean) |
輸入方法呼叫它,表示它已經為自己消耗所有輸入,或不再消耗。 |
| SetJniIdentityHashCode(Int32) |
將回傳的值設為 |
| SetJniManagedPeerState(JniManagedPeerStates) |
InputConnection 介面是從 back |
| SetPeerReference(JniObjectReference) |
將回傳的值設為 |
| SetSelection(Int32, Int32) |
設定文字編輯器的選擇。 |
| TakeSnapshot() |
系統在需要以原子方式快照多個文字相關資料時呼叫此系統。 |
| UnregisterFromRuntime() |
取消註冊此實例,讓執行時不會在未來 Java.Interop.JniRuntime+JniValueManager.PeekValue 的呼叫中回傳該實例。 (繼承來源 IJavaPeerable) |
擴充方法
| 名稱 | Description |
|---|---|
| CommitText(IInputConnection, String, Int32, TextAttribute) |
InputConnection 介面是從 back |
| CommitText(IInputConnection, String, Int32) |
InputConnection 介面是從 back |
| GetJniTypeName(IJavaPeerable) |
取得實例 |
| GetSelectedText(IInputConnection, GetTextFlags) |
InputConnection 介面是從 back |
| GetTextAfterCursor(IInputConnection, Int32, GetTextFlags) |
InputConnection 介面是從 back |
| GetTextBeforeCursor(IInputConnection, Int32, GetTextFlags) |
InputConnection 介面是從 back |
| JavaAs<TResult>(IJavaPeerable) |
試著強制 |
| JavaCast<TResult>(IJavaObject) |
執行 Android 執行時檢查型別轉換。 |
| JavaCast<TResult>(IJavaObject) |
InputConnection 介面是從 back |
| ReplaceText(IInputConnection, Int32, Int32, String, Int32, TextAttribute) |
InputConnection 介面是從 back |
| SetComposingText(IInputConnection, String, Int32, TextAttribute) |
InputConnection 介面是從 back |
| SetComposingText(IInputConnection, String, Int32) |
InputConnection 介面是從 back |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
試著強制 |