您的位置:首页 > 移动开发 > Android开发

android禁止EditText输入emoji表情图片

2017-02-27 15:30 411 查看
方法一:给EditText设置过滤器,这样在输入emoji的时候就没有反应  
 

[java] view
plain copy

private static InputFilter emojiFilter = new InputFilter() {  

  

  

        Pattern emoji = Pattern.compile(  

  

  

        "[\ud83c\udc00-\ud83c\udfff]|[\ud83d\udc00-\ud83d\udfff]|[\u2600-\u27ff]",  

  

  

        Pattern.UNICODE_CASE | Pattern.CASE_INSENSITIVE);  

  

  

        @Override  

        public CharSequence filter(CharSequence source, int start, int end, Spanned dest,  

                int dstart,  

  

  

                int dend) {  

  

  

            Matcher emojiMatcher = emoji.matcher(source);  

  

  

            if (emojiMatcher.find()) {  

  

  

                return "";  

  

  

            }  

            return null;  

  

  

        }  

    };  

  

  

    public static InputFilter[] emojiFilters = {emojiFilter};  

    editText.setFilters(emojiFilters);\  

方法二:检测输入的内容中是否含有emoji

[java] view
plain copy

/** * 检测是否有emoji表情 * @param source * @return */  

   public static boolean containsEmoji(String source) {                          //两种方法限制emoji  

       int len = source.length();  

       for (int i = 0; i < len; i++) {  

           char codePoint = source.charAt(i);  

           if (!isEmojiCharacter(codePoint)) { //如果不能匹配,则该字符是Emoji表情   

               return true;  

           }  

       }  

       return false;  

   }  

  

  

   /** * 判断是否是Emoji * @param codePoint 比较的单个字符 * @return */  

   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));  

   }  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: