android.view.inputmethod.InputConnection |
Known Indirect Subclasses |
The InputConnection interface is the communication channel from an
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.
Constants | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
int | GET_EXTRACTED_TEXT_MONITOR | Flag for use with getExtractedText(ExtractedTextRequest, int) to indicate you would
like to receive updates when the extracted text changes. |
|||||||||
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. |
Public Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Tell the editor that you are starting a batch of editor operations.
| |||||||||||
Clear the given meta key pressed states in the given input connection.
| |||||||||||
Commit a completion the user has selected from the possible ones
previously reported to
InputMethodSession.displayCompletions() . | |||||||||||
Commit a correction automatically performed on the raw user's input.
| |||||||||||
Commit text to the text box and set the new cursor position.
| |||||||||||
Delete beforeLength characters of text before the current cursor
position, and delete afterLength characters of text after the
current cursor position, excluding composing text.
| |||||||||||
Tell the editor that you are done with a batch edit previously
initiated with
beginBatchEdit() . | |||||||||||
Have the text editor finish whatever composing text is currently
active.
| |||||||||||
Retrieve the current capitalization mode in effect at the current
cursor position in the text.
| |||||||||||
Retrieve the current text in the input connection's editor, and monitor
for any changes to it.
| |||||||||||
Gets the selected text, if any.
| |||||||||||
Get n characters of text after the current cursor position.
| |||||||||||
Get n characters of text before the current cursor position.
| |||||||||||
Perform a context menu action on the field.
| |||||||||||
Have the editor perform an action it has said it can do.
| |||||||||||
API to send private commands from an input method to its connected
editor.
| |||||||||||
Called by the IME to tell the client when it switches between fullscreen
and normal modes.
| |||||||||||
Send a key event to the process that is currently attached through
this input connection.
| |||||||||||
Mark a certain region of text as composing text.
| |||||||||||
Set composing text around the current cursor position with the given text,
and set the new cursor position.
| |||||||||||
Set the selection of the text editor.
|
Flag for use with getExtractedText(ExtractedTextRequest, int)
to indicate you would
like to receive updates when the extracted text changes.
Flag for use with 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.
Tell the editor that you are starting a batch of editor operations.
The editor will try to avoid sending you updates about its state
until endBatchEdit()
is called.
Clear the given meta key pressed states in the given input connection.
states | The states to be cleared, may be one or more bits as
per KeyEvent.getMetaState() . |
---|
Commit a completion the user has selected from the possible ones
previously reported to 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. |
---|
Commit a correction automatically performed on the raw user's input. A typical example would be to correct typos using a dictionary.
correctionInfo | Detailed information about the correction. |
---|
Commit text to the text box and set the new cursor position. Any composing text set previously will be removed automatically.
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. |
Delete beforeLength characters of text before the current cursor position, and delete afterLength characters of text after the current cursor position, excluding composing text. Before and after refer to the order of the characters in the string, not to their visual representation.
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. |
Tell the editor that you are done with a batch edit previously
initiated with beginBatchEdit()
.
Have the text editor finish whatever composing text is currently active. This simply leaves the text as-is, removing any special composing styling or other state that was around it. The cursor position remains unchanged.
Retrieve the current capitalization mode in effect at the current
cursor position in the text. See
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. |
---|
Retrieve the current text in the input connection's editor, and monitor for any changes to it. This function returns with the current text, and optionally the input connection can send updates to the input method when its text changes.
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 . |
Gets the selected text, if any.
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 . |
---|
Get n characters of text after the current cursor position.
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 . |
Get n characters of text before the current cursor position.
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 . |
Perform a context menu action on the field. The given id may be one of:
selectAll
,
startSelectingText
, stopSelectingText
,
cut
, copy
,
paste
, copyUrl
,
or switchInputMethod
Have the editor perform an action it has said it can do.
editorAction | This must be one of the action constants for
EditorInfo.editorType , such as
EditorInfo.EDITOR_ACTION_GO . |
---|
API to send private commands from an input method to its connected
editor. This can be used to provide domain-specific features that are
only known between certain input methods and their clients. Note that
because the InputConnection protocol is asynchronous, you have no way
to get a result back or know if the client understood the command; you
can use the information in 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. |
Called by the IME to tell the client when it switches between fullscreen
and normal modes. This will normally be called for you by the standard
implementation of InputMethodService
.
Send a key event to the process that is currently attached through this input connection. The event will be dispatched like a normal key event, to the currently focused; this generally is the view that is providing this InputConnection, but due to the asynchronous nature of this protocol that can not be guaranteed and the focus may have changed by the time the event is received.
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 TYPE_NULL
type
text fields. Use the commitText(CharSequence, int)
family of methods to send text
to the application instead.
event | The key event. |
---|
Mark a certain region of text as composing text. Any composing text set previously will be removed automatically. The default style for composing text is used.
start | the position in the text at which the composing region begins |
---|---|
end | the position in the text at which the composing region ends |
Set composing text around the current cursor position with the given text, and set the new cursor position. Any composing text set previously will be removed automatically.
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. |
Set the selection of the text editor. To set the cursor position, start and end should have the same value.