Поделиться через


IInputConnection Интерфейс

Определение

Интерфейс InputConnection — это канал связи от InputMethod обратно к приложению, получающего входные данные.

[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
Производный
Атрибуты
Реализации

Комментарии

Интерфейс InputConnection — это канал связи от InputMethod обратно к приложению, получающего входные данные. Он используется для выполнения таких действий, как чтение текста вокруг курсора, фиксация текста в текстовом поле и отправка необработанных ключевых событий в приложение.

Начиная с уровня android.os.Build.VERSION_CODES#NAPI система может справиться с ситуацией, когда приложение напрямую реализует этот класс, но один или несколько следующих методов не реализованы.

<ul><li>#getSelectedText(int), который был введен в android.os.Build.VERSION_CODES#GINGERBREAD.</li li><#setComposingRegion(int, int)>, который был введен в .<android.os.Build.VERSION_CODES#GINGERBREAD/li li><#commitCorrection(CorrectionInfo)>, который был введен в .<android.os.Build.VERSION_CODES#HONEYCOMB/li li><#requestCursorUpdates(int)>, который был введен в .<android.os.Build.VERSION_CODES#LOLLIPOP/li li><#deleteSurroundingTextInCodePoints(int, int)>, который был введен в .<android.os.Build.VERSION_CODES#N/li li><#getHandler()>, который был введен в .<android.os.Build.VERSION_CODES#N/li li><#closeConnection()>, который был введен в .<android.os.Build.VERSION_CODES#N/li li><#commitContent(InputContentInfo, int, Bundle)>, который был введен в .<android.os.Build.VERSION_CODES#N_MR1/li></ul>

<h3>Реализация IME или редактора</h3>

Ввод текста является результатом взаимодействия двух основных компонентов: обработчика методов ввода (IME) и редактора. IME может быть программной клавиатурой, интерфейсом рукописного ввода, палитрой эмодзи, подсистемой преобразования речи в текст и т. д. Обычно на любом устройстве Android установлено несколько мгновенных сообщений. В Android расширение IMEs android.inputmethodservice.InputMethodService. Дополнительные сведения о создании IME см. в руководстве по созданию метода ввода.

Редактор — это компонент, который получает текст и отображает его. Как правило, это android.widget.EditText экземпляр, но некоторые приложения могут выбрать реализацию собственного редактора по различным причинам. Это большая и сложная задача, и приложение, которое делает это, чтобы убедиться, что поведение соответствует стандартному поведению EditText в Android. Редактору необходимо взаимодействовать с IME, получать команды через этот интерфейс InputConnection и отправлять команды через android.view.inputmethod.InputMethodManager. Редактор должен начаться с реализации android.view.View#onCreateInputConnection(EditorInfo) для возврата собственного входного подключения.

Если вы реализуете собственный IME, вам потребуется вызвать методы в этом интерфейсе для взаимодействия с приложением. Обязательно протестируйте IME с широким спектром приложений, включая браузеры и редакторы форматированного текста, так как некоторые из них могут иметь особенности, с которыми вам нужно справиться. Помните, что ваш IME может не быть единственным источником изменений в тексте, и попытаться быть как можно более консервативным в данных, которые вы отправляете и как можно более либеральным в получаемых данных.

Если вы реализуете собственный редактор, вам, вероятно, потребуется предоставить собственный подкласс BaseInputConnection для ответа на команды из IMEs. Обязательно протестируйте редактор с большим количеством мгновенных сообщений, так как их поведение может сильно отличаться. Также обязательно протестируйте с различными языками, включая языки CJK и языки справа налево, например арабский, так как они могут иметь разные требования к входным данным. Если вы сомневаетесь в поведении, которое следует принять для определенного вызова, имитируйте реализацию TextView по умолчанию в последней версии Android, и если вы решите смещать его, внимательно рассмотрим, что несоответствия в поведении текстового редактора почти повсеместно считаются плохой вещью пользователей.

<h3>Cursors, selections and compositions</h3>

В Android курсор и выбор являются одним и тем же. Курсор — это просто особый случай выбора нулевого размера. Таким образом, эта документация использует их взаимозаменяемо. Любой метод, действующий "до курсора", будет действовать до начала выделения, если есть один, и любой метод, действующий "после курсора", будет действовать после окончания выделения.

Редактор должен иметь возможность отслеживать текущий регион создания, например мини-приложения стандартного выпуска. Композиция отмечена в определенном стиле: см. раздел android.text.Spanned#SPAN_COMPOSING. Мгновенные сообщения используются для отслеживания того, на какую часть текста он в настоящее время фокусируется, а также взаимодействовать с редактором с помощью InputConnection#setComposingText(CharSequence, int)InputConnection#setComposingRegion(int, int) и InputConnection#finishComposingText(). Область создания и выбор полностью не зависят друг от друга, и IME может использовать их, однако они видят подходящие.

Документация по Java для android.view.inputmethod.InputConnection.

Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом Android и используемой в соответствии с условиями, описанными в лицензии Creative Commons 2.5 Attribution.

Свойства

Handle

Возвращает значение JNI базового объекта Android.

(Унаследовано от IJavaObject)
Handler

Интерфейс InputConnection — это канал связи от InputMethod обратно к приложению, получающего входные данные.

JniIdentityHashCode

Возвращает значение java.lang.System.identityHashCode() для упаковаемого экземпляра.

(Унаследовано от IJavaPeerable)
JniManagedPeerState

Состояние управляемого однорангового узла.

(Унаследовано от IJavaPeerable)
JniPeerMembers

Поддержка доступа к членам и вызовов.

(Унаследовано от IJavaPeerable)
PeerReference

JniObjectReference Возвращает экземпляр объекта Java в оболочке.

(Унаследовано от IJavaPeerable)

Методы

BeginBatchEdit()

Сообщите редактору, что запускаете пакет операций редактора.

ClearMetaKeyStates(MetaKeyStates)

Снимите заданные мета-ключи, нажатые состояния в заданном входном соединении.

CloseConnection()

Вызывается системой до одного раза, чтобы уведомить о том, что система будет недопустимая связь между методом ввода и приложением.

CommitCompletion(CompletionInfo)

Зафиксируйте завершение, выбранное пользователем из возможных ранее сообщаемых InputMethodSession#displayCompletions InputMethodSession#displayCompletions(CompletionInfo[]) пользователем.InputMethodManager#displayCompletions InputMethodManager#displayCompletions(View, CompletionInfo[])

CommitContent(InputContentInfo, InputContentFlags, Bundle)

Вызывается методом ввода для фиксации содержимого, например изображения PNG в редакторе.

CommitCorrection(CorrectionInfo)

Зафиксируйте исправление автоматически, выполняемое при входе необработанного пользователя.

CommitText(ICharSequence, Int32)

Зафиксируйте текст в текстовом поле и задайте новую позицию курсора.

CommitText(ICharSequence, Int32, TextAttribute)

Вариант InputConnection#commitText(CharSequence, int).

CommitText(String, Int32, TextAttribute)

Вариант InputConnection#commitText(CharSequence, int).

DeleteSurroundingText(Int32, Int32)

>Удалите <var перед символами текста перед текущей позицией курсора и удалите <символы var>afterLength<</var>> после текущей позиции курсора, за исключением выделенного фрагмента.

DeleteSurroundingTextInCodePoints(Int32, Int32)

Вариант #deleteSurroundingText(int, int).

Disposed()

Вызывается при удалении экземпляра.

(Унаследовано от IJavaPeerable)
DisposeUnlessReferenced()

Если нет невыполненных ссылок на этот экземпляр, то вызывается Dispose(); в противном случае ничего не делает.

(Унаследовано от IJavaPeerable)
EndBatchEdit()

Сообщите редактору, что вы выполнили пакетное редактирование, инициированное #beginBatchEdit()ранее.

Finalized()

Вызывается при завершении экземпляра.

(Унаследовано от IJavaPeerable)
FinishComposingText()

Готово ли текстовый редактор независимо от того, какой текст в настоящее время активен.

GetCursorCapsMode(CapitalizationMode)

Получите текущий режим прописи в действии в текущем положении курсора в тексте.

GetExtractedText(ExtractedTextRequest, GetTextFlags)

Извлеките текущий текст в редакторе входного подключения и отслеживайте изменения в нем.

GetSelectedTextFormatted(GetTextFlags)

Возвращает выделенный текст, если таковой есть.

GetSurroundingText(Int32, Int32, Int32)

Получает окружающий текст вокруг текущего курсора с <символами var>до Length/var текста перед курсором (начало выделения),>< var afterLength<</var>> символы текста после курсора (конец выделения) и все выделенный текст.

GetTextAfterCursorFormatted(Int32, GetTextFlags)

Получите <символы var>n</var> текста после текущей позиции курсора.

GetTextBeforeCursorFormatted(Int32, GetTextFlags)

Получите <символы var>n</var> текста перед текущей позицией курсора.

PerformContextMenuAction(Int32)

Выполните действие контекстного меню в поле.

PerformEditorAction(ImeAction)

Если редактор выполняет действие, которое он сказал, что это может сделать.

PerformHandwritingGesture(HandwritingGesture, IExecutor, IIntConsumer)

Выполните жест рукописного ввода текста.

PerformPrivateCommand(String, Bundle)

API для отправки частных команд из метода ввода в подключенный редактор.

PerformSpellCheck()

Выполните проверку орфографии в редакторе для полного содержимого.

PreviewHandwritingGesture(PreviewableHandwritingGesture, CancellationSignal)

Предварительный просмотр жеста рукописного ввода текста.

ReplaceText(Int32, Int32, ICharSequence, Int32, TextAttribute)

Замените определенный диапазон в редакторе предлагаемым текстом.

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

Замените определенный диапазон в редакторе предлагаемым текстом.

ReportFullscreenMode(Boolean)

Обратный вызов, когда подключенный IME переключается между полноэкранным и нормальным режимами.

RequestCursorUpdates(Int32)

Вызывается методом ввода, чтобы попросить редактор вернуться InputMethodManager#updateCursorAnchorInfo(android.view.View, CursorAnchorInfo) к уведомлению о расположениях курсора или привязки.

RequestCursorUpdates(Int32, Int32)

Вызывается методом ввода, чтобы попросить редактор вернуться InputMethodManager#updateCursorAnchorInfo(android.view.View, CursorAnchorInfo) к уведомлению о расположениях курсора или привязки.

RequestTextBoundsInfo(RectF, IExecutor, IConsumer)

Вызывается методом ввода, чтобы запросить TextBoundsInfo диапазон текста, который охватывается или находится в пределах заданного объекта bounds.

SendKeyEvent(KeyEvent)

Отправьте ключевое событие в процесс, который в настоящее время подключен через это входное подключение.

SetComposingRegion(Int32, Int32)

Пометьте определенный регион текста как составляющий текст.

SetComposingRegion(Int32, Int32, TextAttribute)

Вариант InputConnection#setComposingRegion(int, int).

SetComposingText(ICharSequence, Int32)

Замените текущий текст на заданный текст и задайте новое положение курсора.

SetComposingText(ICharSequence, Int32, TextAttribute)

Вариант #setComposingText(CharSequence, int).

SetComposingText(String, Int32, TextAttribute)

Вариант #setComposingText(CharSequence, int).

SetImeConsumesInput(Boolean)

Вызывается методом ввода, чтобы указать, что он потребляет все входные данные для себя или больше не делает этого.

SetJniIdentityHashCode(Int32)

Задайте значение, возвращаемое JniIdentityHashCode.

(Унаследовано от IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

Интерфейс InputConnection — это канал связи от InputMethod обратно к приложению, получающего входные данные.

(Унаследовано от IJavaPeerable)
SetPeerReference(JniObjectReference)

Задайте значение, возвращаемое PeerReference.

(Унаследовано от IJavaPeerable)
SetSelection(Int32, Int32)

Задайте выделение текстового редактора.

TakeSnapshot()

Вызывается системой, когда необходимо сделать моментальный снимок нескольких текстовых данных атомарным образом.

UnregisterFromRuntime()

Отмените регистрацию этого экземпляра, чтобы среда выполнения не возвращала ее из будущих Java.Interop.JniRuntime+JniValueManager.PeekValue вызовов.

(Унаследовано от IJavaPeerable)

Методы расширения

JavaCast<TResult>(IJavaObject)

Выполняет преобразование типа, проверяемого средой выполнения Android.

CommitText(IInputConnection, String, Int32)

Интерфейс InputConnection — это канал связи от InputMethod обратно к приложению, получающего входные данные.

CommitText(IInputConnection, String, Int32, TextAttribute)

Интерфейс InputConnection — это канал связи от InputMethod обратно к приложению, получающего входные данные.

GetSelectedText(IInputConnection, GetTextFlags)

Интерфейс InputConnection — это канал связи от InputMethod обратно к приложению, получающего входные данные.

GetTextAfterCursor(IInputConnection, Int32, GetTextFlags)

Интерфейс InputConnection — это канал связи от InputMethod обратно к приложению, получающего входные данные.

GetTextBeforeCursor(IInputConnection, Int32, GetTextFlags)

Интерфейс InputConnection — это канал связи от InputMethod обратно к приложению, получающего входные данные.

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

Интерфейс InputConnection — это канал связи от InputMethod обратно к приложению, получающего входные данные.

SetComposingText(IInputConnection, String, Int32)

Интерфейс InputConnection — это канал связи от InputMethod обратно к приложению, получающего входные данные.

SetComposingText(IInputConnection, String, Int32, TextAttribute)

Интерфейс InputConnection — это канал связи от InputMethod обратно к приложению, получающего входные данные.

JavaCast<TResult>(IJavaObject)

Интерфейс InputConnection — это канал связи от InputMethod обратно к приложению, получающего входные данные.

GetJniTypeName(IJavaPeerable)

Интерфейс InputConnection — это канал связи от InputMethod обратно к приложению, получающего входные данные.

Применяется к