InputMethodManager 클래스

정의

애플리케이션과 현재 입력 방법 간의 상호 작용을 중재하는 전체 IMF(입력 방법 프레임워크) 아키텍처에 대한 중앙 시스템 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
특성

설명

애플리케이션과 현재 입력 방법 간의 상호 작용을 중재하는 전체 IMF(입력 방법 프레임워크) 아키텍처에 대한 중앙 시스템 API입니다.

여기에서 다루는 항목: <ol><li>아키텍처 개요<li>Applications<li>Input Methods<li>Security</ol>

"ArchitectureOverview"><h3>아키텍처 개요</h3>

IMF(입력 방법 프레임워크) 아키텍처에는 다음과 같은 세 가지 주요 당사자가 있습니다.

<ul><li> 이 <클래스에서 표현한 강력한>입력 메서드 관리자</strong> 는 다른 모든 부분 간의 상호 작용을 관리하는 시스템의 중심점입니다. 여기서는 각 애플리케이션 컨텍스트에 존재하고 모든 프로세스에서 상호 작용을 관리하는 전역 시스템 서비스와 통신하는 클라이언트 쪽 API로 표현됩니다. <<li> IME(강력한>입력 방법)</strong>는 사용자가 텍스트를 생성할 수 있도록 하는 특정 상호 작용 모델을 구현합니다. 시스템은 사용 중인 현재 입력 메서드에 바인딩되어 생성 및 실행되고 UI를 숨기고 표시할 시기를 알려줍니다. 한 번에 하나의 IME만 실행됩니다. <li> 입력 포커스 및< IME 상태에 대한 제어를 위해 입력 메서드 관리자를 사용하여 여러 개의 <강력한>클라이언트 애플리케이션/강력한> 중재를 실행합니다. 이러한 클라이언트는 한 번에 하나의 클라이언트만 활성화됩니다(IME 작업). </ul>

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

대부분의 경우 표준 android.widget.TextView 또는 해당 서브클래스를 사용하는 애플리케이션은 소프트 입력 메서드를 잘 사용하기 위해 수행할 필요가 거의 없습니다. 알아야 할 기본 사항은 다음과 같습니다.

<ul><li> 입력 메서드가 사용자가 텍스트를 입력하는 데 도움이 되는 충분한 컨텍스트를 갖도록 편집 가능한 텍스트 뷰에서 을 올바르게 설정합니다 android.R.attr#inputType . <li> 입력 메서드가 표시될 때 화면 공간 손실을 잘 처리합니다. 이상적으로 애플리케이션은 창 크기가 더 작게 조정되는 것을 처리해야 하지만 필요한 경우 창의 이동 수행 시스템에 의존할 수 있습니다. 작업에서 특성 또는 사용자가 만든 창의 해당 값을 설정 android.R.attr#windowSoftInputMode 하여 시스템이 이동 또는 크기 조정을 결정할 수 있도록 해야 합니다(이를 자동으로 확인하려고 시도하지만 잘못될 수 있음). <li> 동일한 android.R.attr#windowSoftInputMode 특성을 사용하여 창에 대한 기본 소프트 입력 상태(열기, 닫힘 등)를 제어할 수도 있습니다. </ul>

여기에서 API를 통해 입력 영역을 표시하거나 숨기거나 사용자가 입력 방법을 선택할 수 있도록 하는 등 IMF 및 해당 IME와 직접 상호 작용할 수 있는 보다 세분화된 컨트롤을 사용할 수 있습니다.

고유한 텍스트 편집기를 작성하는 드문 사용자의 경우 IME가 편집기와 상호 작용할 수 있도록 고유한 InputConnection 인터페이스의 새 instance 반환하기 위해 를 구현 android.view.View#onCreateInputConnection 해야 합니다.

"InputMethods"><h3>입력 메서드</h3>

IME(입력 메서드)는 일반적으로 에서 android.inputmethodservice.InputMethodService파생되는 로 android.app.Service구현됩니다. 이는 일반적으로 에 의해 android.inputmethodservice.InputMethodService 처리되고 구현자는 상위 수준 API만 처리하면 되지만 핵심 InputMethod 인터페이스를 제공해야 합니다.

IME 구현에 android.inputmethodservice.InputMethodService 대한 자세한 내용은 클래스를 참조하세요.

"보안"><h3>보안</h3>

기본적으로 UI를 완전히 구동하고 사용자가 입력하는 모든 것을 모니터링할 수 있으므로 입력 방법과 관련된 많은 보안 문제가 있습니다. Android 입력 방법 프레임워크는 임의의 타사 IME도 허용하므로 선택 및 상호 작용을 제한하려면 주의해야 합니다.

IMF의 보안 아키텍처에 대한 몇 가지 핵심 사항은 다음과 같습니다.

<ul><li>

