android 限制某个操作每天只能操作指定的次数

最近有个需求,要求启动页的拦截页每天只能显示3次,超过三次就显示别的页面,然后到第二天才可以再次显示,利用SharePreferences保存天数和每天的次数,大概是思路是:判断 如果是同一天,就去拿保存的次数,当次数小于3才执弹出拦截页,然后,每次弹出,次数就加1,并且保存次数和当天的时间;如果不是同一天,就把次数赋值为1,并且把当天赋值给最后访问的时间,然后保存当前的次数。具体实现如下:

 

package com.example.demo1.test;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;

import com.example.demo1.R;

import java.util.Calendar;

public class TwoActivity extends AppCompatActivity {
    private static final String TAG = "TwoActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_two);
        findViewById(R.id.test).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                int frequency =   SharePreferencesUtils.getIntValue(TwoActivity.this,"time_and_frequency","frequency");
                int today = Calendar.getInstance().get(Calendar.DAY_OF_YEAR);
                int lastDay = SharePreferencesUtils.getIntValue(TwoActivity.this,"time_and_frequency","lastDay");
                Log.i(TAG, "onClick-----: "+"today:"+today);
                Log.i(TAG, "onClick-----: "+"lastDay:"+lastDay);
                Log.i(TAG, "onClick-----: "+"frequency:"+frequency);
                if(today != lastDay)
                {
                     //TODO执行拦截页操作;

                    //修改SharePreferences日期为当前日期,并记录次数一次;
                    frequency = 1;
                    Log.i(TAG, "onClick-----: "+"不是同一天执行次数"+frequency);
                    //把today赋值给lastDay  让today == lastDay
                    SharePreferencesUtils.putIntValue(TwoActivity.this,"time_and_frequency","lastDay",today);
                    SharePreferencesUtils.putIntValue(TwoActivity.this,"time_and_frequency","frequency",frequency);
                }else if(today == lastDay){
                    if(frequency < 3) {
                        //TODO执行拦截页操作;

                        Log.i(TAG, "onClick-----: "+"同一天执行次数"+frequency);
                        frequency++;
                        SharePreferencesUtils.putIntValue(TwoActivity.this,"time_and_frequency","lastDay",lastDay);
                             SharePreferencesUtils.putIntValue(TwoActivity.this,"time_and_frequency","frequency",frequency);
                    }else {
                        //TODO执行别的操作

                        Log.i(TAG, "onClick-----: "+"超过三次");
                    }
                }

            }
        });
    }

}

 

SharePreferencesUtils代码如下:

/*
 * Copyright (c) 2017- WaitFun Inc. All Rights Reserved.
 */
package com.example.demo1.test;

import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;

import java.util.Map;

public class SharePreferencesUtils {

    private final static String TAG = SharePreferencesUtils.class.getName();

    private final static SharedPreferences getSharePreferences(Context context, String fileName) {
        return context.getSharedPreferences(fileName, Activity.MODE_PRIVATE);
    }

    public static String getStrValue(Context context, String fileName, String key) {
        return getSharePreferences(context, fileName).getString(key, "");
    }
    public static int getIntValue(Context context, String fileName, String key) {
        return getSharePreferences(context, fileName).getInt(key, 0);
    }
    public static boolean getBooleanValue(Context context, String fileName, String key) {
        return getSharePreferences(context, fileName).getBoolean(key, false);
    }

    public static void putBooleanValue(Context context, String fileName, String key, boolean value) {
        Editor editor = getSharePreferences(context, fileName).edit();
        editor.putBoolean(key, value);
        editor.commit();
        editor.clear();
        editor = null;
    }

    public static void putStringValue(Context context, String fileName, String key, String value) {
        Editor editor = getSharePreferences(context, fileName).edit();
        editor.putString(key, value);
        editor.commit();
        editor.clear();
        editor = null;
    }
    public static void putIntValue(Context context, String fileName, String key, int value) {
        Editor editor = getSharePreferences(context, fileName).edit();
        editor.putInt(key, value);
        editor.commit();
        editor.clear();
        editor = null;
    }
    public static void putMapStringValue(Context context, String fileName, Map<String, String> editorValue) {
        Editor editor = getSharePreferences(context, fileName).edit();
        for (Map.Entry<String, String> entry : editorValue.entrySet()) {
            String key = entry.getKey();
            String value = entry.getValue();
            editor.putString(key, value);
        }
        editor.commit();
        editorValue.clear();
        editorValue = null;
    }

    public static void putMapIntegerValue(Context context, String fileName, Map<String, Integer> editorValue) {
        Editor editor = getSharePreferences(context, fileName).edit();
        for (Map.Entry<String, Integer> entry : editorValue.entrySet()) {
            String key = entry.getKey();
            Integer value = entry.getValue();
            editor.putInt(key, value);
        }
        editor.commit();
        editorValue.clear();
        editorValue = null;
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值