重启后重置Android时间

时间:2018-04-04 08:52:32

标签: android datetime

我在某些设备中使用System.currentTimeMillis()时遇到问题(尤其是使用API​​ 25,26的仿真器,我认为会有其他一些真实的设备)。我的情况是:

1.在更改时间之前,我关闭了两个设置选项自动日期&时间自动时区,我从10h20 AM更改为11h20 AM =>时间成功改变。并System.currentTimeMillis()提供正确的更改时间11h20m AM

  1. 我重新启动设备,时间自动重置为10h20m AMSystem.currentTimeMillis()给我10h20m AM,而不是第1步的更改时间。
  2. 所以,任何想法都可以检测到Android设备是否有重置时间"重启后是否有问题?

1 个答案:

答案 0 :(得分:0)

在启动完成后创建一个BroadcastReceiver并使用此

创建一个意图过滤器:

     static {
        s_intentFilter = new IntentFilter();
        s_intentFilter.addAction(Intent.ACTION_TIME_TICK);
        s_intentFilter.addAction(Intent.ACTION_TIMEZONE_CHANGED);
        s_intentFilter.addAction(Intent.ACTION_TIME_CHANGED);
        s_intentFilter.addAction(Intent.ACTION_BOOT_COMPLETED);
    }

和广播接收器:

    private final BroadcastReceiver m_timeChangedReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            final String action = intent.getAction();

            if (action.equals(Intent.ACTION_TIME_CHANGED) ||
                action.equals(Intent.ACTION_TIMEZONE_CHANGED))
            {
                doWorkSon();
            }
        }
    };

注册接收者:

     public void onCreate() {
        super.onCreate();
        registerReceiver(m_timeChangedReceiver, s_intentFilter);     
    }

取消注册:

     public void onDestroy() {
        super.onDestroy();
        unregisterReceiver(m_timeChangedReceiver);     
    }