La nueva versión 4.4 del SDK de android (Kit Kat) trae consigo los famosos emoticonos (o emojis), añadidos al teclado software, que tanto gustan en whatsapp o facebook.

emoji

 

Nos hemos encontrado con algún usuario de nuestra aplicación que los ha utilizado para dar más colorido a los nombres de proveedores, productos, clientes...

Pero luego nos han dado problemas a la hora de hacer alguna consulta SQL con un LIKE comparando strings.

¿Cómo lo he solucionado? Si limito los EditText a únicamente letras del abecedario o números, estoy haciendo que la aplicación no pueda ser 100% funcional en países donde se usan otro tipo de caracteres como Rusia, Japón, China...
He decidido usar la clase InputFilter, como sigue:


InputFilter filter = new InputFilter() {
public CharSequence filter(CharSequence source, 
                           int start, 
                           int end, 
                           Spanned dest, 
                           int dstart, 
                           int dend) {
        for (int i = start; i < end; i++) {
            if (!Character.isLetterOrDigit(source.charAt(i)) 
                && !Character.isWhitespace(source.charAt(i))) {
                return "";
            }
        }
        return null;
    }
};

editText.setFilters(new InputFilter[]{filter});

Espero que te sirva. O si tienes una solución mejor, es bienvenida.