InputMethod
interface InputMethod
android.view.inputmethod.InputMethod |
The InputMethod interface represents an input method which can generate key events and text, such as digital, email addresses, CJK characters, other language characters, and etc., while handling various input events, and send the text back to the application that requests text input. See InputMethodManager
for more general information about the architecture.
Applications will not normally use this interface themselves, instead relying on the standard interaction provided by android.widget.TextView
and android.widget.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.
Summary
Nested classes | |
---|---|
abstract |
Constants | |
---|---|
static String |
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 |
Name under which an InputMethod service component publishes information about itself. |
static Int |
Flag for |
static Int |
Flag for |
Public methods | |
---|---|
abstract Unit |
attachToken(token: IBinder!) Called first thing after an input method is created, this supplies a unique token for the session it has with the system service. |
abstract Unit |
bindInput(binding: InputBinding!) Bind a new application environment in to the input method, so that it can later start and stop input processing. |
abstract Unit |
changeInputMethodSubtype(subtype: InputMethodSubtype!) Notify that the input method subtype is being changed in the same input method. |
abstract Unit |
createSession(callback: InputMethod.SessionCallback!) Create a new |
abstract Unit |
hideSoftInput(flags: Int, resultReceiver: ResultReceiver!) Request that any soft input part of the input method be hidden from the user. |
abstract Unit |
restartInput(inputConnection: InputConnection!, editorInfo: EditorInfo!) This method is called when the state of this input method needs to be reset. |
abstract Unit |
revokeSession(session: InputMethodSession!) Disable and destroy a session that was previously created with |
abstract Unit |
setSessionEnabled(session: InputMethodSession!, enabled: Boolean) Control whether a particular input method session is active. |
abstract Unit |
showSoftInput(flags: Int, resultReceiver: ResultReceiver!) Request that any soft input part of the input method be shown to the user. |
abstract Unit |
startInput(inputConnection: InputConnection!, editorInfo: EditorInfo!) 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. |
abstract Unit |
Unbind an application environment, called when the information previously set by |
Constants
SERVICE_INTERFACE
static val SERVICE_INTERFACE: String
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. To be supported, the service must also require the android.Manifest.permission#BIND_INPUT_METHOD
permission so that other applications can not abuse it.
Value: "android.view.InputMethod"
SERVICE_META_DATA
static val SERVICE_META_DATA: String
Name under which an InputMethod service component publishes information about itself. This meta-data must reference an XML resource containing an <
tag.input-method
>
Value: "android.view.im"
SHOW_EXPLICIT
static val SHOW_EXPLICIT: Int
Flag for showSoftInput
: 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.
Value: 1
SHOW_FORCED
static valSHOW_FORCED: Int
Deprecated: InputMethodManager.SHOW_FORCED
is deprecated and should no longer be used by apps. IMEs likewise should no longer react to this flag.
Flag for showSoftInput
: 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.
Value: 2
Public methods
attachToken
abstract fun attachToken(token: IBinder!): Unit
Called first thing after an input method is created, this supplies a unique token for the session it has with the system service. It is needed to identify itself with the service to validate its operations. This token must not be passed to applications, since it grants special priviledges that should not be given to applications.
The system guarantees that this method is called back between InputMethodService.onCreate()
and android.inputmethodservice.InputMethodService#onDestroy() at most once.
This method must be called from the main thread of your app.
bindInput
abstract fun bindInput(binding: InputBinding!): Unit
Bind a new application environment in to the input method, so that it can later start and stop input processing. Typically this method is called when this input method is enabled in an application for the first time.
This method must be called from the main thread of your app.
Parameters | |
---|---|
binding |
InputBinding!: Information about the application window that is binding to the input method. |
changeInputMethodSubtype
abstract fun changeInputMethodSubtype(subtype: InputMethodSubtype!): Unit
Notify that the input method subtype is being changed in the same input method.
This method must be called from the main thread of your app.
Parameters | |
---|---|
subtype |
InputMethodSubtype!: New subtype of the notified input method |
createSession
abstract fun createSession(callback: InputMethod.SessionCallback!): Unit
Create a new InputMethodSession
that can be handed to client applications for interacting with the input method. You can later use revokeSession(android.view.inputmethod.InputMethodSession)
to destroy the session so that it can no longer be used by any clients.
This method must be called from the main thread of your app.
Parameters | |
---|---|
callback |
InputMethod.SessionCallback!: Interface that is called with the newly created session. |
hideSoftInput
abstract fun hideSoftInput(
flags: Int,
resultReceiver: ResultReceiver!
): Unit
Request that any soft input part of the input method be hidden from the user.
This method must be called from the main thread of your app.
Parameters | |
---|---|
flags |
Int: Provides additional information about the hide request. Currently always 0. |
resultReceiver |
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 . |
restartInput
abstract fun restartInput(
inputConnection: InputConnection!,
editorInfo: EditorInfo!
): Unit
This method is called when the state of this input method needs to be reset.
Typically, this method is called when the input focus is moved from one text box to another.
This method must be called from the main thread of your app.
Parameters | |
---|---|
inputConnection |
InputConnection!: Optional specific input connection for communicating with the text box; if null, you should use the generic bound input connection. |
editorInfo |
EditorInfo!: The attribute of the text box (typically, a EditText) that requests input. |
See Also
revokeSession
abstract fun revokeSession(session: InputMethodSession!): Unit
Disable and destroy a session that was previously created with createSession(android.view.inputmethod.InputMethod.SessionCallback)
. After this call, the given session interface is no longer active and calls on it will fail.
This method must be called from the main thread of your app.
Parameters | |
---|---|
session |
InputMethodSession!: The InputMethodSession previously provided through SessionCallback.sessionCreated() that is to be revoked. |
setSessionEnabled
abstract fun setSessionEnabled(
session: InputMethodSession!,
enabled: Boolean
): Unit
Control whether a particular input method session is active.
This method must be called from the main thread of your app.
Parameters | |
---|---|
session |
InputMethodSession!: The InputMethodSession previously provided through SessionCallback.sessionCreated() that is to be changed. |
showSoftInput
abstract fun showSoftInput(
flags: Int,
resultReceiver: ResultReceiver!
): Unit
Request that any soft input part of the input method be shown to the user.
This method must be called from the main thread of your app.
Parameters | |
---|---|
resultReceiver |
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 . |
flags |
Int: Value is either 0 or a combination of android.view.inputmethod.InputMethod#SHOW_EXPLICIT , and android.view.inputmethod.InputMethod#SHOW_FORCED |
startInput
abstract fun startInput(
inputConnection: InputConnection!,
editorInfo: EditorInfo!
): Unit
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.
This method must be called from the main thread of your app.
Parameters | |
---|---|
inputConnection |
InputConnection!: Optional specific input connection for communicating with the text box; if null, you should use the generic bound input connection. |
editorInfo |
EditorInfo!: Information about the text box (typically, an EditText) that requests input. |
See Also
unbindInput
abstract fun unbindInput(): Unit
Unbind an application environment, called when the information previously set by bindInput
is no longer valid for this input method.
Typically this method is called when the application changes to be non-foreground.
This method must be called from the main thread of your app.