public interface InputMethod
InputMethodManager
for more general information about the
architecture.
Applications will not normally use this interface themselves, instead
relying on the standard interaction provided by
TextView
and EditText
.
Those implementing input methods should normally do so by deriving from
InputMethodService
or one of its subclasses. When implementing
an input method, the service component containing it must also supply
a SERVICE_META_DATA
meta-data field, referencing an XML resource
providing details about the input method. All input methods also must
require that clients hold the
android.Manifest.permission#BIND_INPUT_METHOD
in order to interact
with the service; if this is not required, the system will not use that
input method, because it can not trust that it is not compromised.
The InputMethod interface is actually split into two parts: the interface
here is the top-level interface to the input method, providing all
access to it, which only the system can access (due to the BIND_INPUT_METHOD
permission requirement). In addition its method
createSession(android.view.inputmethod.InputMethod.SessionCallback)
can be called to instantate a secondary InputMethodSession
interface
which is what clients use to communicate with the input method.
Modifier and Type | Interface and Description |
---|---|
static interface |
InputMethod.SessionCallback |
Modifier and Type | Field and Description |
---|---|
static String |
SERVICE_INTERFACE
This is the interface name that a service implementing an input
method should say that it supports -- that is, this is the action it
uses for its intent filter.
|
static String |
SERVICE_META_DATA
Name under which an InputMethod service component publishes information
about itself.
|
static int |
SHOW_EXPLICIT
Flag for
showSoftInput(int, android.os.ResultReceiver) : this show has been explicitly
requested by the user. |
static int |
SHOW_FORCED
Flag for
showSoftInput(int, android.os.ResultReceiver) : this show has been forced to
happen by the user. |
Modifier and Type | Method and Description |
---|---|
void |
attachToken(IBinder token)
Called first thing after an input method is created, this supplies a
unique token for the session it has with the system service.
|
void |
bindInput(InputBinding binding)
Bind a new application environment in to the input method, so that it
can later start and stop input processing.
|
void |
changeInputMethodSubtype(InputMethodSubtype subtype)
Notify that the input method subtype is being changed in the same input method.
|
void |
createSession(InputMethod.SessionCallback callback)
Create a new
InputMethodSession that can be handed to client
applications for interacting with the input method. |
void |
hideSoftInput(int flags,
ResultReceiver resultReceiver)
Request that any soft input part of the input method be hidden from the user.
|
void |
restartInput(InputConnection inputConnection,
EditorInfo attribute)
This method is called when the state of this input method needs to be
reset.
|
void |
revokeSession(InputMethodSession session)
Disable and destroy a session that was previously created with
createSession(android.view.inputmethod.InputMethod.SessionCallback) . |
void |
setSessionEnabled(InputMethodSession session,
boolean enabled)
Control whether a particular input method session is active.
|
void |
showSoftInput(int flags,
ResultReceiver resultReceiver)
Request that any soft input part of the input method be shown to the user.
|
void |
startInput(InputConnection inputConnection,
EditorInfo info)
This method is called when the application starts to receive text and it
is ready for this input method to process received events and send result
text back to the application.
|
void |
unbindInput()
Unbind an application environment, called when the information previously
set by
bindInput(android.view.inputmethod.InputBinding) is no longer valid for this input method. |
static final String SERVICE_INTERFACE
android.Manifest.permission#BIND_INPUT_METHOD
permission so
that other applications can not abuse it.static final String SERVICE_META_DATA
<input-method
>
tag.static final int SHOW_EXPLICIT
showSoftInput(int, android.os.ResultReceiver)
: this show has been explicitly
requested by the user. If not set, the system has decided it may be
a good idea to show the input method based on a navigation operation
in the UI.static final int SHOW_FORCED
showSoftInput(int, android.os.ResultReceiver)
: this show has been forced to
happen by the user. If set, the input method should remain visible
until deliberated dismissed by the user in its UI.void attachToken(IBinder token)
Note: to protect yourself from malicious clients, you should only accept the first token given to you. Any after that may come from the client.
void bindInput(InputBinding binding)
binding
- Information about the application window that is binding
to the input method.InputBinding
,
unbindInput()
void unbindInput()
bindInput(android.view.inputmethod.InputBinding)
is no longer valid for this input method.
Typically this method is called when the application changes to be non-foreground.
void startInput(InputConnection inputConnection, EditorInfo info)
inputConnection
- Optional specific input connection for
communicating with the text box; if null, you should use the generic
bound input connection.info
- Information about the text box (typically, an EditText)
that requests input.EditorInfo
void restartInput(InputConnection inputConnection, EditorInfo attribute)
Typically, this method is called when the input focus is moved from one text box to another.
inputConnection
- Optional specific input connection for
communicating with the text box; if null, you should use the generic
bound input connection.attribute
- The attribute of the text box (typically, a EditText)
that requests input.EditorInfo
void createSession(InputMethod.SessionCallback callback)
InputMethodSession
that can be handed to client
applications for interacting with the input method. You can later
use revokeSession(InputMethodSession)
to destroy the session
so that it can no longer be used by any clients.callback
- Interface that is called with the newly created session.void setSessionEnabled(InputMethodSession session, boolean enabled)
session
- The InputMethodSession
previously provided through
SessionCallback.sessionCreated() that is to be changed.void revokeSession(InputMethodSession session)
createSession(android.view.inputmethod.InputMethod.SessionCallback)
.
After this call, the given session interface is no longer active and
calls on it will fail.session
- The InputMethodSession
previously provided through
SessionCallback.sessionCreated() that is to be revoked.void showSoftInput(int flags, ResultReceiver resultReceiver)
flags
- Provides additional information about the show request.
Currently may be 0 or have the bit SHOW_EXPLICIT
set.resultReceiver
- The client requesting the show may wish to
be told the impact of their request, which should be supplied here.
The result code should be
InputMethodManager.RESULT_UNCHANGED_SHOWN
,
InputMethodManager.RESULT_UNCHANGED_HIDDEN
,
InputMethodManager.RESULT_SHOWN
, or
InputMethodManager.RESULT_HIDDEN
.void hideSoftInput(int flags, ResultReceiver resultReceiver)
flags
- Provides additional information about the show request.
Currently always 0.resultReceiver
- The client requesting the show may wish to
be told the impact of their request, which should be supplied here.
The result code should be
InputMethodManager.RESULT_UNCHANGED_SHOWN
,
InputMethodManager.RESULT_UNCHANGED_HIDDEN
,
InputMethodManager.RESULT_SHOWN
, or
InputMethodManager.RESULT_HIDDEN
.void changeInputMethodSubtype(InputMethodSubtype subtype)
subtype
- New subtype of the notified input method