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 > 實作輸入法或編輯器 < /h3>
文字輸入是兩個基本元件的協同結果:輸入法引擎 (輸入法) 和編輯器。 IME 可以是軟體鍵盤、手寫介面、emoji 調色盤、語音轉換文字引擎等等。 任何指定的 Android 裝置上通常會安裝數個 IME。 在 Android 中,IME 會擴充 android.inputmethodservice.InputMethodService
。 如需如何建立輸入法的詳細資訊,請參閱 建立輸入法 指南。
編輯器是接收文字並顯示它的元件。 一般而言,這是一個 android.widget.EditText
實例,但有些應用程式可能會因為各種原因而選擇實作自己的編輯器。 這是一項大型且複雜的工作,而且需要執行此動作的應用程式,以確保行為與 Android 中的標準 EditText 行為一致。 編輯器需要與 IME 互動、透過這個 InputConnection 介面接收命令,以及透過 android.view.inputmethod.InputMethodManager
傳送命令。 編輯器應該從實作 android.view.View#onCreateInputConnection(EditorInfo)
開始,以傳回自己的輸入連接。
如果您要實作自己的輸入法,則必須呼叫此介面中的方法,才能與應用程式互動。 請務必使用各種應用程式來測試您的輸入法,包括瀏覽器和 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 檔。
此頁面的部分是根據所建立和共用的工作進行修改,並根據 2.5 屬性授權中所述的詞彙來使用。
屬性
Handle |
取得基礎 Android 物件的 JNI 值。 (繼承來源 IJavaObject) |
Handler |
InputConnection 介面是從 傳回至接收其輸入的應用程式的通道 |
JniIdentityHashCode |
傳回已包裝實例的 值 |
JniManagedPeerState |
Managed 對等的狀態。 (繼承來源 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 > characters of text before the cursor (start of the selection) 、 < var afterLength < /var >> characters of text after the cursor (end of the selection) , and all of the selected text. |
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) |
當連線的輸入法在全螢幕和一般模式之間切換時回呼。 |
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 介面是從 傳回至接收其輸入的應用程式的通道 |