Android 如果用户决定更改设备的时间,会发生什么情况?

Android 如果用户决定更改设备的时间,会发生什么情况?,android,timestamp,Android,Timestamp,在我的应用程序中,我有一组从数据库检索的主题,现在每个主题都有一组数据,包括(时间戳) 时间戳:主题发布到数据库的时间。 现在,我只允许用户在设备的时间戳和当前时间之间的差异大于2周时输入主题 问题: 我注意到一个问题,用户可以更改设备的时间,然后输入主题,然后将时间更改回来 我该怎么解决这个问题 谢谢。为了避免这些情况,我们需要使用另一种方法。Android有一个很好的实用程序类SystemClock。SystemClock.elapsedRealTime()是您应该使用的方法 这将返回自系统

在我的应用程序中,我有一组从数据库检索的主题,现在每个主题都有一组数据,包括(
时间戳

时间戳:主题发布到数据库的时间。

现在,我只允许用户在设备的
时间戳
当前时间
之间的差异大于2周时输入主题

问题:

我注意到一个问题,用户可以更改设备的时间,然后输入主题,然后将时间更改回来

我该怎么解决这个问题


谢谢。

为了避免这些情况,我们需要使用另一种方法。Android有一个很好的实用程序类SystemClock。SystemClock.elapsedRealTime()是您应该使用的方法

这将返回自系统启动以来经过的时间(以毫秒为单位)。这包括睡眠时间,如CPU关闭、显示器变暗等

您可以根据不受用户更改日期/时间影响的已用时间计算差异

编辑:对于一个绝对的全面验证解决方案,您还必须依赖于服务器时间。 例如,每当启动/重置发生时,您必须从服务器获取更新的ttl(生存时间),并将其与经过的时间一起使用

例如,初始ttl为14天,但用户在2天后重置手机。
您将需要从服务器获取更新的ttl,现在将有12天的时间。

为了避免这些情况,我们需要使用另一种方法。Android有一个很好的实用程序类SystemClock。SystemClock.elapsedRealTime()是您应该使用的方法

这将返回自系统启动以来经过的时间(以毫秒为单位)。这包括睡眠时间,如CPU关闭、显示器变暗等

您可以根据不受用户更改日期/时间影响的已用时间计算差异

编辑:对于一个绝对的全面验证解决方案,您还必须依赖于服务器时间。 例如,每当启动/重置发生时,您必须从服务器获取更新的ttl(生存时间),并将其与经过的时间一起使用

例如,初始ttl为14天,但用户在2天后重置手机。

您将需要从服务器获取更新的ttl,该服务器现在将提供12天的时间。

或者根据Udit所说的,您可以避免使用本地设备时间,并使用从服务器获取的时间作为时间戳。

或者根据Udit所说的时间,您可以避免使用本地设备时间,并将从服务器获取的时间用作时间戳。

此数据库是否在设备上?@TEK292否此数据库是否在服务器上?此数据库是否在设备上?@TEK292否此数据库是否在服务器上?此类时间是否受电话重置的影响,或者工厂重置?这意味着它没有效率?服务器上的时间与设备上的时间如何相同?它不一样..服务器不会给出时间,但会给出从该点开始内容有效的毫秒数。根据您询问服务器时的不同,您将得到ttl的不同值,ttl是数据有效的剩余时间。这种时间是否受电话重置或出厂重置的影响?这意味着它没有效率?服务器上的时间与设备上的时间如何相同?它不相同..服务器不会给您时间,但从那时起内容有效的毫秒数。根据您询问服务器时的情况,您将获得不同的ttl值,即数据有效的剩余时间。这如何更好?@data这更好,因为您正在保护您的系统免受“恶意”用户的攻击。服务器不应假定从设备获得的任何信息都是有效的。正如您的bug所显示的,用户可以撒谎,如果您不小心,就可以侥幸逃脱。它与用户/设备无关。。很明显,即使是
currentTime
timestamp
相比,您也会参考服务器时间。这只是一个奇怪的问题:像Netflix这样的公司如何知道您上次付款已经一个月了?基于可靠的服务器时间戳,检查他们在数据库上的时间戳这是如何更好的?@数据是这样的更好,因为您正在保护您的系统免受“恶意”用户的攻击。服务器不应假定从设备获得的任何信息都是有效的。正如您的bug所显示的,用户可以撒谎,如果您不小心,就可以侥幸逃脱。它与用户/设备无关。。很明显,即使是
currentTime
时间戳相比,您也会参考服务器时间。这只是一个奇怪的问题:像Netflix这样的公司如何知道您上次付款已经一个月了?基于可靠的服务器时间戳,检查他们在数据库上的时间戳