DroidMcpInputMethodService

Abstract InputMethodService that hosts droid-mcp's "LLM keyboard." Renders a minimal input view (typing is driven by MCP tools, not by user touches on a key grid) with a single "Switch back" button so users can return to their normal keyboard, and registers itself with InputMethodServiceHolder so tools can reach the currently-bound InputConnection.

The host app:

  1. Declares a concrete subclass in its manifest with android.permission.BIND_INPUT_METHOD and an <intent-filter> for android.view.InputMethod.

  2. Points <meta-data android:name="android.view.im" android:resource="@xml/droid_mcp_ime_config" /> at the shipped default config (or supplies its own).

  3. User adds the keyboard via Settings > System > Languages & input > On-screen keyboard > Manage on-screen keyboards, then picks it via the IME picker.

Constructors

Link copied to clipboard
constructor()

Properties

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open val assets: AssetManager?
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open val baseContext: Context?
Link copied to clipboard
open val cacheDir: File?
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open val codeCacheDir: File?
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open val dataDir: File?
Link copied to clipboard
open val deviceId: Int
Link copied to clipboard
open val display: Display?
Link copied to clipboard
Link copied to clipboard
open val externalCacheDirs: Array<out File?>?
Link copied to clipboard
open val externalMediaDirs: Array<out File?>?
Link copied to clipboard
open val filesDir: File?
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open val mainLooper: Looper?
Link copied to clipboard
open val maxWidth: Int
Link copied to clipboard
Link copied to clipboard
open val obbDir: File?
Link copied to clipboard
open val obbDirs: Array<out File?>?
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open val packageName: String?
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open val resources: Resources?
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open val wallpaper: Drawable?
Link copied to clipboard
open val window: Dialog?

Functions

Link copied to clipboard
open fun bindIsolatedService(service: Intent, flags: Context.BindServiceFlags, instanceName: String, executor: Executor, conn: ServiceConnection): Boolean
open fun bindIsolatedService(service: Intent, flags: Int, instanceName: String, executor: Executor, conn: ServiceConnection): Boolean
Link copied to clipboard
open fun bindService(service: Intent, conn: ServiceConnection, flags: Int): Boolean
open fun bindService(service: Intent, flags: Context.BindServiceFlags, executor: Executor, conn: ServiceConnection): Boolean
open fun bindService(service: Intent, flags: Int, executor: Executor, conn: ServiceConnection): Boolean
Link copied to clipboard
open fun bindServiceAsUser(service: Intent, conn: ServiceConnection, flags: Int, user: UserHandle): Boolean
Link copied to clipboard
open fun checkCallingOrSelfPermission(permission: String): Int
Link copied to clipboard
open fun checkCallingOrSelfUriPermission(uri: Uri?, modeFlags: Int): Int
Link copied to clipboard
open fun checkCallingOrSelfUriPermissions(uris: List<Uri?>, modeFlags: Int): IntArray
Link copied to clipboard
open fun checkCallingPermission(permission: String): Int
Link copied to clipboard
open fun checkCallingUriPermission(uri: Uri?, modeFlags: Int): Int
Link copied to clipboard
open fun checkCallingUriPermissions(uris: List<Uri?>, modeFlags: Int): IntArray
Link copied to clipboard
open fun checkContentUriPermissionFull(uri: Uri, pid: Int, uid: Int, modeFlags: Int): Int
Link copied to clipboard
open fun checkPermission(permission: String, pid: Int, uid: Int): Int
Link copied to clipboard
open fun checkSelfPermission(permission: String): Int
Link copied to clipboard
open fun checkUriPermission(uri: Uri?, pid: Int, uid: Int, modeFlags: Int): Int
open fun checkUriPermission(uri: Uri?, readPermission: String?, writePermission: String?, pid: Int, uid: Int, modeFlags: Int): Int
Link copied to clipboard
open fun checkUriPermissions(uris: List<Uri?>, pid: Int, uid: Int, modeFlags: Int): IntArray
Link copied to clipboard
open fun clearWallpaper()
Link copied to clipboard

Live InputConnection for the currently-focused field, or null if the IME isn't currently driving an editor.

