¿Cómo configurar emoji por Unicode en una vista de texto?

94

Hola, me gustaría hacer lo siguiente:

??? unicode = U+1F60A
String emoji = getEmojiByUnicode(unicode)
String text = "So happy "
textview.setText(text + emoji);

para obtener esto en mi vista de texto:

Tan feliz 😊

¿Cómo puedo implementar getEmojiByUnicode(unicode)?

¿Qué tipo debería ser la unicodevariable? (Cadena, char, int?)

¡Tenga en cuenta que NO quiero usar Drawables!

Gilbert Giesbert
fuente

Respuestas:

185

Encontré una solución:

En mi Unicode reemplacé ' U + ' por ' 0x '

Ejemplo: reemplace ' U + 1F60A ' por ' 0x1F60A '

De esta manera tengo un 'int' como

int unicode = 0x1F60A;

Que se puede utilizar con

public String getEmojiByUnicode(int unicode){
    return new String(Character.toChars(unicode));
}

Entonces Textview muestra 😊 sin Drawable

Pruébelo con http://apps.timwhitlock.info/emoji/tables/unicode

Gilbert Giesbert
fuente
3
funciona en 5.1 pero en 4.4.4 obtengo un? para mi cadena de emoji
filthy_wizard
21
¿Es posible hacer esto en el archivo strings.xml?
Spektakulatius
@ user1232726, esto dependerá del teléfono del usuario, incluido el emoji que se utilice.
Suragch
¿Puedes ayudar a convertir este "5794d5f7895fa10a8f8e1357" en el EMOJI .. @GilbertGiesbert .. Gracias ...
Ravindra Kushwaha
2
Desafortunadamente, no funciona con Unicode de 32 bits, como U + 1F1EF U + 1F1F2. Este valor está fuera de los límites de los enteros.
Chris - Jr
40

Puede usar Emojis directamente en recursos de cadena usando el código decimal como este:

😊

por ejemplo:

<string name="emoji">I am happy &#128522;</>
P1xelfehler
fuente
11
Esta es una buena respuesta; para encontrar el código decimal de un emoji, puede usar algo como quackit.com/character_sets/emoji
Adinia
1
No encuentro la x necesaria
hmac
3
Error al compilar: referencia de personaje "& #
Dr. aNdRO
@hmac He revertido la respuesta, eliminé las menciones dex
Vadim Kotov
3

Nota: para Kotlin

fun getEmoji(unicode: Int): String {
    return String(Character.toChars(unicode))
}
Bipin Bharti
fuente