通过代码,我可以创建一个按钮,将这3个表情符号插入到文本中:⚽️
但是,在许多手机上,当用户单击按钮时,的问题是⚽️以XX的形式显示。更糟糕的是,它只显示了三个空空间。
我想禁用和隐藏我自己的内置表情键盘在Android设备上,不正确地显示表情符号。是否有人知道或有提示如何在代码中检测一个设备是否支持表情符号?
我读过Android4.1支持的表情符号,但这不是我的经验.
发布于 2016-09-21 20:24:00
我刚刚为这个问题自己实现了一个解决方案。Android的好处在于它是开源的,所以当你解决类似的问题时,你很有可能找到一种方法来帮助你。
在中,您可以找到一种使用Paint.hasGlyph检测给定表情符号是否存在字体的方法。但是,由于这个方法在API 23之前是不可用的,所以它们也会进行测试,并将结果与'tofu‘(您在文章中提到的x字符)的宽度进行比较。
这种方法还有其他一些缺点,但它应该足以让您开始工作。
谷歌资料来源:
发布于 2017-01-30 17:09:45
基于Jason的答案
例如,创建布尔canShowFlagEmoji
private static boolean canShowFlagEmoji() {
Paint paint = new Paint();
String switzerland = "\uD83C\uDDE8\uD83C\uDDED"; // Here enter Surrogates of Emoji
try {
return paint.hasGlyph(switzerland);
} catch (NoSuchMethodError e) {
// Compare display width of single-codepoint emoji to width of flag emoji to determine
// whether flag is rendered as single glyph or two adjacent regional indicator symbols.
float flagWidth = paint.measureText(switzerland);
float standardWidth = paint.measureText("\uD83D\uDC27"); // U+1F427 Penguin
return flagWidth < standardWidth * 1.25;
// This assumes that a valid glyph for the flag emoji must be less than 1.25 times
// the width of the penguin.
}
}然后在代码中,每当需要检查表情符号是否可用时:
if (canShowFlagEmoji()){
// Code when FlagEmoji is available
} else {
// And when not
}当你点击细节的时候,你可以得到这里的代名词。
发布于 2017-08-18 13:01:38
另一种选择可能是包括Android "Emoji兼容性“库,该库将检测到运行在Android4.4 (API 19)上的应用程序中所需的任何Emoji字符,并将其添加到应用程序中:https://developer.android.com/topic/libraries/support-library/preview/emoji-compat.html
https://stackoverflow.com/questions/39194616
复制相似问题