android - 我的应用程序如何判断当前日期是否是真正的当前日期?

标签 android time

我的目标是创建一个在特定日期过后将过期的应用程序版本。我希望时间在绝对日期而不是相对日期到期,

因此我的应用使用此代码来检查当前时间:

Calendar nowCalendar = Calendar.getInstance();

但是,用户可以通过更改日期和时间设置来操纵它。

问题: 我的应用程序如何判断用户是否操纵了他们的日期时间? 或者 如何判断用户是否设置了“自动”日期时间设置?

您能推荐一种最简单的查看当前时间的方法吗?

最佳答案

每次您的应用程序启动或退出时保存当前日期时间。如果下一次系统日期是更早的值,那么您就知道时间已被篡改。

您不可能拥有完美的解决方案,只有您可以访问 Internet。如果您这样做,那么您可以通过上百万种方式检查时间,甚至可以回拨您的服务器来检查试用许可证是否仍然有效。

检查互联网时间的一种方法是向 HTTP 服务器发出简单请求。例如谷歌(你应该为此使用你自己的服务器)。

要求:

HEAD / HTTP/1.1
Host: google.com

响应:

HTTP/1.1 301 Moved Permanently
Location: http://www.google.com/
Content-Type: text/html; charset=UTF-8
Date: Wed, 09 Mar 2011 16:04:48 GMT
Expires: Fri, 08 Apr 2011 16:04:48 GMT
Cache-Control: public, max-age=2592000
Server: gws
Content-Length: 219
X-XSS-Protection: 1; mode=block

如您所见,所有 HTTP 服务器都会在 Date header 中报告当前系统日期。

不过话又说回来,这根本不重要。如果 Internet 连接对于您的软件运行必不可少,您可以在自己的服务器上使用在线许可证检查。如果没有,则用户可以在使用时通过按下按钮关闭连接。

关于android - 我的应用程序如何判断当前日期是否是真正的当前日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5247899/

相关文章:

java - 启动 RxJava2 Observable.interval() 时没有初始延迟?

android - 如何使用 Espresso 检查 DialogFragment 是否可见,然后才执行操作?

php - 用php显示耗时

PHP 将整数转换为日期,strtotime 的反转

mysql - 我如何在mysql中获取日期的一周的第一天?

android - 如何将兄弟 View 限制为与 TextInputLayout 的 TextInputEditText 相同的高度

android - 如何使用 Android 设置带分隔线的自定义 ListView?

android - 在 webview.goBack() 上调用 "shouldOverrideUrlLoading"方法

android - 让用户更改 Android 中的时间

time - 惰性序列求值所用的时间