InputMethodManager Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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
- 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.Service
implementiert, die in der Regel von android.inputmethodservice.InputMethodService
abgeleitet 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 |
ShowImplicit |
Veraltet.
Flag für |
Eigenschaften
Class |
Gibt die Laufzeitklasse dieses |
CurrentInputMethodInfo |
Gibt die |
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 |
IsActive |
Gibt zurück |
IsFullscreenMode |
Hiermit können Sie ermitteln, ob die angefügte Eingabemethode im Vollbildmodus ausgeführt wird. |
IsInputMethodSuppressingSpellChecker |
Gibt zurück |
IsStylusHandwritingAvailable |
Gibt zurück |
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 |
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 |
AcceptStylusHandwritingDelegation(View, String) |
Akzeptiert und startet eine Schreibstifthandschreibsitzung in der Delegatansicht, wenn die Handschriftinitiierungsdelegierung zuvor von |
Clone() |
Erstellt und gibt eine Kopie dieses Objekts zurück. (Geerbt von Object) |
DispatchKeyEventFromInputMethod(View, KeyEvent) |
Stellt die Standardimplementierung von |
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, 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 |
InvokeIsActive(View) |
Gibt zurück |
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 |
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 |
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, 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. |