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"
conandroid:windowSoftInputMode="stateHidden"
enAndroidManifest.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);
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);
}
}