I would like to integrate the emoji symbol 👍 in my android app. Therefore I looked up the hex code for the utf-8 symbol and added the following to my string.xml file:
<string name="thumbsup">Perfect <node>👍👍</node></string>
This should result into Perfect 👍👍
. However, instead my app crashes when the call activity tries to display this:
JNI DETECTED ERROR IN APPLICATION: input is not valid Modified UTF-8: illegal start byte 0xf0
Not particularly perfect ;)
The fix for that is: Add "--utf16" to aapt by adding
android {
aaptOptions {
additionalParameters '--utf16'
}
}
to your build.gradle
file, and make sure you are not using aapt2.
It seems that newer versions of Android don't cause the crash (API 24 worked in my tests), but that doesn't help if you are supporting older versions. The best I have been able to figure out is to use Java coded strings.
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";
}
There are a number of disadvantages with this method, the main one being that it can't be accessed in the layout XML files. But it may be a viable workaround for some situations.
来源:https://stackoverflow.com/questions/35792856/emoji-symbol-in-string-xml-crashes-app