1. Создал простую разметку с кнопкой и текстовым полем ввода

<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:padding="40dp">
    <Button
        android:layout_height="wrap_content"
        android:id="@+id/btn"
        android:text="Show"
        android:layout_width="fill_parent"></Button>
    <EditText
        android:layout_height="wrap_content"
        android:id="@+id/edittext"
        android:layout_width="fill_parent"></EditText>
</LinearLayout>

2. Собственно сам код:

public class InputMethodManagerTest extends Activity {
    EditText edit;
    Button btn;
    InputMethodManager imm;
   
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.input_method_manager_test);
        imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);

        edit = (EditText) findViewById(R.id.edittext);
        btn = (Button) findViewById(R.id.btn);
        btn.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                imm.showSoftInput(edit, InputMethodManager.SHOW_FORCED);
            }
        });
    }
}

Это конечно все хорошо, но этот код не будет работать если вам нужно показать клавиатуру при запуске активити.

Небольшое отступление. Поведение стандартной клавиатуры отличается на разных устройствах. Это зависит от наличия в устройстве физической клавиатуры.
– eсли нет физической клавиатуры, то программная по умолчанию будет автоматически отображаться, если фокус при запуске попадет на EditText.
– если физическая клавиатура есть, то программная будет спрятана при запуске.

Если нам нужно всегда отображать программную клавиатуру при запуске, поможет вот такой код:

private Handler mHandler = new Handler();
private EditText myEditText;

/**
 * прячем программную клавиатуру
 */

protected void hideInputMethod() {
    InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
    if (imm != null) {
        imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);
    }
}

/**
 * показываем программную клавиатуру
 */

protected void showInputMethod() {
    InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
    if (imm != null) {
        imm.showSoftInput(myEditText, 0);
    }
}

private Runnable mShowInputMethodTask = new Runnable() {
    public void run() {
        showInputMethodForQuery();
    }
};

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    if (hasFocus) {
        // если окно в фокусе, то ждем еще немного и показываем клавиатуру
        mHandler.postDelayed(mShowInputMethodTask, 0);
    }
}