¿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
- Cómo ocultar el teclado al ingresar la clave
- Teclado personalizado es ocultar el cuadro Editar en Android
- Superposición del sistema android 4.0
- Establece el tipo de entrada numérica en SearchView en ActionBar
- Cómo excluir caracteres especiales del teclado de android para EditText
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}]
- Cómo agregar "Siguiente" en el teclado android
- Cómo crear su propia clave en el teclado suave
- Teclado Emoji en la aplicación
- Ocultar teclado suave después del diálogo
- Teclas de teclado personalizadas se ve borroso
- Ver redibujado en la posición equivocada después de cerrar el teclado - Cordova / PhoneGap - Android
- Android detecta ocultar teclado en modo horizontal
- ¿Cómo abrir sólo medio teclado en modo horizontal?
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;
- Facebook y Twitter en vivo en las aplicaciones de Android
- ActionBar bloquea la primera fila de listview