public interface InputConnection
InputMethod
back to the application that is receiving its input. It
is used to perform such things as reading text around the cursor,
committing text to the text box, and sending raw key events to the application.
Applications should never directly implement this interface, but instead
subclass from BaseInputConnection
. This will ensure that the
application does not break when new methods are added to the interface.
Modifier and Type | Field and Description |
---|---|
static int |
GET_EXTRACTED_TEXT_MONITOR
Flag for use with
getExtractedText(android.view.inputmethod.ExtractedTextRequest, int) to indicate you would
like to receive updates when the extracted text changes. |
static int |
GET_TEXT_WITH_STYLES
Flag for use with
getTextAfterCursor(int, int) and
getTextBeforeCursor(int, int) to have style information returned along
with the text. |
Modifier and Type | Method and Description |
---|---|
boolean |
beginBatchEdit()
Tell the editor that you are starting a batch of editor operations.
|
boolean |
clearMetaKeyStates(int states)
Clear the given meta key pressed states in the given input connection.
|
boolean |
commitCompletion(CompletionInfo text)
Commit a completion the user has selected from the possible ones
previously reported to
InputMethodSession.displayCompletions() . |
boolean |
commitCorrection(CorrectionInfo correctionInfo)
Commit a correction automatically performed on the raw user's input.
|
boolean |
commitText(CharSequence text,
int newCursorPosition)
Commit text to the text box and set the new cursor position.
|
boolean |
deleteSurroundingText(int beforeLength,
int afterLength)
Delete beforeLength characters of text before the current cursor
position, and delete afterLength characters of text after the
current cursor position, excluding composing text.
|
boolean |
endBatchEdit()
Tell the editor that you are done with a batch edit previously
initiated with
beginBatchEdit() . |
boolean |
finishComposingText()
Have the text editor finish whatever composing text is currently
active.
|
int |
getCursorCapsMode(int reqModes)
Retrieve the current capitalization mode in effect at the current
cursor position in the text.
|
ExtractedText |
getExtractedText(ExtractedTextRequest request,
int flags)
Retrieve the current text in the input connection's editor, and monitor
for any changes to it.
|
CharSequence |
getSelectedText(int flags)
Gets the selected text, if any.
|
CharSequence |
getTextAfterCursor(int n,
int flags)
Get n characters of text after the current cursor position.
|
CharSequence |
getTextBeforeCursor(int n,
int flags)
Get n characters of text before the current cursor position.
|
boolean |
performContextMenuAction(int id)
Perform a context menu action on the field.
|
boolean |
performEditorAction(int editorAction)
Have the editor perform an action it has said it can do.
|
boolean |
performPrivateCommand(String action,
Bundle data)
API to send private commands from an input method to its connected
editor.
|
boolean |
reportFullscreenMode(boolean enabled)
Called by the IME to tell the client when it switches between fullscreen
and normal modes.
|
boolean |
sendKeyEvent(KeyEvent event)
Send a key event to the process that is currently attached through
this input connection.
|
boolean |
setComposingRegion(int start,
int end)
Mark a certain region of text as composing text.
|
boolean |
setComposingText(CharSequence text,
int newCursorPosition)
Set composing text around the current cursor position with the given text,
and set the new cursor position.
|
boolean |
setSelection(int start,
int end)
Set the selection of the text editor.
|
static final int GET_TEXT_WITH_STYLES
getTextAfterCursor(int, int)
and
getTextBeforeCursor(int, int)
to have style information returned along
with the text. If not set, you will receive only the raw text. If
set, you may receive a complex CharSequence of both text and style
spans.static final int GET_EXTRACTED_TEXT_MONITOR
getExtractedText(android.view.inputmethod.ExtractedTextRequest, int)
to indicate you would
like to receive updates when the extracted text changes.CharSequence getTextBeforeCursor(int n, int flags)
This method may fail either if the input connection has become invalid (such as its process crashing) or the client is taking too long to respond with the text (it is given a couple seconds to return). In either case, a null is returned.
n
- The expected length of the text.flags
- Supplies additional options controlling how the text is
returned. May be either 0 or GET_TEXT_WITH_STYLES
.CharSequence getTextAfterCursor(int n, int flags)
This method may fail either if the input connection has become invalid (such as its process crashing) or the client is taking too long to respond with the text (it is given a couple seconds to return). In either case, a null is returned.
n
- The expected length of the text.flags
- Supplies additional options controlling how the text is
returned. May be either 0 or GET_TEXT_WITH_STYLES
.CharSequence getSelectedText(int flags)
This method may fail if either the input connection has become invalid (such as its process crashing) or the client is taking too long to respond with the text (it is given a couple of seconds to return). In either case, a null is returned.
flags
- Supplies additional options controlling how the text is
returned. May be either 0 or GET_TEXT_WITH_STYLES
.int getCursorCapsMode(int reqModes)
TextUtils.getCapsMode
for
more information.
This method may fail either if the input connection has become invalid (such as its process crashing) or the client is taking too long to respond with the text (it is given a couple seconds to return). In either case, a 0 is returned.
reqModes
- The desired modes to retrieve, as defined by
TextUtils.getCapsMode
. These
constants are defined so that you can simply pass the current
TextBoxAttribute.contentType
value
directly in to here.ExtractedText getExtractedText(ExtractedTextRequest request, int flags)
This method may fail either if the input connection has become invalid (such as its process crashing) or the client is taking too long to respond with the text (it is given a couple seconds to return). In either case, a null is returned.
request
- Description of how the text should be returned.flags
- Additional options to control the client, either 0 or
GET_EXTRACTED_TEXT_MONITOR
.boolean deleteSurroundingText(int beforeLength, int afterLength)
beforeLength
- The number of characters to be deleted before the
current cursor position.afterLength
- The number of characters to be deleted after the
current cursor position.boolean setComposingText(CharSequence text, int newCursorPosition)
text
- The composing text with styles if necessary. If no style
object attached to the text, the default style for composing text
is used. See {#link android.text.Spanned} for how to attach style
object to the text. {#link android.text.SpannableString} and
{#link android.text.SpannableStringBuilder} are two
implementations of the interface {#link android.text.Spanned}.newCursorPosition
- The new cursor position around the text. If
> 0, this is relative to the end of the text - 1; if <= 0, this
is relative to the start of the text. so a value of 1 will
always advance you to the position after the full text being
inserted. note that this means you can't position the cursor
within the text, because the editor can make modifications to
the text you are providing so it is not possible to correctly
specify locations there.boolean setComposingRegion(int start, int end)
start
- the position in the text at which the composing region beginsend
- the position in the text at which the composing region endsboolean finishComposingText()
boolean commitText(CharSequence text, int newCursorPosition)
text
- The committed text.newCursorPosition
- The new cursor position around the text. If
> 0, this is relative to the end of the text - 1; if <= 0, this
is relative to the start of the text. so a value of 1 will
always advance you to the position after the full text being
inserted. note that this means you can't position the cursor
within the text, because the editor can make modifications to
the text you are providing so it is not possible to correctly
specify locations there.boolean commitCompletion(CompletionInfo text)
InputMethodSession.displayCompletions()
. This will result in the
same behavior as if the user had selected the completion from the
actual UI.text
- The committed completion.boolean commitCorrection(CorrectionInfo correctionInfo)
correctionInfo
- Detailed information about the correction.boolean setSelection(int start, int end)
boolean performEditorAction(int editorAction)
editorAction
- This must be one of the action constants for
EditorInfo.editorType
, such as
EditorInfo.EDITOR_ACTION_GO
.boolean performContextMenuAction(int id)
android.R.id#selectAll
,
android.R.id#startSelectingText
, android.R.id#stopSelectingText
,
android.R.id#cut
, android.R.id#copy
,
android.R.id#paste
, android.R.id#copyUrl
,
or android.R.id#switchInputMethod
boolean beginBatchEdit()
endBatchEdit()
is called.boolean endBatchEdit()
beginBatchEdit()
.boolean sendKeyEvent(KeyEvent event)
This method can be used to send key events to the application. For example, an on-screen keyboard may use this method to simulate a hardware keyboard. There are three types of standard keyboards, numeric (12-key), predictive (20-key) and ALPHA (QWERTY). You can specify the keyboard type by specify the device id of the key event.
You will usually want to set the flag
KeyEvent.FLAG_SOFT_KEYBOARD
on all
key event objects you give to this API; the flag will not be set
for you.
Note that it's discouraged to send such key events in normal operation;
this is mainly for use with InputType.TYPE_NULL
type
text fields. Use the commitText(java.lang.CharSequence, int)
family of methods to send text
to the application instead.
event
- The key event.KeyEvent
,
KeyCharacterMap.NUMERIC
,
KeyCharacterMap.PREDICTIVE
,
KeyCharacterMap.ALPHA
boolean clearMetaKeyStates(int states)
states
- The states to be cleared, may be one or more bits as
per KeyEvent.getMetaState()
.boolean reportFullscreenMode(boolean enabled)
InputMethodService
.boolean performPrivateCommand(String action, Bundle data)
EditorInfo
to determine if
a client supports a particular command.action
- Name of the command to be performed. This must
be a scoped name, i.e. prefixed with a package name you own, so that
different developers will not create conflicting commands.data
- Any data to include with the command.