시스템만 권한을 통해 android.Manifest.permission#BIND_INPUT_METHOD IME의 InputMethod 인터페이스에 직접 액세스할 수 있습니다. 이 권한은 이 권한이 필요하지 않은 입력 메서드 서비스에 바인딩하지 않음으로써 시스템에서 적용되므로 시스템에서 신뢰할 수 없는 다른 클라이언트가 제어 외부의 현재 입력 메서드에 액세스하지 않도록 보장할 수 있습니다.

<리튬>

IMF의 많은 클라이언트 프로세스가 있을 수 있지만 한 번에 하나만 활성화될 수 있습니다. 비활성 클라이언트는 아래에 설명된 메커니즘을 통해 IMF의 주요 부분과 상호 작용할 수 없습니다.

<리튬>

입력 메서드의 클라이언트에는 해당 InputMethodSession 인터페이스에 대한 액세스 권한만 부여됩니다. 이 인터페이스의 한 instance 각 클라이언트에 대해 만들어지고 활성 클라이언트와 연결된 세션의 호출만 현재 IME에서 처리됩니다. 이는 일반 IME에 대해 에 의해 android.inputmethodservice.AbstractInputMethodService 적용되지만 원시 InputMethodSession 구현을 사용자 지정하는 IME에서 명시적으로 처리해야 합니다.

<리튬>

활성 클라이언트만 InputConnection 작업을 수락합니다. IMF는 각 클라이언트 프로세스에 활성 상태인지 여부를 알리고, 프레임워크는 비활성 프로세스에서 현재 InputConnection에 대한 호출이 무시되도록 적용합니다. 이렇게 하면 현재 IME에서 사용자가 포커스가 있는 것으로 보이는 UI에 이벤트 및 텍스트 편집만 제공할 수 있습니다.

<리튬>

화면이 꺼져 있는 동안에는 IME가 와 InputConnection 상호 작용할 수 없습니다. 이는 화면이 꺼져 있는 동안 모든 클라이언트를 비활성 상태로 설정하여 적용되며, 사용자가 해당 동작을 인식하지 못할 때 잘못된 IME가 UI를 구동하지 못하도록 합니다.

<리튬>

클라이언트 애플리케이션은 시스템에서 사용자가 새 IME를 선택하도록 허용하도록 요청할 수 있지만 프로그래밍 방식으로 자체적으로 전환할 수는 없습니다. 이렇게 하면 악의적인 애플리케이션이 사용자를 자신의 IME로 전환할 수 없으므로 사용자가 다른 애플리케이션으로 이동할 때 계속 실행됩니다. 반면<>에 IME는<> 이미 사용자 입력을 완전히 제어할 수 있으므로 프로그래밍 방식으로 시스템을 다른 IME로 전환할 수 있습니다.

<리튬>

사용자는 설정에서 새 IME를 명시적으로 사용하도록 설정해야 전환할 수 있습니다. 이를 알고 있고 사용할 수 있도록 하려는 시스템을 통해 확인합니다.

</ul>

앱이 Android 11(API 수준 30) 이상을 대상으로 하는 경우 이 클래스의 메서드는 각각 현재 연결된 IME를 제외하고 패키지 표시 유형 규칙에 따라 필터링된 결과를 반환합니다. 에 대한 쿼리가 있는 앱은 InputMethod#SERVICE_INTERFACE 모든 IME를 참조하세요.

에 대한 Java 설명서입니다 android.view.inputmethod.InputMethodManager.

이 페이지의 일부는 만들고 공유하며 에 설명된 조건에 따라 사용되는 작업을 기반으로 수정됩니다.

필드

ShowForced

에 플래그 #showSoftInput 를 지정하여 사용자가 입력 메서드를 강제로 열어 두었기 때문에(예: 긴 누른 메뉴) 명시적으로 입력할 때까지 닫혀서는 안 됨을 나타냅니다.

ShowImplicit
사용되지 않음.

에 대한 #showSoftInput 플래그는 사용자가 직접 요청한 결과가 아니라 입력 창을 표시하는 암시적 요청임을 나타냅니다.

속성

Class

Object의 런타임 클래스를 반환합니다.

(다음에서 상속됨 Object)
CurrentInputMethodInfo

InputMethodInfo 현재 선택한 입력 메서드의 를 반환합니다(프로세스 사용자용).

CurrentInputMethodSubtype

현재 입력 메서드 하위 형식을 반환합니다.

EnabledInputMethodList

활성화된 입력 메서드 목록을 반환합니다.

Handle

기본 Android instance 대한 핸들입니다.

(다음에서 상속됨 Object)
InputMethodList

설치된 입력 메서드 목록을 반환합니다.

IsAcceptingText

현재 제공된 보기가 전체 텍스트 편집을 수락하는 경우 를 반환 true 합니다.

IsActive

입력 메서드에 대해 현재 활성화된 보기가 있으면 를 반환 true 합니다.

