言語

InputMethodManager クラス

定義

アプリケーションと現在の入力メソッドの間の相互作用を判断する、全体的な入力メソッド フレームワーク (IMF) アーキテクチャへの中央システム API。

[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
継承
InputMethodManager
属性

注釈

アプリケーションと現在の入力メソッドの間の相互作用を判断する、全体的な入力メソッド フレームワーク (IMF) アーキテクチャへの中央システム API。

ここで取り上げるトピック: <ol><li>Architecture Overview<li>Applications<li>Input メソッド<li>Security</ol>

"ArchitectureOverview"><h3>Architecture Overview</h3>

入力方法フレームワーク (IMF) アーキテクチャには、主に次の 3 つの当事者が関係します。

<ul><li> このクラスで表される <strong>input メソッド マネージャー</strong> は、他のすべての部分間の相互作用を管理するシステムの中心点です。 ここでは、各アプリケーション コンテキストに存在し、すべてのプロセス間の相互作用を管理するグローバル システム サービスと通信するクライアント側 API として表されます。 <li><strong>input メソッド (IME)</strong> は、ユーザーがテキストを生成できるようにする特定の対話モデルを実装します。 システムは、使用中の現在の入力メソッドにバインドされ、作成および実行され、UI を非表示にして表示するタイミングを通知します。 一度に実行されている IME は 1 つだけです。 <li>複数の<>クライアントアプリケーション</強>入力フォーカスとIMEの状態を制御するための入力メソッドマネージャと仲裁. このようなクライアントは、一度に 1 つだけアクティブ (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>

入力領域の表示または非表示、ユーザーによる入力方法の選択など、IMF とその IME と直接やり取りするために、ここでの API を使用して、よりきめ細かい制御を利用できます。

独自のテキスト エディターを作成する場合は、IME がエディターと対話できるように、独自の android.view.View#onCreateInputConnection インターフェイスの新しいインスタンスを返すInputConnectionを実装する必要があります。

"InputMethods"><h3>Input メソッド</h3>

入力メソッド (IME) は、通常、android.app.Serviceから派生するandroid.inputmethodservice.InputMethodServiceとして実装されます。 コア InputMethod インターフェイスを提供する必要がありますが、これは通常、 android.inputmethodservice.InputMethodService によって処理され、実装者はそこで上位レベルの API のみを処理する必要があります。

IME の実装の詳細については、 android.inputmethodservice.InputMethodService クラスを参照してください。

"Security"><h3>Security</h3>

入力メソッドには、基本的に UI を完全に操作し、ユーザーが入力したすべてのものを監視する自由があるため、多くのセキュリティの問題が発生します。 Android 入力メソッド フレームワークでは、任意のサード パーティの IME も許可されるため、選択と対話を制限するように注意する必要があります。

IMF の背後にあるセキュリティ アーキテクチャに関する重要なポイントを次に示します。

<ul><li>

InputMethodアクセス許可を介して IME のandroid.Manifest.permission#BIND_INPUT_METHOD インターフェイスに直接アクセスできるのは、システムだけです。 これは、このアクセス許可を必要としない入力メソッド サービスにバインドしないことによってシステムで適用されるため、システムは、他の信頼されていないクライアントがその制御外の現在の入力メソッドにアクセスしていないことを保証できます。

<li>

IMF には多くのクライアント プロセスが存在する可能性がありますが、一度にアクティブにできるのは 1 つだけです。 非アクティブなクライアントは、以下に示すメカニズムを通じて IMF の重要な部分と対話することはできません。

<li>

入力メソッドのクライアントには、その InputMethodSession インターフェイスへのアクセスのみが付与されます。 このインターフェイスの 1 つのインスタンスがクライアントごとに作成され、アクティブなクライアントに関連付けられているセッションからの呼び出しのみが現在の IME によって処理されます。 これは通常の IME に対して android.inputmethodservice.AbstractInputMethodService によって適用されますが、生の InputMethodSession 実装をカスタマイズする IME によって明示的に処理する必要があります。

<li>

アクティブなクライアントの InputConnection のみが操作を受け入れます。 IMF は各クライアント プロセスにアクティブかどうかを通知し、フレームワークは、非アクティブなプロセスで現在の InputConnection への呼び出しが無視されることを強制します。 これにより、現在の IME は、ユーザーがフォーカスしていると見なす UI にのみイベントとテキスト編集を配信できます。

<li>

IME は、画面がオフになっている間、 InputConnection と対話することはできません。 これは、画面がオフのときにすべてのクライアントを非アクティブにすることで適用され、ユーザーがその動作を認識できないときに、不適切な IM が UI を駆動するのを防ぎます。

<li>

クライアント アプリケーションは、ユーザーが新しい IME を選択できるようにシステムに要求できますが、プログラムで 1 つの IME に切り替えすることはできません。 これにより、悪意のあるアプリケーションがユーザーを独自の IME に切り替えるのを回避できます。これは、ユーザーが別のアプリケーションに移動しても実行されたままです。 一方、IME は既にユーザー入力を完全に制御できるため、 <em>is</em> プログラムによってシステムを別の IME に切り替えることができます。

<li>

ユーザーは、設定で新しい IME を明示的に有効にしてから切り替える必要があります。その前に、ユーザーが知っていることをシステムに確認し、使用できるようにする必要があります。

</ul>

アプリが Android 11 (API レベル 30) 以上を対象とする場合、このクラスのメソッドはそれぞれ、現在接続されている IME を除き、パッケージの可視性の規則によってフィルター処理された結果を返します。 InputMethod#SERVICE_INTERFACEのクエリを持つアプリには、すべての IME が表示されます。

Javaドキュメント。

このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。

フィールド

名前 説明
HandwritingDelegateFlagHomeDelegatorAllowed
古い.

既定のホーム画面 (Intent#CATEGORY_HOME) からのビューが、デリゲート エディター ビューの手書き委任機能として機能することを示すフラグ。

ShowForced

ユーザーが (長押しメニューなど) 入力メソッドを強制的に開いたままにして、明示的に開くまで閉じないように #showSoftInput フラグを設定します。

ShowImplicit

ユーザーによる直接要求の結果ではなく、入力ウィンドウを表示する暗黙的な要求であることを示す #showSoftInput のフラグ。

プロパティ

名前 説明
Class

この Objectのランタイム クラスを返します。

(継承元 Object)
CurrentInputMethodInfo

現在選択されている入力メソッド (プロセスのユーザー) の InputMethodInfo を返します。

CurrentInputMethodSubtype

現在の入力メソッド サブタイプを返します。

EnabledInputMethodList

有効な入力メソッドの一覧を返します。

Handle

基になる Android インスタンスへのハンドル。

(継承元 Object)
InputMethodList

インストールされている入力メソッドの一覧を返します。

IsAcceptingText

現在提供されているビューがフルテキスト編集を受け入れている場合は、 true を返します。

IsActive

入力メソッドに対して現在アクティブなビューがある場合は、 true を返します。

IsConnectionlessStylusHandwritingAvailable

現在選択されている IME がコネクションレス スタイラス手書きセッションをサポートし、有効になっている場合に true を返します。

IsFullscreenMode

添付された入力メソッドが全画面表示モードで実行されているかどうかを検出できます。

IsInputMethodSuppressingSpellChecker

入力メソッドがシステム スペル チェックを抑制している場合は、 true を返します。

IsStylusHandwritingAvailable

現在選択されている IME でスタイラス手書き入力がサポートされている場合に true を返します。

JniIdentityHashCode

相互運用ランタイムによってこのJava ピアに割り当てられた ID ハッシュ コードを取得します。

(継承元 Object)
JniManagedPeerState

アプリケーションと現在の入力メソッドの間の相互作用を判断する、全体的な入力メソッド フレームワーク (IMF) アーキテクチャへの中央システム API。

(継承元 JavaObject)
JniPeerMembers

アプリケーションと現在の入力メソッドの間の相互作用を判断する、全体的な入力メソッド フレームワーク (IMF) アーキテクチャへの中央システム API。

LastInputMethodSubtype

システム履歴で最後に使用された InputMethodSubtype を返します。

PeerReference

このJava ピアの JNI オブジェクト参照を取得します。

(継承元 Object)
ShortcutInputMethodsAndSubtypes

すべてのショートカット入力メソッド情報とそのサブタイプのマップを返します。

ThresholdClass

この API は Android 用 Mono インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。

(継承元 Object)
ThresholdType

この API は Android 用 Mono インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。

(継承元 Object)

メソッド

名前 説明
AcceptStylusHandwritingDelegation(View, String, HandwritingDelegateFlag, IExecutor, IConsumer)

委任子からの #prepareStylusHandwritingDelegation(View, String) を使用して手書き開始委任が以前に要求され、ビューが指定されたデリゲート パッケージに属している場合は、デリゲート ビューでスタイラス手書きセッションを受け入れて開始します。

AcceptStylusHandwritingDelegation(View, String, IExecutor, IConsumer)

委任子からの #prepareStylusHandwritingDelegation(View, String) を使用して手書き開始委任が以前に要求され、ビューが指定されたデリゲート パッケージに属している場合は、デリゲート ビューでスタイラス手書きセッションを受け入れて開始します。

AcceptStylusHandwritingDelegation(View, String)

委任子からの #prepareStylusHandwritingDelegation(View, String) を使用して手書き開始委任が以前に要求され、ビューが指定されたデリゲート パッケージに属している場合は、デリゲート ビューでスタイラス手書きセッションを受け入れて開始します。

AcceptStylusHandwritingDelegation(View)

委任者からの #prepareStylusHandwritingDelegation(View) を使用して手書き開始委任が以前に要求された場合は、デリゲート ビューでスタイラス手書きセッションを受け入れて開始します。

Clone()

このオブジェクトのコピーを作成して返します。

(継承元 Object)
Construct(JniObjectReference, JniObjectReferenceOptions)

アプリケーションと現在の入力メソッドの間の相互作用を判断する、全体的な入力メソッド フレームワーク (IMF) アーキテクチャへの中央システム API。

(継承元 JavaObject)
DispatchKeyEventFromInputMethod(View, KeyEvent)

InputConnection#sendKeyEvent(KeyEvent)の既定の実装を提供します。これは、指定されたViewと現在のフォーカスの状態に応じて、IME から適切なイベント ターゲットに送信されるキーボード イベントをディスパッチすることが期待されます。

DisplayCompletions(View, CompletionInfo[])
Dispose()

このJava ピアによって保持されているリソースを解放します。

(継承元 Object)
Dispose(Boolean)

このJava ピアによって保持されているリソースを解放します。

(継承元 Object)
DisposeUnlessReferenced()

アプリケーションと現在の入力メソッドの間の相互作用を判断する、全体的な入力メソッド フレームワーク (IMF) アーキテクチャへの中央システム API。

(継承元 JavaObject)
Equals(Object)

アプリケーションと現在の入力メソッドの間の相互作用を判断する、全体的な入力メソッド フレームワーク (IMF) アーキテクチャへの中央システム API。

(継承元 JavaObject)
Equals(Object)

他のオブジェクトがこのオブジェクトと "等しい" かどうかを示します。

(継承元 Object)
FromContext(Context)

アプリケーションと現在の入力メソッドの間の相互作用を判断する、全体的な入力メソッド フレームワーク (IMF) アーキテクチャへの中央システム API。

GetEnabledInputMethodSubtypeList(InputMethodInfo, Boolean)

指定した入力メソッド情報に対して有効な入力メソッド サブタイプの一覧を返します。

GetHashCode()

オブジェクトのハッシュ コード値を返します。

(継承元 Object)
HideSoftInputFromInputMethod(IBinder, HideSoftInputFlags)

入力メソッドのソフト入力領域を閉じる/非表示にして、ユーザーが入力メソッドを表示したり、操作したりできないようにします。

HideSoftInputFromWindow(IBinder, HideSoftInputFlags, ResultReceiver)

現在入力を受け入れているウィンドウのコンテキストからソフト入力ウィンドウを非表示にする要求。

HideSoftInputFromWindow(IBinder, HideSoftInputFlags)

現在入力を受け入れているウィンドウのコンテキストからソフト入力ウィンドウを非表示にする要求。

HideStatusIcon(IBinder)

このメンバーは非推奨です。

InvalidateInput(View)

viewに関連付けられたテキストが入力メソッド エディター (IME) ではないものによって更新されることをシステムに通知します。これにより、システムは、InputConnection#takeSnapshot()によって提供される周囲のテキストなどの新しい編集コンテキストを受け取るまで、IME からの保留中のテキスト編集要求を取り消すことができます。

InvokeIsActive(View)

指定したビューが入力メソッドの現在アクティブなビューの場合は、 true を返します。

IsWatchingCursor(View)
古い.

現在の入力メソッドがウィンドウ内の入力エディターのカーソルの位置を監視する場合は true を返します。

JavaFinalize()
古い.

オブジェクトへの参照がなくなったとガベージ コレクションによって判断されたときに、オブジェクトのガベージ コレクターによって呼び出されます。

(継承元 Object)
Notify()

このオブジェクトのモニターで待機している 1 つのスレッドを起動します。

(継承元 Object)
NotifyAll()

このオブジェクトのモニターで待機しているすべてのスレッドを起動します。

(継承元 Object)
PrepareStylusHandwritingDelegation(View, String)

最初の手書きストロークが検出されたビューとは異なるパッケージ内の同じまたは別のウィンドウ内の別のエディターへのスタイラス手書きセッションの開始の委任を準備します。

PrepareStylusHandwritingDelegation(View)

最初の手書きストロークが検出されたビューと同じウィンドウまたは異なるウィンドウ内の別のエディターへのスタイラス手書きセッションの開始の委任を準備します。

RestartInput(View)

入力メソッドが現在特定のビューに接続されている場合は、新しい内容で再起動します。

SendAppPrivateCommand(View, String, Bundle)

現在の Input メソッドで InputMethodSession#appPrivateCommand(String, Bundle) InputMethodSession.appPrivateCommand() を呼び出します。

SetAdditionalInputMethodSubtypes(String, InputMethodSubtype[])

追加の入力メソッド サブタイプを設定します。

SetCurrentInputMethodSubtype(InputMethodSubtype)

現在の入力メソッドの新しい入力メソッド サブタイプに切り替えます。

SetExplicitlyEnabledInputMethodSubtypes(String, Int32[])

呼び出し元プロセスが所有する特定の IME に対して明示的に有効になっている InputMethodSubtype の一覧を更新します。

SetHandle(IntPtr, JniHandleOwnership)

Handle プロパティを設定します。

(継承元 Object)
SetInputMethod(IBinder, String)

新しい入力メソッド コンポーネントに強制的に切り替えます。

SetInputMethodAndSubtype(IBinder, String, InputMethodSubtype)

新しい入力メソッドとサブタイプに強制的に切り替えます。

SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

アプリケーションと現在の入力メソッドの間の相互作用を判断する、全体的な入力メソッド フレームワーク (IMF) アーキテクチャへの中央システム API。

(継承元 JavaObject)
ShouldOfferSwitchingToNextInputMethod(IBinder)

現在の IME がユーザーに次の入力方法に切り替える方法を提供する必要がある場合は true を返します (例:

ShowInputMethodAndSubtypeEnabler(String)

指定した入力メソッドのサブタイプを有効にするための設定を表示します。

ShowInputMethodPicker()

IME ピッカーのポップアップ ウィンドウを表示します。

ShowSoftInput(View, ShowFlags, ResultReceiver)

必要に応じて、現在の入力メソッドのソフト入力領域をユーザーに表示することを明示的に要求します。

ShowSoftInput(View, ShowFlags)

必要に応じて、現在の入力メソッドのソフト入力領域をユーザーに表示することを明示的に要求します。

ShowSoftInputFromInputMethod(IBinder, ShowFlags)

入力メソッドのソフト入力領域を表示して、ユーザーが入力メソッド ウィンドウを表示し、操作できるようにします。

ShowStatusIcon(IBinder, String, Int32)

このメンバーは非推奨です。

StartConnectionlessStylusHandwriting(View, CursorAnchorInfo, IExecutor, IConnectionlessHandwritingCallback)

接続なしのスタイラス手書きセッションを開始します。

StartConnectionlessStylusHandwritingForDelegation(View, CursorAnchorInfo, IExecutor, IConnectionlessHandwritingCallback)

接続なしのスタイラス手書きセッション ( #startConnectionlessStylusHandwritingを参照) を開始し、認識された手書きテキストを後で #acceptStylusHandwritingDelegation(View)を使用してテキスト エディターにコミットできるようにします。

StartConnectionlessStylusHandwritingForDelegation(View, CursorAnchorInfo, String, IExecutor, IConnectionlessHandwritingCallback)

接続なしのスタイラス手書きセッション ( #startConnectionlessStylusHandwritingを参照) を開始し、認識された手書きテキストを後で #acceptStylusHandwritingDelegation(View, String)を使用してテキスト エディターにコミットできるようにします。

StartStylusHandwriting(View)

スタイラス手書きセッションを開始します。

SwitchToLastInputMethod(IBinder)

最後に使用した入力メソッドとサブタイプに強制的に切り替えます。

SwitchToNextInputMethod(IBinder, Boolean)

次の入力方法とサブタイプに強制的に切り替えます。

ToArray<T>()

このJava配列ラッパーからマネージド配列を作成します。

(継承元 Object)
ToggleSoftInput(ShowFlags, HideSoftInputFlags)

このメソッドは、入力メソッド ウィンドウの表示を切り替えます。

ToggleSoftInputFromWindow(IBinder, ShowSoftInputFlags, HideSoftInputFlags)

このメソッドは、入力メソッド ウィンドウの表示を切り替えます。

ToString()

オブジェクトの文字列形式を返します。

(継承元 Object)
UnregisterFromRuntime()

相互運用ランタイムからこのJava ピアの登録を解除します。

(継承元 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, Int32)

現在のスレッドは、通常、 <em>notified</em> または <em>interrupted</em>、または一定のリアルタイムが経過するまで、起動されるまで待機します。

(継承元 Object)
Wait(Int64)

現在のスレッドは、通常、 <em>notified</em> または <em>interrupted</em>、または一定のリアルタイムが経過するまで、起動されるまで待機します。

(継承元 Object)

明示的なインターフェイスの実装

名前 説明
IJavaPeerable.Disposed()

アプリケーションと現在の入力メソッドの間の相互作用を判断する、全体的な入力メソッド フレームワーク (IMF) アーキテクチャへの中央システム API。

(継承元 JavaObject)
IJavaPeerable.Finalized()

アプリケーションと現在の入力メソッドの間の相互作用を判断する、全体的な入力メソッド フレームワーク (IMF) アーキテクチャへの中央システム API。

(継承元 JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

アプリケーションと現在の入力メソッドの間の相互作用を判断する、全体的な入力メソッド フレームワーク (IMF) アーキテクチャへの中央システム API。

(継承元 JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

アプリケーションと現在の入力メソッドの間の相互作用を判断する、全体的な入力メソッド フレームワーク (IMF) アーキテクチャへの中央システム API。

(継承元 JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

アプリケーションと現在の入力メソッドの間の相互作用を判断する、全体的な入力メソッド フレームワーク (IMF) アーキテクチャへの中央システム API。

(継承元 JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

アプリケーションと現在の入力メソッドの間の相互作用を判断する、全体的な入力メソッド フレームワーク (IMF) アーキテクチャへの中央システム API。

(継承元 JavaObject)

拡張メソッド

名前 説明
GetJniTypeName(IJavaPeerable)

インスタンス selfの型の JNI 名を取得します。

JavaAs<TResult>(IJavaPeerable)

selfを強制的にTResult入力し、強制型がJava側で有効であることを確認します。

JavaCast<TResult>(IJavaObject)

Android ランタイムチェック型変換を実行します。

JavaCast<TResult>(IJavaObject)

アプリケーションと現在の入力メソッドの間の相互作用を判断する、全体的な入力メソッド フレームワーク (IMF) アーキテクチャへの中央システム API。

TryJavaCast<TResult>(IJavaPeerable, TResult)

selfを強制的にTResult入力し、強制型がJava側で有効であることを確認します。

適用対象