Ваш код кажется хорошим. Что вам нужно сделать, вам нужно использовать Emoji Compatibility .
Вы должны использовать приведенный ниже код для получения флага из кода,
public String countryCodeToEmoji(String code) {
// offset between uppercase ascii and regional indicator symbols
int OFFSET = 127397;
// validate code
if (code == null || code.length() != 2) {
return "";
}
//fix for uk -> gb
if (code.equalsIgnoreCase("uk")) {
code = "gb";
}
// convert code to uppercase
code = code.toUpperCase();
StringBuilder emojiStr = new StringBuilder();
//loop all characters
for (int i = 0; i < code.length(); i++) {
emojiStr.appendCodePoint(code.charAt(i) + OFFSET);
}
// return emoji
return emojiStr.toString();
}
Вам необходимо добавить Emojiзависимость в вашем build.gradle файле
реализация "com.android.support:support-emoji-bundled:28.0.0"
ifвам нужно FontRequest , тогда вы должны добавить ниже зависимость
реализация "com.android.support:support-emoji:28.0.0"
Теперь вам нужно создать класс приложения и инициализировать EmojiCompact
с конфигурацией.
EmojiCompat.Config config = new BundledEmojiCompatConfig(getApplicationContext());
EmojiCompat.init(config);
Теперь используйте androidx.emoji.widget.EmojiTextView
вместо TextView
и используйте этот метод,
EmojiTextView txt = findViewById(R.id.txt);
txt.setText(countryCodeToEmoji("IN")); // Here you can use country codes.
Это будет работать с API 19 to API 28
последней.
Теперь это сделано.