1 votos

La nueva aplicación de teclado no aparece en la página de configuración de idioma y entrada

He descargado e importado Ejemplo de teclado de Android SDK (una aplicación) a Android studio y la instalé en mi Sony xPeria Z3 con Android 5.1.1. Dicho esto, no veo el nombre de la aplicación en Lenguaje y entrada página de configuración.

He comprobado la lista de aplicaciones instaladas en mi teléfono y veo que SoftKeyboard está instalado y en Android Studio, no hay ningún error.

¿Puede mostrarme una forma de solucionar este problema?

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 o adb shell "am start 'intent:#Intent;action=android.settings.INPUT_METHOD_SETTING‌​S;end'" . Creo que esto no puede ser difícil, para que ese comando se convierta en un código.

1voto

Firelord Puntos 161

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)

IMG:

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

Lo siento, no codifico así que no puedo proporcionar un ejemplo (forma programática) para lanzar esa actividad. Esto es todo lo que puede ayudar a un usuario final.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X