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