Note : les commandes de cette solution nécessitent adb La solution est testée sur Android 4.2.1, 5.0.2 et 5.1.1.
Chaque fois qu'une application équipée d'un service IME est installée dans le système, pour connecter son EMI au système le propriétaire de l'appareil doit autoriser explicitement l'application à faire partie des méthodes de saisie activées.
Alors comment cela se passe-t-il ? Nous savons que nous pouvons utiliser la ligne de commande, mais ce n'est pas ce que font les utilisateurs ordinaires.
Ça se passe comme ça. Lorsque vous lancez cette application, il vous est ou serait demandé d'activer son clavier. Vous êtes alors redirigé vers une sous-activité de l'application Paramètres. Dans les ROMs proches de stock Android, un utilisateur peut accéder à cette sous-activité à partir de Paramètres → Langue et saisie → Clavier actuel → Choisir les claviers . Voici comment cela se présente sur certains appareils :
(Cliquez sur l'image pour l'agrandir ; image gracieuseté de OP)
Vous pouvez utiliser la ligne de commande comme alternative pour afficher cette sous-activité
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
Pour une application, dès que vous tournez le curseur vers la droite dans cette sous-activité, l'identifiant de son IME est ajouté à la valeur de l'élément suivant méthodes d'entrée activées - un paramètre sécurisé. L'application est alors répertoriée sous Paramètres → Langue et saisie parmi celles déjà activées comme méthodes d'entrée.
Puisqu'un seul IME peut rester comme IME par défaut dans le système, l'application vous montre alors une boîte de dialogue pour sélectionner une application de clavier par défaut. Cette boîte de dialogue est accessible à partir de Paramètres → Langue et saisie → Clavier actuel . L'entrée que vous choisissez devient le clavier par défaut de l'appareil.
Maintenant que vous connaissez les détails, vous pouvez facilement ajouter un clavier dans les méthodes de saisie activées, y compris dans votre application clavier d'exemple.
Activation du clavier par la ligne de commande
Il y a aussi un autre moyen. Toutes les méthodes d'entrée activées peuvent être listées par cette commande :
adb shell ime list -s
Exemple de sortie
com.android.inputmethod.latin/.LatinIME
net.zhdev.ctrlvkeyboard/.CtrlVKeyboard
Tous les services IME disponibles (activés ou non) peuvent être listés par le biais de
adb shell ime list -a
Exemple de sortie
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
Les chaînes en surbrillance à côté de mId=
sont les ID des applications clavier disponibles dans mon système.
Dans tout ID, la chaîne avant /
est le nom du paquet de l'application clavier. Exemple : pour le clavier Swiftkey, le mId est :
com.touchtype.swiftkey/com.touchtype.KeyboardService
La chaîne com.touchtype.swiftkey
est le nom du paquet de l'application Swiftkey. Le nom du paquet est ce qui vous aidera à trouver le mID approprié que vous devez utiliser pour activer une application clavier particulière.
Pour connaître le nom du paquet d'une application, suivez les instructions suivantes Afficher le nom complet du paquet de l'application ?
Pour ajouter ou supprimer un EMI dans les méthodes d'entrée activées, procédez comme suit
# 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
Pour faire d'un EMI l'EMI par défaut du système, procédez comme suit
# 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