我想设计一种离线付款方式,用户只能在付款期间使用该应用。我希望即使用户更改手机的时间/日期,付款时间也是可靠的。
我尝试过使用AlarmManager定期更新剩余的付款柜台。但是当用户将日期设置为过去时,这不起作用,我试图听DATE_CHANGE广播。但是,当日期设置为过去时,也不会广播。
我想知道实现此类功能的正确方法是什么。任何建议都非常感谢。
编辑1
该应用专为没有可靠互联网的地方而设计。所以大部分时间,该应用程序都是脱机使用的。所以,我不能假设会有互联网连接来检查正确的时间。
编辑2
答案 0 :(得分:2)
要在没有互联网访问的情况下明确说明,没有明确的方法可以解决您的问题。您唯一能做的就是监控您有权访问的所有时间源并检测操作(定期检查并记录数据)。
这不会使许可证到期后无法使用该应用程序,但这会使其变得更难。
您可以定期监控,例如在服务中使用CountDownTimer。在您的应用中记录UTC时间(没有时区),并确保它只会增加而不会减少。
请参阅Sync Android devices via GPS time?
AFAIK至少有一些细胞网络有内部时间。不知道如何以及如何在Android上访问它。
如果您检测到活动的Internet连接,请从受信任的时间源获取时间。