Link copied to clipboard
open fun createAttributionContext(attributionTag: String?): Context
Link copied to clipboard
open fun createConfigurationContext(overrideConfiguration: Configuration): Context?
Link copied to clipboard
open fun createContext(contextParams: ContextParams): Context
Link copied to clipboard
open fun createContextForSplit(splitName: String?): Context?
Link copied to clipboard
open fun createDeviceContext(deviceId: Int): Context
Link copied to clipboard
open fun createDisplayContext(display: Display): Context?
Link copied to clipboard
open fun createPackageContext(packageName: String?, flags: Int): Context?
Link copied to clipboard
open fun createWindowContext(type: Int, options: Bundle?): Context
open fun createWindowContext(display: Display, type: Int, options: Bundle?): Context
Link copied to clipboard
open fun databaseList(): Array<out String?>?
Link copied to clipboard
open fun deleteDatabase(name: String?): Boolean
Link copied to clipboard
open fun deleteFile(name: String?): Boolean
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun enforceCallingOrSelfPermission(permission: String, message: String?)
Link copied to clipboard
open fun enforceCallingOrSelfUriPermission(uri: Uri?, modeFlags: Int, message: String?)
Link copied to clipboard
open fun enforceCallingPermission(permission: String, message: String?)
Link copied to clipboard
open fun enforceCallingUriPermission(uri: Uri?, modeFlags: Int, message: String?)
Link copied to clipboard
open fun enforcePermission(permission: String, pid: Int, uid: Int, message: String?)
Link copied to clipboard
open fun enforceUriPermission(uri: Uri?, pid: Int, uid: Int, modeFlags: Int, message: String?)
open fun enforceUriPermission(uri: Uri?, readPermission: String?, writePermission: String?, pid: Int, uid: Int, modeFlags: Int, message: String?)
Link copied to clipboard
open fun fileList(): Array<out String?>?
Link copied to clipboard
Link copied to clipboard
fun getColor(id: Int): Int
Link copied to clipboard
Link copied to clipboard
open fun getDatabasePath(name: String?): File?
Link copied to clipboard
open fun getDir(name: String?, mode: Int): File?
Link copied to clipboard
Link copied to clipboard
open fun getExternalFilesDir(type: String?): File?
Link copied to clipboard
open fun getExternalFilesDirs(type: String?): Array<out File?>?
Link copied to clipboard
open fun getFileStreamPath(name: String?): File?
Link copied to clipboard
Link copied to clipboard
fun getString(resId: Int): String
fun getString(resId: Int, vararg formatArgs: Any?): String
Link copied to clipboard
fun <T : Any?> getSystemService(serviceClass: Class<T?>): T?
open fun getSystemService(name: String): Any?
Link copied to clipboard
open fun getSystemServiceName(serviceClass: Class<*>): String?
Link copied to clipboard
fun getText(resId: Int): CharSequence
Link copied to clipboard
open fun getTextForImeAction(imeOptions: Int): CharSequence?
Link copied to clipboard
open fun grantUriPermission(toPackage: String?, uri: Uri?, modeFlags: Int)
Link copied to clipboard

Whether an editor field is currently bound to this IME. Tools use this via InputMethodServiceHolder.isActive to short-circuit with a clear error before trying to drive an empty InputConnection.

