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#N
API система может справиться с ситуацией, когда приложение напрямую реализует этот класс, но один или несколько следующих методов не реализованы.
<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 — это канал связи от |
JniIdentityHashCode |
Возвращает значение |
JniManagedPeerState |
Состояние управляемого однорангового узла. (Унаследовано от IJavaPeerable) |
JniPeerMembers |
Поддержка доступа к членам и вызовов. (Унаследовано от IJavaPeerable) |
PeerReference |
JniObjectReference Возвращает экземпляр объекта Java в оболочке. (Унаследовано от IJavaPeerable) |
Методы
BeginBatchEdit() |
Сообщите редактору, что запускаете пакет операций редактора. |
ClearMetaKeyStates(MetaKeyStates) |
Снимите заданные мета-ключи, нажатые состояния в заданном входном соединении. |
CloseConnection() |
Вызывается системой до одного раза, чтобы уведомить о том, что система будет недопустимая связь между методом ввода и приложением. |
CommitCompletion(CompletionInfo) |
Зафиксируйте завершение, выбранное пользователем из возможных ранее сообщаемых |
CommitContent(InputContentInfo, InputContentFlags, Bundle) |
Вызывается методом ввода для фиксации содержимого, например изображения PNG в редакторе. |
CommitCorrection(CorrectionInfo) |
Зафиксируйте исправление автоматически, выполняемое при входе необработанного пользователя. |
CommitText(ICharSequence, Int32) |
Зафиксируйте текст в текстовом поле и задайте новую позицию курсора. |
CommitText(ICharSequence, Int32, TextAttribute) |
Вариант |
CommitText(String, Int32, TextAttribute) |
Вариант |
DeleteSurroundingText(Int32, Int32) |
>Удалите <var перед символами текста перед текущей позицией курсора и удалите <символы var>afterLength<</var>> после текущей позиции курсора, за исключением выделенного фрагмента. |
DeleteSurroundingTextInCodePoints(Int32, Int32) |
Вариант |
Disposed() |
Вызывается при удалении экземпляра. (Унаследовано от IJavaPeerable) |
DisposeUnlessReferenced() |
Если нет невыполненных ссылок на этот экземпляр, то вызывается |
EndBatchEdit() |
Сообщите редактору, что вы выполнили пакетное редактирование, инициированное |
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) |
Вызывается методом ввода, чтобы попросить редактор вернуться |
RequestCursorUpdates(Int32, Int32) |
Вызывается методом ввода, чтобы попросить редактор вернуться |
RequestTextBoundsInfo(RectF, IExecutor, IConsumer) |
Вызывается методом ввода, чтобы запросить |
SendKeyEvent(KeyEvent) |
Отправьте ключевое событие в процесс, который в настоящее время подключен через это входное подключение. |
SetComposingRegion(Int32, Int32) |
Пометьте определенный регион текста как составляющий текст. |
SetComposingRegion(Int32, Int32, TextAttribute) |
Вариант |
SetComposingText(ICharSequence, Int32) |
Замените текущий текст на заданный текст и задайте новое положение курсора. |
SetComposingText(ICharSequence, Int32, TextAttribute) |
Вариант |
SetComposingText(String, Int32, TextAttribute) |
Вариант |
SetImeConsumesInput(Boolean) |
Вызывается методом ввода, чтобы указать, что он потребляет все входные данные для себя или больше не делает этого. |
SetJniIdentityHashCode(Int32) |
Задайте значение, возвращаемое |
SetJniManagedPeerState(JniManagedPeerStates) |
Интерфейс InputConnection — это канал связи от |
SetPeerReference(JniObjectReference) |
Задайте значение, возвращаемое |
SetSelection(Int32, Int32) |
Задайте выделение текстового редактора. |
TakeSnapshot() |
Вызывается системой, когда необходимо сделать моментальный снимок нескольких текстовых данных атомарным образом. |
UnregisterFromRuntime() |
Отмените регистрацию этого экземпляра, чтобы среда выполнения не возвращала ее из будущих Java.Interop.JniRuntime+JniValueManager.PeekValue вызовов. (Унаследовано от IJavaPeerable) |
Методы расширения
JavaCast<TResult>(IJavaObject) |
Выполняет преобразование типа, проверяемого средой выполнения Android. |
CommitText(IInputConnection, String, Int32) |
Интерфейс InputConnection — это канал связи от |
CommitText(IInputConnection, String, Int32, TextAttribute) |
Интерфейс InputConnection — это канал связи от |
GetSelectedText(IInputConnection, GetTextFlags) |
Интерфейс InputConnection — это канал связи от |
GetTextAfterCursor(IInputConnection, Int32, GetTextFlags) |
Интерфейс InputConnection — это канал связи от |
GetTextBeforeCursor(IInputConnection, Int32, GetTextFlags) |
Интерфейс InputConnection — это канал связи от |
ReplaceText(IInputConnection, Int32, Int32, String, Int32, TextAttribute) |
Интерфейс InputConnection — это канал связи от |
SetComposingText(IInputConnection, String, Int32) |
Интерфейс InputConnection — это канал связи от |
SetComposingText(IInputConnection, String, Int32, TextAttribute) |
Интерфейс InputConnection — это канал связи от |
JavaCast<TResult>(IJavaObject) |
Интерфейс InputConnection — это канал связи от |
GetJniTypeName(IJavaPeerable) |
Интерфейс InputConnection — это канал связи от |