Скрыть программную клавиатуру для приложения для шкафчика

Я пытаюсь закрыть softkeyboard, который открывается в другом приложении. Я пробовал каждое решение отсюда: Программно скрыть/показать Android Soft Keyboard или здесь: Закрыть/скрыть мягкую клавиатуру Android

Как вы можете видеть на рисунках, мне нужно закрыть клавиатуру, открытую из другого приложения, добавив в манифест, чтобы сделать невидимую клавиатуру не сделать трюк.

Чтобы отметить, что это приложение-шкафчик, я запускаю действие, когда телефон переходит в спящий режим.

Мне что-то не хватает? Тестирование других приложений для шкафчиков из магазина и не возникало этой проблемы.

Но вот результат:

App with opened keyboardMy app

Изменить: Подробнее

Вот как я запускаю шкафчик:

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;
} 

Это код манифеста:

<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" />

Ответы

Ответ 1

Я, наконец, решил проблему. Вот как выглядит мой код манифеста для активности:

<activity
        android:name=".ui.activities.LockScreenActivity"
        android:excludeFromRecents="true"
        android:noHistory="true"
        android:screenOrientation="portrait"
        android:windowSoftInputMode="stateHidden"
        android:configChanges="keyboardHidden"
        android:launchMode="singleInstance"
        android:multiprocess="false"
        android:stateNotNeeded="true"
        android:taskAffinity=""
        android:theme="@style/Theme.AppCompat.Light.NoActionBar" />

Ответ 2

Попробуйте заменить android:windowSoftInputMode="stateAlwaysHidden|adjustNothing" с android:windowSoftInputMode="stateHidden" строка в AndroidManifest.xml как это

<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" />

Для справки вы можете ссылаться http://developer.android.com/guide/topics/manifest/activity-element.html#wsoft

"stateHidden" Мягкая клавиатура скрыта, когда пользователь выбирает активности, то есть когда пользователь уверенно переходит к деятельность, а не обратно в нее из-за оставления другого деятельность.

"stateAlwaysHidden" Мягкая клавиатура всегда скрыта, когда Основное окно активности имеет фокус ввода.

Ответ 3

Это может быть достигнуто переопределение onPause() этого действия и использование следующей части кода как

@Override
public void onPause() {
    super.onPause();
    if (null != getWindow()){
        getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
    }
}

Ответ 4

Попробуйте в своей деятельности:

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);
    }
}

Ответ 5

Попробуйте этот путь

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

Проверьте эту ссылку