InputMethodManager Класс

Определение

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

[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 центральной системы для общей архитектуры платформы методов ввода (IMF), которая определяет взаимодействие между приложениями и текущим методом ввода.

Темы, рассматриваемые здесь: <ol<>li>Architecture Overview<li>Applications<li Input>Methods<li li>Security</ol>

"ArchitectureOverview"><h3>Architecture Overview</h3>

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

<ul>li. Сильный>< метод ввода manager</strong>, выраженный этим классом, является центральной точкой системы, которая управляет взаимодействием между всеми остальными частями.>< Здесь он выражается как API на стороне клиента, который существует в каждом контексте приложения и взаимодействует с глобальной системной службой, которая управляет взаимодействием во всех процессах. <li> Метод <строгого>ввода (IME)</strong> реализует определенную модель взаимодействия, позволяющую пользователю создавать текст. Система привязывается к текущему методу ввода, который используется, что приводит к его созданию и запуску, и сообщает ей, когда следует скрыть и отобразить свой пользовательский интерфейс. Одновременно выполняется только один IME. <li> Multiple <strong>client applications</strong> arbitrate with the input method manager for input focus and control over the state of the IME. Только один такой клиент всегда активен (работает с IME) одновременно. </ul>

"Applications"><h3>Applications</h3>

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

<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>Методы< ввода/h3>

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

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

"Security"><h3>Security</h3>

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

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

<ul><li>

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

<Литий>

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

<Литий>

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

<Литий>

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

<Литий>

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

<Литий>

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

<Литий>

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

</ul>

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

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

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

Поля

ShowForced

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

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

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

Свойства

Class

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

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

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

CurrentInputMethodSubtype

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

EnabledInputMethodList

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

Handle

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

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

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

IsAcceptingText

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

IsActive

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

IsFullscreenMode

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

IsInputMethodSuppressingSpellChecker

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

IsStylusHandwritingAvailable

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

JniIdentityHashCode

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

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

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

LastInputMethodSubtype

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

PeerReference

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

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

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

ThresholdClass

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

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

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

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

Методы

AcceptStylusHandwritingDelegation(View)

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

AcceptStylusHandwritingDelegation(View, String)

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

Clone()

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

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

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

DisplayCompletions(View, CompletionInfo[])
Dispose()

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

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

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

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

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

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

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

GetEnabledInputMethodSubtypeList(InputMethodInfo, Boolean)

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

GetHashCode()

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

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

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

HideSoftInputFromWindow(IBinder, HideSoftInputFlags)

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

HideSoftInputFromWindow(IBinder, HideSoftInputFlags, ResultReceiver)

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

HideStatusIcon(IBinder)

Этот элемент устарел.

InvalidateInput(View)

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

InvokeIsActive(View)

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

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

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

JavaFinalize()

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

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

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

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

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

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

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

PrepareStylusHandwritingDelegation(View, String)

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

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)

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

ShouldOfferSwitchingToNextInputMethod(IBinder)

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

ShowInputMethodAndSubtypeEnabler(String)

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

ShowInputMethodPicker()

Отображение всплывающего окна средства выбора IME.

ShowSoftInput(View, ShowFlags)

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

ShowSoftInput(View, ShowFlags, ResultReceiver)

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

ShowSoftInputFromInputMethod(IBinder, ShowFlags)

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

ShowStatusIcon(IBinder, String, Int32)

Этот элемент устарел.

StartStylusHandwriting(View)

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

SwitchToLastInputMethod(IBinder)

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

SwitchToNextInputMethod(IBinder, Boolean)

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

ToArray<T>()

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

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

Этот метод переключает отображение окна метода ввода.

ToggleSoftInputFromWindow(IBinder, ShowSoftInputFlags, HideSoftInputFlags)

Этот метод переключает отображение окна метода ввода.

ToString()

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

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

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

(Унаследовано от 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)

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

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

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

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

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

IJavaPeerable.Disposed()

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

JavaCast<TResult>(IJavaObject)

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

JavaCast<TResult>(IJavaObject)

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

GetJniTypeName(IJavaPeerable)

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

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