InputMethodManager 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
애플리케이션과 현재 입력 방법 간의 상호 작용을 중재하는 전체 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
- 상속
- 특성
설명
애플리케이션과 현재 입력 방법 간의 상호 작용을 중재하는 전체 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 |
에 플래그 |
ShowImplicit |
사용되지 않음.
에 대한 |
속성
Class |
이 |
CurrentInputMethodInfo |
|
CurrentInputMethodSubtype |
현재 입력 메서드 하위 형식을 반환합니다. |
EnabledInputMethodList |
활성화된 입력 메서드 목록을 반환합니다. |
Handle |
기본 Android instance 대한 핸들입니다. (다음에서 상속됨 Object) |
InputMethodList |
설치된 입력 메서드 목록을 반환합니다. |
IsAcceptingText |
현재 제공된 보기가 전체 텍스트 편집을 수락하는 경우 를 반환 |
IsActive |
입력 메서드에 대해 현재 활성화된 보기가 있으면 를 반환 |
IsFullscreenMode |
연결된 입력 메서드가 전체 화면 모드에서 실행되고 있는지 여부를 검색할 수 있습니다. |
IsInputMethodSuppressingSpellChecker |
입력 메서드가 시스템 맞춤법 검사기를 표시하지 않는 경우 를 반환 |
IsStylusHandwritingAvailable |
현재 선택한 IME가 스타일러스 필기 & 사용하도록 설정된 경우 를 반환 |
JniIdentityHashCode |
애플리케이션과 현재 입력 방법 간의 상호 작용을 중재하는 전체 IMF(입력 방법 프레임워크) 아키텍처에 대한 중앙 시스템 API입니다. (다음에서 상속됨 Object) |
JniPeerMembers |
애플리케이션과 현재 입력 방법 간의 상호 작용을 중재하는 전체 IMF(입력 방법 프레임워크) 아키텍처에 대한 중앙 시스템 API입니다. |
LastInputMethodSubtype |
시스템 기록에 마지막으로 사용된 |
PeerReference |
애플리케이션과 현재 입력 방법 간의 상호 작용을 중재하는 전체 IMF(입력 방법 프레임워크) 아키텍처에 대한 중앙 시스템 API입니다. (다음에서 상속됨 Object) |
ShortcutInputMethodsAndSubtypes |
모든 바로 가기 입력 메서드 정보 및 해당 하위 형식의 맵을 반환합니다. |
ThresholdClass |
이 API는 Android용 Mono 인프라를 지원하며 코드에서 직접 사용할 수 없습니다. (다음에서 상속됨 Object) |
ThresholdType |
이 API는 Android용 Mono 인프라를 지원하며 코드에서 직접 사용할 수 없습니다. (다음에서 상속됨 Object) |
메서드
AcceptStylusHandwritingDelegation(View) |
위임자에서 를 사용하여 |
AcceptStylusHandwritingDelegation(View, String) |
이전에 te 위임자에서 를 사용하여 |
Clone() |
이 개체의 복사본을 만들고 반환합니다. (다음에서 상속됨 Object) |
DispatchKeyEventFromInputMethod(View, 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, HideSoftInputFlags, ResultReceiver) |
현재 입력을 수락하는 창의 컨텍스트에서 소프트 입력 창을 숨기도록 요청합니다. |
HideStatusIcon(IBinder) |
이 멤버는 더 이상 사용되지 않습니다. |
InvalidateInput(View) |
시스템에서 제공된 주변 텍스트와 같은 새 편집 컨텍스트를 |
InvokeIsActive(View) |
지정된 뷰가 입력 메서드에 대한 현재 활성 보기이면 를 반환 |
IsWatchingCursor(View) |
사용되지 않음.
현재 입력 메서드가 창에서 입력 편집기의 커서 위치를 watch 하려는 경우 true를 반환합니다. |
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[]) |
호출 프로세스에서 소유한 지정된 IME에 대해 명시적으로 사용하도록 설정된 |
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, 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입니다. |