我想在我的Android应用程序中集成表情符号。因此,我查找了utf-8符号的十六进制代码,并将以下内容添加到我的string.xml文件中:
<string name="thumbsup">Perfect <node>👍👍</node></string>
这应该导致Perfect
。但是,当呼叫活动尝试显示时,我的应用程序崩溃了:
JNI DETECTED ERROR IN APPLICATION: input is not valid Modified UTF-8: illegal start byte 0xf0
不是特别完美;)
答案 0 :(得分:7)
解决方法是: 添加&#34; - utf16&#34;通过添加
android {
aaptOptions {
additionalParameters '--utf16'
}
}
到您的build.gradle
文件,并确保您没有使用aapt2。
答案 1 :(得分:2)
似乎较新版本的Android不会导致崩溃(API 24在我的测试中有效),但如果您支持旧版本,则无济于事。我能够弄清楚的最好的就是使用Java编码字符串。
public class AppEmojiStrings {
// This is only a workaround for emoji causing crashes in XML strings.
// Use the standard strings.xml for all other strings.
public static final String thumbsUp = "Thumbs up ";
public static final String iLoveNY = "I \uD83D\uDC99 NY";
}
此方法存在许多缺点,主要是在布局XML文件中无法访问它。但对于某些情况,这可能是一种可行的解决方法。