2016-06-30 14 views
0

Auf Android, können wir die Tastatureingabesprache (Englisch (US), Hindi, Französisch, etc.) ändern von Java/C++ oder das Terminal (wie die ime in /system/binAndroid - Änderung Tastatur programmatisch

+1

Ich glaube nicht, es ist möglich. Da ist die Tastatur selbst eine Anwendung. Siehe: http://StackOverflow.com/Questions/12303593/change-keyboard-input-language –

Antwort

1

Für alle, die nicht hier gesagt, es ist, es ist sehr viel möglich, aber Gerät werden muss verwurzelt oder Ihre App muss System angemeldet sein.

protected static void changekeyboard(String keyboardID, ContentResolver contentResolver) 
    { 
     String oldDefaultKeyboard = Secure.getString(contentResolver, "default_input_method"); 
     Secure.putString(contentResolver, "enabled_input_methods", keyboardID); 
     Secure.putString(contentResolver, "default_input_method", keyboardID); 
    } 

In Tastatur-ID müssen Sie die Tastatur-ID der Tastatur übergeben, die Sie festlegen möchten.

oder Sie können die Liste aller Tastaturen erhalten und die ID von dort erhalten und weitergeben

So:

List<InputMethodInfo> InputMethods = ((InputMethodManager) getApplicationContext().getSystemService("input_method")).getInputMethodList(); 
      this.keyboard_name = new ArrayList(); 
      int numOfKeEyboards = InputMethods.size(); 
      for (int i = 0; i < numOfKeEyboards; i++) 
      { 
       fullKeyboardName = ((InputMethodInfo) InputMethods.get(i)).toString(); 
       keyboard_package = fullKeyboardName.substring(fullKeyboardName.indexOf("{") + 1, fullKeyboardName.indexOf("/")); 
       try 
       { 
        // by package name getting app name 
        inputKeyboardName = getPackageManager().getApplicationInfo(keyboard_package, 0).loadLabel(getPackageManager()).toString(); 
       } 
       catch (NameNotFoundException e) 
       { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
       this.keyboard_name.add(inputKeyboardName); 
      } 
+0

Ich werde das testen, aber das sieht gut aus. Zum Glück habe ich mein Handy vor ein paar Jahren verwurzelt –

0

Ja es ist bitte unten Antwort nicht möglich überprüfen

Change Keyboard input language

+0

Nizza ** Kopieren einfügen **, Sie haben die Links jedoch vergessen: [ursprüngliche Antwort] (http://StackOverflow.com/A/12303734/4782930) – Strider

+0

@Strider Meine Absicht war ihm zu helfen Ich kopiere eingefügt, weil möglicherweise nicht durch diese Antwort gehen –

+0

Als Sie sollten den ** ursprünglichen Autor ** Kredit geben und Ihre Links reparieren ... oder geben ein Link zur ursprünglichen Antwort. Aber diese Antwort wird dem OP nicht helfen. ** Und ** das ist fast die gleiche Antwort wie @KISHORE_ZE in den Kommentaren sagte. – Strider