windowsoftinputmode studio soft how android android-softkeyboard

android - studio - Ocultar softkeyboard para aplicación de casillero



how to hide soft keyboard in android studio (5)

Estoy intentando cerrar el softkeyboard que se abre en otra aplicación. Probé todas las soluciones desde aquí: Ocultar / Mostrar mediante programación el teclado de Android o aquí: Cerrar / ocultar el teclado de Android

Como se puede ver en las imágenes, tengo que cerrar el teclado abierto desde otra aplicación, agregar al manifiesto para no hacer que el teclado sea visible no hizo el truco.

Para tener en cuenta que esta es una aplicación de casillero, comienzo una actividad cuando el teléfono entra en modo de suspensión.

Me estoy perdiendo de algo ? Probando otras aplicaciones de casilleros de la tienda y no encontré este problema

Pero aquí está el resultado:

Editar: Más información

Así es como empiezo el casillero:

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

Este es el código manifiesto:

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


Intente reemplazar android:windowSoftInputMode="stateAlwaysHidden|adjustNothing" con android:windowSoftInputMode="stateHidden" en AndroidManifest.xml como este

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

Para referencia, puede consultar http://developer.android.com/guide/topics/manifest/activity-element.html#wsoft

"estado Oculto" El teclado virtual está oculto cuando el usuario elige la actividad, es decir, cuando el usuario navega afirmativamente hacia la actividad, en lugar de retroceder en ella porque deja otra actividad.

"stateAlwaysHidden" El teclado virtual siempre está oculto cuando la ventana principal de la actividad tiene un foco de entrada.


Finalmente resolví el problema. Así es como se ve mi código de manifiesto para la actividad:

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


Intenta esto en tu actividad:

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


Prueba de esta manera

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

Revisa este enlace


Se puede lograr anulando la onPause() de esta actividad y use el siguiente fragmento de código como

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