IInputConnection Schnittstelle
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.
Die InputConnection-Schnittstelle ist der Kommunikationskanal von einer InputMethod
zurück zur Anwendung, die ihre Eingabe empfängt.
[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
- Abgeleitet
- Attribute
- Implementiert
Hinweise
Die InputConnection-Schnittstelle ist der Kommunikationskanal von einer InputMethod
zurück zur Anwendung, die ihre Eingabe empfängt. Es wird verwendet, um z. B. Text um den Cursor zu lesen, Text in das Textfeld zu übernehmen und Unformatierte Schlüsselereignisse an die Anwendung zu senden.
Ab API-Ebene android.os.Build.VERSION_CODES#N
kann das System mit der Situation umgehen, in der die Anwendung diese Klasse direkt implementiert, aber eine oder mehrere der folgenden Methoden werden nicht implementiert.
<ul><li>#getSelectedText(int)
, das eingeführt wurde.android.os.Build.VERSION_CODES#GINGERBREAD
</li li><#setComposingRegion(int, int)
>, das eingeführt wurde.android.os.Build.VERSION_CODES#GINGERBREAD
</li li><#commitCorrection(CorrectionInfo)
>, das eingeführt wurde.android.os.Build.VERSION_CODES#HONEYCOMB
</li li><#requestCursorUpdates(int)
>, das eingeführt wurde.android.os.Build.VERSION_CODES#LOLLIPOP
</li li><#deleteSurroundingTextInCodePoints(int, int)
>, das eingeführt wurde.android.os.Build.VERSION_CODES#N
</li li><#getHandler()
>, das eingeführt wurde.android.os.Build.VERSION_CODES#N
</li li><#closeConnection()
>, das eingeführt wurde.android.os.Build.VERSION_CODES#N
</li li><#commitContent(InputContentInfo, int, Bundle)
>, das eingeführt wurde.android.os.Build.VERSION_CODES#N_MR1
</li></ul>
<h3>Implementieren eines IME oder eines Editors</h3>
Die Texteingabe ist das Ergebnis der Synergie zweier wesentlicher Komponenten: ein Input Method Engine (IME) und ein Editor. Der IME kann eine Softwaretastaturen, eine Handschriftschnittstelle, eine Emoji-Palette, ein Sprach-zu-Text-Modul usw. sein. Es gibt in der Regel mehrere IMEs, die auf einem beliebigen Android-Gerät installiert sind. In Android erweitern android.inputmethodservice.InputMethodService
IMEs . Weitere Informationen zum Erstellen eines IME finden Sie im Leitfaden zum Erstellen einer Eingabemethode .
Der Editor ist die Komponente, die Text empfängt und anzeigt. In der Regel ist dies eine android.widget.EditText
Instanz, aber einige Anwendungen können aus verschiedenen Gründen einen eigenen Editor implementieren. Dies ist eine große und komplizierte Aufgabe, und eine Anwendung, die dies tut, um sicherzustellen, dass das Verhalten mit dem standardmäßigen EditText-Verhalten in Android konsistent ist. Ein Editor muss mit dem IME interagieren, Befehle über diese InputConnection-Schnittstelle empfangen und Befehle senden.android.view.inputmethod.InputMethodManager
Ein Editor sollte zunächst implementiert android.view.View#onCreateInputConnection(EditorInfo)
werden, um eine eigene Eingabeverbindung zurückzugeben.
Wenn Sie Ihre eigene IME implementieren, müssen Sie die Methoden in dieser Schnittstelle aufrufen, um mit der Anwendung zu interagieren. Testen Sie Ihren IME mit einer breiten Palette von Anwendungen, einschließlich Browsern und Rich-Text-Editoren, da einige möglicherweise Besonderheiten haben, mit denen Sie umgehen müssen. Denken Sie daran, dass Ihr IME möglicherweise nicht die einzige Quelle von Änderungen am Text ist, und versuchen Sie, in den von Ihnen gesendeten Daten möglichst vorsichtig und liberal in den empfangenen Daten zu sein.
Wenn Sie Ihren eigenen Editor implementieren, müssen Sie wahrscheinlich Ihre eigene Unterklasse BaseInputConnection
bereitstellen, um auf die Befehle von IMEs zu antworten. Stellen Sie sicher, dass Sie Ihren Editor mit so vielen IMEs wie möglich testen, da ihr Verhalten sehr unterschiedlich sein kann. Stellen Sie außerdem sicher, dass Sie mit verschiedenen Sprachen testen, einschließlich CJK-Sprachen und Rechts-nach-links-Sprachen wie Arabisch, da diese möglicherweise unterschiedliche Eingabeanforderungen haben. Wenn Sie Zweifel an dem Verhalten haben, das Sie für einen bestimmten Anruf übernehmen sollten, imitieren Sie bitte die Standardmäßige TextView-Implementierung in der neuesten Android-Version nach, und wenn Sie sich dafür entscheiden, davon zu driften, sollten Sie sorgfältig berücksichtigen, dass Inkonsistenzen im Text-Editor-Verhalten von Benutzern fast universell als schlechte Sache empfunden werden.
<h3>Cursor, Auswahlen und Kompositionen</h3>
In Android sind der Cursor und die Auswahl eins und dasselbe. Ein "Cursor" ist nur der Sonderfall einer Auswahl in Nullgröße. In dieser Dokumentation werden sie austauschbar verwendet. Jede Methode, die "vor dem Cursor" fungiert, würde vor dem Beginn der Auswahl handeln, wenn vorhanden ist, und jede Methode, die "nach dem Cursor" fungiert, würde nach dem Ende der Auswahl handeln.
Ein Editor muss in der Lage sein, einen aktuell "Verfassen"-Bereich nachzuverfolgen, wie die Standardeditions-Widgets. Die Komposition ist in einer bestimmten Formatvorlage markiert: siehe android.text.Spanned#SPAN_COMPOSING
. Mithilfe dieser Imes können Benutzer nachverfolgen, auf welchen Teil des Texts sie sich gerade konzentrieren, und mit dem Editor interagieren InputConnection#setComposingText(CharSequence, int)
InputConnection#setComposingRegion(int, int)
und mit dem Editor interagieren.InputConnection#finishComposingText()
Der Verfassenbereich und die Auswahl sind völlig unabhängig voneinander, und der IME kann sie verwenden, aber sie werden entsprechend angepasst.
Java-Dokumentation für android.view.inputmethod.InputConnection
.
Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die vom Android Open Source-Projekt erstellt und freigegeben werden und gemäß den in der Creative Commons 2.5 Attribution License beschriebenen Begriffen verwendet werden.
Eigenschaften
Handle |
Ruft den JNI-Wert des zugrunde liegenden Android-Objekts ab. (Geerbt von IJavaObject) |
Handler |
Die InputConnection-Schnittstelle ist der Kommunikationskanal von einer |
JniIdentityHashCode |
Gibt den Wert |
JniManagedPeerState |
Status des verwalteten Peers. (Geerbt von IJavaPeerable) |
JniPeerMembers |
Mitgliedszugriff und Aufrufunterstützung. (Geerbt von IJavaPeerable) |
PeerReference |
Gibt eine JniObjectReference der umbrochenen Java-Objektinstanz zurück. (Geerbt von IJavaPeerable) |
Methoden
BeginBatchEdit() |
Teilen Sie dem Editor mit, dass Sie eine Reihe von Editorvorgängen starten. |
ClearMetaKeyStates(MetaKeyStates) |
Löschen Sie die gedrückten Zustände der angegebenen Metataste in der angegebenen Eingabeverbindung. |
CloseConnection() |
Wird vom System nur einmal aufgerufen, um zu benachrichtigen, dass das System die Verbindung zwischen der Eingabemethode und der Anwendung ungültig macht. |
CommitCompletion(CompletionInfo) |
Commit für einen Abschluss, den der Benutzer aus den möglichen zuvor gemeldeten oder |
CommitContent(InputContentInfo, InputContentFlags, Bundle) |
Wird von der Eingabemethode aufgerufen, um Inhalte wie ein PNG-Bild an den Editor zu übernehmen. |
CommitCorrection(CorrectionInfo) |
Übernehmen Sie automatisch eine Korrektur, die für die Eingabe des unformatierten Benutzers ausgeführt wird. |
CommitText(ICharSequence, Int32) |
Übernehmen Sie Text in das Textfeld, und legen Sie die neue Cursorposition fest. |
CommitText(ICharSequence, Int32, TextAttribute) |
Die Variante von |
CommitText(String, Int32, TextAttribute) |
Die Variante von |
DeleteSurroundingText(Int32, Int32) |
Löschen Sie <var>beforeLength</var> characters of text before the current cursor position, and delete <var>afterLength</var> characters of text after the current cursor position, excluding the selection. |
DeleteSurroundingTextInCodePoints(Int32, Int32) |
Eine Variante von |
Disposed() |
Wird aufgerufen, wenn die Instanz verworfen wurde. (Geerbt von IJavaPeerable) |
DisposeUnlessReferenced() |
Wenn keine offenen Verweise auf diese Instanz vorhanden sind, wird nichts aufgerufen |
EndBatchEdit() |
Teilen Sie dem Editor mit, dass Sie mit einer zuvor initiierten Batchbearbeitung fertig |
Finalized() |
Wird aufgerufen, wenn die Instanz abgeschlossen wurde. (Geerbt von IJavaPeerable) |
FinishComposingText() |
Lassen Sie den Text-Editor fertigstellen, was das Verfassen von Text gerade aktiv ist. |
GetCursorCapsMode(CapitalizationMode) |
Rufen Sie den aktuellen Großschreibungsmodus in Kraft an der aktuellen Cursorposition im Text ab. |
GetExtractedText(ExtractedTextRequest, GetTextFlags) |
Rufen Sie den aktuellen Text im Editor der Eingabeverbindung ab, und überwachen Sie alle Änderungen daran. |
GetSelectedTextFormatted(GetTextFlags) |
Ruft den markierten Text (sofern vorhanden) ab. |
GetSurroundingText(Int32, Int32, Int32) |
Ruft den umgebenden Text um den aktuellen Cursor, mit <var>beforeLength</var> characters of text before the cursor (start of the selection), <var>afterLength</var> characters of text after the cursor (end of the selection) and all of the selected text. |
GetTextAfterCursorFormatted(Int32, GetTextFlags) |
Rufen Sie <var>n</var> characters of text after the current cursor position. |
GetTextBeforeCursorFormatted(Int32, GetTextFlags) |
Rufen Sie <var>n</var> zeichen von Text vor der aktuellen Cursorposition ab. |
PerformContextMenuAction(Int32) |
Führen Sie eine Kontextmenüaktion für das Feld aus. |
PerformEditorAction(ImeAction) |
Lassen Sie den Editor eine Aktion ausführen, hat er gesagt, dass er dies tun kann. |
PerformHandwritingGesture(HandwritingGesture, IExecutor, IIntConsumer) |
Führen Sie eine Handschriftgeste für Text aus. |
PerformPrivateCommand(String, Bundle) |
API zum Senden privater Befehle von einer Eingabemethode an den verbundenen Editor. |
PerformSpellCheck() |
Lassen Sie den Editor die Rechtschreibprüfung für den vollständigen Inhalt durchführen. |
PreviewHandwritingGesture(PreviewableHandwritingGesture, CancellationSignal) |
Zeigen Sie eine Handschriftgeste für Text in der Vorschau an. |
ReplaceText(Int32, Int32, ICharSequence, Int32, TextAttribute) |
Ersetzen Sie den spezifischen Bereich im Editor durch vorgeschlagenen Text. |
ReplaceText(Int32, Int32, String, Int32, TextAttribute) |
Ersetzen Sie den spezifischen Bereich im Editor durch vorgeschlagenen Text. |
ReportFullscreenMode(Boolean) |
Wird wieder aufgerufen, wenn der verbundene IME zwischen Vollbildmodus und normalen Modi wechselt. |
RequestCursorUpdates(Int32) |
Wird von der Eingabemethode aufgerufen, um den Editor aufzufordern, den Aufruf zurückzurufen |
RequestCursorUpdates(Int32, Int32) |
Wird von der Eingabemethode aufgerufen, um den Editor aufzufordern, den Aufruf zurückzurufen |
RequestTextBoundsInfo(RectF, IExecutor, IConsumer) |
Wird von der Eingabemethode aufgerufen, um einen |
SendKeyEvent(KeyEvent) |
Senden Sie ein Schlüsselereignis an den Prozess, der derzeit über diese Eingabeverbindung angefügt ist. |
SetComposingRegion(Int32, Int32) |
Markieren Sie einen bestimmten Textbereich als Verfassen von Text. |
SetComposingRegion(Int32, Int32, TextAttribute) |
Die Variante von |
SetComposingText(ICharSequence, Int32) |
Ersetzen Sie den aktuell verfassten Text durch den angegebenen Text, und legen Sie die neue Cursorposition fest. |
SetComposingText(ICharSequence, Int32, TextAttribute) |
Die Variante von |
SetComposingText(String, Int32, TextAttribute) |
Die Variante von |
SetImeConsumesInput(Boolean) |
Wird von der Eingabemethode aufgerufen, um anzugeben, dass sie alle Eingaben für sich selbst verwendet oder nicht mehr. |
SetJniIdentityHashCode(Int32) |
Legen Sie den von |
SetJniManagedPeerState(JniManagedPeerStates) |
Die InputConnection-Schnittstelle ist der Kommunikationskanal von einer |
SetPeerReference(JniObjectReference) |
Legen Sie den von |
SetSelection(Int32, Int32) |
Legen Sie die Auswahl des Text-Editors fest. |
TakeSnapshot() |
Wird vom System aufgerufen, wenn es eine Momentaufnahme mehrerer textbezogener Daten auf atomare Weise erstellen muss. |
UnregisterFromRuntime() |
Heben Sie die Registrierung dieser Instanz auf, damit die Laufzeit sie nicht aus zukünftigen Java.Interop.JniRuntime+JniValueManager.PeekValue Aufrufen zurückgibt. (Geerbt von IJavaPeerable) |
Erweiterungsmethoden
JavaCast<TResult>(IJavaObject) |
Führt eine android-laufzeitgecheckte Typkonvertierung aus. |
CommitText(IInputConnection, String, Int32) |
Die InputConnection-Schnittstelle ist der Kommunikationskanal von einer |
CommitText(IInputConnection, String, Int32, TextAttribute) |
Die InputConnection-Schnittstelle ist der Kommunikationskanal von einer |
GetSelectedText(IInputConnection, GetTextFlags) |
Die InputConnection-Schnittstelle ist der Kommunikationskanal von einer |
GetTextAfterCursor(IInputConnection, Int32, GetTextFlags) |
Die InputConnection-Schnittstelle ist der Kommunikationskanal von einer |
GetTextBeforeCursor(IInputConnection, Int32, GetTextFlags) |
Die InputConnection-Schnittstelle ist der Kommunikationskanal von einer |
ReplaceText(IInputConnection, Int32, Int32, String, Int32, TextAttribute) |
Die InputConnection-Schnittstelle ist der Kommunikationskanal von einer |
SetComposingText(IInputConnection, String, Int32) |
Die InputConnection-Schnittstelle ist der Kommunikationskanal von einer |
SetComposingText(IInputConnection, String, Int32, TextAttribute) |
Die InputConnection-Schnittstelle ist der Kommunikationskanal von einer |
JavaCast<TResult>(IJavaObject) |
Die InputConnection-Schnittstelle ist der Kommunikationskanal von einer |
GetJniTypeName(IJavaPeerable) |
Die InputConnection-Schnittstelle ist der Kommunikationskanal von einer |