Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Android: Cómo inhabilitar TOTALMENTE la función de copiar y pegar en Edittext

Soy bastante nuevo en el área de desarrollo de Android y recientemente he hv encontró un problema difícil.

Yo estaba tratando de hacer un Edittext que NO DEBE permitir que el usuario copie el contenido o pegue contenido en él. I hv googled mucho y encontrar allí parece ser 2 maneras populares de hacer tan:

1ª vía, para configurarlo en el fichero de disposición:

android:longClickable="false" 

2ª vía, para programarlo:

 myEdittext.setCustomSelectionActionModeCallback(new ActionMode.Callback() { public boolean onPrepareActionMode(ActionMode mode, Menu menu) { return false; } public void onDestroyActionMode(ActionMode mode) { } public boolean onCreateActionMode(ActionMode mode, Menu menu) { return false; } public boolean onActionItemClicked(ActionMode mode, MenuItem item) { return false; } }); 

Pero acabo de encontrar que cualquier manera que elegí, el área de edittext sólo se podía inhabilitar de largo clickable, que entonces impide que el usuario tenga acceso al "selecciona todo, copia y pega" el menú con hacer clic largo. Pero tanto la solución 2 NO impedía que el usuario accediera a la función "pegar" simplemente con un simple toque en el cursor.

Así que mi pregunta es: ¿cómo podría bloquear TOTALMENTE el usuario de copiar y pegar la función en un cierto Edittext. ¿Hay alguien que ayude? Muchas gracias

3 Solutions collect form web for “Android: Cómo inhabilitar TOTALMENTE la función de copiar y pegar en Edittext”

Hay una posibilidad, al deshabilitar el manejador del cursor. No obtendrá el botón de pegar, pero tampoco podrá mover el cursor con el toque.

 @Override public boolean onTouchEvent(MotionEvent event) { if (event.getActionMasked() == MotionEvent.ACTION_UP && mDisableCursorHandle) { // Hack to prevent keyboard and insertion handle from showing. cancelLongPress(); } return super.onTouchEvent(event); } 

Puede ocultar totalmente "seleccionar todo, copiar y pegar" el menú y también "pegar" la función que aparece cuando toque simple en el cursor.

Para eso tienes que crear una clase EditText personalizada. Aquí hay un ejemplo…

 // Custom EditText class public class NoMenuEditText extends EditText { private final Context context; /** This is a replacement method for the base TextView class' method of the same name. This * method is used in hidden class android.widget.Editor to determine whether the PASTE/REPLACE popup * appears when triggered from the text insertion handle. Returning false forces this window * to never appear. * @return false */ boolean canPaste() { return false; } /** This is a replacement method for the base TextView class' method of the same name. This method * is used in hidden class android.widget.Editor to determine whether the PASTE/REPLACE popup * appears when triggered from the text insertion handle. Returning false forces this window * to never appear. * @return false */ @Override public boolean isSuggestionsEnabled() { return false; } public NoMenuEditText(Context context) { super(context); this.context = context; init(); } public NoMenuEditText(Context context, AttributeSet attrs) { super(context, attrs); this.context = context; init(); } public NoMenuEditText(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); this.context = context; init(); } private void init() { this.setCustomSelectionActionModeCallback(new ActionModeCallbackInterceptor()); this.setLongClickable(false); } /** * Prevents the action bar (top horizontal bar with cut, copy, paste, etc.) from appearing * by intercepting the callback that would cause it to be created, and returning false. */ private class ActionModeCallbackInterceptor implements ActionMode.Callback { private final String TAG = NoMenuEditText.class.getSimpleName(); public boolean onCreateActionMode(ActionMode mode, Menu menu) { return false; } public boolean onPrepareActionMode(ActionMode mode, Menu menu) { return false; } public boolean onActionItemClicked(ActionMode mode, MenuItem item) { return false; } public void onDestroyActionMode(ActionMode mode) {} } } 

Utilice este EditText en su diseño. Ahora, no mostrará ningún menú de copiar / pegar. Mostrará solamente la manija azul pero cuando usted chasca encendido que usted no conseguirá ningún estallido para arriba de la opción de la goma.

Espero que esto ayude…

Mejor manera programática es:

 myEdittext.setLongClickable(false); 

O, sólo en xml

 android:longClickable="false" 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.