InputMethodManager Klasse

Definition

Zentrale System-API für die gesamte Architektur des Eingabemethodenframeworks (IMF), die die Interaktion zwischen Anwendungen und der aktuellen Eingabemethode vermittelt.

[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
Vererbung
InputMethodManager
Attribute

Hinweise

Zentrale System-API für die Architektur des Allgemeinen Eingabemethodenframeworks (IMF), die die Interaktion zwischen Anwendungen und der aktuellen Eingabemethode vermittelt.

Hier behandelte Themen: <Ol><li>Architecture Overview<li>Applications<li>Input Methods<li>Security</ol>

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

Es gibt drei hauptbeteiligte Parteien, die an der Architektur des Eingabemethodenframeworks (IMF) beteiligt sind:

<ul><li> Die <starke>Eingabemethode manager</strong> , wie in dieser Klasse ausgedrückt, ist der zentrale Punkt des Systems, das die Interaktion zwischen allen anderen Teilen verwaltet. Sie wird hier als clientseitige API ausgedrückt, die in jedem Anwendungskontext vorhanden ist und mit einem globalen Systemdienst kommuniziert, der die Interaktion über alle Prozesse hinweg verwaltet. <li> Eine <strong>input method (IME)</strong> implementiert ein bestimmtes Interaktionsmodell, mit dem der Benutzer Text generieren kann. Das System bindet an die aktuell verwendete Eingabemethode, wodurch sie erstellt und ausgeführt wird, und teilt ihr mit, wann die Benutzeroberfläche ausgeblendet und angezeigt werden soll. Es wird jeweils nur ein IME ausgeführt. <Li> Mehrere <starke>Clientanwendungen</starke> Arbitrate mit dem Eingabemethoden-Manager für den Eingabefokus und die Kontrolle über den Status des IME. Nur ein solcher Client ist jeweils aktiv (arbeitet mit dem IME). </ul>

"Anwendungen"><h3>Applications</h3>

In den meisten Fällen müssen Anwendungen, die den Standard android.widget.TextView oder die zugehörigen Unterklassen verwenden, wenig tun, um mit weichen Eingabemethoden gut zu arbeiten. Die Standard Dinge, die Sie beachten müssen, sind:

<ul><li> Legen Sie die android.R.attr#inputType in Ihren bearbeitbaren Textansichten richtig fest, damit die Eingabemethode genügend Kontext hat, um den Benutzer bei der Eingabe von Text in sie zu unterstützen. <li> Gehen Sie gut damit um, den Bildschirmplatz zu verlieren, wenn die Eingabemethode angezeigt wird. Im Idealfall sollte eine Anwendung die Verkleinerung des Fensters behandeln, aber sie kann sich darauf verlassen, dass das System bei Bedarf die Verschiebung des Fensters durchführt. Sie sollten das android.R.attr#windowSoftInputMode Attribut für Ihre Aktivität oder die entsprechenden Werte für von Ihnen erstellte Fenster festlegen, um dem System zu helfen zu bestimmen, ob die Größe verschoben oder geändert werden soll (es wird versucht, dies automatisch zu bestimmen, aber möglicherweise falsch). <li> Sie können auch den bevorzugten Softeingabezustand (geöffnet, geschlossen usw.) für Ihr Fenster mit demselben android.R.attr#windowSoftInputMode Attribut steuern. </ul>

Eine präzisere Steuerung ist über die APIs hier verfügbar, um direkt mit dem IWF und dessen IME zu interagieren– entweder den Eingabebereich ein- oder ausblenden, sodass der Benutzer eine Eingabemethode auswählen kann usw.

Für die seltenen Personen unter uns, die ihre eigenen Text-Editoren schreiben, müssen Sie implementierenandroid.view.View#onCreateInputConnection, um eine neue instance Ihrer eigenen InputConnection Benutzeroberfläche zurückzugeben, die es dem IME ermöglicht, mit Ihrem Editor zu interagieren.

"InputMethods"><h3>Eingabemethoden</h3>

Eine Eingabemethode (IME) wird als android.app.Serviceimplementiert, die in der Regel von android.inputmethodservice.InputMethodServiceabgeleitet wird. Es muss die Kernschnittstelle InputMethod bereitstellen, obwohl dies normalerweise von android.inputmethodservice.InputMethodService behandelt wird, und Implementieren müssen sich dort nur mit der API auf höherer Ebene befassen.

Weitere Informationen zum Implementieren von IMEs finden Sie in der android.inputmethodservice.InputMethodService -Klasse.

"Sicherheit"><h3>Sicherheit</h3>

Es gibt viele Sicherheitsprobleme im Zusammenhang mit Eingabemethoden, da sie im Wesentlichen die Freiheit haben, die Benutzeroberfläche vollständig zu steuern und alles zu überwachen, was der Benutzer eingibt. Das Android-Eingabemethodenframework ermöglicht auch beliebige IMEs von Drittanbietern. Daher muss darauf geachtet werden, ihre Auswahl und Interaktionen einzuschränken.

Im Folgenden finden Sie einige wichtige Punkte zur Sicherheitsarchitektur hinter dem IWF:

<ul><li>

Nur das System darf über die Berechtigung direkt auf die android.Manifest.permission#BIND_INPUT_METHOD Schnittstelle einer IME InputMethod zugreifen. Dies wird im System erzwungen, indem keine Bindung an einen Eingabemethodendienst erfolgt, der diese Berechtigung nicht erfordert, sodass das System garantieren kann, dass keine anderen nicht vertrauenswürdigen Clients auf die aktuelle Eingabemethode außerhalb seiner Kontrolle zugreifen.

<Li>

Es kann viele Clientprozesse des IWF geben, aber nur einer kann gleichzeitig aktiv sein. Die inaktiven Clients können nicht mit wichtigen Teilen des IWF über die unten beschriebenen Mechanismen interagieren.

<Li>

Clients einer Eingabemethode erhalten nur Zugriff auf ihre InputMethodSession Schnittstelle. Eine instance dieser Schnittstelle wird für jeden Client erstellt, und nur Aufrufe aus der Sitzung, die dem aktiven Client zugeordnet ist, werden vom aktuellen IME verarbeitet. Dies wird für normale IMEs erzwungen android.inputmethodservice.AbstractInputMethodService , muss aber explizit von einer IME behandelt werden, die die Unformatierungsimplementierung InputMethodSession angepasst.

<Li>

Nur die aktiven Clients InputConnection akzeptieren Vorgänge. Der IMF teilt jedem Clientprozess mit, ob er aktiv ist, und das Framework erzwingt, dass in inaktiven Prozessen Aufrufe der aktuellen InputConnection ignoriert werden. Dadurch wird sichergestellt, dass der aktuelle IME nur Ereignisse und Textbearbeitungen an die Benutzeroberfläche übermitteln kann, die für den Benutzer im Fokus stehen.

<Li>

Ein IME kann nie mit einem InputConnection interagieren, während der Bildschirm ausgeschaltet ist. Dies wird erzwungen, indem alle Clients inaktiv gemacht werden, während der Bildschirm deaktiviert ist, und verhindert, dass schlechte IMEs die Benutzeroberfläche antreiben, wenn der Benutzer sich ihres Verhaltens nicht bewusst sein kann.

<Li>

Eine Clientanwendung kann vom System verlangen, dass der Benutzer eine neue IME auswählen kann, aber nicht programmgesteuert zu einem selbst wechseln kann. Dadurch wird verhindert, dass böswillige Anwendungen den Benutzer zu ihrer eigenen IME wechseln, die weiterhin ausgeführt wird, wenn der Benutzer zu einer anderen Anwendung navigiert. Ein IME hingegen kann<> das <>System programmgesteuert auf eine andere IME umstellen, da es bereits die volle Kontrolle über die Benutzereingabe hat.

<Li>

Der Benutzer muss einen neuen IME explizit in den Einstellungen aktivieren, bevor er zu diesem wechseln kann, um mit dem System zu bestätigen, dass er davon weiß und ihn zur Verwendung zur Verfügung stellen möchte.

</ul>

Wenn Ihre App auf Android 11 (API-Ebene 30) oder höher ausgerichtet ist, geben die Methoden in dieser Klasse jeweils ein gefiltertes Ergebnis nach den Regeln der Paketsichtbarkeit zurück, mit Ausnahme der derzeit verbundenen IME. Apps mit einer Abfrage für die InputMethod#SERVICE_INTERFACE zeigen alle IMEs an.

Java-Dokumentation für android.view.inputmethod.InputMethodManager.

Teile dieser Seite sind Änderungen, die auf Arbeiten basieren, die vom Android Open Source Project erstellt und freigegeben wurden und gemäß den In der Attribution License beschriebenen Begriffen verwendet werden.

Felder

ShowForced

Flag für #showSoftInput , um anzugeben, dass der Benutzer das Öffnen der Eingabemethode erzwungen hat (z. B. durch langes Drücken des Menüs), sodass sie erst geschlossen werden sollte, wenn er dies explizit tut.

ShowImplicit
Veraltet.

Flag für #showSoftInput , um anzugeben, dass dies eine implizite Anforderung zum Anzeigen des Eingabefensters ist, nicht als Ergebnis einer direkten Anforderung durch den Benutzer.

Eigenschaften

Class

Gibt die Laufzeitklasse dieses Objectzurück.

(Geerbt von Object)
CurrentInputMethodInfo

Gibt die InputMethodInfo der aktuell ausgewählten Eingabemethode (für den Benutzer des Prozesses) zurück.

CurrentInputMethodSubtype

Gibt den aktuellen Eingabemethodenuntertyp zurück.

EnabledInputMethodList

Gibt die Liste der aktivierten Eingabemethoden zurück.

Handle

Das Handle für die zugrunde liegende Android-instance.

(Geerbt von Object)
InputMethodList

Gibt die Liste der installierten Eingabemethoden zurück.

IsAcceptingText

Gibt zurück true , wenn die aktuell bediente Ansicht Volltextbearbeitungen akzeptiert.

IsActive

Gibt zurück true , wenn eine Ansicht derzeit für die Eingabemethode aktiv ist.

IsFullscreenMode

Hiermit können Sie ermitteln, ob die angefügte Eingabemethode im Vollbildmodus ausgeführt wird.

IsInputMethodSuppressingSpellChecker

Gibt zurück true , wenn die Eingabemethode die Systemschreibprüfung unterdrückt.

IsStylusHandwritingAvailable

Gibt zurück true , wenn aktuell ausgewählte IME die Eingabestifthandschrift unterstützt, & aktiviert ist.

JniIdentityHashCode

Zentrale System-API für die gesamte Architektur des Eingabemethodenframeworks (IMF), die die Interaktion zwischen Anwendungen und der aktuellen Eingabemethode vermittelt.

(Geerbt von Object)
JniPeerMembers

Zentrale System-API für die gesamte Architektur des Eingabemethodenframeworks (IMF), die die Interaktion zwischen Anwendungen und der aktuellen Eingabemethode vermittelt.

LastInputMethodSubtype

Gibt die letzte im Systemverlauf verwendete InputMethodSubtype zurück.

PeerReference

Zentrale System-API für die gesamte Architektur des Eingabemethodenframeworks (IMF), die die Interaktion zwischen Anwendungen und der aktuellen Eingabemethode vermittelt.

(Geerbt von Object)
ShortcutInputMethodsAndSubtypes

Gibt eine Zuordnung aller Tastenkombinationseingabemethodeninformationen und deren Untertypen zurück.

ThresholdClass

Diese API unterstützt die Mono für Android-Infrastruktur und ist nicht für die direkte Verwendung aus Ihrem Code vorgesehen.

(Geerbt von Object)
ThresholdType

Diese API unterstützt die Mono für Android-Infrastruktur und ist nicht für die direkte Verwendung aus Ihrem Code vorgesehen.

(Geerbt von Object)

Methoden

AcceptStylusHandwritingDelegation(View)

Akzeptiert und startet eine Schreibstifthandsitzung in der Delegatansicht, wenn die Delegierung der Handschriftinitiierung zuvor mithilfe #prepareStylusHandwritingDelegation(View) des Delegators angefordert wurde.

AcceptStylusHandwritingDelegation(View, String)

Akzeptiert und startet eine Schreibstifthandschreibsitzung in der Delegatansicht, wenn die Handschriftinitiierungsdelegierung zuvor von #prepareStylusHandwritingDelegation(View, String) te delegator angefordert wurde und die Ansicht zu einem angegebenen Delegatpaket gehört.

Clone()

Erstellt und gibt eine Kopie dieses Objekts zurück.

(Geerbt von Object)
DispatchKeyEventFromInputMethod(View, KeyEvent)

Stellt die Standardimplementierung von InputConnection#sendKeyEvent(KeyEvent)bereit, von der erwartet wird, dass ein Tastaturereignis, das vom IME an ein geeignetes Ereignisziel gesendet wird, abhängig vom angegebenen View und dem aktuellen Fokuszustand gesendet wird.

DisplayCompletions(View, CompletionInfo[])
Dispose()

Zentrale System-API für die gesamte Architektur des Eingabemethodenframeworks (IMF), die die Interaktion zwischen Anwendungen und der aktuellen Eingabemethode vermittelt.

(Geerbt von Object)
Dispose(Boolean)

Zentrale System-API für die gesamte Architektur des Eingabemethodenframeworks (IMF), die die Interaktion zwischen Anwendungen und der aktuellen Eingabemethode vermittelt.

(Geerbt von Object)
Equals(Object)

Gibt an, ob ein anderes Objekt "gleich" diesem objekt ist.

(Geerbt von Object)
FromContext(Context)

Zentrale System-API für die gesamte Architektur des Eingabemethodenframeworks (IMF), die die Interaktion zwischen Anwendungen und der aktuellen Eingabemethode vermittelt.

GetEnabledInputMethodSubtypeList(InputMethodInfo, Boolean)

Gibt eine Liste aktivierter Eingabemethodenuntertypen für die angegebenen Eingabemethodeninformationen zurück.

GetHashCode()

Gibt einen Hashcodewert für das Objekt zurück.

(Geerbt von Object)
HideSoftInputFromInputMethod(IBinder, HideSoftInputFlags)

Schließen/ausblenden Sie den weichen Eingabebereich der Eingabemethode, sodass der Benutzer ihn nicht mehr sieht oder damit interagieren kann.

HideSoftInputFromWindow(IBinder, HideSoftInputFlags)

Synonym für #hideSoftInputFromWindow(IBinder, int, ResultReceiver) ohne Ergebnis: Anforderung, das Fenster für die vorläufige Eingabe aus dem Kontext des Fensters auszublenden, das derzeit Eingaben akzeptiert.

HideSoftInputFromWindow(IBinder, HideSoftInputFlags, ResultReceiver)

Anforderung zum Ausblenden des Softeingabefensters im Kontext des Fensters, das derzeit eingaben akzeptiert.

HideStatusIcon(IBinder)

Dieses Member ist veraltet.

InvalidateInput(View)

Gibt dem System einen Hinweis, dass der zugeordnete view Text von etwas aktualisiert wird, das kein Eingabemethoden-Editor (IME) ist, sodass das System alle ausstehenden Textbearbeitungsanforderungen vom IME abbrechen kann, bis es den neuen Bearbeitungskontext empfängt, z. B. den von InputConnection#takeSnapshot()bereitgestellten Text.

InvokeIsActive(View)

Gibt zurück true , wenn die angegebene Ansicht die derzeit aktive Ansicht für die Eingabemethode ist.

IsWatchingCursor(View)
Veraltet.

Gibt true zurück, wenn die aktuelle Eingabemethode die Position des Cursors des Eingabe-Editors in ihrem Fenster watch möchte.

JavaFinalize()

Wird vom Garbage Collector für ein Objekt aufgerufen, wenn die Garbage Collection feststellt, dass keine Verweise mehr auf das Objekt vorhanden sind.

(Geerbt von Object)
Notify()

Aktiviert einen einzelnen Thread, der auf den Monitor dieses Objekts wartet.

(Geerbt von Object)
NotifyAll()

Aktiviert alle Threads, die auf den Monitor dieses Objekts warten.

(Geerbt von Object)
PrepareStylusHandwritingDelegation(View)

Bereitet die Delegierung des Startens der Eingabestifthandschreibsitzung an einen anderen Editor in demselben oder anderen Fenster vor als die Ansicht, in der der anfängliche Handschriftstrich erkannt wurde.

PrepareStylusHandwritingDelegation(View, String)

Bereitet die Delegierung des Startens der Eingabestifthandschreibsitzung an einen anderen Editor in demselben oder einem anderen Fenster in einem anderen Paket vor als die Ansicht, in der der anfängliche Handschriftstrich erkannt wurde.

RestartInput(View)

Wenn die Eingabemethode derzeit mit der angegebenen Ansicht verbunden ist, starten Sie sie mit dem neuen Inhalt neu.

SendAppPrivateCommand(View, String, Bundle)

Rufen Sie InputMethodSession#appPrivateCommand(String, Bundle) InputMethodSession.appPrivateCommand() die aktuelle Eingabemethode auf.

SetAdditionalInputMethodSubtypes(String, InputMethodSubtype[])

Legen Sie zusätzliche Eingabemethodenuntertypen fest.

SetCurrentInputMethodSubtype(InputMethodSubtype)

Wechseln Sie zu einem neuen Eingabemethodenuntertyp der aktuellen Eingabemethode.

SetExplicitlyEnabledInputMethodSubtypes(String, Int32[])

Updates die Liste der explizit aktivierten InputMethodSubtype für einen bestimmten IME im Besitz des aufrufenden Prozesses.

SetHandle(IntPtr, JniHandleOwnership)

Legt die Handle-Eigenschaft fest.

(Geerbt von Object)
SetInputMethod(IBinder, String)

Erzwingen des Wechsels zu einer neuen Eingabemethodenkomponente.

SetInputMethodAndSubtype(IBinder, String, InputMethodSubtype)

Erzwingen des Wechsels zu einer neuen Eingabemethode und einem neuen Untertyp.

ShouldOfferSwitchingToNextInputMethod(IBinder)

Gibt true zurück, wenn der aktuelle IME den Benutzern Möglichkeiten bieten muss, zu einer nächsten Eingabemethode zu wechseln (z. B.

ShowInputMethodAndSubtypeEnabler(String)

Zeigen Sie die Einstellungen zum Aktivieren von Untertypen der angegebenen Eingabemethode an.

ShowInputMethodPicker()

Popupfenster für die IME-Auswahl anzeigen.

ShowSoftInput(View, ShowFlags)

Synonym für #showSoftInput(View, int, ResultReceiver) ohne Ergebnisempfänger: Fordern Sie explizit an, dass dem Benutzer bei Bedarf der soft-Eingabebereich der aktuellen Eingabemethode angezeigt wird.

ShowSoftInput(View, ShowFlags, ResultReceiver)

Fordern Sie explizit an, dass dem Benutzer bei Bedarf der soft-Eingabebereich der aktuellen Eingabemethode angezeigt wird.

ShowSoftInputFromInputMethod(IBinder, ShowFlags)

Zeigen Sie den weichen Eingabebereich der Eingabemethode an, damit der Benutzer das Eingabemethodenfenster sieht und damit interagieren kann.

ShowStatusIcon(IBinder, String, Int32)

Dieses Member ist veraltet.

StartStylusHandwriting(View)

Starten Sie die Schreibanleitungssitzung des Tablettstifts.

SwitchToLastInputMethod(IBinder)

Erzwingen sie den Wechsel zur zuletzt verwendeten Eingabemethode und zum Zuletzt verwendeten Untertyp.

SwitchToNextInputMethod(IBinder, Boolean)

Erzwingen sie den Wechsel zur nächsten Eingabemethode und zum nächsten Untertyp.

ToArray<T>()

Zentrale System-API für die gesamte Architektur des Eingabemethodenframeworks (IMF), die die Interaktion zwischen Anwendungen und der aktuellen Eingabemethode vermittelt.

(Geerbt von Object)
ToggleSoftInput(ShowFlags, HideSoftInputFlags)

Diese Methode schaltet die Anzeige des Eingabemethodenfensters um.

ToggleSoftInputFromWindow(IBinder, ShowSoftInputFlags, HideSoftInputFlags)

Diese Methode schaltet die Anzeige des Eingabemethodenfensters um.

ToString()

Gibt eine Zeichenfolgendarstellung des Objekts zurück.

(Geerbt von Object)
UnregisterFromRuntime()

Zentrale System-API für die gesamte Architektur des Eingabemethodenframeworks (IMF), die die Interaktion zwischen Anwendungen und der aktuellen Eingabemethode vermittelt.

(Geerbt von Object)
UpdateCursor(View, Int32, Int32, Int32, Int32)
Veraltet.

Melden Sie die aktuelle Cursorposition im zugehörigen Fenster.

UpdateCursorAnchorInfo(View, CursorAnchorInfo)

Melden Sie Positionsänderungen der Texteinfügemarke und/oder der Zeichen in der Kompositionszeichenfolge.

UpdateExtractedText(View, Int32, ExtractedText)
UpdateSelection(View, Int32, Int32, Int32, Int32)

Melden Sie den aktuellen Auswahlbereich.

ViewClicked(View)

Benachrichtigen Sie das Ereignis, wenn der Benutzer auf die Textansicht tippt oder darauf geklickt hat.

Wait()

Bewirkt, dass der aktuelle Thread wartet, bis er aktiviert ist, in der Regel durch <>Benachrichtigung</em> oder <em>interrupted</em>.

(Geerbt von Object)
Wait(Int64)

Bewirkt, dass der aktuelle Thread wartet, bis er aktiviert ist, in der Regel durch>< Benachrichtigung</em> oder <em>interrupted</em>, oder bis eine bestimmte Menge an Echtzeit verstrichen ist.

(Geerbt von Object)
Wait(Int64, Int32)

Bewirkt, dass der aktuelle Thread wartet, bis er aktiviert ist, in der Regel durch>< Benachrichtigung</em> oder <em>interrupted</em>, oder bis eine bestimmte Menge an Echtzeit verstrichen ist.

(Geerbt von Object)

Explizite Schnittstellenimplementierungen

IJavaPeerable.Disposed()

Zentrale System-API für die gesamte Architektur des Eingabemethodenframeworks (IMF), die die Interaktion zwischen Anwendungen und der aktuellen Eingabemethode vermittelt.

(Geerbt von Object)
IJavaPeerable.DisposeUnlessReferenced()

Zentrale System-API für die gesamte Architektur des Eingabemethodenframeworks (IMF), die die Interaktion zwischen Anwendungen und der aktuellen Eingabemethode vermittelt.

(Geerbt von Object)
IJavaPeerable.Finalized()

Zentrale System-API für die gesamte Architektur des Eingabemethodenframeworks (IMF), die die Interaktion zwischen Anwendungen und der aktuellen Eingabemethode vermittelt.

(Geerbt von Object)
IJavaPeerable.JniManagedPeerState

Zentrale System-API für die gesamte Architektur des Eingabemethodenframeworks (IMF), die die Interaktion zwischen Anwendungen und der aktuellen Eingabemethode vermittelt.

(Geerbt von Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Zentrale System-API für die gesamte Architektur des Eingabemethodenframeworks (IMF), die die Interaktion zwischen Anwendungen und der aktuellen Eingabemethode vermittelt.

(Geerbt von Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Zentrale System-API für die gesamte Architektur des Eingabemethodenframeworks (IMF), die die Interaktion zwischen Anwendungen und der aktuellen Eingabemethode vermittelt.

(Geerbt von Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

Zentrale System-API für die gesamte Architektur des Eingabemethodenframeworks (IMF), die die Interaktion zwischen Anwendungen und der aktuellen Eingabemethode vermittelt.

(Geerbt von Object)

Erweiterungsmethoden

JavaCast<TResult>(IJavaObject)

Führt eine Typkonvertierung mit Überprüfung der Android-Laufzeit aus.

JavaCast<TResult>(IJavaObject)

Zentrale System-API für die gesamte Architektur des Eingabemethodenframeworks (IMF), die die Interaktion zwischen Anwendungen und der aktuellen Eingabemethode vermittelt.

GetJniTypeName(IJavaPeerable)

Zentrale System-API für die gesamte Architektur des Eingabemethodenframeworks (IMF), die die Interaktion zwischen Anwendungen und der aktuellen Eingabemethode vermittelt.

Gilt für: