我在某些设备中使用System.currentTimeMillis()
时遇到问题(尤其是使用API 25,26的仿真器,我认为会有其他一些真实的设备)。我的情况是:
1.在更改时间之前,我关闭了两个设置选项自动日期&时间和自动时区,我从10h20 AM
更改为11h20 AM
=>时间成功改变。并System.currentTimeMillis()
提供正确的更改时间11h20m AM
。
10h20m AM
,System.currentTimeMillis()
给我10h20m AM
,而不是第1步的更改时间。所以,任何想法都可以检测到Android设备是否有重置时间"重启后是否有问题?
答案 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);
}