Nota La solución de los comandos requiere adb configuración en el PC y la solución se prueba en Android 4.2.1, 5.0.2 y 5.1.1.
Cada vez que se instala en el sistema una aplicación dotada de un servicio IME, para conectar su IME al sistema El propietario del dispositivo debe permitir explícitamente que la aplicación forme parte de los métodos de entrada habilitados.
Entonces, ¿cómo se produce? Sabemos que podemos utilizar la línea de comandos, pero eso no es lo que hacen los usuarios normales.
Sucede así. Cuando inicias esa aplicación, se te pide que habilites su teclado. A continuación, se le redirige a una subactividad de la app de Ajustes. En las ROMs cercanas a Android de stock, un usuario puede acceder a esa sub-actividad desde Ajustes → Idioma y entrada → Teclado actual → Elegir teclados . Así es como se ve en algunos dispositivos:
(Haga clic en la imagen para ampliarla; imagen cortesía de OP)
Puede utilizar la línea de comandos como alternativa para mostrar esa subactividad
adb shell am start -a android.settings.INPUT_METHOD_SETTINGS
adb shell "am start 'intent:#Intent;action=android.settings.INPUT_METHOD_SETTINGS;end'" # alternative to above command
Para una aplicación, en el momento en que se gira el deslizador hacia la derecha en esa subactividad, el id de su IME se añade al valor de enabled_input_methods - un entorno seguro. La aplicación aparece entonces en la lista de Ajustes → Idioma y entrada entre los ya habilitados como métodos de entrada.
Dado que sólo un IME puede permanecer como IME por defecto en el sistema, la aplicación te muestra un diálogo para seleccionar una aplicación de teclado como predeterminada. Se puede acceder a ese diálogo desde Ajustes → Idioma y entrada → Teclado actual . La entrada que elijas ahí se convierte en el teclado por defecto del dispositivo.
Ahora que conoces los detalles, puedes añadir fácilmente un teclado en los métodos de entrada habilitados, incluyendo tu aplicación de teclado de ejemplo.
Activación del teclado mediante la línea de comandos
También hay otra forma. Todos los métodos de entrada habilitados pueden ser listados por este comando:
adb shell ime list -s
Ejemplo de salida
com.android.inputmethod.latin/.LatinIME
net.zhdev.ctrlvkeyboard/.CtrlVKeyboard
Todos los servicios IME disponibles (habilitados o no) pueden ser listados a través de
adb shell ime list -a
Ejemplo de salida
com.android.inputmethod.latin/.LatinIME:
mId=**com.android.inputmethod.latin/.LatinIME** mSettingsActivityName=com.android.inputmethod.latin.settings.SettingsActivity
mIsDefaultResId=0x7f070000
Service:
priority=0 preferredOrder=0 match=0x108000 specificIndex=-1 isDefault=false
ServiceInfo:
name=com.android.inputmethod.latin.LatinIME
packageName=com.android.inputmethod.latin
labelRes=0x7f08003a nonLocalizedLabel=null icon=0x0 banner=0x0
enabled=true exported=true processName=com.android.inputmethod.latin
permission=android.permission.BIND\_INPUT\_METHOD
flags=0x0
net.zhdev.ctrlvkeyboard/.CtrlVKeyboard:
mId=**net.zhdev.ctrlvkeyboard/.CtrlVKeyboard** mSettingsActivityName=null
mIsDefaultResId=0x0
Service:
priority=0 preferredOrder=0 match=0x108000 specificIndex=-1 isDefault=false
ServiceInfo:
name=net.zhdev.ctrlvkeyboard.CtrlVKeyboard
packageName=net.zhdev.ctrlvkeyboard
labelRes=0x7f0b0015 nonLocalizedLabel=null icon=0x0 banner=0x0
enabled=true exported=true processName=net.zhdev.ctrlvkeyboard
permission=android.permission.BIND\_INPUT\_METHOD
flags=0x0
com.touchtype.swiftkey/com.touchtype.KeyboardService:
mId=**com.touchtype.swiftkey/com.touchtype.KeyboardService** mSettingsActivityName=com.touchtype.settings.TouchTypeKeyboardSettings
mIsDefaultResId=0x0
Service:
priority=0 preferredOrder=0 match=0x108000 specificIndex=-1 isDefault=false
ServiceInfo:
name=com.touchtype.KeyboardService
packageName=com.touchtype.swiftkey
enabled=true exported=true processName=com.touchtype.swiftkey
permission=android.permission.BIND\_INPUT\_METHOD
flags=0x0
Las cadenas resaltadas junto a mId=
son los ID de las aplicaciones de teclado disponibles en mi sistema.
En cualquier ID, la cadena antes de /
es el nombre del paquete de la aplicación de teclado. Ejemplo: para el teclado Swiftkey, el mId es:
com.touchtype.swiftkey/com.touchtype.KeyboardService
La cadena com.touchtype.swiftkey
es el nombre del paquete de la aplicación Swiftkey. El nombre del paquete es lo que le ayudará a encontrar el mID apropiado que debe utilizar para activar una aplicación de teclado en particular.
Para conocer el nombre del paquete de una aplicación, siga ¿Ver el nombre completo del paquete de la aplicación?
Para añadir o eliminar un IME en los métodos de entrada habilitados, haga lo siguiente
# replace ID with mId of the keyboard app which you want to add or remove
adb shell ime enable ID
adb shell ime disable ID
Para hacer que un IME sea el IME por defecto del sistema, haga
# Note that it doesn't matter whether the IME is added into enabled input methods or not. Consider this a direct override.
adb shell settings put secure default_input_method "ID"
adb shell content update --uri content://settings/secure --bind value:s:"ID" --where "name='default_input_method'" # alternative to above command
0 votos
Eray, mira esto: developer.Android.com/reference/Android/provider/ Puedo llamar a ese método de entrada particular habilitando la actividad usando
adb shell am start -a android.settings.INPUT_METHOD_SETTINGS
oadb shell "am start 'intent:#Intent;action=android.settings.INPUT_METHOD_SETTINGS;end'"
. Creo que esto no puede ser difícil, para que ese comando se convierta en un código.