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
부터 시스템은 애플리케이션이 이 클래스를 직접 구현하지만 다음 방법 중 하나 이상이 구현되지 않는 상황을 처리할 수 있습니다.
<에 도입된 android.os.Build.VERSION_CODES#GINGERBREAD
ul><li>#getSelectedText(int)
입니다.</li><li>#setComposingRegion(int, int)
- 에서 android.os.Build.VERSION_CODES#GINGERBREAD
도입되었습니다.</li><li>#commitCorrection(CorrectionInfo)
- 에서 android.os.Build.VERSION_CODES#HONEYCOMB
도입되었습니다.</li><li>#requestCursorUpdates(int)
- 에서 android.os.Build.VERSION_CODES#LOLLIPOP
도입되었습니다.</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
도입되었습니다.</li><li>#commitContent(InputContentInfo, int, Bundle)
- 에서 android.os.Build.VERSION_CODES#N_MR1
도입되었습니다.</li></ul>
<h3>IME 또는 편집<기 구현/h3>
텍스트 입력은 두 가지 필수 구성 요소인 IME(입력 메서드 엔진)와 편집기의 시너지 효과의 결과입니다. IME는 소프트웨어 키보드, 필기 인터페이스, 이모지 팔레트, 음성 텍스트 변환 엔진 등이 될 수 있습니다. 일반적으로 지정된 Android 디바이스에 여러 IME가 설치되어 있습니다. Android에서 IME는 를 확장 android.inputmethodservice.InputMethodService
합니다. IME를 만드는 방법에 대한 자세한 내용은 입력 메서드 만들기 가이드를 참조하세요.
편집기는 텍스트를 수신하고 표시하는 구성 요소입니다. 일반적으로 instance 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#setComposingRegion(int, int)
및 InputConnection#finishComposingText()
를 사용하여 InputConnection#setComposingText(CharSequence, int)
편집기와 상호 작용할 수 있습니다. 구성 영역과 선택 영역은 서로 완전히 독립적이며, IME는 적합하게 보이더라도 사용할 수 있습니다.
에 대한 Java 설명서입니다 android.view.inputmethod.InputConnection
.
이 페이지의 일부는 만들고 공유하며 에 설명된 용어에 따라 사용되는 작업을 기반으로 수정됩니다.
속성
Handle |
기본 Android 개체의 JNI 값을 가져옵니다. (다음에서 상속됨 IJavaObject) |
Handler |
InputConnection 인터페이스는 입력을 |
JniIdentityHashCode |
|
JniManagedPeerState |
관리되는 피어의 상태입니다. (다음에서 상속됨 IJavaPeerable) |
JniPeerMembers |
멤버 액세스 및 호출 지원. (다음에서 상속됨 IJavaPeerable) |
PeerReference |
JniObjectReference 래핑된 Java 개체 instance 의 를 반환합니다. (다음에서 상속됨 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() |
instance 삭제되었을 때 호출됩니다. (다음에서 상속됨 IJavaPeerable) |
DisposeUnlessReferenced() |
이 instance 대한 미해결 참조가 없으면 를 호출 |
EndBatchEdit() |
이전에 로 시작된 일괄 처리 편집을 완료했음을 편집기에게 |
Finalized() |
instance 완료되면 호출됩니다. (다음에서 상속됨 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 호출에서 반환되지 않도록 이 instance 등록을 취소합니다. (다음에서 상속됨 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 인터페이스는 입력을 |