安卓怎么处理emoji表情提交给后台

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安卓怎么处理emoji表情提交给后台相关的知识,希望对你有一定的参考价值。

String msgStr = ParseEmojiMsgUtil.convertToMsg(mEditMessageEt.getText(), FansDetailsActivity.this);// 这里不要直接用mEditMessageEt.getText().toString();
try
strEncode = URLEncoder.encode(msgStr, "UTF-8");//strEncode 就是你要提交到后台转码后的字符串
(UnsupportedEncodingException e)
e.printStackTrace();

//后台返回的字符串在解析出来显示
String content = commentBeanList.get(position).getComment_connect();
try
String strEncode = URLDecoder.decode(content, "UTF-8");//解密的步骤
String unicode = EmojiParser.getInstance(mContext).parseEmoji(strEncode);//在本地找到对应的表情图片
SpannableString spannableString = ParseEmojiMsgUtil.getExpressionString(mContext, unicode);
holder.morecomment_tv_content.setText(spannableString);//范主本人的第一条评论
catch (UnsupportedEncodingException e)
e.printStackTrace();
参考技术A emoji表情其实就是Unicode编码,直接当做字符串传递就OK了

在开发聊天软件相关的时候遇到emoji表情

在聊天软件,如微信,在请求好友昵称的时候,经常会遇到emoji格式的表情头像,通常我们冲后台获取到的字符串都是<span class=\"emoji emoji2122\"></span> 这样一个格式,

怎么在textview中显示出emoji表情呢?

其实很简单,我们把对应的emoji的值取出来,转换为16进制的值,直接给textview,textview就可以直接识别出来,不同版本识别的emoji是有区别的,最直接的就是android和ios。

可以直接复制EmojiUtils,调用convert就可以了,这个方法会把nickname中的emoji过滤,返回一个替换掉span的字符串回来。但是需要注意有些特殊的emoji表情是两个emoji值表示出来的,不同版本显示会有所不同。

 

public class EmojiUtils {
public static final String EMOJI_PATTERN =
"<span\\s+class\\s*=\\s*\\\\?\"emoji emoji(\\p{XDigit}+)\\\\?\"></span>";

public static String convert(String orignalName) {
if (orignalName == null || orignalName.isEmpty()) {
return orignalName;
}
Pattern p = Pattern.compile(EMOJI_PATTERN);
Matcher matcher = p.matcher(orignalName);
StringBuffer buffer = new StringBuffer();
while (matcher.find()) {
String emojiCode = matcher.group(1);
matcher.appendReplacement(buffer, getReplacement(emojiCode));
}
matcher.appendTail(buffer);
return buffer.toString();
}

private static String getReplacement(String emojiCode) {
int length = emojiCode.length();
String replacement = "?";
if (length == 4 || length == 5) {
replacement = emojiCodeToUnicode(emojiCode);
} else if (length == 6 || length == 8) {
if (length == 6) {
String start = emojiCodeToUnicode(emojiCode.substring(0, 2));
String end = emojiCodeToUnicode(emojiCode.substring(2, 6));
replacement = start + end;
} else {
String start = emojiCodeToUnicode(emojiCode.substring(0, 4));
String end = emojiCodeToUnicode(emojiCode.substring(4, 8));
replacement = start + end;
}

} else if (length == 10) {
String start = emojiCodeToUnicode(emojiCode.substring(0, 5));
String end = emojiCodeToUnicode(emojiCode.substring(5, 10));
replacement = start + end;
}
return replacement;

}

private static String emojiCodeToUnicode(String emojiCode) {
return new String(Character.toChars(Integer.parseInt(emojiCode, 16)));
}
}

 

以上是关于安卓怎么处理emoji表情提交给后台的主要内容,如果未能解决你的问题,请参考以下文章

安卓qq上怎么发iphone表情符号

安卓手机QQ输入法怎么添加emoji表情!

安卓手机QQ输入法怎么添加emoji表情!

emoji表情怎么才能在QQ里全显示出来?

转移动前端手机输入法自带emoji表情字符处理

为啥我手机在空间里发了emoji表情 却显示符号 该怎么弄