安卓无法禁用剪切复制粘贴

  • 本文关键字:复制 android
  • 更新时间 :
  • 英文 :


我无法禁用复制粘贴选项。 在三星Galaxy S2上,如果我单击Edittext,将出现一个箭头,单击该箭头,所有选项都将出现。 onCreateContextMenu 尚未被调用。 在 onUserInteration 中,我只是使用 setText() 方法清除剪贴板信息,在模拟器上它可以工作,但在真实设备上不起作用。请给我这个主意。我正在尝试几个小时,但无法修复它。

如何在安卓中禁用编辑文本

您还可以将编辑文本设置为android:editable="false"

将其添加到要禁用复制粘贴选项的编辑文本中。

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

要禁用复制粘贴,您需要停止选择,然后插入。使用以下代码,其 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);

你可能想看看这个问题这里。

显然,通过捕获长触摸事件,您可以阻止复制粘贴工具像这样激活:

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

最新更新