Descargué e importé el ejemplo de Softkeyboard de Android SDK (una aplicación) a Android Studio y lo instalé en mi Sony xPeria Z3 con Android 5.1.1. Dicho esto, no veo el nombre de la aplicación en la página de configuración de idioma y entrada .
Revisé la lista de aplicaciones instaladas en mi teléfono y veo que SoftKeyboard está instalado y en Android Studio, no hay ningún error.
¿Me puede mostrar una manera de solucionar este problema?
Nota : los comandos de esta solución requieren la configuración de adb en la 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 equipada con un servicio IME, para conectar su IME al sistema , el propietario del dispositivo debe permitir explícitamente que la aplicación se convierta en parte de los métodos de entrada habilitados.
¿Entonces, Como sucede esto? Sabemos que podemos usar la línea de comandos, pero eso no es lo que hacen los usuarios comunes.
Sucede de esta manera. Cuando inicia esa aplicación, se le pedirá que habilite su teclado. A continuación, se le redirigirá a una subactividad de la aplicación Configuración. En las ROM cercanas al stock de Android, un usuario puede acceder a esa subactividad desde Configuración → Idioma y entrada → Teclado actual → Elegir teclados . Así es como se ve en algunos dispositivos:
(Haga clic en la imagen para ampliar; imagen cortesía de OP)
Puede usar 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 gira el control deslizante hacia la derecha en esa subactividad, la identificación de su IME se agrega al valor de enable_input_methods , una configuración segura. Luego, la aplicación se incluye en Configuración → Idioma y entrada , entre los que ya están habilitados como métodos de entrada.
Dado que solo un IME puede permanecer como IME predeterminado en el sistema, la aplicación le muestra un cuadro de diálogo para seleccionar una aplicación de teclado como predeterminada. Se puede acceder a ese cuadro de diálogo desde Configuración → Idioma y entrada → Teclado actual . Cualquier entrada que elija allí se convierte en el teclado predeterminado en el dispositivo.
Ahora que conoce los detalles, puede agregar fácilmente un teclado a los métodos de entrada habilitados, incluida su aplicación de teclado de ejemplo.
También hay otra manera. Todos los métodos de entrada habilitados se pueden enumerar con este comando:
adb shell ime list -s
Salida de ejemplo
com.android.inputmethod.latin/.LatinIME
net.zhdev.ctrlvkeyboard/.CtrlVKeyboard
Todos los servicios IME disponibles (habilitados o no) se pueden enumerar a través de
adb shell ime list -a
Salida de ejemplo
com.android.inputmethod.latin/.LatinIME: mId= com.android.inputmethod.latin/.LatinIME mSettingsActivityName=com.android.inputmethod.latin.settings.SettingsActivity mIsDefaultResId=0x7f070000 Servicio: prioridad = 0 orden preferido = 0 coincidencia = 0x108000 índice específico = -1 es predeterminado = falso Información de servicio: nombre=com.android.método de entrada.latin.LatinIME nombre del paquete = com.android.inputmethod.latin labelRes=0x7f08003a etiqueta no localizada=icono nulo=0x0 banner=0x0 habilitado = verdadero exportado = verdadero nombre del proceso = com.android.inputmethod.latin permiso=android.permiso.BIND_INPUT_METHOD banderas=0x0 net.zhdev.ctrlvkeyboard/.CtrlVKeyboard: mId= net.zhdev.ctrlvkeyboard/.CtrlVKeyboard mSettingsActivityName=null mIsDefaultResId=0x0 Servicio: prioridad = 0 orden preferido = 0 coincidencia = 0x108000 índice específico = -1 es predeterminado = falso Información de servicio: nombre=net.zhdev.ctrlvkeyboard.CtrlVKeyboard nombredelpaquete=net.zhdev.ctrlvteclado labelRes=0x7f0b0015 nonLocalizedLabel=icono nulo=0x0 banner=0x0 habilitado = verdadero exportado = verdadero nombre del proceso = net.zhdev.ctrlvkeyboard permiso=android.permiso.BIND_INPUT_METHOD banderas=0x0 com.touchtype.swiftkey/com.touchtype.KeyboardService: mId= com.touchtype.swiftkey/com.touchtype.KeyboardService mSettingsActivityName=com.touchtype.settings.TouchTypeKeyboardSettings mIsDefaultResId=0x0 Servicio: prioridad = 0 orden preferido = 0 coincidencia = 0x108000 índice específico = -1 es predeterminado = falso Información de servicio: nombre=com.touchtype.KeyboardService nombredelpaquete=com.touchtype.swiftkey habilitado = verdadero exportado = verdadero nombre del proceso = com.touchtype.swiftkey permiso=android.permiso.BIND_INPUT_METHOD banderas=0x0
Las cadenas resaltadas al lado mId=
son los ID de las aplicaciones de teclado disponibles en mi sistema.
En cualquier ID, la cadena anterior /
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 lo ayudará a encontrar el mID apropiado que debe usar para habilitar 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 agregar o eliminar un IME en los métodos de entrada habilitados, haga
# 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 convertir un IME en el IME predeterminado 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
Señor del Fuego
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 puede no ser difícil, para que ese comando se convierta en un código.