IInputConnection 인터페이스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
InputConnection 인터페이스는 입력을 InputMethod
수신하는 애플리케이션으로의 통신 채널입니다.
[Android.Runtime.Register("android/view/inputmethod/InputConnection", "", "Android.Views.InputMethods.IInputConnectionInvoker")]
public interface IInputConnection : Android.Runtime.IJavaObject, IDisposable, Java.Interop.IJavaPeerable
[<Android.Runtime.Register("android/view/inputmethod/InputConnection", "", "Android.Views.InputMethods.IInputConnectionInvoker")>]
type IInputConnection = interface
interface IJavaObject
interface IDisposable
interface IJavaPeerable
- 파생
- 특성
- 구현
설명
InputConnection 인터페이스는 입력을 InputMethod
수신하는 애플리케이션으로의 통신 채널입니다. 커서 주위의 텍스트를 읽고, 텍스트 상자에 텍스트를 커밋하고, 원시 키 이벤트를 애플리케이션에 보내는 등의 작업을 수행하는 데 사용됩니다.
API 수준 android.os.Build.VERSION_CODES#N
부터 시스템은 애플리케이션이 이 클래스를 직접 구현하지만 다음 방법 중 하나 이상이 구현되지 않는 상황을 처리할 수 있습니다.
<에 도입 된 ul><li.android.os.Build.VERSION_CODES#GINGERBREAD
<>#getSelectedText(int)
에 도입 된 android.os.Build.VERSION_CODES#GINGERBREAD
/li li><>#setComposingRegion(int, int)
<에 도입 된 android.os.Build.VERSION_CODES#HONEYCOMB
/li li><>#commitCorrection(CorrectionInfo)
<에 도입 된 android.os.Build.VERSION_CODES#LOLLIPOP
/li li><>#requestCursorUpdates(int)
<에 도입 된 android.os.Build.VERSION_CODES#N
/li li><>#deleteSurroundingTextInCodePoints(int, int)
<에 도입 된 android.os.Build.VERSION_CODES#N
/li li><>#getHandler()
<에 도입 된 android.os.Build.VERSION_CODES#N
/li li><>#closeConnection()
<에 도입 된 android.os.Build.VERSION_CODES#N_MR1
/li li><>#commitContent(InputContentInfo, int, Bundle)
</li></ul>
<h3>IME 또는 편집<기 구현/h3>
텍스트 입력은 IME(입력 메서드 엔진)와 편집기라는 두 가지 필수 구성 요소의 시너지 효과의 결과입니다. IME는 소프트웨어 키보드, 필기 인터페이스, 이모지 팔레트, 음성 텍스트 변환 엔진 등이 될 수 있습니다. 일반적으로 지정된 Android 디바이스에 여러 IME가 설치되어 있습니다. Android에서는 IME가 확장됩니다 android.inputmethodservice.InputMethodService
. IME를 만드는 방법에 대한 자세한 내용은 입력 메서드 만들기 가이드를 참조 하세요.
편집기는 텍스트를 수신하고 표시하는 구성 요소입니다. 일반적으로 인스턴스 android.widget.EditText
이지만 일부 애플리케이션은 여러 가지 이유로 자체 편집기를 구현하도록 선택할 수 있습니다. 이는 크고 복잡한 작업이며, 이 작업을 수행하는 애플리케이션은 동작이 Android의 표준 EditText 동작과 일치하는지 확인해야 합니다. 편집기에서는 IME와 상호 작용하고, 이 InputConnection 인터페이스를 통해 명령을 수신하고, 명령을 통해 android.view.inputmethod.InputMethodManager
보내야 합니다. 편집기에서 먼저 고유한 입력 연결을 반환하도록 구현 android.view.View#onCreateInputConnection(EditorInfo)
해야 합니다.
고유한 IME를 구현하는 경우 이 인터페이스의 메서드를 호출하여 애플리케이션과 상호 작용해야 합니다. 처리해야 하는 특수성이 있을 수 있으므로 브라우저 및 서식 있는 텍스트 편집기를 비롯한 다양한 애플리케이션으로 IME를 테스트해야 합니다. IME가 텍스트의 유일한 변경 원본이 아닐 수 있으며, 보내는 데이터에서 가능한 한 보수적이고 받는 데이터에서 최대한 자유로워지도록 노력해야 합니다.
사용자 고유의 편집기를 구현하는 경우 IME의 BaseInputConnection
명령에 응답하기 위해 고유한 하위 클래스를 제공해야 할 수 있습니다. 가능한 한 많은 IME로 편집기를 테스트해야 합니다. 또한 입력 요구 사항이 다를 수 있으므로 CJK 언어 및 아랍어와 같은 오른쪽에서 왼쪽 언어를 비롯한 다양한 언어로 테스트해야 합니다. 특정 호출에 대해 채택해야 하는 동작이 확실하지 않은 경우 최신 Android 버전의 기본 TextView 구현을 모방하고, 텍스트 편집기 동작의 불일치가 사용자가 거의 보편적으로 나쁜 것으로 느끼는 것을 신중하게 고려하세요.
<h3>커서, 선택 및 컴퍼지션</h3>
Android에서는 커서와 선택 영역이 하나이고 동일합니다. "커서"는 크기가 0인 선택 영역의 특수한 경우일 뿐입니다. 따라서 이 설명서는 서로 교환하여 사용합니다. "커서 앞에" 동작하는 모든 메서드는 선택 영역이 있는 경우 선택 시작 전에 작동하고 "커서 뒤"로 동작하는 메서드는 선택 영역이 끝난 후 작동합니다.
편집기는 표준 버전 위젯처럼 현재 "작성 중" 지역을 추적할 수 있어야 합니다. 컴퍼지션은 특정 스타일로 android.text.Spanned#SPAN_COMPOSING
표시됩니다. IME는 이를 사용하여 사용자가 현재 초점을 맞추고 있는 텍스트의 일부를 추적하고 편집기 및 를 사용하여 InputConnection#setComposingText(CharSequence, int)
InputConnection#setComposingRegion(int, int)
InputConnection#finishComposingText()
편집기와 상호 작용할 수 있도록 합니다. 구성 영역과 선택 영역은 서로 완전히 독립적이며 IME에서 적합하게 표시되어도 사용할 수 있습니다.
에 대한 android.view.inputmethod.InputConnection
Java 설명서
이 페이지의 일부는 Android 오픈 소스 프로젝트에서 만들고 공유하고 Creative Commons 2.5 특성 라이선스에 설명된 용어에 따라 사용되는 작업을 기반으로 하는 수정 사항입니다.
속성
Handle |
기본 Android 개체의 JNI 값을 가져옵니다. (다음에서 상속됨 IJavaObject) |
Handler |
InputConnection 인터페이스는 입력을 |
JniIdentityHashCode |
래핑된 인스턴스의 |
JniManagedPeerState |
관리되는 피어의 상태입니다. (다음에서 상속됨 IJavaPeerable) |
JniPeerMembers |
멤버 액세스 및 호출 지원. (다음에서 상속됨 IJavaPeerable) |
PeerReference |
JniObjectReference 래핑된 Java 개체 인스턴스의 값을 반환합니다. (다음에서 상속됨 IJavaPeerable) |
메서드
BeginBatchEdit() |
편집기 작업의 일괄 처리를 시작한다고 편집기에게 알릴 수 있습니다. |
ClearMetaKeyStates(MetaKeyStates) |
지정된 입력 연결에서 지정된 메타 키 누름 상태를 지웁합니다. |
CloseConnection() |
시스템이 입력 메서드와 애플리케이션 간의 연결을 무효화하려고 했음을 알리기 위해 시스템에서 최대 한 번만 호출합니다. |
CommitCompletion(CompletionInfo) |
사용자가 이전에 보고했거나 이전에 보고한 작업 중에서 선택한 완료를 |
CommitContent(InputContentInfo, InputContentFlags, Bundle) |
PNG 이미지와 같은 콘텐츠를 편집기로 커밋하기 위해 입력 메서드에서 호출됩니다. |
CommitCorrection(CorrectionInfo) |
원시 사용자의 입력에 대해 자동으로 수행되는 수정 사항을 커밋합니다. |
CommitText(ICharSequence, Int32) |
텍스트 상자에 텍스트를 커밋하고 새 커서 위치를 설정합니다. |
CommitText(ICharSequence, Int32, TextAttribute) |
의 변형입니다 |
CommitText(String, Int32, TextAttribute) |
의 변형입니다 |
DeleteSurroundingText(Int32, Int32) |
<현재 커서 위치 앞에 있는 텍스트의 var>beforeLength</var> 문자를 삭제하고 선택 영역을 제외하고 현재 커서 위치 뒤에 있는 텍스트의 var>afterLength</var> 문자를 삭제<합니다. |
DeleteSurroundingTextInCodePoints(Int32, Int32) |
의 변형입니다 |
Disposed() |
인스턴스가 삭제되었을 때 호출됩니다. (다음에서 상속됨 IJavaPeerable) |
DisposeUnlessReferenced() |
이 인스턴스에 대한 미해결 참조가 없으면 호출 |
EndBatchEdit() |
편집기에서 이전에 시작된 일괄 처리 편집을 완료했다고 |
Finalized() |
인스턴스가 종료될 때 호출됩니다. (다음에서 상속됨 IJavaPeerable) |
FinishComposingText() |
현재 활성 상태인 작성 텍스트를 텍스트 편집기에서 완료합니다. |
GetCursorCapsMode(CapitalizationMode) |
텍스트의 현재 커서 위치에서 현재 대문자화 모드를 검색합니다. |
GetExtractedText(ExtractedTextRequest, GetTextFlags) |
입력 연결 편집기에서 현재 텍스트를 검색하고 변경 내용을 모니터링합니다. |
GetSelectedTextFormatted(GetTextFlags) |
선택한 텍스트(있는 경우)를 가져옵니다. |
GetSurroundingText(Int32, Int32, Int32) |
커서 앞에 있는 텍스트의 var>beforeLength</var> 문자, <커서 뒤에 있는 텍스트의 var>afterLength</var> 문자(선택 <영역의 끝) 및 선택한 모든 텍스트를 사용하여 현재 커서 주위의 주변 텍스트를 가져옵니다. |
GetTextAfterCursorFormatted(Int32, GetTextFlags) |
<현재 커서 위치 뒤에 있는 텍스트의 var>n</var> 문자를 가져옵니다. |
GetTextBeforeCursorFormatted(Int32, GetTextFlags) |
<현재 커서 위치 앞에 있는 텍스트의 var>n</var> 문자를 가져옵니다. |
PerformContextMenuAction(Int32) |
필드에서 상황에 맞는 메뉴 작업을 수행합니다. |
PerformEditorAction(ImeAction) |
편집기가 수행할 수 있다고 말한 작업을 수행하게 합니다. |
PerformHandwritingGesture(HandwritingGesture, IExecutor, IIntConsumer) |
텍스트에서 필기 제스처를 수행합니다. |
PerformPrivateCommand(String, Bundle) |
입력 메서드에서 연결된 편집기로 프라이빗 명령을 보내는 API입니다. |
PerformSpellCheck() |
편집기에서 전체 콘텐츠에 대한 맞춤법 검사를 수행하게 합니다. |
PreviewHandwritingGesture(PreviewableHandwritingGesture, CancellationSignal) |
텍스트에서 필기 제스처를 미리 봅니다. |
ReplaceText(Int32, Int32, ICharSequence, Int32, TextAttribute) |
편집기의 특정 범위를 제안된 텍스트로 바꿉다. |
ReplaceText(Int32, Int32, String, Int32, TextAttribute) |
편집기의 특정 범위를 제안된 텍스트로 바꿉다. |
ReportFullscreenMode(Boolean) |
연결된 IME가 전체 화면과 일반 모드 간에 전환되면 다시 호출됩니다. |
RequestCursorUpdates(Int32) |
커서/앵커 위치에 알리기 위해 다시 호출하도록 편집기를 요청하기 위해 입력 메서드에서 호출 |
RequestCursorUpdates(Int32, Int32) |
커서/앵커 위치에 알리기 위해 다시 호출하도록 편집기를 요청하기 위해 입력 메서드에서 호출 |
RequestTextBoundsInfo(RectF, IExecutor, IConsumer) |
입력 메서드에 의해 호출되어 지정된 |
SendKeyEvent(KeyEvent) |
이 입력 연결을 통해 현재 연결된 프로세스에 키 이벤트를 보냅니다. |
SetComposingRegion(Int32, Int32) |
텍스트의 특정 영역을 작성 텍스트로 표시합니다. |
SetComposingRegion(Int32, Int32, TextAttribute) |
의 변형입니다 |
SetComposingText(ICharSequence, Int32) |
현재 작성 중인 텍스트를 지정된 텍스트로 바꾸고 새 커서 위치를 설정합니다. |
SetComposingText(ICharSequence, Int32, TextAttribute) |
의 변형입니다 |
SetComposingText(String, Int32, TextAttribute) |
의 변형입니다 |
SetImeConsumesInput(Boolean) |
입력 메서드가 모든 입력을 자체에 사용하거나 더 이상 사용하지 않음을 나타내기 위해 호출됩니다. |
SetJniIdentityHashCode(Int32) |
에서 반환 |
SetJniManagedPeerState(JniManagedPeerStates) |
InputConnection 인터페이스는 입력을 |
SetPeerReference(JniObjectReference) |
에서 반환 |
SetSelection(Int32, Int32) |
텍스트 편집기의 선택을 설정합니다. |
TakeSnapshot() |
원자성 방식으로 여러 텍스트 관련 데이터의 스냅샷을 만들어야 하는 경우 시스템에서 호출합니다. |
UnregisterFromRuntime() |
런타임이 이후 Java.Interop.JniRuntime+JniValueManager.PeekValue 호출에서 반환되지 않도록 이 인스턴스의 등록을 취소합니다. (다음에서 상속됨 IJavaPeerable) |
확장 메서드
JavaCast<TResult>(IJavaObject) |
Android 런타임 확인 형식 변환을 수행합니다. |
CommitText(IInputConnection, String, Int32) |
InputConnection 인터페이스는 입력을 |
CommitText(IInputConnection, String, Int32, TextAttribute) |
InputConnection 인터페이스는 입력을 |
GetSelectedText(IInputConnection, GetTextFlags) |
InputConnection 인터페이스는 입력을 |
GetTextAfterCursor(IInputConnection, Int32, GetTextFlags) |
InputConnection 인터페이스는 입력을 |
GetTextBeforeCursor(IInputConnection, Int32, GetTextFlags) |
InputConnection 인터페이스는 입력을 |
ReplaceText(IInputConnection, Int32, Int32, String, Int32, TextAttribute) |
InputConnection 인터페이스는 입력을 |
SetComposingText(IInputConnection, String, Int32) |
InputConnection 인터페이스는 입력을 |
SetComposingText(IInputConnection, String, Int32, TextAttribute) |
InputConnection 인터페이스는 입력을 |
JavaCast<TResult>(IJavaObject) |
InputConnection 인터페이스는 입력을 |
GetJniTypeName(IJavaPeerable) |
InputConnection 인터페이스는 입력을 |