IInputConnection 介面

定義

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 InputMethod 到 接收輸入的應用程式之間的通訊通道。

JniIdentityHashCode

回傳包裹實例的 java.lang.System.identityHashCode() 值。

(繼承來源 IJavaPeerable)
JniManagedPeerState

管理貴族的狀況。

(繼承來源 IJavaPeerable)
JniPeerMembers

成員存取與召喚支援。

(繼承來源 IJavaPeerable)
PeerReference

回傳JniObjectReference包裹後的 Java 物件實例。

(繼承來源 IJavaPeerable)

方法

名稱 Description
BeginBatchEdit()

告訴編輯你正在開始一批編輯作業。

ClearMetaKeyStates(MetaKeyStates)

清除給定的元鍵在該輸入連線中按下的狀態。

CloseConnection()

系統最多只能呼叫一次,以通知系統即將使輸入法與應用程式之間的連線失效。

CommitCompletion(CompletionInfo)

提交使用者從先前回報的InputMethodSession#displayCompletions InputMethodSession#displayCompletions(CompletionInfo[])InputMethodManager#displayCompletions InputMethodManager#displayCompletions(View, CompletionInfo[])可能完成中選擇的完成。

CommitContent(InputContentInfo, InputContentFlags, Bundle)

輸入法呼叫它來將內容(如 PNG 圖片)提交給編輯器。

CommitCorrection(CorrectionInfo)

根據原始使用者的輸入自動執行修正。

CommitText(ICharSequence, Int32, TextAttribute)

InputConnection#commitText(CharSequence, int)變體。

CommitText(ICharSequence, Int32)

將文字提交到文字框,並設定新的游標位置。

CommitText(String, Int32, TextAttribute)

InputConnection#commitText(CharSequence, int)變體。

DeleteSurroundingText(Int32, Int32)

刪除 <var>前<>/當前游標位置前的文字字元,刪除 <var 後><的 var>/var 字元,排除選取區。

DeleteSurroundingTextInCodePoints(Int32, Int32)

的變體 #deleteSurroundingText(int, int)

Disposed()

當實例被處理後才被召喚。

(繼承來源 IJavaPeerable)
DisposeUnlessReferenced()

如果沒有未解決的參考資料,則 Dispose()呼叫;否則,則不做任何事。

(繼承來源 IJavaPeerable)
EndBatchEdit()

告訴編輯者你已經完成之前從 #beginBatchEdit()開始的批次編輯。

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)

輸入法呼叫它,請編輯器回撥 InputMethodManager#updateCursorAnchorInfo(android.view.View, CursorAnchorInfo) 以通知游標/錨點位置。

RequestCursorUpdates(Int32)

輸入法呼叫它,請編輯器回撥 InputMethodManager#updateCursorAnchorInfo(android.view.View, CursorAnchorInfo) 以通知游標/錨點位置。

RequestTextBoundsInfo(RectF, IExecutor, IConsumer)

由輸入法呼叫, TextBoundsInfo 請求一個涵蓋於給定 bounds的或接近的文字範圍。

SendKeyEvent(KeyEvent)

將一個關鍵事件傳送給目前透過此輸入連線連接的程序。

SetComposingRegion(Int32, Int32, TextAttribute)

InputConnection#setComposingRegion(int, int)變體。

SetComposingRegion(Int32, Int32)

將某個區域標記為正在創作的文字。

SetComposingText(ICharSequence, Int32, TextAttribute)

#setComposingText(CharSequence, int)變體。

SetComposingText(ICharSequence, Int32)

將目前正在合成的文字替換成給定的文字,並設定新的游標位置。

SetComposingText(String, Int32, TextAttribute)

#setComposingText(CharSequence, int)變體。

SetImeConsumesInput(Boolean)

輸入方法呼叫它,表示它已經為自己消耗所有輸入,或不再消耗。

SetJniIdentityHashCode(Int32)

將回傳的值設為 JniIdentityHashCode

(繼承來源 IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

InputConnection 介面是從 back InputMethod 到 接收輸入的應用程式之間的通訊通道。

(繼承來源 IJavaPeerable)
SetPeerReference(JniObjectReference)

將回傳的值設為 PeerReference

(繼承來源 IJavaPeerable)
SetSelection(Int32, Int32)

設定文字編輯器的選擇。

TakeSnapshot()

系統在需要以原子方式快照多個文字相關資料時呼叫此系統。

UnregisterFromRuntime()

取消註冊此實例,讓執行時不會在未來 Java.Interop.JniRuntime+JniValueManager.PeekValue 的呼叫中回傳該實例。

(繼承來源 IJavaPeerable)

擴充方法

名稱 Description
CommitText(IInputConnection, String, Int32, TextAttribute)

InputConnection 介面是從 back InputMethod 到 接收輸入的應用程式之間的通訊通道。

CommitText(IInputConnection, String, Int32)

InputConnection 介面是從 back InputMethod 到 接收輸入的應用程式之間的通訊通道。

GetJniTypeName(IJavaPeerable)

取得實例 self類型的 JNI 名稱。

GetSelectedText(IInputConnection, GetTextFlags)

InputConnection 介面是從 back InputMethod 到 接收輸入的應用程式之間的通訊通道。

GetTextAfterCursor(IInputConnection, Int32, GetTextFlags)

InputConnection 介面是從 back InputMethod 到 接收輸入的應用程式之間的通訊通道。

GetTextBeforeCursor(IInputConnection, Int32, GetTextFlags)

InputConnection 介面是從 back InputMethod 到 接收輸入的應用程式之間的通訊通道。

JavaAs<TResult>(IJavaPeerable)

試著強制self輸入 TResult,檢查 強制在 Java 端是否有效。

JavaCast<TResult>(IJavaObject)

執行 Android 執行時檢查型別轉換。

JavaCast<TResult>(IJavaObject)

InputConnection 介面是從 back InputMethod 到 接收輸入的應用程式之間的通訊通道。

ReplaceText(IInputConnection, Int32, Int32, String, Int32, TextAttribute)

InputConnection 介面是從 back InputMethod 到 接收輸入的應用程式之間的通訊通道。

SetComposingText(IInputConnection, String, Int32, TextAttribute)

InputConnection 介面是從 back InputMethod 到 接收輸入的應用程式之間的通訊通道。

SetComposingText(IInputConnection, String, Int32)

InputConnection 介面是從 back InputMethod 到 接收輸入的應用程式之間的通訊通道。

TryJavaCast<TResult>(IJavaPeerable, TResult)

試著強制self輸入 TResult,檢查 強制在 Java 端是否有效。

適用於