有时候服务器不支持表情符号的接收和存储,那么在Android端如何过滤掉表情输入呢?
1、添加过滤器
mEtContent.setFilters(inputFilters);
2、写过滤器
private InputFilter[] inputFilters=new InputFilter[]{new InputFilter() {Pattern emoji = pile("[\ud83c\udc00-\ud83c\udfff]|[\ud83d\udc00-\ud83d\udfff]|[\u2600-\u27ff]",Pattern.UNICODE_CASE | Pattern.CASE_INSENSITIVE);@Overridepublic CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {Matcher emojiMatcher = emoji.matcher(source);LogUtil.e("inputFilters : "+source+" dest: "+dest);if (emojiMatcher.find() ) {Toast.makeText(FeedBackActivity.this, "不支持输入表情", Toast.LENGTH_SHORT).show();// MyToast.showText("不支持输入表情");return "";}return null;}},new InputFilter() {@Overridepublic CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {for (int i = start; i < end; i++) {int type = Character.getType(source.charAt(i));LogUtil.e("inputFilters2 : "+source+" type: "+type);if (type == Character.SURROGATE || type == Character.OTHER_SYMBOL) {Toast.makeText(FeedBackActivity.this, "不支持输入表情", Toast.LENGTH_SHORT).show();return "";}}return null;}},/**这里限制输入的长度为200*/new InputFilter.LengthFilter(200)};
第一个过滤器加了之后有部分表情过滤不了,完善中。。
第二个过滤器加了之后似乎没有发现过滤不了的表情了。应该可以解决问题了。