2015-03-02 1 views
0

Je veux connaître le clavier par défaut choisi par l'utilisateur dans Android. Je sais que je peux accéder à la liste des méthodes de saisie activées en utilisant le InputMethodManager, mais je veux savoir lequel est actuellement utilisé par l'utilisateur.Connaître le clavier par défaut sur Android

Jusqu'à présent, j'ai essayé d'obtenir la méthode d'entrée de courant sous-type:

InputMethodManager imeManager = (InputMethodManager) getApplicationContext().getSystemService(INPUT_METHOD_SERVICE); 
InputMethodSubtype subtype =imeManager.getCurrentInputMethodSubtype(); 

Mais cet objet ne semble me donner une version localisée que l'utilisateur a choisi et le type d'entrée (voix, clavier ,. .).

J'ai aussi essayé la liste des méthodes d'entrée activées:

InputMethodManager imeManager = (InputMethodManager) getApplicationContext().getSystemService(INPUT_METHOD_SERVICE); 
List<InputMethodInfo> list =imeManager.getEnabledInputMethodList(); 
    for(InputMethodInfo i: list){ 
     ... 
    } 

Cependant la classe InputMethodInfo ne contient pas d'informations si cette méthode est la méthode d'entrée par défaut ou non.

Je sais qu'il doit y avoir un moyen, car chaque fois que j'ouvre SwiftKey Keyboard et n'est pas défini comme clavier par défaut, un sélecteur de méthode d'entrée apparaît. Alors, comment savent-ils que leur clavier n'est pas défini par défaut? Je suis conscient que cette question pourrait être un doublon, puisque c'est la même chose que this un. Cependant, cette question n'a pas eu de réponse, alors j'espère vraiment que quelqu'un puisse m'aider maintenant.

Merci.

Répondre

3

Utilisez ceci pour obtenir le clavier par défaut.

Settings.Secure.getString(getContentResolver(), Settings.Secure.DEFAULT_INPUT_METHOD); 

Pour obtenir plus d'informations sur le clavier actuel:

for(InputMethodInfo i: list){ 
    if (i.getId().equals(Settings.Secure.getString(getContentResolver(), Settings.Secure.DEFAULT_INPUT_METHOD))) { 
    ... 
    } 
}