try 
{ 
      //Get list of input methods 
      List InputMethods=((InputMethodManager)myActivity.getSystemService(Context.INPUT_METHOD_SERVICE)).getEnabledInputMethodLis t(); 

      String nameIME = InputMethods.get(0).getServiceName(); 
      Log.i("Demo Error", "SWITCHING TO: "+nameIME); 
      String NewInputMethodName=InputMethods.get(0).getId(); //Pick the first input method to switch to 
      Log.i("Demo Error", "SWITCHING TO: "+NewInputMethodName); 
      String curInputMethodId = Settings.Secure.getString(myActivity 
            .getContentResolver(), Settings.Secure.DEFAULT_INPUT_METHOD); 
      Log.i("Demo Error", "CURRENT IME: "+curInputMethodId); 

      // Solution 1 (X) 
      // switchInputMethod is a method of android.inputmethodservice.InputMethodService 
//      switchInputMethod(NewInputMethodName); //This throws an error 

      // Solution 2 (OK) 
      Settings.Secure.putString(myActivity.getContentResolver(), 
      Settings.Secure.DEFAULT_INPUT_METHOD, NewInputMethodName); 

      // Solution 3 (OK) 
      if (myActivity.checkCallingOrSelfPermis sion( 
            android.Manifest.permission.WRITE_SECURE_SETTINGS) 
                                              != 0) { 
                                    // PERMISSION_GRANTED == 0 
                  Log.i("Demo Error", "myActivity requires permission " 
                        + android.Manifest.permission.WRITE_SECURE_SETTINGS); 
      } 

      ((InputMethodManager)myActivity.getSystemService(Context.INPUT_METHOD_SERVICE)) 
            .setInputMethod(null, NewInputMethodName); 
                        

      // Show SoftInput Keyboard 
      EditText inputText = (EditText)myActivity.findViewById(R.id.inputText); 
      ((InputMethodManager)myActivity.getSystemService(Context.INPUT_METHOD_SERVICE)) 
            .showSoftInput(inputText, 0); 

} catch(Exception e) { 
      Log.i("Demo Error", e.getMessage());