Android使用区域设置获取国家表情符号标志

Android使用区域设置获取国家表情符号标志,android,unicode,textview,emoji,country,Android,Unicode,Textview,Emoji,Country,我已经看到,自从Lollipop以来,Android已经为不同的国家内置了Emoji标志。是否可以使用设备区域设置检索该国家的表情符号 我想在包含用户位置的文本视图中插入Emoji标志。我也在寻找,但我认为这还不可能 请看这里: 别提国旗 _ 或者,您可以在此处检查答案: 这可能会对您有所帮助。表情符号是一种Unicode符号。基于Unicode字符表,表情符号由26个字母Unicode字符(A-Z)组成,用于编码ISO 3166-1 alpha-2双字母国家代码() 这意味着可以拆分两个字

我已经看到,自从
Lollipop
以来,Android已经为不同的国家内置了
Emoji
标志。是否可以使用设备区域设置检索该国家的
表情符号


我想在包含用户位置的
文本视图中插入
Emoji
标志。

我也在寻找,但我认为这还不可能

请看这里:

别提国旗

_

或者,您可以在此处检查答案:


这可能会对您有所帮助。

表情符号是一种Unicode符号。基于Unicode字符表,表情符号由26个字母Unicode字符(A-Z)组成,用于编码ISO 3166-1 alpha-2双字母国家代码()

这意味着可以拆分两个字母的国家代码,并将每个A-Z字母转换为区域指标符号字母:

私有字符串localeToEmoji(Locale){
字符串countryCode=locale.getCountry();
int firstLetter=Character.codepoint(国家代码,0)-0x41+0x1F1E6;
int secondLetter=Character.codepoint(国家代码,1)-0x41+0x1F1E6;
返回新字符串(Character.toChars(firstLetter))+新字符串(Character.toChars(secondLetter));
}
或以Kotlin为例(假设UTF-8):

其中,
0x41
表示Unicode表中大写的
A
字母,
0x1F1E6
区域指示符字母A


注意:此代码示例经过简化,没有与国家/地区代码相关的必要检查,这在地区内是不可用的。

当我第一次编写此答案时,不知何故忽略了我只通过React Native在安卓上工作过

无论如何,这里是我的JavaScript解决方案,它可以使用ES6支持,也可以不使用ES6支持

功能countryCodeToFlagEmoji(国家){
返回字符串的类型。fromCodePoint==“函数”
?String.fromCodePoint(…[…country].map(c=>c.charCodeAt()+0x1f185))
:[…国家]
.map(c=>“\ud83c”+字符串.fromCharCode(0xdd85+c.charCodeAt())
.加入(“”);
}
console.log(countryCodeToFlagEmoji(“au”));
console.log(countryCodeToFlagEmoji(“aubdusca”)基于,我在下面使用扩展函数编写了一个Kotlin版本

我还添加了一些检查来处理未知的国家代码

/**

*这种方法是将国家代码(如“us”)更改为我很容易使用它。 从中获取Unicode

孟加拉国国旗为
U+1F1E7 U+1F1E9
现在,


它将显示>(孟加拉国国旗)Bangladesh

您可以非常简单地获得国家代码。 我想谈谈根据国家代码选择国旗的问题

我写了一个关于它的类,它非常简单易用

用法:

String countryWithFlag = CountryFlags.getCountryFlagByCountryCode("TR") + " " + "Türkiye";

输出:谢谢你的帮助。我可以使用设备国家代码查找表情符号标志。我可以获取所有coutnries标志吗?java.util.Locale.GetIsCountries()方法返回ISO 3166中定义的所有两个字母的国家代码的列表。您可以使用这些字符串生成表情符号。这应该是可接受的答案。这就是应该如何做到的,在iOS上也是如此。还有更多的荣誉为教育简化说明!Android 4.4和更低版本的默认字体中没有这些表情符号。如果你想让它在这些方面发挥作用,你需要在应用程序中使用你自己的字体(5.0及以上版本的官方Android字体是Noto Color表情符号:)@Dmitry我最终使用了
EmojiCompat
API(来自支持库)这是我不知道的–它解决了这个确切的问题,而且它实际上是两行代码集成在kitkat上的工作?当我调试它时,我看到了问号?这在我的手机上很有效,但它是否适用于旧的API?
{...

 String flag = getEmojiByUnicode(0x1F1E7)+getEmojiByUnicode(0x1F1E9)+ " Bangladesh";
    }
    public String getEmojiByUnicode(int unicode){
        return new String(Character.toChars(unicode));
    }
String countryWithFlag = CountryFlags.getCountryFlagByCountryCode("TR") + " " + "Türkiye";