Кнопка Отключить на 6 часов соответственно международному времени - PullRequest
0 голосов
/ 06 июня 2018

Я очень плохо знаком с Android.Я хочу отключить кнопку после ее нажатия и повторно включить ее через 6 часов / 1 день в соответствии с системным временем.Это как вознаграждение пользователю каждый день.Пользователь может нажимать кнопку вознаграждения только один раз в день.
Когда я повторно открываю приложение до 6 часов, кнопка снова включается.Пожалуйста помоги!

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_log_in);

    Button mybutton=(Button)findViewById(R.id.buttonid);
    final long currenttime= System.currentTimeMillis();

    final SharedPreferences mysharedPreferences= getSharedPreferences("timeinfo", Context.MODE_PRIVATE);
    final SharedPreferences.Editor editor=mysharedPreferences.edit();
    final long secondtime=mysharedPreferences.getLong("writetime",currenttime);

     mybutton.setOnClickListener(new View.OnClickListener()
    {

        public void onClick(final View v)
        {
            editor.putLong("writetime",currenttime);
            v.setClickable(false);

            if (currenttime-secondtime>300000)
            {
                v.setClickable(true);
            }
            else
            {
                v.setClickable(false);
            }
        }
    });

1 Ответ

0 голосов
/ 06 июня 2018

Вы можете сэкономить время, когда нажимаете кнопку для общих настроек.Затем в следующий раз, когда вы создадите действие / фрагмент, вы прочитаете значение и вычтите его до текущего времени.Если прошло более 6 часов, вы активируете кнопку, если нет - отключите ее.Недостаток: если устройство рутовано и пользователь меняет сохраненное значение, у него бесконечные нажатия кнопок.Вы можете найти информацию о шифровании общих настроек, чтобы обойти это, например, здесь: https://medium.com/@ali.muzaffar/securing-sharedpreferences-in-android-a21883a9cbf8

myButton.setEnabled(false) // turn it off by default
if (currenttime-secondtime>=21600000) { // check if it can be enabled; 21600000ms is 6 hours
    myButton.setEnabled(true);  // wait time is up, enable button
    editor.putLong("writetime", currenttime); // since we enabled the button right now, we save the current time
    mybutton.setOnClickListener(new View.OnClickListener() { // user can click the button, add listener
        public void onClick(final View v) {
            // do whatever you want to do when the user can click the button
        }
    });
}

Я бы пошел с чем-то вроде этого (заменив mybutton.setOnClickListener (...) часть)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...