When the PIN is typed 4 wrong times, it has to block 15 seconds before make new tries
This commit is contained in:
parent
c554471115
commit
3941585740
3 changed files with 93 additions and 2 deletions
|
@ -12,6 +12,7 @@ import android.text.Editable;
|
|||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
import android.widget.EditText;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
@ -41,6 +42,19 @@ public class PinRequestActivity extends AppCompatActivity {
|
|||
@BindView(R.id.btnOK)
|
||||
Button btnOK;
|
||||
|
||||
@BindView(R.id.txtBadtry)
|
||||
TextView txtBadtry;
|
||||
|
||||
/*
|
||||
* Contains the bad tries
|
||||
* */
|
||||
private int tries = 0;
|
||||
|
||||
/*
|
||||
* Seconds counter
|
||||
* */
|
||||
private int seconds = 15;
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -97,11 +111,74 @@ public class PinRequestActivity extends AppCompatActivity {
|
|||
}
|
||||
else{
|
||||
|
||||
/*
|
||||
* One more bad try
|
||||
* */
|
||||
++tries;
|
||||
|
||||
final Activity activity = this;
|
||||
|
||||
etPassword.setTextColor(Color.RED);
|
||||
|
||||
/*
|
||||
* User can not go more up to 5 bad tries
|
||||
* */
|
||||
if(tries==4){
|
||||
tries = 0;
|
||||
|
||||
btnOK.setEnabled(false);
|
||||
etPassword.setEnabled(false);
|
||||
txtBadtry.setVisibility(View.VISIBLE);
|
||||
|
||||
txtBadtry.setText(txtBadtry.getText().toString().replace("%%",String.valueOf(seconds)));
|
||||
|
||||
final Timer t = new Timer();
|
||||
//Set the schedule function and rate
|
||||
t.scheduleAtFixedRate(new TimerTask() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
--seconds;
|
||||
|
||||
if(seconds==0){
|
||||
t.cancel();
|
||||
|
||||
seconds = 15;
|
||||
|
||||
activity.runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
btnOK.setEnabled(true);
|
||||
etPassword.setEnabled(true);
|
||||
txtBadtry.setVisibility(View.INVISIBLE);
|
||||
etPassword.setText("");
|
||||
etPassword.setTextColor(Color.WHITE);
|
||||
}
|
||||
});
|
||||
}
|
||||
else{
|
||||
activity.runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
txtBadtry.setText(activity.getResources().getString(R.string.wrong_pin_wait).replace("%%",String.valueOf(seconds)));
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
},
|
||||
//Set how long before to start calling the TimerTask (in milliseconds)
|
||||
1000,
|
||||
//Set the amount of time between each execution (in milliseconds)
|
||||
1000);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* Set in red the rext and reset the password after a period of time
|
||||
* */
|
||||
final Activity activity = this;
|
||||
etPassword.setTextColor(Color.RED);
|
||||
final Timer t = new Timer();
|
||||
//Set the schedule function and rate
|
||||
t.scheduleAtFixedRate(new TimerTask() {
|
||||
|
|
|
@ -45,4 +45,16 @@
|
|||
android:textSize="18dp"
|
||||
android:layout_alignParentRight="true"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/txtBadtry"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@+id/btnOK"
|
||||
android:text="@string/wrong_pin_wait"
|
||||
android:layout_marginTop="5dp"
|
||||
android:layout_alignParentRight="true"
|
||||
android:textColor="@color/red"
|
||||
android:layout_marginRight="10dp"
|
||||
android:visibility="invisible"/>
|
||||
|
||||
</RelativeLayout>
|
|
@ -206,6 +206,8 @@
|
|||
<string name="fee_capital">Fee</string>
|
||||
<string name="ok">OK</string>
|
||||
|
||||
<string name="wrong_pin_wait">Wrong PIN you have to wait %% seconds ...</string>
|
||||
|
||||
<string name="loading">Loading...</string>
|
||||
<string name="pay_to">Pay to</string>
|
||||
|
||||
|
|
Loading…
Reference in a new issue