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
開始,系統可以處理應用程式直接實作此類別的情況,但未實作下列一或多個方法。
<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
。 如需如何建立 IME 的詳細資訊,請參閱 建立輸入法 指南。
編輯器是接收文字並顯示它的元件。 一般而言,這是實例 android.widget.EditText
,但有些應用程式可能會因為各種原因選擇實作自己的編輯器。 這是一項大型且複雜的工作,而且需要執行此動作的應用程式,以確保行為與Android中的標準EditText行為一致。 編輯器必須與 IME 互動、透過此 InputConnection 介面接收命令,以及透過 android.view.inputmethod.InputMethodManager
傳送命令。 編輯器應該從實作 android.view.View#onCreateInputConnection(EditorInfo)
開始,以傳回自己的輸入連接。
如果您要實作自己的 IME,您必須呼叫這個介面中的 方法,才能與應用程式互動。 請務必使用各種不同的應用程式來測試您的 IME,包括瀏覽器和 RTF 編輯器,因為有些應用程式可能需要處理的特殊性。 請記住,您的輸入法可能不是文字上唯一變更的來源,而且嘗試盡可能保守地在您傳送的數據中,以及盡可能自由地在您收到的數據中。
如果您要實作自己的編輯器,您可能需要提供您自己的子類別 BaseInputConnection
,以回應來自 IME 的命令。 請務必使用您盡可能多的 IME 來測試您的編輯器,因為其行為可能會有很大的差異。 此外,請務必使用各種語言進行測試,包括 CJK 語言和阿拉伯文等從右至左的語言,因為這些語言可能有不同的輸入需求。 當懷疑您應該針對特定呼叫採用的行為時,請模擬最新 Android 版本中的預設 TextView 實作,而如果您決定偏離它,請仔細考慮文本編輯器行為中的不一致幾乎普遍認為使用者認為是壞事。
<h3>數據指標、選取項目和組合</h3>
在Android中,游標和選取範圍是一個和相同的專案。 「游標」只是零大小選取範圍的特殊案例。 因此,本檔會交替使用。 如果選取範圍有一個,則任何作用於「游標之前」的方法都會在選取範圍的開頭之前執行,而任何在選取範圍結尾之後執行「游標之後」的方法。
編輯器必須能夠追蹤目前「撰寫」區域,就像標準版本小工具一樣。 組合會以特定樣式標示:請參閱 android.text.Spanned#SPAN_COMPOSING
。 IME 會使用此項目來協助使用者追蹤他們目前關注的文字部分,並使用 和 InputConnection#setComposingRegion(int, int)
InputConnection#finishComposingText()
與編輯器InputConnection#setComposingText(CharSequence, int)
互動。 撰寫區域和選取專案彼此完全獨立,而輸入法可能會使用它們,但視情況正確。
的 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>/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> 字元的文字(選取範圍開頭)、<數據指標之後的 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) |
由輸入方法呼叫,要求編輯器回 |
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 介面是從 回到接收其輸入的應用程式的通道 |