Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Hide softkeyboard for locker app

I'm trying to close the softkeyboard that is opened in another app. I tried every solution from here: Programmatically Hide/Show Android Soft Keyboard or here: Close/hide the Android Soft Keyboard

As you can see in the pictures i have to close the keyboard opened from another app, adding to manifest to don't make the keyboard visible didn't make the trick.

To note that this is a locker app, i start an activity when the phone goes to sleep mode.

Am i missing something ? Testing other locker apps from store and didn't encountered this problem

But here is the result:

App with opened keyboardMy app

Edit: More info

This is how i start the locker:

if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
    //Toast.makeText(context, "" + "screeen off", Toast.LENGTH_SHORT).show();

    wasScreenOn = false;
    Intent intent = new Intent(context, LockScreenActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
    intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);

    context.startActivity(intent);

    // do whatever you need to do here
    //wasScreenOn = false;
} 

This is the manifest code:

<activity
    android:name=".ui.activities.LockScreenActivity"
    android:excludeFromRecents="true"
    android:noHistory="true"
    android:screenOrientation="portrait"
    android:windowSoftInputMode="stateAlwaysHidden|adjustNothing"
    android:theme="@style/Theme.AppCompat.Light.NoActionBar" />
like image 385
Tazz Avatar asked Apr 22 '15 10:04

Tazz


People also ask

How do I hide my soft keyboard?

You can force Android to hide the virtual keyboard using the InputMethodManager, calling hideSoftInputFromWindow , passing in the token of the window containing your focused view. This will force the keyboard to be hidden in all situations. In some cases, you will want to pass in InputMethodManager.

How do I hide the keyboard on my Android phone?

Tap the back button on your Android. It's the left-pointing arrow button at the bottom of the screen, either at the bottom-left or bottom-right corner. The keyboard is now hidden. The back button may be a physical button or on the touch screen.

How do I close hide the soft keyboard programmatically in Android?

Hiding the Soft Keyboard Programmatically You can force Android to hide the virtual keyboard using the InputMethodManager, calling hideSoftInputFromWindow, passing in the token of the window containing your edit field. This will force the keyboard to be hidden in all situations.


4 Answers

Try replacing android:windowSoftInputMode="stateAlwaysHidden|adjustNothing" with android:windowSoftInputMode="stateHidden" line in AndroidManifest.xml like this

<activity
        android:name=".ui.activities.LockScreenActivity"
        android:excludeFromRecents="true"
        android:noHistory="true"
        android:screenOrientation="portrait"
        android:windowSoftInputMode="stateHidden"
        android:theme="@style/Theme.AppCompat.Light.NoActionBar" />

For reference, you can refer http://developer.android.com/guide/topics/manifest/activity-element.html#wsoft

"stateHidden" The soft keyboard is hidden when the user chooses the activity — that is, when the user affirmatively navigates forward to the activity, rather than backs into it because of leaving another activity.

"stateAlwaysHidden" The soft keyboard is always hidden when the activity's main window has input focus.

like image 136
Harsh Dattani Avatar answered Sep 29 '22 06:09

Harsh Dattani


It can be achieved overriding onPause() of this activity and use following piece of code as

@Override
public void onPause() {
    super.onPause();
    if (null != getWindow()){
        getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
    }
}
like image 21
Narendra Avatar answered Sep 25 '22 06:09

Narendra


Try this in your Activity:

private void hideKeyboard() {   
    // Check if no view has focus:
    View view = this.getCurrentFocus();
    if (view != null) {
        InputMethodManager inputManager = (InputMethodManager) this.getSystemService(Context.INPUT_METHOD_SERVICE);
        inputManager.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
    }
}
like image 43
Hitesh Singh Avatar answered Sep 28 '22 06:09

Hitesh Singh


Try this way

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

Check this link

like image 42
Jithu P.S Avatar answered Sep 28 '22 06:09

Jithu P.S