我是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);
}
}
});
答案 0 :(得分:0)
您可以节省按下共享偏好按钮的时间。 然后,下次创建活动/片段时,将读取该值并将其减去当前时间。如果超过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(...)部分)