Язык

InputMethodManager Класс

Определение

Центральный системный API для общей архитектуры метода ввода (МВФ), которая выполняет арбитраж взаимодействия между приложениями и текущим методом ввода.

[Android.Runtime.Register("android/view/inputmethod/InputMethodManager", DoNotGenerateAcw=true)]
public sealed class InputMethodManager : Java.Lang.Object
[<Android.Runtime.Register("android/view/inputmethod/InputMethodManager", DoNotGenerateAcw=true)>]
type InputMethodManager = class
    inherit Object
Наследование
InputMethodManager
Атрибуты

Комментарии

Центральный системный API для общей архитектуры метода ввода (МВФ), которая выполняет арбитраж взаимодействия между приложениями и текущим методом ввода.

Темы, описанные здесь: <ol><li>Architecture Overview<li Applications>li<Input Methods>li<li>Security</ol>

Обзор архитектуры>< "ArchitectureOverview">h3/h3<>

В архитектуре метода ввода (МВФ) участвуют три основных стороны:

<ul>li— диспетчер надежных<методов> ввода или сильный<, выраженный этим классом, является главной точкой системы, которая управляет взаимодействием между всеми другими частями.><> Он выражается как клиентский API, который существует в каждом контексте приложения и взаимодействует с глобальной системной службой, которая управляет взаимодействием во всех процессах. <li> Надежный<> метод ввода (IME)</strong> реализует определенную модель взаимодействия, позволяющую пользователю создавать текст. Система привязывается к текущему методу ввода, который используется, что приводит к его созданию и выполнению, а также сообщает о том, когда скрыть и показать пользовательский интерфейс. Одновременно выполняется только один IME. <li> Несколько надежных <>клиентских приложений</сильный> арбитраж с помощью диспетчера методов ввода для фокуса ввода и управления состоянием IME. Одновременно только один такой клиент активен (работа с IME). </ul>

"Приложения"><h3 Application>/h3<>

В большинстве случаев приложения, использующие стандартный android.widget.TextView или его подклассы, будут иметь мало необходимости работать с методами обратимого ввода. Основными вещами, которые необходимо учитывать, являются:

<ul><li> Правильно задайте android.R.attr#inputType в редактируемых текстовых представлениях, чтобы метод ввода был достаточно контекста, чтобы помочь пользователю вводить в них текст. <li> Работает хорошо с потерей пространства экрана при отображении метода ввода. В идеале приложение должно обрабатывать размер окна меньшего размера, но оно может полагаться на систему, выполняющую сдвиг окна при необходимости. Необходимо задать android.R.attr#windowSoftInputMode атрибут для действия или соответствующих значений в окнах, которые помогут системе определить, следует ли сдвигать или изменять размер (он будет пытаться определить это автоматически, но может привести к ошибке). <li> Вы также можете управлять предпочитаемым состоянием обратимого ввода (открытым, закрытым и т. д.) для окна с помощью того же android.R.attr#windowSoftInputMode атрибута. </ul>

Более подробный контроль доступен через API здесь, чтобы напрямую взаимодействовать с МВФ и его IME - отображение или скрытие входной области, позволяя пользователю выбрать метод ввода и т. д.

Для редких людей среди нас, написавших собственные текстовые редакторы, необходимо реализовать android.view.View#onCreateInputConnection , чтобы вернуть новый экземпляр собственного InputConnection интерфейса, позволяя IME взаимодействовать с редактором.

"InputMethods"><h3 Input Methods>/h3<>

Входной метод (IME) реализуется как android.app.Serviceобычно производный от android.inputmethodservice.InputMethodService. Он должен предоставить основной InputMethod интерфейс, хотя это обычно обрабатывается android.inputmethodservice.InputMethodService и реализующие должны иметь только более высокий уровень API там.

Дополнительные сведения о реализации IMEs см. в android.inputmethodservice.InputMethodService классе.

"Безопасность"><h3 Security>/h3<>

