Как обработать событие «вставка» в Android 3.0 (Honeycomb)? - PullRequest
9 голосов
/ 11 июля 2011

У меня есть настроенный EditText, для которого нужно выполнить настраиваемую «вставку».

Я переопределил onTextContextMenuItem (int id) для обработки «вставки», запрошенной, выбрав контекстное меню.

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

Это работает в Android до 3.0.
В 3.0, однако, есть небольшой виджет "вставка" рядом с виджетом курсора, если он нажат или удерживается курсор.
enter image description here
Когдапользователь "вставляет" из этого виджета, onTextContextMenuItem(int id) не будет вызван.В результате я не могу выполнить кастомную вставку.
Кто-нибудь знает, что это за маленький виджет "вставка"?Какой метод я должен изменить, чтобы сделать мою собственную "пасту"?

1 Ответ

1 голос
/ 04 января 2012

Чтобы охватить все базы, это должно зависеть от API, поэтому вы все равно должны взять на себя обязательство делать это двумя различными способами.

Для новых API новый интерфейс android.content.ClipboardManager предоставляет все, что вам нужно передатьлюбой MIME-тип по вашему желанию.

Для старых API вы должны быть хитрыми, если рассчитываете поиграть со старым android.text.ClipboardManager.Просто base-64 кодирует данные вашего изображения (или чего-либо еще) и отправляет их в виде текста.На принимающей стороне просто поверните процесс в обратном направлении.

Вы даже можете "автоматически определить", определив, есть ли у вас android.text.ClipboardManager или android.content.ClipboardManager и действовать соответственно!

Кроме того, ваш обработчикМетод должен возвращать super.onTextContextMenuItem(id), если вы ничего не обрабатываете.Может быть, артефакт редактирования?

Что касается виджета вставки, то он отсутствует в старых API или может присутствовать в определенных пользовательских интерфейсах OEM, и вам, вероятно, придется реализовать это самостоятельно или использовать устаревший методвзаимодействие.После помещения текста в буфер обмена команда «Вставить» отображается в «нормальных» контекстных меню.

...