Question

I'm developing an application on a hardware device that has a built-in hardware keyboard that does not slide out so is always visible (like a blackberry). Therefore, I NEVER want the soft keyboard to display for my entire application. I'm aware of another SO question that gives the following lines of code:

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);

But I don't know where to put this code to hide the soft keyboard in all places where it might possibly appear in my Activity. I have tried adding the code to Activity.onUserInteraction to no avail. It seems the keyboard appears after the onUserInteraction executes.

I also tried adding the following to my <Activity>:

<activity 
    android:windowSoftInputMode="stateAlwaysHidden"
>

Soft keyboard still appears.

Was it helpful?

Solution

Your application should not do anything. The device's firmware should contain a configuration that inhibits the soft keyboard based on the hardware keyboard being visible, just like every other Android device that has a hardware keyboard. If that is not happening, talk to the hardware maker and see if they are planning on addressing this.

OTHER TIPS

An easy workaround for tomorrow presentation:

I would create a new IME with an empty view. Here are two openSource projects for you to look at some code.

If you want to know more about input methods, go to Creating an input method.

If an EditText has an inputType of 0, the soft keyboard will never pop up when that EditText is selected.

EditText editText = findViewById(R.id.edit_text);
editText.setInputType(0);

This will of course need to be done for all the EditTexts in your application, or you could always subclass EditText and set the input type to 0 in your constructor.

Setting the xml inputType parameter will not do, since that corresponds to a call to the setRawInputType method, which does not remove the KeyListener.

I solved it by overriding onCheckIsTextEditor method in my a-bit-custom EditText.

@Override
public boolean onCheckIsTextEditor() {
    return false;
}

Where ever you have Edit text, put this code..

edittext.setInputType(InputType.TYPE_NULL);      
if (android.os.Build.VERSION.SDK_INT >= 11)   
{  
    edittext.setRawInputType(InputType.TYPE_CLASS_TEXT);  
    edittext.setTextIsSelectable(true);  
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top