How to disable copy/paste from/to EditText

后端 未结 24 1323
情歌与酒
情歌与酒 2020-11-22 12:18

In my application, there is a registration screen, where i do not want the user to be able to copy/paste text into the EditText field. I have set an onLon

相关标签:
24条回答
  • 2020-11-22 12:36

    Read the Clipboard, check against the input and the time the input is "typed". If the Clipboard has the same text and it is too fast, delete the pasted input.

    0 讨论(0)
  • 2020-11-22 12:37

    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;
                }
            });
    

    Returning false from onCreateActionMode(ActionMode, Menu) will prevent the action mode from being started(Select All, Cut, Copy and Paste actions).

    0 讨论(0)
  • 2020-11-22 12:38

    For smartphone with clipboard, is possible prevent like this.

    editText.setFilters(new InputFilter[]{new InputFilter() {
            @Override
            public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
                if (source.length() > 1) {
                    return "";
                }  return null;
            }
        }});
    
    0 讨论(0)
  • 2020-11-22 12:38

    Try to use.

    myEditext.setCursorVisible(false);
    
           myEditext.setCustomSelectionActionModeCallback(new ActionMode.Callback() {
    
            public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
                // TODO Auto-generated method stub
                return false;
            }
    
            public void onDestroyActionMode(ActionMode mode) {
                // TODO Auto-generated method stub
    
            }
    
            public boolean onCreateActionMode(ActionMode mode, Menu menu) {
                // TODO Auto-generated method stub
                return false;
            }
    
            public boolean onActionItemClicked(ActionMode mode,
                    MenuItem item) {
                // TODO Auto-generated method stub
                return false;
            }
        });
    
    0 讨论(0)
  • 2020-11-22 12:40

    Similar to GnrlKnowledge, you can clear the Clipboard

    http://developer.android.com/reference/android/text/ClipboardManager.html

    If you want, preserve the text in the Clipboard, and on onDestroy, you can set it again.

    0 讨论(0)
  • 2020-11-22 12:41

    I've tested this solution and this works

        mSubdomainEditText.setLongClickable(false);
        mSubdomainEditText.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;
          }
        });
    
    0 讨论(0)
提交回复
热议问题