IsFullscreenMode

연결된 입력 메서드가 전체 화면 모드에서 실행되고 있는지 여부를 검색할 수 있습니다.

IsInputMethodSuppressingSpellChecker

입력 메서드가 시스템 맞춤법 검사기를 표시하지 않는 경우 를 반환 true 합니다.

IsStylusHandwritingAvailable

현재 선택한 IME가 스타일러스 필기 & 사용하도록 설정된 경우 를 반환 true 합니다.

JniIdentityHashCode

애플리케이션과 현재 입력 방법 간의 상호 작용을 중재하는 전체 IMF(입력 방법 프레임워크) 아키텍처에 대한 중앙 시스템 API입니다.

(다음에서 상속됨 Object)
JniPeerMembers

애플리케이션과 현재 입력 방법 간의 상호 작용을 중재하는 전체 IMF(입력 방법 프레임워크) 아키텍처에 대한 중앙 시스템 API입니다.

LastInputMethodSubtype

시스템 기록에 마지막으로 사용된 InputMethodSubtype 를 반환합니다.

PeerReference

애플리케이션과 현재 입력 방법 간의 상호 작용을 중재하는 전체 IMF(입력 방법 프레임워크) 아키텍처에 대한 중앙 시스템 API입니다.

(다음에서 상속됨 Object)
ShortcutInputMethodsAndSubtypes

모든 바로 가기 입력 메서드 정보 및 해당 하위 형식의 맵을 반환합니다.

ThresholdClass

이 API는 Android용 Mono 인프라를 지원하며 코드에서 직접 사용할 수 없습니다.

(다음에서 상속됨 Object)
ThresholdType

이 API는 Android용 Mono 인프라를 지원하며 코드에서 직접 사용할 수 없습니다.

(다음에서 상속됨 Object)

메서드

AcceptStylusHandwritingDelegation(View)

위임자에서 를 사용하여 #prepareStylusHandwritingDelegation(View) 필기 시작 위임을 이전에 요청한 경우 대리자 보기에서 스타일러스 필기 세션을 수락하고 시작합니다.

AcceptStylusHandwritingDelegation(View, String)

이전에 te 위임자에서 를 사용하여 #prepareStylusHandwritingDelegation(View, String) 필기 시작 위임을 요청했고 뷰가 지정된 대리자 패키지에 속하는 경우 대리자 보기에서 스타일러스 필기 세션을 수락하고 시작합니다.

Clone()

이 개체의 복사본을 만들고 반환합니다.

(다음에서 상속됨 Object)
DispatchKeyEventFromInputMethod(View, KeyEvent)

지정된 View 및 현재 포커스 상태에 따라 IME에서 적절한 이벤트 대상으로 전송된 키보드 이벤트를 디스패치해야 하는 의 기본 구현InputConnection#sendKeyEvent(KeyEvent)을 제공합니다.

DisplayCompletions(View, CompletionInfo[])
Dispose()

애플리케이션과 현재 입력 방법 간의 상호 작용을 중재하는 전체 IMF(입력 방법 프레임워크) 아키텍처에 대한 중앙 시스템 API입니다.

(다음에서 상속됨 Object)
Dispose(Boolean)

애플리케이션과 현재 입력 방법 간의 상호 작용을 중재하는 전체 IMF(입력 방법 프레임워크) 아키텍처에 대한 중앙 시스템 API입니다.

(다음에서 상속됨 Object)
Equals(Object)

다른 개체가 이 개체와 "같음"인지 여부를 나타냅니다.

(다음에서 상속됨 Object)
FromContext(Context)

애플리케이션과 현재 입력 방법 간의 상호 작용을 중재하는 전체 IMF(입력 방법 프레임워크) 아키텍처에 대한 중앙 시스템 API입니다.

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(입력 방법 편집기)가 아닌 항목에 의해 연결된 텍스트가 업데이트된다는 힌트를 시스템에 제공합니다 InputConnection#takeSnapshot().

InvokeIsActive(View)

지정된 뷰가 입력 메서드에 대한 현재 활성 보기이면 를 반환 true 합니다.

IsWatchingCursor(View)
사용되지 않음.

현재 입력 메서드가 창에서 입력 편집기의 커서 위치를 watch 하려는 경우 true를 반환합니다.

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[])

호출 프로세스에서 소유한 지정된 IME에 대해 명시적으로 사용하도록 설정된 InputMethodSubtype 목록을 업데이트.

SetHandle(IntPtr, JniHandleOwnership)

Handle 속성을 설정합니다.

(다음에서 상속됨 Object)
SetInputMethod(IBinder, String)

새 입력 메서드 구성 요소로 강제 전환합니다.

SetInputMethodAndSubtype(IBinder, String, InputMethodSubtype)

새 입력 메서드 및 하위 형식으로 강제 전환합니다.