Существует много проблем безопасности, связанных с методами ввода, так как они по сути имеют свободу полностью управлять пользовательским интерфейсом и отслеживать все, что пользователь вводит. Платформа методов ввода Android также позволяет произвольным сторонним imEs, поэтому необходимо принять меры, чтобы ограничить их выбор и взаимодействие.

Ниже приведены некоторые ключевые моменты архитектуры безопасности, лежащей в основе МВФ:

<ul><li>

Только система может напрямую получить доступ к интерфейсу IME InputMethod через android.Manifest.permission#BIND_INPUT_METHOD разрешение. Это принудительно применяется в системе, не привязываясь к службе методов ввода, которая не требует этого разрешения, поэтому система не может гарантировать, что другие недоверенные клиенты не получают доступ к текущему методу ввода за пределами его управления.

<li>

Может быть много клиентских процессов МВФ, но только один может быть активным в один раз. Неактивные клиенты не могут взаимодействовать с ключевыми частями МВФ через описанные ниже механизмы.

<li>

Клиенты входного метода получают доступ только к интерфейсу InputMethodSession . Для каждого клиента создается один экземпляр этого интерфейса, и только вызовы из сеанса, связанного с активным клиентом, будут обрабатываться текущим IME. Это применяется android.inputmethodservice.AbstractInputMethodService для обычных imEs, но должно быть явно обработано IME, который настраивает необработанную InputMethodSession реализацию.

<li>

Будут приниматься только активные операции клиента InputConnection . МВФ сообщает каждому клиентскому процессу, является ли он активным, и платформа применяет, что неактивные процессы вызовы к текущему InputConnection будут игнорироваться. Это гарантирует, что текущий IME может доставлять события и текстовые изменения в пользовательский интерфейс, который пользователь видит в фокусе.

<li>

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

<li>

Клиентское приложение может попросить, чтобы система позволила пользователю выбрать новый IME, но не может программно переключиться на себя. Это позволяет избежать переключения вредоносных приложений на собственный IME, который остается запущенным при переходе пользователя к другому приложению. С другой стороны, <>IME em разрешено<> программным способом переключить систему на другой IME, так как он уже имеет полный контроль над входными данными пользователя.

<li>

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

</ul>

Если приложение предназначено для Android 11 (уровень API 30) или более поздней версии, методы в этом классе возвращают отфильтрованный результат по правилам видимости пакета, за исключением текущего подключенного IME. Приложения, имеющие запрос для InputMethod#SERVICE_INTERFACE просмотра всех мгновенных сообщений.

Java документации по android.view.inputmethod.InputMethodManager.

Части этой страницы — это изменения на основе работы, созданной и общей Project и используемых в соответствии с условиями, описанными в разделе "".

Поля

Имя Описание
HandwritingDelegateFlagHomeDelegatorAllowed
Устаревшие.