Link copied to clipboard
open fun hideStatusIcon()
Link copied to clipboard
open fun hideWindow()
Link copied to clipboard
open fun moveDatabaseFrom(sourceContext: Context?, name: String?): Boolean
Link copied to clipboard
open fun moveSharedPreferencesFrom(sourceContext: Context?, name: String?): Boolean
Link copied to clipboard
Link copied to clipboard
open fun onAppPrivateCommand(action: String?, data: Bundle?)
Link copied to clipboard
fun onBind(intent: Intent?): IBinder?
Link copied to clipboard
open fun onBindInput()
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun onConfigureWindow(win: Window?, isFullscreen: Boolean, isCandidatesOnly: Boolean)
Link copied to clipboard
open override fun onCreate()
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open override fun onCreateInputView(): View
Link copied to clipboard
open override fun onDestroy()
Link copied to clipboard
open fun onDisplayCompletions(completions: Array<out CompletionInfo?>?)
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun onExtractedCursorMovement(dx: Int, dy: Int)
Link copied to clipboard
open fun onExtractedSelectionChanged(start: Int, end: Int)
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun onFinishCandidatesView(finishingInput: Boolean)
Link copied to clipboard
open override fun onFinishInput()
Link copied to clipboard
open fun onFinishInputView(finishingInput: Boolean)
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean
Link copied to clipboard
open fun onKeyLongPress(keyCode: Int, event: KeyEvent?): Boolean
Link copied to clipboard
open fun onKeyMultiple(keyCode: Int, count: Int, event: KeyEvent?): Boolean
Link copied to clipboard
open fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean
Link copied to clipboard
open fun onLowMemory()
Link copied to clipboard
Link copied to clipboard
open fun onRebind(intent: Intent?)
Link copied to clipboard
open fun onShowInputRequested(flags: Int, configChange: Boolean): Boolean
Link copied to clipboard
open fun onStart(intent: Intent?, startId: Int)
Link copied to clipboard
open fun onStartCandidatesView(editorInfo: EditorInfo?, restarting: Boolean)
Link copied to clipboard
open fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int
Link copied to clipboard
open fun onStartConnectionlessStylusHandwriting(inputType: Int, cursorAnchorInfo: CursorAnchorInfo?): Boolean
Link copied to clipboard
open override fun onStartInput(attribute: EditorInfo?, restarting: Boolean)
Link copied to clipboard
open fun onStartInputView(editorInfo: EditorInfo?, restarting: Boolean)
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun onTaskRemoved(rootIntent: Intent?)
Link copied to clipboard
open fun onTimeout(startId: Int)
open fun onTimeout(startId: Int, fgsType: Int)
Link copied to clipboard
Link copied to clipboard
open fun onTrimMemory(level: Int)
Link copied to clipboard
open fun onUnbind(intent: Intent?): Boolean
Link copied to clipboard
open fun onUnbindInput()
Link copied to clipboard
open fun onUpdateCursor(newCursor: Rect?)
Link copied to clipboard
open fun onUpdateCursorAnchorInfo(cursorAnchorInfo: CursorAnchorInfo?)
Link copied to clipboard
open fun onUpdateEditorToolType(toolType: Int)
Link copied to clipboard
open fun onUpdateExtractedText(token: Int, text: ExtractedText?)
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun onUpdateSelection(oldSelStart: Int, oldSelEnd: Int, newSelStart: Int, newSelEnd: Int, candidatesStart: Int, candidatesEnd: Int)
Link copied to clipboard
open fun onViewClicked(focusChanged: Boolean)
Link copied to clipboard
open fun onWindowHidden()
Link copied to clipboard
open fun onWindowShown()
Link copied to clipboard
Link copied to clipboard
open fun openFileOutput(name: String?, mode: Int): FileOutputStream?
Link copied to clipboard
Link copied to clipboard
open fun peekWallpaper(): Drawable?
Link copied to clipboard
Link copied to clipboard
open fun registerDeviceIdChangeListener(executor: Executor, listener: IntConsumer)
Link copied to clipboard
open fun registerReceiver(receiver: BroadcastReceiver?, filter: IntentFilter?): Intent?
open fun registerReceiver(receiver: BroadcastReceiver?, filter: IntentFilter?, flags: Int): Intent?
open fun registerReceiver(receiver: BroadcastReceiver?, filter: IntentFilter?, broadcastPermission: String?, scheduler: Handler?): Intent?
open fun registerReceiver(receiver: BroadcastReceiver?, filter: IntentFilter?, broadcastPermission: String?, scheduler: Handler?, flags: Int): Intent?
Link copied to clipboard
open fun removeStickyBroadcast(intent: Intent?)
Link copied to clipboard
open fun removeStickyBroadcastAsUser(intent: Intent?, user: UserHandle?)
Link copied to clipboard
open fun requestHideSelf(flags: Int)
Link copied to clipboard
fun requestShowSelf(flags: Int)
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun revokeUriPermission(uri: Uri?, modeFlags: Int)
open fun revokeUriPermission(targetPackage: String?, uri: Uri?, modeFlags: Int)
Link copied to clipboard
open fun sendBroadcast(intent: Intent?)
open fun sendBroadcast(intent: Intent?, receiverPermission: String?)
open fun sendBroadcast(intent: Intent, receiverPermission: String?, options: Bundle?)
Link copied to clipboard
open fun sendBroadcastAsUser(intent: Intent?, user: UserHandle?)
open fun sendBroadcastAsUser(intent: Intent?, user: UserHandle?, receiverPermission: String?)
Link copied to clipboard
open fun sendBroadcastWithMultiplePermissions(intent: Intent, receiverPermissions: Array<out String?>)
Link copied to clipboard
open fun sendDefaultEditorAction(fromEnterKey: Boolean): Boolean
Link copied to clipboard
open fun sendDownUpKeyEvents(keyEventCode: Int)
Link copied to clipboard
open fun sendKeyChar(charCode: Char)
Link copied to clipboard
open fun sendOrderedBroadcast(intent: Intent?, receiverPermission: String?)
open fun sendOrderedBroadcast(intent: Intent, receiverPermission: String?, options: Bundle?)
open fun sendOrderedBroadcast(intent: Intent, receiverPermission: String?, resultReceiver: BroadcastReceiver?, scheduler: Handler?, initialCode: Int, initialData: String?, initialExtras: Bundle?)
open fun sendOrderedBroadcast(intent: Intent, receiverPermission: String?, options: Bundle?, resultReceiver: BroadcastReceiver?, scheduler: Handler?, initialCode: Int, initialData: String?, initialExtras: Bundle?)
open fun sendOrderedBroadcast(intent: Intent, receiverPermission: String?, receiverAppOp: String?, resultReceiver: BroadcastReceiver?, scheduler: Handler?, initialCode: Int, initialData: String?, initialExtras: Bundle?)
open fun sendOrderedBroadcast(intent: Intent, initialCode: Int, receiverPermission: String?, receiverAppOp: String?, resultReceiver: BroadcastReceiver?, scheduler: Handler?, initialData: String?, initialExtras: Bundle?, options: Bundle?)
Link copied to clipboard
open fun sendOrderedBroadcastAsUser(intent: Intent?, user: UserHandle?, receiverPermission: String?, resultReceiver: BroadcastReceiver?, scheduler: Handler?, initialCode: Int, initialData: String?, initialExtras: Bundle?)
Link copied to clipboard
open fun sendStickyBroadcast(intent: Intent?)
open fun sendStickyBroadcast(intent: Intent, options: Bundle?)
Link copied to clipboard
open fun sendStickyBroadcastAsUser(intent: Intent?, user: UserHandle?)
Link copied to clipboard
open fun sendStickyOrderedBroadcast(intent: Intent?, resultReceiver: BroadcastReceiver?, scheduler: Handler?, initialCode: Int, initialData: String?, initialExtras: Bundle?)
Link copied to clipboard
open fun sendStickyOrderedBroadcastAsUser(intent: Intent?, user: UserHandle?, resultReceiver: BroadcastReceiver?, scheduler: Handler?, initialCode: Int, initialData: String?, initialExtras: Bundle?)
Link copied to clipboard
open fun setCandidatesView(view: View?)
Link copied to clipboard
Link copied to clipboard
open fun setExtractView(view: View?)
Link copied to clipboard
open fun setInputView(view: View?)
Link copied to clipboard
open fun setTheme(theme: Int)
Link copied to clipboard
open fun setWallpaper(bitmap: Bitmap?)
open fun setWallpaper(data: InputStream?)
Link copied to clipboard
open fun showStatusIcon(iconResId: Int)
Link copied to clipboard
open fun showWindow(showInput: Boolean)
Link copied to clipboard
open fun startActivities(intents: Array<out Intent?>?)
open fun startActivities(intents: Array<out Intent?>?, options: Bundle?)
Link copied to clipboard
open fun startActivity(intent: Intent?)
open fun startActivity(intent: Intent?, options: Bundle?)
Link copied to clipboard
fun startForeground(id: Int, notification: Notification?)
fun startForeground(id: Int, notification: Notification, foregroundServiceType: Int)
Link copied to clipboard
Link copied to clipboard
open fun startInstrumentation(className: ComponentName, profileFile: String?, arguments: Bundle?): Boolean
Link copied to clipboard
open fun startIntentSender(intent: IntentSender?, fillInIntent: Intent?, flagsMask: Int, flagsValues: Int, extraFlags: Int)
open fun startIntentSender(intent: IntentSender?, fillInIntent: Intent?, flagsMask: Int, flagsValues: Int, extraFlags: Int, options: Bundle?)
Link copied to clipboard
open fun startService(service: Intent?): ComponentName?
Link copied to clipboard
fun stopForeground(removeNotification: Boolean)
fun stopForeground(notificationBehavior: Int)
Link copied to clipboard
fun stopSelf()
fun stopSelf(startId: Int)
Link copied to clipboard
fun stopSelfResult(startId: Int): Boolean
Link copied to clipboard
open fun stopService(name: Intent?): Boolean
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun updateServiceGroup(conn: ServiceConnection, group: Int, importance: Int)