ShouldOfferSwitchingToNextInputMethod(IBinder)

현재 IME가 사용자에게 다음 입력 메서드로 전환하는 방법을 제공해야 하는 경우 true를 반환합니다(예:

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>()

애플리케이션과 현재 입력 방법 간의 상호 작용을 중재하는 전체 IMF(입력 방법 프레임워크) 아키텍처에 대한 중앙 시스템 API입니다.

(다음에서 상속됨 Object)
ToggleSoftInput(ShowFlags, HideSoftInputFlags)

이 메서드는 입력 메서드 창 표시를 전환합니다.

ToggleSoftInputFromWindow(IBinder, ShowSoftInputFlags, HideSoftInputFlags)

이 메서드는 입력 메서드 창 표시를 전환합니다.

ToString()

개체의 문자열 표현을 반환합니다.

(다음에서 상속됨 Object)
UnregisterFromRuntime()

애플리케이션과 현재 입력 방법 간의 상호 작용을 중재하는 전체 IMF(입력 방법 프레임워크) 아키텍처에 대한 중앙 시스템 API입니다.

(다음에서 상속됨 Object)
UpdateCursor(View, Int32, Int32, Int32, Int32)
사용되지 않음.

창에서 현재 커서 위치를 보고합니다.

UpdateCursorAnchorInfo(View, CursorAnchorInfo)

컴퍼지션 문자열에서 텍스트 삽입 지점 및/또는 문자의 위치 변경을 보고합니다.

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

현재 선택 범위를 보고합니다.

ViewClicked(View)

사용자가 텍스트 보기를 탭하거나 클릭할 때 이벤트에 알립니다.

Wait()

현재 스레드가 깨어날 때까지 대기하게 합니다( 일반적으로 <알림을 받><거나 <>중단/>em>)합니다<.

(다음에서 상속됨 Object)
Wait(Int64)

현재 스레드가 깨어날 때까지 대기하게 합니다. 일반적으로 <>알림을 받<거나 <중단</>내보내>>거나 일정량의 실시간이 경과할 때까지 대기합니다.

(다음에서 상속됨 Object)
Wait(Int64, Int32)

현재 스레드가 깨어날 때까지 대기하게 합니다. 일반적으로 <>알림을 받<거나 <중단</>내보내>>거나 일정량의 실시간이 경과할 때까지 대기합니다.

(다음에서 상속됨 Object)

명시적 인터페이스 구현

IJavaPeerable.Disposed()

애플리케이션과 현재 입력 방법 간의 상호 작용을 중재하는 전체 IMF(입력 방법 프레임워크) 아키텍처에 대한 중앙 시스템 API입니다.

(다음에서 상속됨 Object)
IJavaPeerable.DisposeUnlessReferenced()

애플리케이션과 현재 입력 방법 간의 상호 작용을 중재하는 전체 IMF(입력 방법 프레임워크) 아키텍처에 대한 중앙 시스템 API입니다.

(다음에서 상속됨 Object)
IJavaPeerable.Finalized()

애플리케이션과 현재 입력 방법 간의 상호 작용을 중재하는 전체 IMF(입력 방법 프레임워크) 아키텍처에 대한 중앙 시스템 API입니다.

(다음에서 상속됨 Object)
IJavaPeerable.JniManagedPeerState

애플리케이션과 현재 입력 방법 간의 상호 작용을 중재하는 전체 IMF(입력 방법 프레임워크) 아키텍처에 대한 중앙 시스템 API입니다.

(다음에서 상속됨 Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

애플리케이션과 현재 입력 방법 간의 상호 작용을 중재하는 전체 IMF(입력 방법 프레임워크) 아키텍처에 대한 중앙 시스템 API입니다.

(다음에서 상속됨 Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

애플리케이션과 현재 입력 방법 간의 상호 작용을 중재하는 전체 IMF(입력 방법 프레임워크) 아키텍처에 대한 중앙 시스템 API입니다.

(다음에서 상속됨 Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

애플리케이션과 현재 입력 방법 간의 상호 작용을 중재하는 전체 IMF(입력 방법 프레임워크) 아키텍처에 대한 중앙 시스템 API입니다.

(다음에서 상속됨 Object)

확장 메서드

JavaCast<TResult>(IJavaObject)

Android 런타임 확인 형식 변환을 수행합니다.

JavaCast<TResult>(IJavaObject)

애플리케이션과 현재 입력 방법 간의 상호 작용을 중재하는 전체 IMF(입력 방법 프레임워크) 아키텍처에 대한 중앙 시스템 API입니다.

GetJniTypeName(IJavaPeerable)

애플리케이션과 현재 입력 방법 간의 상호 작용을 중재하는 전체 IMF(입력 방법 프레임워크) 아키텍처에 대한 중앙 시스템 API입니다.

적용 대상