我的目标是创建一个版本的应用程序,该版本将在特定日期过后过期。我希望时间以绝对日期到期,而不是相对日期,
因此我的应用程序使用此代码来检查当前时间:
Calendar nowCalendar = Calendar.getInstance();
但是,用户可以通过更改日期和时间来操纵此操作。时间设置。
问题: 我的应用如何判断用户是否操纵了他们的日期时间? 要么 如何判断用户是否设置了“自动”日期时间设置?
您能否建议在当前时间检查互联网的最简单方法?
答案 0 :(得分:8)
每次启动或退出应用程序时,请保存当前日期时间。如果下次系统日期是较早的值,那么您就知道时间已被篡改。
只有您可以访问互联网,才能拥有完美的解决方案。如果你这样做,那么你可以通过一百万种方式查看时间,甚至回调你的服务器以检查试用许可证是否仍然有效。
检查互联网时间的一种方法是向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
标题中报告当前系统日期。
但话说回来,这根本不重要。如果Internet连接对于您的软件工作至关重要,您可以在自己的服务器上使用在线许可证检查。如果没有,那么用户可以在使用时按下按钮关闭连接。
答案 1 :(得分:-1)
您可以访问实时投掷网络时间协议。您可以在Wikipedia
中查看定义