给edittext添加inputfilter,同时对键盘输入和剪切板粘贴有效
edittext.setFilters(new InputFilter[]{emojiFilter});复制代码
public class EmojiInputFilter implements InputFilter { private static final String EMOJI_REGEX = "(?:" + "[\\uD83C\\uDE01\\uD83C\\uDE02\\uD83C\\uDE1A\\uD83C\\uDE2F\\uD83C\\uDE32-\\uD83C\\uDE3A\\uD83C\\uDE50\\uD83C\\uDE51]\\uFE0F?|" + "[\\uD83C\\uDD70\\uD83C\\uDD71\\uD83C\\uDD7E\\uD83C\\uDD7F\\uD83C\\uDD8E\\uD83C\\uDD91-\\uD83C\\uDD9A]\\uFE0F?|" + "[\\u231A\\u231B\\u2328\\u23CF\\u23E9-\\u23F3\\u23F8-\\u23FA]\\uFE0F|" + "[\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB-\\u25FE]\\uFE0F?|" + "[\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B50\\u2B55]\\uFE0F?|" + "[\\u0023\\u002A\\u0030-\\u0039]\\uFE0F?\\u20E3|" + "[\\u2194-\\u2199\\u21A9-\\u21AA]\\uFE0F?|" + "[\\uD83C\\uDDE6-\\uD83C\\uDDFF]{1,2}|" + "[\\u2600-\\u26FF]\\uFE0F?|" + "[\\u2700-\\u27BF]\\uFE0F?|" + "[\\u2934\\u2935]\\uFE0F?|" + "[\\u3030\\u303D]\\uFE0F?|" + "[\\u3297\\u3299]\\uFE0F?|" + "[\\u203C\\u2049]\\uFE0F?|" + "[\\u00A9\\u00AE]\\uFE0F?|" + "[\\u2122\\u2139]\\uFE0F?|" + "[\\ud83d\\udc00-\\ud83d\\udfff]\\uFE0F?|" + "\\uD83C\\uDC04\\uFE0F?|" + "\\uD83C\\uDCCF\\uFE0F?|" + "\\u24C2\\uFE0F?|" + "[\\uD83C\\uDF00-\\uD83D\\uDDFF]\\uFE0F?|" + "[\\uD83E\\uDD00-\\uD83E\\uDDFF]\\uFE0F?|" + "[\\uD83D\\uDE00-\\uD83D\\uDE4F]\\uFE0F?|" + "[\\uD83D\\uDE80-\\uD83D\\uDEFF]\\uFE0F?" + "?)"; private final Pattern pattern = Pattern.compile(EMOJI_REGEX); @Override public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { if (source == null) { return null; } Matcher matcher = pattern.matcher(source); if (matcher.find()) { return matcher.replaceAll(""); } return source; }}复制代码