2017-01-09 7 views
-2

私のコードでは、最大試行回数を超えて認証に失敗した場合、メインページにユーザーを誘導するだけです。認証ページにアクセスし、認証ページが正常に認証されるまで試行を続けます。だからここ最大の試行回数を超えた場合に機能/ボタンをブロックする

public void onAuthenticationFailed() { 

    //Add one to the number of attempts taken 
    attemptCount += 1; 

    if (attemptCount < maxAttemptAllowance) { 
     super.onAuthenticationFailed(); 
     Toast.makeText(context, "Fingerprint Authentication Failed, Please Try Again", Toast.LENGTH_SHORT).show(); 
    } else { 
     //here is where the system block user if they exceed the maximum attempts 
     Toast.makeText(context, "Exceed maximum attempts, try again in 5 minutes later", Toast.LENGTH_SHORT).show(); 
     context.startActivity((new Intent(context, Main.class))); 
    } 
} 

は、私は、ユーザーが最大の試行を超えた場合に5分間の機能ではなく、システム全体を無効に/制限/遮断する可能性がとにかくです、私の質問です。

事前に感謝を私が本当に現在の時刻とともにSharedPreferenceで、この問題の考え方/ロジック

答えて

1

ストアに条件を持っていないような方法を提案するuのみんな喜んであれば、たとえそのようにアプリが閉じても値は維持されます。これは、このようなことをするより良い選択肢です。 :)

0

ここに遅延の実施例があります。ボタンを非表示にして(必要に応じて変更することができます)、残りの時間を再度表示します。

private CountDownTimer delay_timer; 
public void Delay_Timer(final int length){ 

    int min; 
    Log.e("Delay timer"," Running "); 
    delay_timer = new CountDownTimer(length*1000, 1000) { 
     public void onTick(long millisUntilFinished) { 
      Log.e("Delay timer"," onTick "+"" +(millisUntilFinished/1000)+ " Seconds remaining."); 
      if(delay!=null) delay.setText("Button will be Enabled in "+SecToMin(millisUntilFinished/1000)+" sec."); 
     } 
     public void onFinish() { 
      enable_next(); 
     } 

    }; 
    try{ 
     disable_next(); 
     delay_timer.start(); 
    }catch (Exception ex){ 
     Log.e("Delay excpt"," "+ex.getMessage()); 
     enable_next(); 
    } 
} 

private String SecToMin(long totalSecs){ 
    long hours = totalSecs/3600; 
    long minutes = (totalSecs % 3600)/60; 
    long seconds = totalSecs % 60; 

    String timeString = String.format("%02d:%02d:%02d", hours, minutes, seconds); 
    return timeString; 
} 

public void Stop_recording_timer(){ 
    delay_timer.cancel(); 
} 

private void enable_next(){ 
    if(submit!=null){ 
     delay.setText(""); 
     submit.setVisibility(View.VISIBLE); 
    } 
} 

private void disable_next(){ 
    if(submit!=null){ 
     submit.setVisibility(View.INVISIBLE); 
    } 
} 

あなたの試行がコールを超過したとき。

if(exceeds){ 
    Delay_Timer(time_in_secs); 
    } 
関連する問題