Android 离线可靠日期持续时间

Android offline reliable date duration

我想设计一种离线支付方式,用户只能在支付期间使用该应用程序。即使用户更换手机,我也希望付款时长可靠 time/date。

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

我想知道实现此类功能的正确方法是什么。非常感谢任何建议。

编辑 1

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

编辑 2

time date set broadcast not firing in the past

ASOP issue

要明确说明,如果没有 Internet 访问权限,就没有解决您的问题的明确方法。您唯一能做的就是监控您有权访问的所有时间源并检测操纵(定期检查并记录数据)。

这不会导致在许可证过期后无法使用该应用程序,但会变得更加困难。

第一时间来源:设备时钟

您可以定期监控它,例如在服务中使用 CountDownTimer。在您的应用中记录 UTC 时间(不带时区),并确保它只增不减。

第二个时间来源:GPS

Sync Android devices via GPS time?

第三次来源:小区网

据我所知,至少一些手机网络有内部时间。不确定如何以及是否可以在 android.

上访问它

第四次来源:网络

如果您检测到活动的 Internet 连接,请从受信任的时间源获取时间。