让Android应用程序在30天后过期

时间:2017-06-24 10:00:39

标签: android

我需要实现一个用户只能在某个日期之前使用它的应用程序,例如:2017年12月31日。我想我会在每个活动的onResume()函数上实现它,以防止用户在内存中运行应用程序而不会杀死它。

目前,我有6个活动,为每个活动添加代码是可以接受的,但是当应用程序变大时,这种方式非常愚蠢。我该如何改进呢?

3 个答案:

答案 0 :(得分:0)

试试这种方式。 在splash activityMainActivity

中执行此操作
private final SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
private final long ONE_DAY = 24 * 60 * 60 * 1000;

@Override
protected void onCreate(Bundle state){
    SharedPreferences preferences = getPreferences(MODE_PRIVATE);
    String installDate = preferences.getString("InstallDate", null);
    if(installDate == null) {
        // First run, so save the current date
        SharedPreferences.Editor editor = preferences.edit();
        Date now = new Date();
        String dateString = formatter.format(now);
        editor.putString("InstallDate", dateString);
        // Commit the edits!
        editor.commit();
    }
    else {
        // This is not the 1st run, check install date
        Date before = (Date)formatter.parse(installDate);
        Date now = new Date();
        long diff = now.getTime() - before.getTime();
        long days = diff / ONE_DAY;
        if(days > 30) { // More than 30 days?
             // Expired !!!
        }
    }

    ...
}

答案 1 :(得分:0)

截至2014年12月31日,以下内容为isExpired

GregorianCalendar expDate = new GregorianCalendar( 2013, 11, 31 ); // midnight
GregorianCalendar now = new GregorianCalendar();

boolean isExpired = now.after( expDate );

注意:月份从0开始。 1月= 0,12月= 11。

答案 2 :(得分:0)

如您提到的一个月检查期限,我强烈建议采用在线方式。我的意思是你需要有一个验证到期的网络服务,否则用户可能会欺骗你,用户可以在本地更改设备的日期和时间,他将继续使用。而对于你的第二个问题

Currently, I have 6 activities, add code to each activity is acceptable, but when an application becomes larger, this way is very stupid. How can I improve it?

不,随着更多活动的增加,您不需要在每个活动中实施可能是未来应用扩展的不良方法。您可以执行以下步骤

1) Create a BaseActivity 
2) Your every activity should extend BaseActivity
3) In onResume() method of your BaseActivity, check validity stuff of app user

由于BaseActivity总是一个超类,这意味着每次你的活动onResume调用时,onResume()都会调用它的超类onResume。我希望能帮助你。