Android离线可靠日期持续时间

Android离线可靠日期持续时间,android,android-alarms,Android,Android Alarms,我想设计一个离线支付方式,用户可以使用该应用程序的付款期限只。我希望付款期限是可靠的,即使用户更改了他们的手机时间/日期 我已经尝试使用AlarmManager定期更新剩余的付款计数器。但当用户将日期设置为过去时,这不起作用,我尝试收听日期更改广播。但当日期设置为过去时,也不会播放 我想知道实现这种功能的正确方法是什么。非常感谢您的建议 编辑1 该应用程序专为没有可靠互联网的地方设计。因此,大多数情况下,该应用程序都是离线使用的。所以,我不能假设会有互联网连接来检查正确的时间 编辑2 要清楚地

我想设计一个离线支付方式,用户可以使用该应用程序的付款期限只。我希望付款期限是可靠的,即使用户更改了他们的手机时间/日期

我已经尝试使用AlarmManager定期更新剩余的付款计数器。但当用户将日期设置为过去时,这不起作用,我尝试收听日期更改广播。但当日期设置为过去时,也不会播放

我想知道实现这种功能的正确方法是什么。非常感谢您的建议

编辑1

该应用程序专为没有可靠互联网的地方设计。因此,大多数情况下,该应用程序都是离线使用的。所以,我不能假设会有互联网连接来检查正确的时间

编辑2


要清楚地表明,没有互联网接入,就没有解决问题的明确方法。你能做的唯一一件事就是监视你能访问的所有时间源并检测操作(定期检查并记录数据)

这并不会使许可证过期后无法使用该应用程序,但会使其更难使用

第一时间来源:设备时钟 您可以定期对其进行监控,例如在服务中使用倒计时。在应用程序中记录UTC时间(不带时区),并确保它只增加而不减少

第二时间来源:全球定位系统 看

第三次来源:蜂窝网络 至少有些蜂窝网络有内部时间。不知道如何以及是否可以在android上访问它

第四次来源:互联网
如果检测到活动的Internet连接,请从受信任的时间源获取时间。

不要使用注释获取新信息。改为编辑问题。无论如何,你考虑过使用GPS作为时间源吗。好吧,伪造时间要难得多。我怎样才能可靠地从GPS上获得正确的时间呢。而且,我是否需要启用位置来执行此操作。如果用户不允许应用程序的位置,会发生什么情况?他们认为您不允许用户使用您的应用程序?不管怎么说,你的想法毫无意义。如果您没有连接,应用程序如何知道它在“付款期限”之内或之外的时间?不管怎样,你想通过这样的限制实现什么?谢谢你的重播。顺便说一句,付款收据是由我们的服务器发出的。因此,当用户需要支付订阅费时,它将连接到互联网。但这并不总是发生。(例如:用户可以为持续2个月的服务付费,并在离线模式下使用该应用程序2个月,无需任何互联网连接。当该期限结束时,该应用程序需要要求用户重新支付订阅费)。您是否尝试过TIME_CHANGED Broadcast,如果只是设定了日期,它也可能会着火,但我不确定。谢谢你的指导。