Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android-防止编辑文本复制/粘贴并双击全选_Android_Android Edittext_Copy Paste_Gesture - Fatal编程技术网

Android-防止编辑文本复制/粘贴并双击全选

Android-防止编辑文本复制/粘贴并双击全选,android,android-edittext,copy-paste,gesture,Android,Android Edittext,Copy Paste,Gesture,我正在寻找一种解决方案,以禁用长按编辑菜单(复制/粘贴)和编辑文本框的双击全选功能。我已经以类似的方式阅读了关于这个问题的一些解决方案,但是,还需要更进一步 对于此应用程序,我有一个要求,即防止用户在我的应用程序上使用复制/粘贴功能,并需要一种方法来禁用此功能,该功能将在2.3 API上以及在较新的平板电脑上使用。我正在用NexusOne手机设备和Galaxy平板电脑进行测试。(minSDK为8,目标为10) 目前我正在使用这个(作为示例): edittextPassword.setLongCl

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

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

目前我正在使用这个(作为示例): edittextPassword.setLongClickable(假)-禁用弹出编辑菜单,太棒了

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


更新:使用连接到手势检测器的setLongClickable(false)和setOnTouchListener的组合(感谢Nikola的建议),我能够从打开的菜单中捕获/取消双击和长点击编辑菜单


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

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

除了setLongClickable(false)和setOnTouchListener代码之外,修复方法还在于防止粘贴/替换菜单出现在(非文档化的)
android.widget.Editor
类的方法中。在菜单出现之前,检查
是否(!canPaste&&!canSuggest)返回。作为设置这些变量的基础的两种方法都位于
EditText
类中:

  • 是,因此可能会被覆盖
  • 不是,因此必须隐藏在派生类中
一个更完整的答案是


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

“目前我使用的是:edittextPassword.setLongClickable(false);-禁用弹出式编辑菜单,太好了!”-如果这在所有设备上都有效,我会感到惊讶。不止一个制造商修改了<代码> EddieTe> <代码>如何操作这些操作。也请考虑您的用户。由于我对所有帐户使用随机生成的强密码(Dashlane),并且键入这些密码非常困难,因此我通常必须将密码更改为简单的密码,然后键入,然后将密码更改回强密码,因此我经常对不允许粘贴的密码的EditText感到沮丧。太糟糕了…每次双击/长按时,使用手势监听器并返回true。如果事件未得到处理,它将阻止系统做出相应的反应。请不要打扰您的用户-请记住,您无法阻止他们只是用另一部手机拍摄手机的照片。我当然理解用户方面,并且已经就用户烦恼、照片复制、,手动将数据从一个应用程序复制到另一个应用程序和其他用户“解决方法”。还有许多关于安卓惯例做什么和不做什么的对话。然而,不管怎样,对于这个应用程序,我有一个特定的要求来确保我的应用程序尽其所能防止复制/粘贴。如果不是这样的话,那么我当然不会寻找解决方案。