我想得到国旗使用国家代码,这应该是支持所有版本从API 19 to API 28
。为此,我搜索了很多,找到答案,我选择了代码,这是标记为接受的答案。
我使用的是该答案中的代码
private String localeToEmoji(Locale locale) {
String countryCode = locale.getCountry();
Log.v("Asdasdasdasd", countryCode+" ; "+locale.getDisplayCountry());
int firstLetter = Character.codePointAt(countryCode.toUpperCase(), 0) - 0x41 + 0x1F1E6;
int secondLetter = Character.codePointAt(countryCode.toUpperCase(), 1) - 0x41 + 0x1F1E6;
return new String(Character.toChars(firstLetter)) + new String(Character.toChars(secondLetter));
}
我正在使用此函数,
Locale current = ConfigurationCompat.getLocales(getResources().getConfiguration()).get(0);
txt.setText(localeToEmoji(current));
但是这在Kitkat
和Lollipop
中不起作用。它只显示国家代码而不是国旗。我现在已经在这两个设备中测试过了。
那么什么是最好的方法来检索国旗使用国家代码。
如能提前提供帮助,将不胜感激!
4条答案
按热度按时间polkgigr1#
这里
0x41
表示大写字母A,0x1F1E6
是Unicode表中的REGIONAL INDICATOR SYMBOL LETTER A
,并且用户再次使用toUpper
,这可能会导致问题kgsdhlau2#
@Piyush更新回答:(请注意,我的代码要求国家代码大写)
build.gradle
:countryToEmojiCode
:用法:
表情库的初始化程序回调:
8fsztsew3#
使用Kotlin函数将country code转换为Flag表情符号。
fykwrbwg4#
添加扩展名:
这样命名它: