InputMethodManager 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
整體輸入法架構的中央系統 API (IMF) 架構,可仲裁應用程式與目前輸入法之間的互動。
[Android.Runtime.Register("android/view/inputmethod/InputMethodManager", DoNotGenerateAcw=true)]
public sealed class InputMethodManager : Java.Lang.Object
[<Android.Runtime.Register("android/view/inputmethod/InputMethodManager", DoNotGenerateAcw=true)>]
type InputMethodManager = class
inherit Object
- 繼承
- 屬性
備註
整體輸入法架構的中央系統 API (IMF) 架構,可仲裁應用程式與目前輸入法之間的互動。
這裡涵蓋的主題:<ol><li 架構概觀<li>>Applications<li>Input Methods<li>Security</ol>
“ArchitectureOverview”><h3>Architecture Overview</h3>
輸入法架構 (IMF) 架構中,有三個主要合作物件:
<ul li><此><類別所表示的強>式輸入法管理員</strong> 是管理所有其他元件之間互動的系統中央點。 這裡以用戶端 API 表示,其存在於每個應用程式內容中,並與全域系統服務通訊,以管理所有進程的互動。 <li> (輸入<法) /strong> 實<>作特定的互動模型,讓用戶產生文字。 系統會系結至目前使用的輸入法,導致其建立和執行,並告知它何時隱藏並顯示其UI。 一次只執行一個 IME。 <li> 多重 <強式>用戶端應用程式</強> 式仲裁搭配輸入法的輸入法焦點和控制輸入法狀態的輸入方法管理員。 一次只能有一個這類用戶端 (使用 IME) 。 </ul>
“Applications”><h3>Applications</h3>
在大部分情況下,使用標準 android.widget.TextView
或其子類別的應用程式幾乎不需要這麼做,就能使用軟式輸入法。 您需要注意的主要事項包括:
<ul><li> 在可編輯的文字檢視中正確設定 android.R.attr#inputType
,讓輸入法有足夠的內容可協助使用者輸入文字。 <li> 在顯示輸入法時,妥善處理遺失屏幕空間。 在理想情況下,應用程式應該處理其視窗大小較小,但視需要依賴執行視窗移動瀏覽的系統。 您應該在活動上設定 android.R.attr#windowSoftInputMode
屬性,或在建立的視窗上設定對應的值,以協助系統判斷是否要移動流覽或重設大小, (它會嘗試自動判斷,但可能會發生錯誤) 。 <li> 您也可以使用相同的屬性來控制視窗的慣用 android.R.attr#windowSoftInputMode
軟輸入狀態 (開啟、關閉等) 。 </ul>
您可以在這裡透過 API 取得更精細的控制,以便直接與 IMF 及其輸入法互動-- 顯示或隱藏輸入區域,讓使用者挑選輸入法等等。
對於我們撰寫自己的文本編輯器的罕見人,您必須實 android.view.View#onCreateInputConnection
作 以傳回您自己的 InputConnection
介面的新實例,讓 IME 與您的編輯器互動。
“InputMethods”><h3>Input Methods</h3>
輸入法 (輸入法) 實作為 android.app.Service
,通常衍生自 android.inputmethodservice.InputMethodService
。 它必須提供核心 InputMethod
介面,但這通常是由 android.inputmethodservice.InputMethodService
處理,而實作者只需要在該處處理較高層級的 API。
android.inputmethodservice.InputMethodService
如需實作 IME 的詳細資訊,請參閱 類別。
“Security”><h3>Security</h3>
有許多與輸入法相關聯的安全性問題,因為它們基本上可以自由地驅動 UI 並監視使用者輸入的所有專案。 Android 輸入法架構也允許任意的第三方 IME,因此請務必小心限制其選取和互動。
以下是有關IMF背後的安全性架構的一些重點:
<ul><li>
只有系統可以透過 android.Manifest.permission#BIND_INPUT_METHOD
許可權直接存取輸入法的InputMethod
介面。 這會在系統中強制執行,方法是不系結至不需要此許可權的輸入法服務,因此系統無法保證其他不受信任的用戶端在其控制之外存取目前的輸入法。
<li>
IMF 可能會有許多用戶端程式,但一次只能有一個作用中。 非使用中的客戶端無法透過下面所述的機制,與 IMF 的主要部分互動。
<li>
輸入方法的用戶端只會獲得其 InputMethodSession
介面的存取權。 每個客戶端都會建立此介面的一個實例,而且只有與使用中用戶端相關聯的會話呼叫會由目前的 IME 處理。 這是針對一般 IME 強制執行 android.inputmethodservice.AbstractInputMethodService
的,但必須由自定義原始 InputMethodSession
實作的 IME 明確處理。
<li>
只有作用中的 InputConnection
用戶端會接受作業。 IMF 會告知每個客戶端進程是否作用中,而且架構會強制在非作用中進程呼叫目前的 InputConnection 時會被忽略。 這可確保目前的 IME 只能將事件和文字編輯傳遞給使用者視為焦點的 UI。
<li>
當螢幕關閉時,輸入法永遠無法與 InputConnection
互動。 這會強制在螢幕關閉時讓所有客戶端處於非作用中狀態,並防止不良的 IME 在使用者無法察覺其行為時驅動 UI。
<li>
用戶端應用程式可以要求系統讓使用者挑選新的輸入法,但無法以程式設計方式切換至一個本身。 這可避免惡意應用程式將使用者切換至自己的輸入法,當用戶流覽至另一個應用程式時,仍會繼續執行。 另一方面,<IME 允許<> em> 以程式設計方式將系統切換到另一個 IME,因為它已經完全控制使用者輸入。
<li>
用戶必須先在設定中明確啟用新的輸入法,才能切換至該輸入法,以向系統確認其瞭解,並想要讓它可供使用。
</ul>
如果您的應用程式以Android 11 (API 層級 30) 或更高版本為目標,則此類別中的方法會依套件可見度規則傳回篩選的結果,但目前連線的 IME 除外。 具有查詢 InputMethod#SERVICE_INTERFACE
的應用程式會看到所有 IME。
的 android.view.inputmethod.InputMethodManager
Java 檔。
此頁面的部分是根據 原始碼專案所建立和共用的工作進行修改,並根據 中所述的詞彙使用。
欄位
ShowForced |
|
ShowImplicit |
已淘汰.
|
屬性
Class |
傳回這個 |
CurrentInputMethodInfo |
傳 |
CurrentInputMethodSubtype |
傳回目前的輸入法子類型。 |
EnabledInputMethodList |
傳回已啟用的輸入法清單。 |
Handle |
基礎Android實例的句柄。 (繼承來源 Object) |
InputMethodList |
傳回已安裝的輸入法清單。 |
IsAcceptingText |
如果目前提供的檢視接受全文檢索編輯,則傳回 |
IsActive |
如果輸入法目前有任何檢視為使用中,則傳回 |
IsFullscreenMode |
可讓您探索附加的輸入法是否以全螢幕模式執行。 |
IsInputMethodSuppressingSpellChecker |
如果輸入法隱藏系統拼字檢查,則傳回 |
IsStylusHandwritingAvailable |
|
JniIdentityHashCode |
整體輸入法架構的中央系統 API (IMF) 架構,可仲裁應用程式與目前輸入法之間的互動。 (繼承來源 Object) |
JniPeerMembers |
整體輸入法架構的中央系統 API (IMF) 架構,可仲裁應用程式與目前輸入法之間的互動。 |
LastInputMethodSubtype |
傳回系統歷程記錄中使用的最後一個 |
PeerReference |
整體輸入法架構的中央系統 API (IMF) 架構,可仲裁應用程式與目前輸入法之間的互動。 (繼承來源 Object) |
ShortcutInputMethodsAndSubtypes |
傳回所有快捷方式輸入法資訊及其子類型的對應。 |
ThresholdClass |
此 API 支援適用於 Android 的 Mono 基礎結構,並不適合直接從您的程式代碼使用。 (繼承來源 Object) |
ThresholdType |
此 API 支援適用於 Android 的 Mono 基礎結構,並不適合直接從您的程式代碼使用。 (繼承來源 Object) |
方法
AcceptStylusHandwritingDelegation(View) |
接受並啟動委派檢視上的手寫筆手寫會話,如果先前使用 委派者要求 |
AcceptStylusHandwritingDelegation(View, String) |
接受並啟動委派檢視上的手寫筆手寫會話,如果先前從委派者要求 |
Clone() |
建立並傳回這個 對象的複本。 (繼承來源 Object) |
DispatchKeyEventFromInputMethod(View, KeyEvent) |
提供的默認實作 |
DisplayCompletions(View, CompletionInfo[]) | |
Dispose() |
整體輸入法架構的中央系統 API (IMF) 架構,可仲裁應用程式與目前輸入法之間的互動。 (繼承來源 Object) |
Dispose(Boolean) |
整體輸入法架構的中央系統 API (IMF) 架構,可仲裁應用程式與目前輸入法之間的互動。 (繼承來源 Object) |
Equals(Object) |
指出其他物件是否「等於」這個物件。 (繼承來源 Object) |
FromContext(Context) |
整體輸入法架構的中央系統 API (IMF) 架構,可仲裁應用程式與目前輸入法之間的互動。 |
GetEnabledInputMethodSubtypeList(InputMethodInfo, Boolean) |
傳回指定之輸入法資訊的已啟用輸入法子類型清單。 |
GetHashCode() |
傳回此物件的雜湊碼值。 (繼承來源 Object) |
HideSoftInputFromInputMethod(IBinder, HideSoftInputFlags) |
關閉/隱藏輸入方法的軟輸入區域,讓使用者不再看到或可以與其互動。 |
HideSoftInputFromWindow(IBinder, HideSoftInputFlags) |
沒有結果的同義字 |
HideSoftInputFromWindow(IBinder, HideSoftInputFlags, ResultReceiver) |
要求在目前接受輸入的視窗內容中隱藏軟式輸入視窗。 |
HideStatusIcon(IBinder) |
已取代這個成員。 |
InvalidateInput(View) |
為系統提供提示,指出與相關聯的 |
InvokeIsActive(View) |
如果指定的檢視是輸入法目前使用中的檢視,則傳回 |
IsWatchingCursor(View) |
已淘汰.
如果目前的輸入法想要在其視窗中 watch 輸入編輯器游標的位置,則傳回 true。 |
JavaFinalize() |
當垃圾收集判斷物件不再參考物件時,垃圾收集行程會在物件上呼叫。 (繼承來源 Object) |
Notify() |
喚醒正在等候此物件監視器的單一線程。 (繼承來源 Object) |
NotifyAll() |
喚醒正在等候此物件監視器的所有線程。 (繼承來源 Object) |
PrepareStylusHandwritingDelegation(View) |
準備將起始手寫筆會話委派給相同或不同視窗的不同編輯器,與偵測到初始手寫筆劃的檢視不同。 |
PrepareStylusHandwritingDelegation(View, String) |
準備將啟動手寫筆會話委派給相同或不同套件中不同視窗的不同編輯器,與偵測到初始手寫筆劃的檢視不同。 |
RestartInput(View) |
如果輸入法目前已連接到指定的檢視,請使用其新內容重新啟動它。 |
SendAppPrivateCommand(View, String, Bundle) |
在目前的輸入法上呼叫 |
SetAdditionalInputMethodSubtypes(String, InputMethodSubtype[]) |
設定其他輸入法子類型。 |
SetCurrentInputMethodSubtype(InputMethodSubtype) |
切換至目前輸入法的新輸入法子類型。 |
SetExplicitlyEnabledInputMethodSubtypes(String, Int32[]) |
匯報 針對呼叫程式所擁有的指定輸入法明確啟用 |
SetHandle(IntPtr, JniHandleOwnership) |
設定 Handle 屬性。 (繼承來源 Object) |
SetInputMethod(IBinder, String) |
強制切換至新的輸入法元件。 |
SetInputMethodAndSubtype(IBinder, String, InputMethodSubtype) |
強制切換至新的輸入法和子類型。 |
ShouldOfferSwitchingToNextInputMethod(IBinder) |
如果目前的輸入法需要為使用者提供切換至下一個輸入法的方法, (e,則會傳回 true。 |
ShowInputMethodAndSubtypeEnabler(String) |
顯示啟用指定輸入法子類型的設定。 |
ShowInputMethodPicker() |
顯示輸入法選擇器彈出視窗。 |
ShowSoftInput(View, ShowFlags) |
沒有結果接收器的同義字 |
ShowSoftInput(View, ShowFlags, ResultReceiver) |
視需要明確要求向用戶顯示目前輸入法的軟式輸入區域。 |
ShowSoftInputFromInputMethod(IBinder, ShowFlags) |
顯示輸入法的軟輸入區域,讓使用者看到輸入法視窗,並可與其互動。 |
ShowStatusIcon(IBinder, String, Int32) |
已取代這個成員。 |
StartStylusHandwriting(View) |
啟動手寫筆手寫會話。 |
SwitchToLastInputMethod(IBinder) |
強制切換至最後使用的輸入法和子類型。 |
SwitchToNextInputMethod(IBinder, Boolean) |
強制切換至下一個輸入法和子類型。 |
ToArray<T>() |
整體輸入法架構的中央系統 API (IMF) 架構,可仲裁應用程式與目前輸入法之間的互動。 (繼承來源 Object) |
ToggleSoftInput(ShowFlags, HideSoftInputFlags) |
這個方法會切換輸入法窗口顯示。 |
ToggleSoftInputFromWindow(IBinder, ShowSoftInputFlags, HideSoftInputFlags) |
這個方法會切換輸入法窗口顯示。 |
ToString() |
傳回物件的字串表示。 (繼承來源 Object) |
UnregisterFromRuntime() |
整體輸入法架構的中央系統 API (IMF) 架構,可仲裁應用程式與目前輸入法之間的互動。 (繼承來源 Object) |
UpdateCursor(View, Int32, Int32, Int32, Int32) |
已淘汰.
報告其視窗中目前的游標位置。 |
UpdateCursorAnchorInfo(View, CursorAnchorInfo) |
報表組合字串中文字插入點和/或字元的位置變更。 |
UpdateExtractedText(View, Int32, ExtractedText) | |
UpdateSelection(View, Int32, Int32, Int32, Int32) |
報告目前的選取範圍。 |
ViewClicked(View) |
當用戶點選或按一下文字檢視時通知事件。 |
Wait() |
讓目前的線程等到喚醒為止,通常是em <notified/em>或<em>interrupted</em>。>< (繼承來源 Object) |
Wait(Int64) |
讓目前的線程等到喚醒為止,通常是em <notified/em>或<em>interrupted</em>,或直到經過一定數量的實時為止。<> (繼承來源 Object) |
Wait(Int64, Int32) |
讓目前的線程等到喚醒為止,通常是em <notified/em>或<em>interrupted</em>,或直到經過一定數量的實時為止。<> (繼承來源 Object) |
明確介面實作
IJavaPeerable.Disposed() |
整體輸入法架構的中央系統 API (IMF) 架構,可仲裁應用程式與目前輸入法之間的互動。 (繼承來源 Object) |
IJavaPeerable.DisposeUnlessReferenced() |
整體輸入法架構的中央系統 API (IMF) 架構,可仲裁應用程式與目前輸入法之間的互動。 (繼承來源 Object) |
IJavaPeerable.Finalized() |
整體輸入法架構的中央系統 API (IMF) 架構,可仲裁應用程式與目前輸入法之間的互動。 (繼承來源 Object) |
IJavaPeerable.JniManagedPeerState |
整體輸入法架構的中央系統 API (IMF) 架構,可仲裁應用程式與目前輸入法之間的互動。 (繼承來源 Object) |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
整體輸入法架構的中央系統 API (IMF) 架構,可仲裁應用程式與目前輸入法之間的互動。 (繼承來源 Object) |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
整體輸入法架構的中央系統 API (IMF) 架構,可仲裁應用程式與目前輸入法之間的互動。 (繼承來源 Object) |
IJavaPeerable.SetPeerReference(JniObjectReference) |
整體輸入法架構的中央系統 API (IMF) 架構,可仲裁應用程式與目前輸入法之間的互動。 (繼承來源 Object) |
擴充方法
JavaCast<TResult>(IJavaObject) |
執行 Android 執行時間檢查的類型轉換。 |
JavaCast<TResult>(IJavaObject) |
整體輸入法架構的中央系統 API (IMF) 架構,可仲裁應用程式與目前輸入法之間的互動。 |
GetJniTypeName(IJavaPeerable) |
整體輸入法架構的中央系統 API (IMF) 架構,可仲裁應用程式與目前輸入法之間的互動。 |