Android无法禁用剪切复制粘贴

时间:2012-04-26 12:13:51

标签: android

我无法禁用复制粘贴选项。在三星Galaxy S2上,如果我点击edittext,箭头就会出现并点击该箭头,所有选项都会出现。 onCreateContextMenu尚未被调用。在onUserInteration中,我只是使用setText()方法清除剪贴板信息,在模拟器上它正在工作,但不在真实设备上。请给我一个想法。我想要几个小时,但无法解决它。

4 个答案:

答案 0 :(得分:0)

请参阅 How to disable edittext in android

您还可以将edittext设置为android:editable="false"

答案 1 :(得分:0)

将此添加到您要禁用复制粘贴选项的edittext。

  edittext.setCustomSelectionActionModeCallback(new 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;
                }
            });

答案 2 :(得分:0)

要禁用复制粘贴,您需要停止选择然后再插入。 使用下面的代码,其100%正常工作的代码。

   //This disable the paste 
    editText.setCustomInsertionActionModeCallback(new ActionMode.Callback() {
        @Override
        public boolean onCreateActionMode(ActionMode mode, Menu menu) {
            menu.clear();
            return false;
        }

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

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

        @Override
        public void onDestroyActionMode(ActionMode mode) {

        }
    });

    //This Disable selection of text
    editText.setCustomSelectionActionModeCallback(new Callback() {
        @Override
        public boolean onCreateActionMode(ActionMode mode, Menu menu) {
            menu.clear();
            return false;
        }

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

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

        @Override
        public void onDestroyActionMode(ActionMode mode) {

        }
    });
    editText.setLongClickable(false);
    editText.setTextIsSelectable(false);

答案 3 :(得分:-2)

您可能想查看此问题 here.

显然,通过捕捉长触摸事件,您可以阻止复制粘贴工具激活,如下所示:

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

然后在EditText上设置刚刚创建的onLongClickListener,如下所示:

myEditTextView.setOnLongClickListener(mOnLongClickListener);