Dans mon application, il y a un écran d'enregistrement, dans lequel je ne veux pas que l'utilisateur puisse copier/coller du texte dans l'écran d'enregistrement. EditText
champ. J'ai défini un onLongClickListener
sur chaque EditText
de sorte que le menu contextuel affichant copier/coller/méthode de saisie et d'autres options ne s'affiche pas. Ainsi, l'utilisateur ne sera pas en mesure de copier/coller dans les champs d'édition.
OnLongClickListener mOnLongClickListener = new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
// prevent context menu from being popped up, so that user
// cannot copy/paste from/into any EditText fields.
return true;
}
};
Mais le problème se pose si l'utilisateur a activé un clavier tiers autre que celui par défaut d'Android, qui peut avoir un bouton pour copier/coller ou qui peut afficher le même menu contextuel. Comment désactiver le copier/coller dans ce cas ?
Veuillez me faire savoir s'il existe d'autres moyens de copier/coller. (et éventuellement comment les désactiver)
Toute aide serait appréciée.
0 votes
Si l'opération "coller" provient d'une IME, vous n'avez aucun moyen standard de la distinguer des frappes normales. Une idée à essayer est de mesurer le temps entre l'arrivée de chaque caractère et si le temps est trop court, alors les caractères proviennent d'une opération de "collage".
0 votes
Cela semble être une sale solution ! Cela vaut la peine de regarder.
1 votes
Utiliser Android:longClickable="false"
0 votes
La conclusion pour tout le monde semble être la suivante : on ne peut vraiment pas le faire joliment. Cependant, pour mes besoins personnels, je veux désactiver le collage parce que je ne peux pas gérer la présence de certains caractères, et que le collage peut les autoriser dans mon EditText. Une solution consiste donc à ajouter un écouteur de modification de texte et, dans la méthode afterTextChanged, à supprimer ces caractères s'ils sont présents. Vous pouvez ajouter plusieurs écouteurs et ainsi en créer un qui empêche le texte d'être trop long, les caractères non valides, etc. Il s'agit de pas préférable. Mais si quelqu'un cherchait une solution de contournement à moitié décente, je pense que c'est celle-là.