Wie behandelt man das Ereignis "Einfügen" in Android 3.0 (Honeycomb)?

9

Ich habe einen angepassten EditText, der angepasst werden muss.

Ich habe onTextContextMenuItem (int id) überschrieben, um "paste" zu verarbeiten, die durch Auswahl des Kontextmenüs angefordert wurde.

%Vor%

Dies funktioniert in Android vor 3.0.
In 3.0 gibt es jedoch ein kleines "Einfügen" -Widget in der Nähe des Cursor-Widgets, wenn es lange gedrückt ist, oder der Cursor wird angetippt.

Wenn Benutzer dieses Widget "einfügen", wird onTextContextMenuItem(int id) nicht aufgerufen. Infolgedessen kann ich die angepasste Paste nicht machen.
Weiß jemand, was dieses kleine "Einfügen" Widget ist? Welche Methode sollte ich außer Kraft setzen, um meinen eigenen "Paste" zu machen?

    
Ben Lee 11.07.2011, 09:29
quelle

1 Antwort

1

Um alle Grundlagen abzudecken, muss dies API-spezifisch sein, also müssen Sie sich dazu verpflichten, es auf zwei verschiedene Arten zu tun.

Für neue APIs bietet die neue Schnittstelle android.content.ClipboardManager alles, was Sie zum Übertragen eines beliebigen MIME-Typs benötigen.

Bei alten APIs musst du tricky sein, wenn du erwartest mit dem alten android.text.ClipboardManager zu spielen. Einfach Base-64 kodiere die Daten deines Bildes (oder was auch immer) und sende das als Text. Auf der Empfangsseite, einfach den Prozess umkehren.

Sie können sogar automatisch erkennen, ob Sie android.text.ClipboardManager oder android.content.ClipboardManager haben und entsprechend handeln!

Außerdem sollte Ihre Handler-Methode super.onTextContextMenuItem(id) zurückgeben, wenn Sie nichts verarbeiten. Vielleicht ein Bearbeitungsartefakt?

Was das Einfüge-Widget angeht, das in alten APIs nicht vorhanden ist oder auf bestimmten OEM-Benutzeroberflächen vorhanden sein kann, müssen Sie es wahrscheinlich selbst implementieren oder eine verschlechterte Methode der Interaktion verwenden. Sobald Sie Text in die Zwischenablage gelegt haben, erscheint der Befehl Einfügen in den "normalen" Kontextmenüs.

    
escape-llc 04.01.2012, 12:41
quelle