我的应用如何判断当前日期是真实的当前日期?

gre*_*egm 1 time android

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

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

Calendar nowCalendar = Calendar.getInstance();
Run Code Online (Sandbox Code Playgroud)

但是,用户可以通过更改其日期和时间设置来操纵此操作.

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

你能建议当前时间检查互联网的最简单方法吗?

vbe*_*nce 8

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

只有您可以访问互联网,才能拥有完美的解决方案.如果你这样做,那么你可以通过一百万种方式来查看时间,甚至回调你的服务器以检查试用许可证是否仍然有效.

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

请求:

HEAD / HTTP/1.1
Host: google.com
Run Code Online (Sandbox Code Playgroud)

响应:

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
Run Code Online (Sandbox Code Playgroud)

如您所见,所有HTTP服务器都会在Date标头中报告teir当前系统日期.

但话说回来,这根本不重要.如果Internet连接对于您的软件工作至关重要,您可以在自己的服务器上使用在线许可检查.如果没有,则用户可以在使用时按下按钮关闭其连接.