Android 3.0(Honeycomb)で「貼り付け」イベントを処理する方法は?

android android-3.0-honeycomb android-edittext paste textview
Android 3.0(Honeycomb)で「貼り付け」イベントを処理する方法は?

カスタマイズした「貼り付け」を行う必要がある、カスタマイズしたEditTextがあります。

onTextContextMenuItem(int id)をオーバーライドして、コンテキストメニューを選択して要求された「貼り付け」を処理します。

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

これは、3.0より前のAndroidで機能します。 +ただし、3.0では、カーソルウィジェットが長押しされるか、カーソルがタップされると、カーソルウィジェットの近くに小さな「貼り付け」ウィジェットがあります。 + image:https://i.stack.imgur.com/EQncz.png [ここに画像の説明を入力] +ユーザーがこのウィジェットから「貼り付け」を行うと、 `onTextContextMenuItem(int id)`は呼び出されません。 その結果、カスタマイズした貼り付けを行うことができません。 +その小さな「貼り付け」ウィジェットが何かを知っている人はいますか? 独自の「貼り付け」を行うには、どのメソッドをオーバーライドする必要がありますか?

  9  2


ベストアンサー

すべてのベースをカバーするには、これはAPI固有である必要があるため、とにかく2つの異なる方法でそれを行う必要があります。

新しいAPIの場合、新しい `android.content.ClipboardManager`インターフェースは、必要なMIMEタイプを転送するために必要なすべてを提供します。

古いAPIの場合、古い `android.text.ClipboardManager`で遊ぶことを期待する場合は注意が必要です。 画像のデータ(または何でも)をbase-64エンコードして、テキストとして送信します。 受信側では、単にプロセスを逆にします。

android.text.ClipboardManager`または android.content.ClipboardManager`が存在するかどうかを判断することで、「自動検出」することもできます。

また、何も処理しない場合、ハンドラーメソッドは `super.onTextContextMenuItem(id)`を返す必要があります。 編集アーティファクトかもしれませんか?

貼り付けウィジェットに関しては、これは古いAPIには存在しないか、特定のOEM UIに存在する可能性があり、おそらくそれを自分で実装するか、低下した対話方法を使用することになります。 クリップボードにテキストを配置すると、「通常の」コンテキストメニューに「貼り付け」コマンドが表示されます。

1


タイトルとURLをコピーしました