How to disable emoji from being entered in Android EditText? How to disable emoji from being entered in Android EditText? android android

How to disable emoji from being entered in Android EditText?


Modify build.gradle file, add XEditText to your project:

dependencies{    compile 'com.xw.repo:xedittext:2.0.0@aar'}

after that, in your layout.xml:

<com.xw.repo.XEditText    xmlns:app="http://schemas.android.com/apk/res-auto"    android:layout_width="match_parent"    android:layout_height="wrap_content"    app:x_disableEmoji="true"/>

Or:

Customize EditText like this:

public class CustomEditText extends EditText {    public CustomEditText(Context context) {        super(context);        init();    }    public CustomEditText(Context context, AttributeSet attrs) {        super(context, attrs);        init();    }    public CustomEditText(Context context, AttributeSet attrs, int defStyleAttr) {        super(context, attrs, defStyleAttr);        init();    }    private void init() {        setFilters(new InputFilter[]{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;        }    }}

Both will work well !


There is tricky way for disabling emoji from keyboard..

you just have to set

android:inputType="textEmailAddress"

for EditText..

  <EditText    android:id="@+id/edt_note"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:hint="@string/note"    android:inputType="textEmailAddress"    android:padding="10dp"    android:textColor="@color/white" />

I am not sure that it will work in all cases but in my case it worked for me...


There is value digits available in xml file for EditText. You can set there all acceptable chars.

<EditText    android:layout_width="match_parent"    android:layout_height="match_parent"    android:digits="qwertyuiopasdfghjklzxcvbnm 1234567890 QWERTYUIOPASDFGHJKLZXCVBNM" />

I know, it's not the best solution but works :)