【问题标题】:How to check "Automatic date and time" is enabled or not?如何检查“自动日期和时间”是否启用?
【发布时间】:2014-05-29 07:39:42
【问题描述】:

我需要检查android设备中的“自动日期和时间”是否启用。如果未启用,我需要显示未启用的弹出窗口。

有没有可能实现。如果可能,如何检查是否启用?

【问题讨论】:

  • AFAIK,SDK 中没有公共方法可以做到这一点。

标签: android datetime


【解决方案1】:
public static boolean isTimeAutomatic(Context c) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
        return Settings.Global.getInt(c.getContentResolver(), Settings.Global.AUTO_TIME, 0) == 1;
    } else {
        return android.provider.Settings.System.getInt(c.getContentResolver(), android.provider.Settings.System.AUTO_TIME, 0) == 1;
    }
}

【讨论】:

    【解决方案2】:

    我只想指出,作弊是可能的(我只是在三星 Galaxy S4,Android 5.0.1 上做过):

    • 禁用自动计时
    • 断开互联网连接(飞行模式、无 wifi 等...)
    • 重启手机(否则取回实时)
    • 设置自动时间

    今天完成:

    Unix 时间:1129294173

    日期:14102005024933

    是自动的吗? 1(使用 android.provider.Settings.Global.getInt(getActivity().getContentResolver(), android.provider.Settings.Global.AUTO_TIME, 0))

    今天绝对不是 2005 年 10 月 14 日

    【讨论】:

    • 是的,5 分钟前才发现,这就是我在这里的原因 :) 是否有任何会话 ID 可以用来跟踪是否发生了重启?
    【解决方案3】:
    if(Settings.Global.getInt(getContentResolver(), Global.AUTO_TIME) == 1)
    {
        // Enabled
    }
    else
    {
        // Disabed
    }
    

    【讨论】:

    • 请向 OP(以及 SO 的未来访问者)解释您为什么这样做。
    【解决方案4】:

    Link for API 17 and above

    android.provider.Settings.Global.getInt(getContentResolver(), android.provider.Settings.Global.AUTO_TIME, 0);
    

    Link for API 16 and below

    android.provider.Settings.System.getInt(getContentResolver(), android.provider.Settings.System.AUTO_TIME, 0);
    

    【讨论】:

    • 但仅适用于 API 17 及更高版本。
    • 快速搜索显示,在此之前,android.provider.Settings.System.AUTO_TIME 是要走的路。
    • 感谢您完成答案。竖起大拇指。
    • 正在使用 7.1.2
    猜你喜欢
    • 2012-05-27
    • 2020-08-14
    • 1970-01-01
    • 1970-01-01
    • 2016-10-24
    • 2021-12-18
    • 1970-01-01
    • 1970-01-01
    • 2011-02-19
    相关资源
    最近更新 更多