【问题标题】:Android: Actual Date and Device DateAndroid:实际日期和设备日期
【发布时间】:2017-08-08 06:17:29
【问题描述】:

这是我第一次在 Stackoverflow 上提问,我显然很难回答这个问题。我如何识别用户是否更改了设备的日期以激活基于日期的代码操作?

我真的需要在没有互联网连接的情况下比较实际日期和设备日期。

例如: 当我点击这个按钮时,它只会在 8 月 29 日打开。更改日期将允许我访问按钮的功能。

【问题讨论】:

    标签: android date


    【解决方案1】:

    您可以使用网络时间协议。它提供了网络时间和日期,因此用户更改电话日期不会欺骗它。

    Google 有一个开源地址:This link


    编辑

    提供此代码作为示例:

    SntpClient client = new SntpClient();
    if (client.requestTime("time.foo.com")) {
       long now = client.getNtpTime() + SystemClock.elapsedRealtime() - client.getNtpTimeReference();
    }
    

    它把time.foo.com 放在哪里,你应该把time.google.com 放在哪里。您可能需要以毫秒为单位的超时才能添加到 requestTime(host,timeout_millis) 方法。


    对于 NTP 服务器,您可以使用

    time.google.com
    

    提供Here

    【讨论】:

    • 我稍后会试试这个。谢谢!
    • 我很难使用 SntpClient 类。当我使用 getNtpTime() 并将其转换为日期时,它只返回 8:00:00。我应该把“time.google.com”放在哪里?
    • 检查编辑,链接中有示例代码,现在给出答案
    • 好的,谢谢。
    【解决方案2】:

    如果您可以确保在安装您的应用时它具有正确的时间,那么您可以实现一个侦听器以了解手动时钟更改,然后执行您想做的事情。参考:Is there a way to detect when the user has changed the clock time on their device?

    还有 2 个选项,一个是使用 GPS 获取时间,另一个是从网络获取时间。不太确定网络,当我有机会时,它是与 NTP 相关的东西。让我知道您的实施情况。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-08
      • 2015-05-29
      • 1970-01-01
      • 1970-01-01
      • 2013-11-07
      • 2020-06-05
      • 1970-01-01
      相关资源
      最近更新 更多