Android: el teclado no aparece en la ventana flotante

Estoy escribiendo una aplicación que utiliza el código siguiente para dibujar un edittext en la pantalla sobre las aplicaciones en ejecución:

WindowManager.LayoutParams params = new WindowManager.LayoutParams( WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.TYPE_PHONE, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM, PixelFormat.TRANSLUCENT); windowManager = (WindowManager) getSystemService(WINDOW_SERVICE); windowManager.addView(mEditText, params); 

El xml para el edittext es:

 <EditText android:id="@+id/mEditText" android:layout_width="match_parent" android:layout_height="wrap_content" android:maxLines="3" android:inputType="textAutoComplete|text" android:focusable="true" android:focusableInTouchMode="true" /> 

Sin embargo, centrarse en esto no abre el teclado. También he intentado programarlo para arriba con un onFocusListener:

 mEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { if(hasFocus) { Log.d("", "Has focus"); ((InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE)).showSoftInput(v, InputMethodManager.SHOW_IMPLICIT); } else { Log.d("", "Lost focus"); } } }); 

Pero aunque eso se llama, como se ve desde el logcat, no pasa nada. El único método que he encontrado hasta ahora para mostrar el teclado está utilizando:

 getSystemService(Context.INPUT_METHOD_SERVICE)).toggleSoftInput(0, 0); 

Pero eso parece escribir en la pantalla y no en el edittext. También he intentado clear focusable cuando el edittext se muestra, pero en vano.

Supongo que el problema es porque estoy usando una "ventana flotante", pero debe haber una manera de hacer que este trabajo como las aplicaciones, tales como calculadoras flotantes existen en la playstore que tienen entrada. ¿Alguien tiene alguna idea? Estoy perplejo 🙁

Mi mal .. me di cuenta si me quito el WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE funciona bien .. tonto error

Utilizar WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL

 WindowManager.LayoutParams params = new WindowManager.LayoutParams( WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.TYPE_PHONE, WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL, PixelFormat.TRANSLUCENT); 

Para más detalle y ejemplo, siga el enlace: https://github.com/atifmahmood29/overlays-floating-window-like-facebook-messenger

Programaticamente:

 editText.requestFocus(); 

O mediante XML:

 <EditText...> <requestFocus /> </EditText> 
  • Cambiar el diseño del teclado dinámicamente
  • ¿Cómo detectar presencia de teclado de hardware?
  • ¿Cómo hablar con un teclado Bluetooth?
  • Desvío del teclado Android
  • Teclado bluetooth causará actividad destruir y recrear
  • ¿Cómo hago un botón de EditView de Android "Hecho" y ocultar el teclado al hacer clic en él?
  • ¿Cómo desarrollar un teclado personalizado para la aplicación de Android?
  • ¿Es posible programar Android para actuar como teclado físico USB?
  • La aplicación de Android no se actualiza después de ocultar el teclado virtual
  • ¿Cómo conseguir que el teclado muestre una tecla de retorno?
  • Problemas de teclado surgidos en el cambio de orientación
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.