Freigeben über


IInputConnection Schnittstelle

Definition

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#Nkann 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.InputMethodServiceIMEs . 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 InputMethod zurück zur Anwendung, die ihre Eingabe empfängt.

JniIdentityHashCode

Gibt den Wert java.lang.System.identityHashCode() für die umbrochene Instanz zurück.

(Geerbt von IJavaPeerable)
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 InputMethodManager#displayCompletions InputMethodManager#displayCompletions(View, CompletionInfo[])ausgewählt InputMethodSession#displayCompletions InputMethodSession#displayCompletions(CompletionInfo[]) hat.

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 InputConnection#commitText(CharSequence, int).

CommitText(String, Int32, TextAttribute)

Die Variante von InputConnection#commitText(CharSequence, int).

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 #deleteSurroundingText(int, int).

Disposed()

Wird aufgerufen, wenn die Instanz verworfen wurde.

(Geerbt von IJavaPeerable)
DisposeUnlessReferenced()

Wenn keine offenen Verweise auf diese Instanz vorhanden sind, wird nichts aufgerufen Dispose(). Andernfalls wird nichts ausgeführt.

(Geerbt von IJavaPeerable)
EndBatchEdit()

Teilen Sie dem Editor mit, dass Sie mit einer zuvor initiierten Batchbearbeitung fertig #beginBatchEdit()sind.

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 InputMethodManager#updateCursorAnchorInfo(android.view.View, CursorAnchorInfo) , um Cursor-/Ankerpositionen zu benachrichtigen.

RequestCursorUpdates(Int32, Int32)

Wird von der Eingabemethode aufgerufen, um den Editor aufzufordern, den Aufruf zurückzurufen InputMethodManager#updateCursorAnchorInfo(android.view.View, CursorAnchorInfo) , um Cursor-/Ankerpositionen zu benachrichtigen.

RequestTextBoundsInfo(RectF, IExecutor, IConsumer)

Wird von der Eingabemethode aufgerufen, um einen TextBoundsInfo Textbereich anzufordern, der von oder in der Nähe des angegebenen boundsBereichs abgedeckt wird.

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 InputConnection#setComposingRegion(int, int).

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(CharSequence, int).

SetComposingText(String, Int32, TextAttribute)

Die Variante von #setComposingText(CharSequence, int).

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 JniIdentityHashCode.

(Geerbt von IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

Die InputConnection-Schnittstelle ist der Kommunikationskanal von einer InputMethod zurück zur Anwendung, die ihre Eingabe empfängt.

(Geerbt von IJavaPeerable)
SetPeerReference(JniObjectReference)

Legen Sie den von PeerReference.

(Geerbt von IJavaPeerable)
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 InputMethod zurück zur Anwendung, die ihre Eingabe empfängt.

CommitText(IInputConnection, String, Int32, TextAttribute)

Die InputConnection-Schnittstelle ist der Kommunikationskanal von einer InputMethod zurück zur Anwendung, die ihre Eingabe empfängt.

GetSelectedText(IInputConnection, GetTextFlags)

Die InputConnection-Schnittstelle ist der Kommunikationskanal von einer InputMethod zurück zur Anwendung, die ihre Eingabe empfängt.

GetTextAfterCursor(IInputConnection, Int32, GetTextFlags)

Die InputConnection-Schnittstelle ist der Kommunikationskanal von einer InputMethod zurück zur Anwendung, die ihre Eingabe empfängt.

GetTextBeforeCursor(IInputConnection, Int32, GetTextFlags)

Die InputConnection-Schnittstelle ist der Kommunikationskanal von einer InputMethod zurück zur Anwendung, die ihre Eingabe empfängt.

ReplaceText(IInputConnection, Int32, Int32, String, Int32, TextAttribute)

Die InputConnection-Schnittstelle ist der Kommunikationskanal von einer InputMethod zurück zur Anwendung, die ihre Eingabe empfängt.

SetComposingText(IInputConnection, String, Int32)

Die InputConnection-Schnittstelle ist der Kommunikationskanal von einer InputMethod zurück zur Anwendung, die ihre Eingabe empfängt.

SetComposingText(IInputConnection, String, Int32, TextAttribute)

Die InputConnection-Schnittstelle ist der Kommunikationskanal von einer InputMethod zurück zur Anwendung, die ihre Eingabe empfängt.

JavaCast<TResult>(IJavaObject)

Die InputConnection-Schnittstelle ist der Kommunikationskanal von einer InputMethod zurück zur Anwendung, die ihre Eingabe empfängt.

GetJniTypeName(IJavaPeerable)

Die InputConnection-Schnittstelle ist der Kommunikationskanal von einer InputMethod zurück zur Anwendung, die ihre Eingabe empfängt.

Gilt für: