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
- Наследование
- Атрибуты
Комментарии
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 |
Пометка для |
ShowImplicit |
Устаревшие..
Пометка для |
Свойства
Class |
Возвращает класс среды выполнения данного объекта |
CurrentInputMethodInfo |
|
CurrentInputMethodSubtype |
Возвращает текущий подтип метода ввода. |
EnabledInputMethodList |
Возвращает список включенных методов ввода. |
Handle |
Дескриптор базового экземпляра Android. (Унаследовано от Object) |
InputMethodList |
Возвращает список установленных методов ввода. |
IsAcceptingText |
Возвращает значение |
IsActive |
Возвращает значение , |
IsFullscreenMode |
Позволяет определить, работает ли подключенный метод ввода в полноэкранном режиме. |
IsInputMethodSuppressingSpellChecker |
Возвращает значение |
IsStylusHandwritingAvailable |
Возвращает значение |
JniIdentityHashCode |
API центральной системы для общей архитектуры платформы методов ввода (IMF), которая определяет взаимодействие между приложениями и текущим методом ввода. (Унаследовано от Object) |
JniPeerMembers |
API центральной системы для общей архитектуры платформы методов ввода (IMF), которая определяет взаимодействие между приложениями и текущим методом ввода. |
LastInputMethodSubtype |
Возвращает последнее значение, использованное |
PeerReference |
API центральной системы для общей архитектуры платформы методов ввода (IMF), которая определяет взаимодействие между приложениями и текущим методом ввода. (Унаследовано от Object) |
ShortcutInputMethodsAndSubtypes |
Возвращает карту всех сведений о методах ввода ярлыка и их подтипов. |
ThresholdClass |
Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода. (Унаследовано от Object) |
ThresholdType |
Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода. (Унаследовано от Object) |
Методы
AcceptStylusHandwritingDelegation(View) |
Принимает и запускает сеанс рукописного ввода пера в представлении делегата, если делегирование запуска рукописного ввода ранее было запрошено с помощью |
AcceptStylusHandwritingDelegation(View, String) |
Принимает и запускает сеанс рукописного ввода пера в представлении делегата, если ранее было запрошено делегирование запуска рукописного ввода с помощью |
Clone() |
Создает и возвращает копию этого объекта. (Унаследовано от Object) |
DispatchKeyEventFromInputMethod(View, KeyEvent) |
Предоставляет реализацию |
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, HideSoftInputFlags, ResultReceiver) |
Запросите скрыть окно обратимого ввода из контекста окна, которое в настоящее время принимает входные данные. |
HideStatusIcon(IBinder) |
Этот элемент устарел. |
InvalidateInput(View) |
Дает системе указание на то, что текст, связанный с |
InvokeIsActive(View) |
Возвращает значение |
IsWatchingCursor(View) |
Устаревшие..
Возвращает значение true, если текущий метод ввода хочет watch расположение курсора редактора входных данных в его окне. |
JavaFinalize() |
Вызывается сборщиком мусора для объекта , когда сборка мусора определяет, что больше нет ссылок на объект . (Унаследовано от Object) |
Notify() |
Пробуждение одного потока, ожидающего на мониторе этого объекта. (Унаследовано от Object) |
NotifyAll() |
Активирует все потоки, ожидающие на мониторе этого объекта. (Унаследовано от Object) |
PrepareStylusHandwritingDelegation(View) |
Подготавливает делегирование начального сеанса рукописного ввода пера в другой редактор в том же или другом окне, что и представление, в котором обнаружен начальный росчерк рукописного ввода. |
PrepareStylusHandwritingDelegation(View, String) |
Подготавливает делегирование начального сеанса рукописного ввода пера в другой редактор в том же или другом окне в пакете, отличном от представления, в котором был обнаружен начальный росчерк рукописного ввода. |
RestartInput(View) |
Если метод ввода в настоящее время подключен к заданному представлению, перезапустите его с новым содержимым. |
SendAppPrivateCommand(View, String, Bundle) |
Вызовите |
SetAdditionalInputMethodSubtypes(String, InputMethodSubtype[]) |
Установка дополнительных подтипов метода ввода. |
SetCurrentInputMethodSubtype(InputMethodSubtype) |
Переключитесь на новый подтип метода ввода текущего метода ввода. |
SetExplicitlyEnabledInputMethodSubtypes(String, Int32[]) |
Обновления список явно включенных |
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, 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), которая определяет взаимодействие между приложениями и текущим методом ввода. |