如何处理Android 3.0(Honeycomb)中的"粘贴"事件?

Ben*_*Lee 9 android paste textview android-edittext android-3.0-honeycomb

我有一个自定义的EditText,需要自定义"粘贴".

我重写onTextContextMenuItem(int id)来处理通过选择上下文菜单请求的"粘贴".

@Override
public boolean onTextContextMenuItem(int id) {
  switch(id){
  case android.R.id.paste:
    doMyPaste();
    return true;
  }
}
Run Code Online (Sandbox Code Playgroud)

这适用于3.0之前的Android.
但是,在3.0中,如果长按按钮,或者点击光标,则在光标小部件附近会有一个小的"粘贴"小部件.
在此输入图像描述
当用户从此窗口小部件"粘贴"时,onTextContextMenuItem(int id)将不会调用该窗口小部件.结果,我不能做自定义粘贴.
有谁知道那个小的"粘贴"小部件是什么?我应该用哪种方法覆盖自己的"粘贴"?

esc*_*llc 1

为了涵盖所有基础,这必须是特定于 API 的,因此您必须承诺以两种不同的方式进行操作。

对于新的 API,新的android.content.ClipboardManager接口提供了传输所需的任何 MIME 类型所需的一切。

对于旧的 API,如果您希望使用旧的android.text.ClipboardManager. 只需对图像(或其他内容)的数据进行 base-64 编码并将其作为文本发送即可。在接收端,只需颠倒该过程即可。

android.text.ClipboardManager您甚至可以通过确定您是否有或来“自动检测”android.content.ClipboardManager并采取相应行动!

super.onTextContextMenuItem(id)另外,如果您不处理任何内容,您的处理程序方法应该返回。也许是编辑神器?

至于粘贴小部件,它在旧 API 中不存在,或者可能存在于某些 OEM UI 中,您可能只能自己实现它,或者使用降级的交互方法。将文本放入剪贴板后,粘贴命令将显示在“正常”上下文菜单中。