项目中我们通常可以通过第三方输入法项Android文本框中输入表情符号,但是后台解析时可能会报错,所以通常我们都会屏蔽掉EditText的表情符号输入。下面介绍一下自己为了解决这个问题爬过的坑。

第一种解决方案(错误的):

public boolean isEmojiCharacter(char codePoint) {

return !((codePoint == 0x0) || (codePoint == 0x9) || (codePoint == 0xA) || (codePoint == 0xD) || ((codePoint >= 0x20) && codePoint <= 0xD7FF)) || ((codePoint >= 0xE000) && (codePoint <= 0xFFFD)) || ((codePoint >= 0x10000) && (codePoint <= 0x10FFFF));

}

通过这种方法判断输入的字符是否是表情符号确实可以达到目的,但也会带来其他问题。经过测试,EditText确实不能输入表情符号了,但是输入中文逗号的时候回删除前面的一个字符(如果前面有字符的话),所以最后放弃了这种方法。

第二种解决方案(错误的):

使用正则表达式,代码如下

public static boolean isEmote(String content) {

String NOT_EMOJI = "[\ud83c\udc00-\ud83c\udfff]|[\ud83d\udc00-\ud83d\udfff]|[\u2600-\u27ff]";

Pattern pattern = Pattern.compile(NOT_EMOJI);

Matcher matcher = pattern.matcher(content);

return matcher.find();

}

经测试,这种方法能过滤到多数表情符号,但不是全部的,所以这种方法也放弃了。

第三种解决方案(目前为止没测出来bug):

使用InputFilter,代码如下

InputFilter EMOJI_FILTER = new InputFilter() {

@Override

public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {

for (int index = start; index < end; index++) {

int type = Character.getType(source.charAt(index));

if (type == Character.SURROGATE) {

return "";

}

}

return null;

}

};

这种方法涉及到Unicode编码,今后有时间会做进一步研究,如果发现有bug或者发现更好的方法也会对本文进行更新。

参考地址:http://blog.csdn.net/zahuopuboss/article/details/52222667

android edittext过滤表情,EditText过滤表情符号相关推荐

  1. android edittext 输入法表情,Android开发中EditText禁止输入Emoji表情符

    在开发中可能多处会用到过滤Emoji表情符,一般情况下,我们会通过EditText的addTextChangedListener()监听来过滤Emoji表情,但在实际开发中会遇到多个EditText, ...

  2. Android实战场景 - 限制EditText仅支持输入数字、英文、汉字,禁止输入表情等特殊符号

    因项目需求,需要禁止用户输入表情符号,具体如下 ~ EditText相关Blog TextView.EditText属性大全 监听 EditText 文本变化 设置 EditText 光标颜色与下划线 ...

  3. android实现qq表情库,Android编程开发之EditText实现输入QQ表情图像的方法

    本文实例讲述了Android编程开发之EditText实现输入QQ表情图像的方法.分享给大家供大家参考,具体如下: 实现效果如下: 将QQ表情图像放到res下的drawable-hdpi文件夹下: 布 ...

  4. ios 表情符号 键盘_iOS输入框过滤表情,处理自带键盘无法输入

    本片分两部分 1.使用正则表达式过滤表情 2.处理苹果自带键盘无法输入汉字问题 先记录下,后面完善: override func viewDidAppear(_ animated: Bool) { s ...

  5. Android:TextView与EditText中插入表情图片

    表情工具类,用于在TextView与EditText中插入表情图片: public class FaceUtil {public int[] faceIds;public String[] faceC ...

  6. 【转】android 中如何限制 EditText 最大输入字符数

    原文网址:http://blog.csdn.net/fulinwsuafcie/article/details/7437768 方法一: 在 xml 文件中设置文本编辑框属性作字符数限制 如:andr ...

  7. EditText禁止输入表情

    一.前言 以前在做社区项目时,有个IM的需求,里面用到了自定义表情, 那时基本的做法就是在string.xml里面定义一个StringArray表情含义数组,里面每一个含义对应一个表情. 当在Edit ...

  8. android edittext属性 大小写,EditText输入类型总结

    原标题:EditText输入类型总结 Android中inputType属性在EditText输入值时启动的虚拟键盘的风格有着重要的作用.这也大大的方便的操作.有时需要虚拟键盘只为字符或只为数字.所以 ...

  9. java后台过滤特殊表情_java过滤表情图标

    package com.yt.util; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.apac ...

最新文章

  1. office excel单列数据类型不一致,导入时部分数据为空
  2. 压力传感器 ZNHM-I-5KG初步测试
  3. 码农回忆刚毕业工作的那年
  4. (42)Verilog HDL 打两拍设计
  5. bzoj千题计划127:bzoj1041: [HAOI2008]圆上的整点
  6. 简单触发器的使用 -- 献给SQL初学者
  7. 洛谷P2473奖励关——状压DP
  8. 不会写Java面试简历?看这一篇就够了(项目经历,个人技能)
  9. 注销Apple ID的正确打开方式
  10. 自己组装电脑后怎么装Win10系统教学
  11. 拉开中兴帷幕 张朝阳再造搜狐
  12. Halcon 识别DataMatrix二维码
  13. 灵感分享|10个优秀网站设计实例赏析及原型分享
  14. iOS Camera照相机
  15. 未明学院:学员来稿 | 2019年中国电影分析报告
  16. 一文带你学会linux系统 史上最全linux命令大全
  17. 内事不决问张昭,外事不决问周瑜,“ 排序 ”不决问威少
  18. 【网站】国内最火的10款Java开源项目,都是国人开发,CMS居多
  19. java导出excel 边框不全_POI 导出Excel合并单元格后部分边框不显示
  20. 关于error C2065 错误

热门文章

  1. 深度学习环境搭建步骤—gpu
  2. 穿越雷区--蓝桥杯笔记
  3. 三星Galaxy S10将支持加密货币私钥存储
  4. WSL2 上不了外网。解决!
  5. window.location与open用法
  6. socketpair理解
  7. 冬季砌墙时为什么不采用白灰砂浆砌筑?
  8. 银行业务笔记之贷款业务
  9. html图形的旋转平移,《图形的平移和旋转》教学案例
  10. 命令行选项解析函数(C语言):getopt()和getopt_long()【转】