Как отключить копирование / вставку из / в EditText - PullRequest
115 голосов
/ 08 июня 2011

В моем приложении есть экран регистрации, на котором я не хочу, чтобы пользователь мог копировать / вставлять текст в поле EditText.Я установил onLongClickListener для каждого EditText, чтобы не отображалось контекстное меню, отображающее метод копирования / вставки / ввода и другие параметры.Таким образом, пользователь не сможет копировать / вставлять в поля редактирования.

 OnLongClickListener mOnLongClickListener = new OnLongClickListener() {

        @Override
        public boolean onLongClick(View v) {
            // prevent context menu from being popped up, so that user
            // cannot copy/paste from/into any EditText fields.
            return true;
        }
    };

Но проблема возникает, если пользователь включил стороннюю клавиатуру, отличную от Android по умолчанию, которая может иметькнопка для копирования / вставки или который может показать то же контекстное меню.Так как же отключить копирование / вставку в этом сценарии?

Пожалуйста, дайте мне знать, если есть и другие способы копирования / вставки.(и, возможно, как их отключить)

Буду признателен за любую помощь.

Ответы [ 21 ]

0 голосов
/ 13 января 2017

Решение, которое работало для меня, состояло в том, чтобы создать собственный Edittext и переопределить следующий метод:

public class MyEditText extends EditText {

private int mPreviousCursorPosition;

@Override
protected void onSelectionChanged(int selStart, int selEnd) {
    CharSequence text = getText();
    if (text != null) {
        if (selStart != selEnd) {
            setSelection(mPreviousCursorPosition, mPreviousCursorPosition);
            return;
        }
    }
    mPreviousCursorPosition = selStart;
    super.onSelectionChanged(selStart, selEnd);
}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...