9

我正在寻找一种解决方案来禁用长按编辑菜单(复制/粘贴)以及用于编辑文本框的双击全选功能。我已经以类似的方式阅读了有关此问题的一些解决方案,但是,需要更进一步。

对于这个应用程序,我需要阻止用户在我的应用程序上使用复制/粘贴功能,并且需要一种方法来禁用此功能,该功能适用​​于 2.3 API 以及在较新的平板电脑上使用时。我正在使用 NexusOne 手机设备和 Galaxy 平板电脑进行测试。(minSDK 为 8,目标为 10)

目前我正在使用这个(例如):edittextPassword.setLongClickable(false); -禁用弹出编辑菜单,太好了!

此方法确实适用于电话设备以防止弹出编辑菜单。在平板电脑上,长按操作也会禁用此功能。然而,平板电脑具有更新的双击功能,可以选择所有文本并打开编辑菜单。旧 API 有没有办法取消/捕获/禁用新 API 功能或防止双击手势?


更新:使用连接到 GestureDetector 的 setLongClickable(false) 和 setOnTouchListener 的组合(感谢 Nikola 的建议),我可以捕获/取消双击和长按打开的编辑菜单。

下一部分要弄清楚的是......在三星手机(Galaxy S,目前不确定其他设备)上,当您点击一个字段时,您会看到一个光标和一个浮动光标指针按钮(正确名称?? )。单击此指针按钮是打开编辑菜单的另一种方法。有谁知道如何禁用这个?我唯一的解决方法是使用 TextWatcher 清除 BeforeTextChanges 和 AfterTextChanges 上的剪贴板。这样可以确保即使您进入“复制/粘贴”菜单,剪贴板也会被清除并且没有可粘贴的内容。

4

1 回答 1

1

关于称为光标控制器或句柄的“浮动光标指针按钮”以及单击它时出现的上下文菜单,是的,有一种方法可以禁用它。我假设你指的是这个:

带有粘贴菜单的文本选择句柄

除了 setLongClickable(false) 和 setOnTouchListener 代码之外,修复还在于防止 PASTE/REPLACE 菜单出现在show()(未记录的)android.widget.Editor类的方法中。在菜单出现之前,对 进行检查if (!canPaste && !canSuggest) return;。用作设置这些变量的基础的两种方法都在EditText类中:

更完整的答案可在此处获得

正如@CommonsWare 所提到的,个别设备制造商可能已经更改了EditText控件的默认 AOSP 行为,因此有必要进行测试。

于 2015-03-06T07:16:05.423 回答