0

I'm accessing my device using external keyboard. As a requirement, I've to disable any copy/paste in android's EditText box in my app. For handling device's copy/paste, issue, we're using below code

public class MyEditText extends EditText{
   ---
   boolean canPaste() {
       return false;
   }
   ---
    private void init() {
        this.setCustomSelectionActionModeCallback(new ActionModeCallbackInterceptor());
        this.setLongClickable(false);
        this.addTextChangedListener(mTextWatcher); 
    }

    private class ActionModeCallbackInterceptor implements ActionMode.Callback {
        public boolean onCreateActionMode(ActionMode mode, Menu menu) { return false; }
        public boolean onPrepareActionMode(ActionMode mode, Menu menu) { return false; }
        public boolean onActionItemClicked(ActionMode mode, MenuItem item) { return false; }
        public void onDestroyActionMode(ActionMode mode) {}
    }
}
Pankaj
  • 806
  • 12
  • 34

1 Answers1

0

You don't have to extend EditText, If you are using API level 11 or above then you can stop copy, paste, cut and custom context menus from appearing by.

edittext.setCustomSelectionActionModeCallback(new ActionMode.Callback() {

        public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
            return false;
        }

        public void onDestroyActionMode(ActionMode mode) {                  
        }

        public boolean onCreateActionMode(ActionMode mode, Menu menu) {
            return false;
        }

        public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
            return false;
        }
    });

(Sourced from Zain Ali's answer to this existing question)

kira_codes
  • 1,379
  • 12
  • 35
Alvin Varghese
  • 760
  • 9
  • 17
  • Hi @Alvin, I'm looking for the Keyboard accessbility. I've already added your suggested code, but even still able to paste text using keyboard's cntrl + v. – Pankaj Feb 20 '17 at 14:05