Флаг, указывающий, что представления с начального экрана по умолчанию (Intent#CATEGORY_HOME) могут выступать в качестве рукописного делегатора для представления редактора делегатов.

ShowForced

Пометка, чтобы #showSoftInput указать, что пользователь принудительно открыл метод ввода (например, с помощью длинного нажатия меню), поэтому он не должен быть закрыт до тех пор, пока он явно не сделает это.

ShowImplicit
Устаревшие.

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

Свойства

Имя Описание
Class

Возвращает класс среды выполнения этого Objectобъекта.

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

InputMethodInfo Возвращает выбранный в данный момент метод ввода (для пользователя процесса).

CurrentInputMethodSubtype

Возвращает текущий подтип метода ввода.

EnabledInputMethodList

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

Handle

Дескриптор базового экземпляра Android.

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

Возвращает список установленных методов ввода.

IsAcceptingText

Возвращается, true если в настоящее время обслуживаемое представление принимает полнотекстовые изменения.

IsActive

Возвращается true , если любое представление в настоящее время активно для метода ввода.

IsConnectionlessStylusHandwritingAvailable

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

IsFullscreenMode

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

IsInputMethodSuppressingSpellChecker

Возвращается true , если входной метод подавляет системный средство проверки орфографии.

IsStylusHandwritingAvailable

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

JniIdentityHashCode

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

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

Центральный системный API для общей архитектуры метода ввода (МВФ), которая выполняет арбитраж взаимодействия между приложениями и текущим методом ввода.

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

Центральный системный API для общей архитектуры метода ввода (МВФ), которая выполняет арбитраж взаимодействия между приложениями и текущим методом ввода.

LastInputMethodSubtype

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

PeerReference

Возвращает ссылку на объект JNI для этого Java однорангового узла.

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

Возвращает карту всех сведений о методах сочетания клавиш и их подтипов.

ThresholdClass

Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода.

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

Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода.

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

Методы

Имя Описание
AcceptStylusHandwritingDelegation(View, String, HandwritingDelegateFlag, IExecutor, IConsumer)

Принимает и запускает сеанс рукописного ввода в представлении делегата, если делегирование запуска рукописного ввода ранее запрашивалось с помощью #prepareStylusHandwritingDelegation(View, String) делегатора, а представление принадлежит указанному пакету делегата.

AcceptStylusHandwritingDelegation(View, String, IExecutor, IConsumer)

Принимает и запускает сеанс рукописного ввода в представлении делегата, если делегирование запуска рукописного ввода ранее запрашивалось с помощью #prepareStylusHandwritingDelegation(View, String) делегатора, а представление принадлежит указанному пакету делегата.

AcceptStylusHandwritingDelegation(View, String)

Принимает и запускает сеанс рукописного ввода в представлении делегата, если делегирование запуска рукописного ввода ранее запрашивалось с помощью #prepareStylusHandwritingDelegation(View, String) делегатора, а представление принадлежит указанному пакету делегата.

AcceptStylusHandwritingDelegation(View)

Принимает и запускает сеанс рукописного ввода в представлении делегата, если делегирование запуска рукописного ввода ранее запрашивалось с #prepareStylusHandwritingDelegation(View) помощью делегатора.

Clone()

Создает и возвращает копию этого объекта.

(Унаследовано от Object)
Construct(JniObjectReference, JniObjectReferenceOptions)

Центральный системный API для общей архитектуры метода ввода (МВФ), которая выполняет арбитраж взаимодействия между приложениями и текущим методом ввода.

(Унаследовано от JavaObject)
DispatchKeyEventFromInputMethod(View, KeyEvent)

Предоставляет реализацию InputConnection#sendKeyEvent(KeyEvent)по умолчанию, которая, как ожидается, отправляет событие клавиатуры, отправляемое из IME в соответствующий целевой объект события в зависимости от заданного View и текущего состояния фокуса.

DisplayCompletions(View, CompletionInfo[])
Dispose()

Освобождает ресурсы, удерживаемые этим Java одноранговым узлом.

(Унаследовано от Object)
Dispose(Boolean)

Освобождает ресурсы, удерживаемые этим Java одноранговым узлом.

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

Центральный системный API для общей архитектуры метода ввода (МВФ), которая выполняет арбитраж взаимодействия между приложениями и текущим методом ввода.

(Унаследовано от JavaObject)
Equals(Object)

Центральный системный API для общей архитектуры метода ввода (МВФ), которая выполняет арбитраж взаимодействия между приложениями и текущим методом ввода.

(Унаследовано от JavaObject)
Equals(Object)

Указывает, равен ли другой объект этому объекту.

(Унаследовано от Object)
FromContext(Context)

Центральный системный API для общей архитектуры метода ввода (МВФ), которая выполняет арбитраж взаимодействия между приложениями и текущим методом ввода.

GetEnabledInputMethodSubtypeList(InputMethodInfo, Boolean)

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

GetHashCode()

Возвращает хэш-значение кода для объекта.

(Унаследовано от Object)
HideSoftInputFromInputMethod(IBinder, HideSoftInputFlags)

Закройте или скрыть область обратимого ввода метода ввода, поэтому пользователь больше не видит его или может взаимодействовать с ним.

HideSoftInputFromWindow(IBinder, HideSoftInputFlags, ResultReceiver)

Запрос на скрытие окна обратимого ввода из контекста окна, которое в настоящее время принимает входные данные.

HideSoftInputFromWindow(IBinder, HideSoftInputFlags)

Запрос на скрытие окна обратимого ввода из контекста окна, которое в настоящее время принимает входные данные.

HideStatusIcon(IBinder)

Этот элемент не рекомендуется.

InvalidateInput(View)

Предоставляет системе указание, что текст, связанный с view ним, обновляется тем, что не является редактором методов ввода (IME), чтобы система может отменить любые ожидающие запросы на редактирование текста из IME, пока не получит новый контекст редактирования, например окружающий текст, предоставленный InputConnection#takeSnapshot().

InvokeIsActive(View)

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

IsWatchingCursor(View)
Устаревшие.

Возвращает значение true, если текущий метод ввода хочет просмотреть расположение курсора редактора входных данных в окне.

JavaFinalize()

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

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

Просыпается один поток, ожидающий монитора этого объекта.

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

Просыпает все потоки, ожидающие монитора этого объекта.

(Унаследовано от Object)
PrepareStylusHandwritingDelegation(View, String)

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

PrepareStylusHandwritingDelegation(View)

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

RestartInput(View)

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

SendAppPrivateCommand(View, String, Bundle)

Вызов InputMethodSession#appPrivateCommand(String, Bundle) InputMethodSession.appPrivateCommand() текущего метода ввода.

SetAdditionalInputMethodSubtypes(String, InputMethodSubtype[])

Задайте дополнительные подтипы метода ввода.

SetCurrentInputMethodSubtype(InputMethodSubtype)

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

SetExplicitlyEnabledInputMethodSubtypes(String, Int32[])

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

SetHandle(IntPtr, JniHandleOwnership)

Задает свойство Handle.

(Унаследовано от Object)
SetInputMethod(IBinder, String)

Принудительное переключение на новый компонент метода ввода.

SetInputMethodAndSubtype(IBinder, String, InputMethodSubtype)

Принудительное переключение на новый метод ввода и подтип.

SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

Центральный системный API для общей архитектуры метода ввода (МВФ), которая выполняет арбитраж взаимодействия между приложениями и текущим методом ввода.

(Унаследовано от JavaObject)
ShouldOfferSwitchingToNextInputMethod(IBinder)

Возвращает значение true, если текущий IME должен предложить пользователям способы переключиться на следующий метод ввода (e).

ShowInputMethodAndSubtypeEnabler(String)

Отображение параметров для включения подтипов указанного метода ввода.

ShowInputMethodPicker()

Показать всплывающее окно средства выбора IME.

ShowSoftInput(View, ShowFlags, ResultReceiver)

Явным образом запрашивает, чтобы область обратимого ввода текущего метода ввода отображалась пользователю при необходимости.

ShowSoftInput(View, ShowFlags)

Синоним без #showSoftInput(View, int, ResultReceiver) приемника результатов: явным образом запрашивает, чтобы при необходимости для пользователя отображалась область обратимого ввода текущего метода ввода.

ShowSoftInputFromInputMethod(IBinder, ShowFlags)

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

ShowStatusIcon(IBinder, String, Int32)

Этот элемент не рекомендуется.

StartConnectionlessStylusHandwriting(View, CursorAnchorInfo, IExecutor, IConnectionlessHandwritingCallback)

Запускает сеанс рукописного ввода без подключения.

StartConnectionlessStylusHandwritingForDelegation(View, CursorAnchorInfo, IExecutor, IConnectionlessHandwritingCallback)

Запускает сеанс рукописного ввода без подключения (см. см#startConnectionlessStylusHandwriting.) и позволяет позже зафиксировать распознаваемый рукописный текст в текстовом редакторе.#acceptStylusHandwritingDelegation(View)

StartConnectionlessStylusHandwritingForDelegation(View, CursorAnchorInfo, String, IExecutor, IConnectionlessHandwritingCallback)

Запускает сеанс рукописного ввода без подключения (см. см#startConnectionlessStylusHandwriting.) и позволяет позже зафиксировать распознаваемый рукописный текст в текстовом редакторе.#acceptStylusHandwritingDelegation(View, String)

StartStylusHandwriting(View)

Запустите сеанс рукописного ввода.

SwitchToLastInputMethod(IBinder)

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

SwitchToNextInputMethod(IBinder, Boolean)

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

ToArray<T>()

Создает управляемый массив из этого Java оболочки массива.

(Унаследовано от Object)
ToggleSoftInput(ShowFlags, HideSoftInputFlags)

Этот метод переключает окно входного метода.

ToggleSoftInputFromWindow(IBinder, ShowSoftInputFlags, HideSoftInputFlags)

Этот метод переключает окно входного метода.

ToString()

Возвращает строковое представление объекта.

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

Отменяет регистрацию этого Java однорангового узла из среды выполнения взаимодействия.

(Унаследовано от Object)
UpdateCursor(View, Int32, Int32, Int32, Int32)
Устаревшие.

Сообщите о текущем расположении курсора в окне.

UpdateCursorAnchorInfo(View, CursorAnchorInfo)

Отчет об изменении позиции точки вставки текста и /или символов в строке композиции.

UpdateExtractedText(View, Int32, ExtractedText)
UpdateSelection(View, Int32, Int32, Int32, Int32)

Сообщите о текущем диапазоне выбора.

ViewClicked(View)

Уведомите событие, когда пользователь коснулся или щелкнул текстовое представление.

Wait()

Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, путем <><уведомления/>em или <эм>прерванного</em.>

(Унаследовано от Object)
Wait(Int64, Int32)

Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, при <>получении уведомления</>em или <>эм прерваны< или> до тех пор, пока не истекло определенное количество реального времени.

(Унаследовано от Object)
Wait(Int64)

Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, при <>получении уведомления</>em или <>эм прерваны< или> до тех пор, пока не истекло определенное количество реального времени.

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

Явные реализации интерфейса

Имя Описание
IJavaPeerable.Disposed()

Центральный системный API для общей архитектуры метода ввода (МВФ), которая выполняет арбитраж взаимодействия между приложениями и текущим методом ввода.

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

Центральный системный API для общей архитектуры метода ввода (МВФ), которая выполняет арбитраж взаимодействия между приложениями и текущим методом ввода.

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

Центральный системный API для общей архитектуры метода ввода (МВФ), которая выполняет арбитраж взаимодействия между приложениями и текущим методом ввода.

(Унаследовано от JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Центральный системный API для общей архитектуры метода ввода (МВФ), которая выполняет арбитраж взаимодействия между приложениями и текущим методом ввода.

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

Центральный системный API для общей архитектуры метода ввода (МВФ), которая выполняет арбитраж взаимодействия между приложениями и текущим методом ввода.

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

Центральный системный API для общей архитектуры метода ввода (МВФ), которая выполняет арбитраж взаимодействия между приложениями и текущим методом ввода.

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

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

Имя Описание
GetJniTypeName(IJavaPeerable)

Возвращает имя JNI типа экземпляра self.

JavaAs<TResult>(IJavaPeerable)

Попробуйте принуждать к типуself, проверяяTResult, является ли приведение допустимым на стороне Java.

JavaCast<TResult>(IJavaObject)

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

JavaCast<TResult>(IJavaObject)

Центральный системный API для общей архитектуры метода ввода (МВФ), которая выполняет арбитраж взаимодействия между приложениями и текущим методом ввода.

TryJavaCast<TResult>(IJavaPeerable, TResult)

Попробуйте принуждать к типуself, проверяяTResult, является ли приведение допустимым на стороне Java.

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