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?
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.
Tags und Links android textview android-3.0-honeycomb android-edittext paste