-3

我正在创建一个必须在三天后过期的应用程序。如果应用程序过期,用户应该无法重新安装该应用程序。我在第一次运行应用程序时将文件存储在 sdcard 上,然后我想检查设备的当前时间与文件的创建时间。我无法计算两个日期之间的差异。我写了以下代码。我怎样才能完成这项任务。请急。提前致谢。

Date firstFile =  new Date(firstFile.lastModified());
Date currentTime= new Date(currentfile.lastModified());

我能够获得两个变量中的值,但我需要计算天或分钟的差异

4

5 回答 5

0

以毫秒为单位获取时间,然后做一些简单的数学运算。

int days = (int) (milliseconds / (1000*60*60*24));

问题是这不安全。如果您删除存储日期的文件……您就完成了。

确保安全的唯一方法是在第一次启动时使用服务器映射手机。

有关过期应用程序的更多信息。

于 2012-11-28T13:46:43.917 回答
0

获取每个日期的毫秒。减去并与 3 天内的毫秒数进行比较。

    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;
    }

当然,正如其他人所提到的,用户需要做的就是删除文件或编辑它,然后他们就可以免费使用该应用程序了。但典型的用户可能不够精明,无法弄清楚这一点。仅取决于您的目标用户。

于 2012-11-28T14:08:18.683 回答
0

正确的做法是,在首次安装时通过 post api 将设备的 deviceId 和安装时间存储到服务器。从该服务器检查安装时间。

于 2019-11-26T07:31:17.570 回答
0

我现在正在回答我自己的问题。我们可以通过将安装时间存储在 sharedpreferences 中来做到这一点。然后在打开应用程序时在 sharedpreference 中检查它。用户不能手动修改它。

于 2018-08-03T09:45:31.663 回答
-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 的一些原因 -

  • 从JDK1.0
  • 使用两位数年份(从 1900 年开始)
  • 一月是0,十二月是11
  • 应该是不可变的
  • JDK1.1 中不推荐使用的大多数方法
  • 使用 1970 年表示的毫秒数

有关 Joda-time 的更多用法,请参阅IBM 教程

加上使用文件来强制试用期是徒劳的。您应该尝试服务器试用或存储使用日期(不是 lastModified)加密的文件。即使用户找到日期,他也无法更改。希望对你有所启发。

于 2012-11-28T14:06:02.760 回答