¿Cómo comprobar si el teclado nativo / hardware se utiliza?

Quiero comprobar si el teclado nativo / hardware se utiliza, y también si es posible quiero deshabilitar los teclados de terceros.

Mi objetivo es simple Yo uso sólo el teclado nativo android suave para la introducción de valores en mis cuadros de edición y ningún otro teclado debe ser capaz de esto

Gracias

EDITAR

Sé que no es buena idea hacer lo que estoy tratando de hacer, sé que la idea básica de Android es tener intenciones y actividades y servicios que saben manejar algunos tipos de intención de acuerdo a la intención de filtro. Pero esto en cada regla hay una excepción, especialmente cuando hablamos de seguridad.

Quiero desactivar todos los teclados de terceros, y si esto no es posible hacerlo con alguna API o algo … ¿hay alguna solución a este problema?

EDITAR

String s=Settings.Secure.getString(getContentResolver(), Settings.Secure.DEFAULT_INPUT_METHOD); 

Esto devuelve el método de entrada actualmente habilitado (teclado), pero necesito algo como el 'teclado del sistema' y no veo ninguna bandera como esa :-(.

 List<InputMethodInfo> list = m.getInputMethodList(); 

Una solución posible es tomar la lista [0] como el teclado que estoy buscando, pero no quiero retransmitir en el orden (excepto si se garantiza el orden que siempre el teclado con índice 0 es el que viene instalar con el teléfono)

este es el valor de list

 [InputMethodInfo{com.htc.android.htcime/.HTCIMEService, settings: com.htc.android.htcime.HTCIMESettings}, InputMethodInfo{com.volosyukivan/.WiFiInputMethod, settings: null}] 

Quiero comprobar si el teclado nativo / hardware se utiliza

Puede utilizar el objeto Configuration para ver si el teclado de hardware del dispositivo está oculto. Por lo general, eso implicaría que están utilizando ese teclado, ya que la mayoría de los dispositivos no muestran un IME cuando el teclado de hardware está disponible. Sin embargo, algunos dispositivos pueden soportar ambos simultáneamente, y no sé cómo interactúan los teclados externos (USB, Bluetooth) con este valor.

también si es posible, quiero desactivar los teclados de terceros.

Afortunadamente, esto no es posible.

hay alguna solución a este problema?

No hay ningún problema citado en este punto de la pregunta.

sí el no será feliz, pero serán mucho más infelices si dejas que sus datos seguros sean corruptos

Si los usuarios optan por utilizar un teclado alternativo, esa es su elección como usuarios. El usuario es perfectamente capaz de cambiar de teclado si lo desea. El usuario es perfectamente capaz de tomar estas decisiones. Es totalmente posible que un teclado alternativo sea más seguro que uno incorporado, debido a los dispositivos cargados con spyware del factor, como CarrierIQ . Por lo tanto, su supuesto de que está mejorando la seguridad al atacar la elección del teclado del usuario es fundamentalmente defectuoso.

Por supuesto, no tiene que soportar el uso de ningún teclado en absoluto, lo que obliga a los usuarios a utilizar algún tipo de opción de entrada en pantalla que diseñar usted mismo. Esto no es completamente seguro tampoco (por ejemplo, ataques de tapjacking), y puede causar problemas de usabilidad para las personas que eligieron ciertos teclados de terceros por razones específicas (por ejemplo, usuarios ciegos, usuarios con problemas de control de motores).

No soy consciente de que hay una manera de determinar definitivamente cuál es el propio IME del firmware, especialmente porque esto varía según el dispositivo y el firmware.

Algo como esto debería permitirle comprobar si el usuario está utilizando un teclado no estándar. Sin embargo, en lugar de evitar que utilicen este teclado, ¿qué tal un mensaje de advertencia útil acerca de los posibles riesgos de seguridad?

 public boolean isUsingCustomInputMethod() { InputMethodManager imm = (InputMethodManager) mCtx.getSystemService( Context.INPUT_METHOD_SERVICE); List<InputMethodInfo> mInputMethodProperties = imm.getEnabledInputMethodList(); final int N = mInputMethodProperties.size(); for (int i = 0; i < N; i++) { InputMethodInfo imi = mInputMethodProperties.get(i); if (imi.getId().equals( Settings.Secure.getString(mCtx.getContentResolver(), Settings.Secure.DEFAULT_INPUT_METHOD))) { if ((imi.getServiceInfo().applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) { return true; } } } return false; } 

Encuentro una solución precisa

 InputMethodManager m = (InputMethodManager) ctx.getSystemService("input_method"); List<InputMethodInfo> a = m.getInputMethodList(); for (InputMethodInfo inputMethodInfo : a) { if (inputMethodInfo.getIsDefaultResourceId() == 0) { //it is not default return false; } } //it is default return true; 
  • Teclado duro No se puede enfocar editText
  • Disposición POPUP del teclado suave
  • Ocultar teclado virtual en la carga de la aplicación
  • Apertura suave del teclado de Android
  • Soft teclado sin EditText y la detección de pulsaciones de teclas
  • Teclado virtual de Android 3.1 en modo de pantalla completa
  • ¿Cómo implementar emoji en mi aplicación de Android?
  • ¿Cómo puedo colocar un diseño justo encima del teclado en pantalla de Android?
  • Android Implementa dos fragmentos que tienen un comportamiento diferente cuando aparece el teclado
  • Ocultar teclado en AlertDialog
  • Cómo hacer un teclado personalizado de Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.