android EditText 输入过滤表情
来源:互联网 发布:永恒矩阵 编辑:程序博客网 时间:2024/04/20 13:18
由于编码原因 服务器端是不能识别大部分表情的 但是在手机端 用搜狗 或者百度输入法 是可以输入表情的 但是我们有不希望用户输入表情
不是当这些表情传入服务器端的时候 服务器会报错 这就需要我们android过滤了
下面是我写的EditText 输入过滤的
public class Test { private EditText feed_advise; //输入表情前EditText中的文本 private String tmp; //是否重置了EditText的内容 private boolean resetText; private TextWatcher watcher = new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { if(!resetText && start<s.length()) {<span style="color:#808080;">//s<str.length()判断用户是否是删除了输入的数据</span> char codePoint = s.charAt(start); if(isEmojiCharacter(codePoint)){ resetText = true; //是表情符号就将文本还原为输入表情符号之前的内容 feed_advise.setText(tmp); feed_advise.setSelection(tmp.length());//设置EditText光标 <span style="background-color:#344134;">Toast</span>.makeText(Test .<span style="color:#cc7832;">this,</span><span style="color:#6a8759;">"不支持表情输入"</span><span style="color:#cc7832;">,</span><span style="background-color:#344134;">Toast</span>.<span style="color:#9876aa;font-style:italic;">LENGTH_SHORT</span>)<span style="color:#cc7832;">;</span> } }else{ resetText = false; } } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { if(!resetText || s.toString().length()<=start) {<span style="color:#808080;">//s.toString().length()<=start 判断用户是否是删除了输入的数据</span> tmp = s.toString();//存储这次输入后的文本 好在现场输入表情后还原文本 } } @Override public void afterTextChanged(Editable s) { } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_feed_back); feed_advise= (EditText) findViewById(R.id.feed_advise);//获取EditText控件 feed_advise.addTextChangedListener(watcher);//设置判断 } /** * 是否包含表情 * * @param codePoint * @return 如果不包含 返回false,包含 则返回true */ private static 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))); }}
下面是一个用于过滤一个字符串的表情的代码 下面代码的思路是 用户输入完全部在去判断用户是否输入表情 如果有 就把表情去掉
public class EmojiFilter {/*** 是否包含表情* * @param codePoint* @return 如果不包含 返回false,包含 则返回true*/private static 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)));}/*** 过滤emoji 或者 其他非文字类型的字符* * @param source* @return*/public static String filterEmoji(String source) {StringBuilder buf = null;int len = source.length();for (int i = 0; i < len; i++) {char codePoint = source.charAt(i);if (!isEmojiCharacter(codePoint)) {// 如果不包含 则将字符appendif (buf == null) {buf = new StringBuilder(source.length());}buf.append(codePoint);} else {}}if (buf == null) {return source;// 如果没有找到 emoji表情,则返回源字符串} else {if (buf.length() == len) {// 这里的意义在于尽可能少的toString,因为会重新生成字符串buf = null;return source;} else {return buf.toString();}}}}
本文有一部分引用于http://download.csdn.net/detail/ycxyyzw/8550353 demo代码
0 0
- android EditText 输入过滤表情
- 【Android】【输入校验】输入框(EditText)过滤 Emoji 表情
- EditText 过滤表情输入,实测可用。
- Android EditText 禁止输入表情
- android EditText 禁止表情输入
- Android--过滤EditText的输入
- EditText过滤emoji表情
- EditText 输入控制,用InputFilter过滤表情、特殊字符
- Android---15---EditText输入表情图像
- android edittext 限制输入符号表情
- Android中EditText禁止输入表情
- edittext禁止输入表情
- EditText禁止输入表情
- EditText禁止输入表情
- android 输入框EditText禁止输入Emoji表情符
- android 输入框EditText禁止输入Emoji表情符
- android 输入框EditText禁止输入Emoji表情符
- android 输入框EditText禁止输入Emoji表情符
- Daikon Forge GUI (一)-- 生成Atlas
- EditPlus 3.7激活码
- cjson和malloc
- Android import和export使用说明 及 export报错:Problems were encountered during export解决
- Android开发使用WebView实战技巧
- android EditText 输入过滤表情
- 深入Objective-C的动态特性
- Unity3D获取APK包信息实现
- win7 64位系统下matlab中mex文件编译
- Tomcat学习笔记-jconsole监控
- 利用onUserLeaveHint发送后台运行通知
- 2015中国创新型软件公司TOP100排行榜
- 聊天界面
- java字符串排序