覆盖EditText中的表情符号,并从我的android应用程序中调用这些表情符号

覆盖EditText中的表情符号,并从我的android应用程序中调用这些表情符号,android,Android,我注意到谷歌在键盘上添加了一个表情符号快捷键(可能很久以前就在那里了,但我刚刚注意到:)。我试图从键盘上禁用表情符号快捷键,并从我添加到应用程序中的图标中调用这些表情符号。这可行吗 例如:Facebook Messenger应用程序有一个独立的图标按钮,仅用于表情符号,因此我的想法是使用一个独立的按钮,但使用谷歌已经提供的表情符号 到目前为止,我添加了我的独立imageView图标,它是可点击的,但我试图让这个图标召唤谷歌表情,如果最后一个可以被覆盖的话 首先,将此属性添加到Edittext a

我注意到谷歌在键盘上添加了一个表情符号快捷键(可能很久以前就在那里了,但我刚刚注意到:)。我试图从键盘上禁用表情符号快捷键,并从我添加到应用程序中的图标中调用这些表情符号。这可行吗

例如:Facebook Messenger应用程序有一个独立的图标按钮,仅用于表情符号,因此我的想法是使用一个独立的按钮,但使用谷歌已经提供的表情符号


到目前为止,我添加了我的独立imageView图标,它是可点击的,但我试图让这个图标召唤谷歌表情,如果最后一个可以被覆盖的话

首先,将此属性添加到Edittext

android:inputType="textMultiLine"
这就是我如何禁用键盘上的表情符号

public class EmojiExcludeEditText extends EditText {
    public EmojiExcludeEditText(Context context) {
        super(context);
        init();
    }

    public EmojiExcludeEditText(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public EmojiExcludeEditText(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init();
    }

    private void init() {
        setFilters(new InputFilter[]{emojiExcludeFilter});
    }

    @Override
    public void setFilters(InputFilter[] filters) {
        if (filters.length != 0) { //if length == 0 it will here return when init() is called
            boolean add = true;
            for (InputFilter inputFilter : filters) {
                if (inputFilter == emojiExcludeFilter) {
                    add = false;
                    break;
                }
            }
            if (add) {
                filters = Arrays.copyOf(filters, filters.length + 1);
                filters[filters.length - 1] = emojiExcludeFilter;
            }
        }
        super.setFilters(filters);
    }

    private EmojiExcludeFilter emojiExcludeFilter = new EmojiExcludeFilter();

    private class EmojiExcludeFilter implements InputFilter {

        @Override
        public 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));
                if (type == Character.SURROGATE || type == Character.OTHER_SYMBOL) {
                    return "";
                }
            }
            return null;
        }
    }
}
公共类EmojiExcludeEditText扩展了EditText{
公共emojieExcludeEditText(上下文){
超级(上下文);
init();
}
公共emojieExcludeItemText(上下文、属性集属性){
超级(上下文,attrs);
init();
}
公共emojieExcludeEdit(上下文上下文、属性集属性、int-defStyleAttr){
super(上下文、attrs、defStyleAttr);
init();
}
私有void init(){
setFilters(新的InputFilter[]{emojiExcludeFilter});
}
@凌驾
公共空集合过滤器(InputFilter[]过滤器){
如果(filters.length!=0){//如果length==0,则在调用init()时将在此处返回
布尔加法=真;
用于(InputFilter InputFilter:filters){
if(inputFilter==emojiExcludeFilter){
add=false;
打破
}
}
如果(添加){
filters=Arrays.copyOf(filters,filters.length+1);
filters[filters.length-1]=emojiExcludeFilter;
}
}
super.setFilters(过滤器);
}
私有EmojiExcludeFilter EmojiExcludeFilter=新的EmojiExcludeFilter();
私有类EmojiExcludeFilter实现InputFilter{
@凌驾
公共CharSequence筛选器(CharSequence源、int开始、int结束、跨区目标、int开始、int结束){
for(int i=start;i
在打开我的帖子之前,我已经看到了这个帖子。这些表情可以从应用程序中的独立图标或按钮调用吗?