string.xml中的表情符号崩溃应用程序

时间:2016-03-04 09:51:36

标签: android xml emoji

我想在我的Android应用程序中集成表情符号。因此,我查找了utf-8符号的十六进制代码,并将以下内容添加到我的string.xml文件中:

<string name="thumbsup">Perfect <node>&#x1f44d;&#x1f44d;</node></string>

这应该导致Perfect 。但是,当呼叫活动尝试显示时,我的应用程序崩溃了:

JNI DETECTED ERROR IN APPLICATION: input is not valid Modified UTF-8: illegal start byte 0xf0

不是特别完美;)

2 个答案:

答案 0 :(得分:7)

解决方法是: 添加&#34; - utf16&#34;通过添加

android {
    aaptOptions {
        additionalParameters '--utf16'
    }
}

到您的build.gradle文件,并确保您没有使用aapt2。

请参阅https://issuetracker.google.com/issues/37140916

答案 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文件中无法访问它。但对于某些情况,这可能是一种可行的解决方法。