我正在使用EmojiCompat支持库在我的应用中添加表情符号,我希望将这些表情符号直接放在strings.xml
文件中(例如:<string name="string_name">Some text \uD83E\uDD96</string>
)
这适用于设备API&gt; 23,但否则会崩溃
A/art: art/runtime/check_jni.cc:65] JNI DETECTED ERROR IN APPLICATION: input is not valid Modified UTF-8: illegal start byte 0xf0
A/art: art/runtime/check_jni.cc:65] string: 'Some text '
A/art: art/runtime/check_jni.cc:65] in call to NewStringUTF
A/art: art/runtime/check_jni.cc:65] from java.lang.String android.content.res.StringBlock.nativeGetString(long, int)
我找到的唯一解决方案是在java变量中获取表情符号代码并将其放在我的字符串末尾(如google sample),并且它适用于所支持的每个版本。
但我真的想把表情符号代码放在字符串文件中,并且能够做到这样的事情:
emojiTextView.setText(getText(R.string.string_name));
有谁知道如何实现这个目标?
答案 0 :(得分:1)
回答这个问题有点晚了,但仍然可以帮助您或其他人。
使用decimal
值表情符号在strings.xml
中添加表情符号。这也可以与支持库一起很好地工作。
在您要显示的情况下,它是T-REX(选中here),其十进制值为🦖
。最终字符串为:
<string name="emoji">Some text 🦖</string>
输出:
答案 1 :(得分:0)
我在我的应用程序中遇到了同样的问题,我没有资格说这可以限制你在android中使用emojis的程度,但我可以肯定地说你不能将emojis添加到android xml文件中(没有让你的应用程序崩溃,就是这样)。
但是,你可以做一点点破解来实现这个目标。 使用This java static list of all emojis。在这里你需要给表情符号名称(emojiID),如“DOG_FACE”或“HONEY_BEE”。
在您的strings.xml文件中添加这些表情符号,但是使用以下标记形式: “## DOG_FACE ##”或“## HONEY_BEE ##”(例如:“嗨!你好我的男人## DOG_FACE ##”)。
并创建一个方法,该方法将字符串的资源id作为参数并返回包含表情符号的字符串。此方法将查找正则表达式模式^##.*##$
。您可以将方法命名为: -
emojiTextView.setText(getTextWithEmojis(R.string.string_name));
答案 2 :(得分:0)
警告:此次崩溃API 21
这不是表情符号,但您可以从此网站复制粘贴字符
http://www.fileformat.info/info/unicode/char/search.htm?q=earth&preview=entity
以示例:
对我有用的是使用“ Java数据”表中的值,特别是行“ string.toUpperCase()”