Como definir emoji por Unicode em um textview?

93

Olá, gostaria de fazer o seguinte:

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

para obter isso na minha visualização de texto:

Tão feliz 😊

Como posso implementar getEmojiByUnicode(unicode) ?

Que tipo deve o unicode ser variável? (String, char, int?)

Note que NÃO quero usar Drawables!

Gilbert Giesbert
fonte

Respostas:

184

Encontrou uma solução:

No meu Unicode, substituí ' U + ' por ' 0x '

Exemplo: substitua ' U + 1F60A ' por ' 0x1F60A '

Desta forma, eu tenho um 'int' como

int unicode = 0x1F60A;

Que pode ser usado com

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

Então Textview exibe 😊 sem Drawable

Experimente com http://apps.timwhitlock.info/emoji/tables/unicode

Gilbert Giesbert
fonte
3
funciona em 5.1, mas em 4.4.4 recebo um? para minha string de emoji
filthy_wizard
21
É possível fazer isso no arquivo strings.xml?
Spektakulatius
@ user1232726, Depende do telefone do usuário, incluindo o emoji que está sendo usado.
Suragch
Você pode ajudar a converter este "5794d5f7895fa10a8f8e1357" em EMOJI .. @GilbertGiesbert ..Obrigado ...
Ravindra Kushwaha
2
Infelizmente ele não funciona com Unicode de 32 bits, como U + 1F1EF U + 1F1F2. Este valor está fora dos limites inteiros.
Chris - Jr
39

Você pode usar diretamente Emojis em recursos de string usando o código decimal como este:

😊

por exemplo:

<string name="emoji">I am happy &#128522;</>
P1xelfehler
fonte
10
Esta é uma boa resposta; para encontrar o código decimal de um emoji, você pode usar algo como quackit.com/character_sets/emoji
Adinia
1
não acho o x necessário
hmac
3
Erro durante a compilação: referência de caractere "& #
Dr. aNdRO
@hmac Reverti a resposta, removi as menções dex
Vadim Kotov
3

Nota: para Kotlin

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