Protección contra el spam onclick ()

Estoy tratando de construir una aplicación de SMS que envía un SMS con una prensa en un botón, esta parte está trabajando, pero ahora estoy tratando de implementar una protección contra el spam. La protección contra spam significa que sólo puede enviar 1 SMS por 10 segundos (o superior).

He intentado esto:

sentSMS.setOnClickListener(new OnClickListener() { public void onClick(View v) { Timer timer = new Timer(); int seconds = 10000; timer.schedule(new TimerTask() { public void run() { processClick(); } }, seconds); }}); 

Pero esto no funciona cuando presiono el botón dos veces el SMS también está enviando dos veces.

Tal vez también es una idea para hacer un brindis que contiene cuántos segundos el usuario tiene que esperar, algo así:

 Toast.makeText(getBaseContext(), "Spam protection, wait "+secondstowait, Toast.LENGTH_SHORT).show(); 

¿Es todo esto posible hacer?

4 Solutions collect form web for “Protección contra el spam onclick ()”

Es necesario almacenar cuando se hizo clic en el último botón y luego ver si han transcurrido 10 segundos.

 long lastTimeSent = 0; //start at 0 sentSMS.setOnClickListener(new OnClickListener() { public void onClick(View v) { if(System.currentTimeMillis() > lastTimeSent + 10000){ //if at least 10 secs has passed from last click processClick(); lastTimeSent = System.currentTimeMillis(); //last time sent is now current time }else{ Toast.makeText(getBaseContext(), "Spam protection, please wait.", Toast.LENGTH_SHORT).show(); } }}); 

¿por qué no acaba de tomar una marca de tiempo cuando se hizo clic en el botón, a continuación, comparar el momento en que el botón se hizo clic de nuevo y ver si la diferencia es mayor que la cantidad de tiempo asignado?

Potencialmente, lo más fácil de hacer en mi opinión es desactivar el botón y utilizar el controlador incorporado (en el objeto de vista) para volver a activar el botón.

 sentSMS.setOnClickListener(new OnClickListener() { public void onClick(View v) { final View view = v; v.setEnabled(false); v.postDelayed(new Runnable(){ public void run(){ view.setEnabled(true); } }, 1000*10); }}); 

si desea mostrar un mensaje de brindis al usuario, notificándole sobre cuántos segundos quedan, debe escribir el código toast.maketext dentro del evento de programación del temporizador también

usar timestamp no será la manera más fácil, sino que hará la tarea más difícil.

También puede intentar desactivar el botón onclick durante diez segundos y volver a habilitarlo después de que expire el período de tiempo.

  • Droid: ¿Cómo obtener la identificación del botón del método onClick descrito en XML?
  • Descartar Snackbar A la izquierda deslizar
  • Android one OnClick método para varios botones?
  • Establecer determinado elemento en la vista de cuadrícula que no se puede hacer clic
  • Android Múltiples secuencias de clics en textview
  • Cómo ejecutar "callOnClick ()" para Android API 8?
  • Android listview obtiene el elemento seleccionado
  • ¿Cómo agregar onclicklistener a la vista de texto generada dinámicamente?
  • Cómo obtener el identificador de elemento en un controlador onItemClick
  • Android: Cambiar el fondo del botón en ListView Row con onClick
  • Android principiante: toque eventos en android gridview
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.