語言

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#setComposingText(CharSequence, int)InputConnection#setComposingRegion(int, int)和 與編輯器InputConnection#finishComposingText()互動。 作曲區域與選曲完全獨立,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)
JniObjectReferenceControlBlock

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

(繼承來源 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 端是否有效。

適用於