Android - verhindern, dass edittext kopieren / einfügen und doppeltippen wählen Sie alle [duplizieren]

9

Ich suche nach einer Lösung, um das lange Bearbeiten-Menü (Kopieren / Einfügen) und auch die Doppel-Auswahl-Alles-Funktion für ein Textfeld zu deaktivieren. Ich habe hier einige Lösungswege zu diesem Thema auf ähnliche Weise durchgelesen, muss aber noch einen Schritt weiter gehen.

Für diese App muss ich verhindern, dass der Benutzer die Kopier- / Einfügefunktionen in meiner App verwendet und eine Möglichkeit benötigt, diese Funktionalität zu deaktivieren, die sowohl auf der 2.3 API als auch auf einem neueren Tablet funktioniert. Ich teste mit einem NexusOne-Telefongerät und einem Galaxy-Tablet. (MinSDK ist 8, Ziel ist 10)

Momentan verwende ich dies (als Beispiel):     edittextPassword.setLongClickable (false); - Deaktiviert das Popup-Bearbeitungsmenü, Großartig!

Diese Methode funktioniert auf dem Telefongerät, um das Popup-Menü des Bearbeitungsmenüs zu verhindern. Auf dem Tablet ist dies auch von der Aktion für langes Drücken deaktiviert. Das Tablet verfügt jedoch über neuere Funktionen eines Doppeltiegers, der alle Texte auswählen und das Bearbeitungsmenü öffnen wird. Gibt es eine Möglichkeit für eine ältere API, eine neuere API-Funktion abzubrechen / zu sperren / zu deaktivieren oder die Doppeltipp-Geste zu verhindern?

Update: Mit einer Kombination von setLongClickable (false) und setOnTouchListener verbunden mit einem GestureDetector (danke Nikola für den Vorschlag) Ich bin in der Lage, Doppel-Klick und lange klicken Sie auf Bearbeiten Menüs aus dem Öffnen.

Der nächste Teil, um herauszufinden, ist dies ... auf Samsung-Handys (Galaxy S, nicht sicher über andere Geräte im Moment), wenn Sie in ein Feld tippen, erhalten Sie einen Cursor und eine schwebende Cursor-Pointer-Taste (richtig Name??). Klicken Sie auf diese Zeigertaste, um das Bearbeitungsmenü zu öffnen. Wer weiß, wie man das deaktiviert? Mein einziger Workaround ist das Löschen der Zwischenablage für BeforeTextChanges und AfterTextChanges mit einem TextWatcher. Dadurch wird sichergestellt, dass selbst wenn Sie das Menü Kopieren / Einfügen aufrufen, die Zwischenablage gelöscht wird und nichts mehr eingefügt werden kann.

    
Hunter23 21.01.2013, 21:19
quelle

1 Antwort

1

In Bezug auf die 'schwebende Cursorzeiger-Schaltfläche', die als Cursorcontroller bezeichnet wird, oder handle und das Kontextmenü, das beim Klicken angezeigt wird, ja, es gibt eine Möglichkeit, es zu deaktivieren. Ich nehme an, dass Sie sich darauf beziehen:

Zusätzlich zum setLongClickable (false) - und setOnTouchListener-Code besteht die Korrektur darin, zu verhindern, dass das PASTE / REPLACE-Menü in show() Methode der (nicht dokumentierten) android.widget.Editor klasse. Bevor das Menü angezeigt wird, erfolgt eine Überprüfung auf if (!canPaste && !canSuggest) return; . Die beiden Methoden, die als Grundlage für diese Variablen verwendet werden, sind beide in der Klasse EditText :

Eine vollständigere Antwort finden Sie hier .

Wie bereits von @CommonsWare erwähnt, haben die einzelnen Gerätehersteller möglicherweise das Standard-AOSP-Verhalten des EditText -Steuerelements geändert, daher ist ein Test erforderlich.

    
CJBS 06.03.2015 07:16
quelle