我正在创建一个必须在三天之后过期的应用。如果应用程序过期,用户应该无法重新安装该应用程序。我在第一次运行应用程序时在sdcard上存储了一个文件,然后我想检查设备的当前时间到文件创建时间的时间。 我无法计算两个日期之间的差异。我写了下面的代码。我怎么能完成这个任务。它很紧急。提前谢谢。
Date firstFile = new Date(firstFile.lastModified());
Date currentTime= new Date(currentfile.lastModified());
我能够获得两个变量中的值,但我需要计算天数或分钟数的差异
答案 0 :(得分:0)
以毫秒计算时间,然后做一些简单的数学运算。
int days = (int) (milliseconds / (1000*60*60*24));
问题是这不安全。如果你删除了存储日期的文件......你就完成了。
确保安全的唯一方法是使用服务器在第一次启动时映射手机。
答案 1 :(得分:0)
获取每个日期的毫秒数。在3天内减去并与millis数进行比较。
Date firstFile = new Date(firstFile.lastModified());
Date currentTime= new Date(currentfile.lastModified());
long millisInADay = 1000*60*60*24;
long maxMillis = millisInADay * 3;
if (maxMillis < (currentTime.getTime() - firstFile.getTime()) {
// expired;
}
当然,正如其他人提到的所有用户需要做的就是删除文件或编辑它然后他们可以免费使用该应用程序。但是,典型的用户可能不会足够聪明地弄清楚这一点。只取决于您的目标用户。
答案 2 :(得分:0)
我现在正在回答自己的问题。我们可以通过将安装时间存储在sharedpreferences中来做到这一点。然后在打开应用程序时在sharedpreference中检查它。用户无法手动修改它。
答案 3 :(得分:0)
正确的做法是,在首次安装时通过post api将设备的deviceId和安装时间存储到服务器。从此服务器检查安装时间。
答案 4 :(得分:-1)
我的第一个建议是不使用默认的datetime包。转到JodaTime库。
DateTime firstFile = new DateTime(firstFile.lastModified());
DateTime currentTime= new DateTime(currentfile.lastModified());
long milles = currentTime.getMillis() - firstFile.getMillis();
int days = (int) (milliseconds / (1000*60*60*24));
考虑Jodatime而不是java.util.Date的一些理由 -
有关Joda-time的更多用法,请参阅IBM tutorial。
另外使用文件来强制执行试用期是徒劳的。您应该尝试服务器试用或存储使用日期加密的文件(而不是lastModified)。即使用户找到了他无法改变的日期。希望它能激励你。