外部键盘问题 - 防止在Android的edittext中复制/粘贴

时间:2017-02-20 12:41:39

标签: android security android-edittext keyboard copy-paste

我正在使用外部键盘访问我的设备。作为一项要求,我将在我的应用程序中禁用Android的EditText框中的任何复制/粘贴。 对于处理设备的复制/粘贴问题,我们使用下面的代码

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

1 个答案:

答案 0 :(得分:0)

您不必扩展EditText,如果您使用的是API级别11或更高级别,则可以停止复制,粘贴,剪切和自定义上下文菜单。

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)