是否有来自Intent.ACTION_TIME_CHANGED的其他信息? getData()或getExtras()中没有任何内容。
我想知道:
手机在设定新时间之前的时间;
谁更改了时间:用户(手动)还是电话运营商?
欢迎任何其他方式获取这些信息!
答案 0 :(得分:2)
我查看了Android的源代码,这个广播没有任何额外内容。所以,没有办法学习这些信息。
答案 1 :(得分:0)
如果前一次的准确性不那么重要,你可以做一件事。您可以通过以下方式准确地获得前一次+/- 1分钟的时间..
注册广播行动ACTION_TIME_TICK(每分钟播放一次)。
当时间滴答时,如果当前时间与最后一次滴答时间之间的差异超过1分钟,则可以推断出发生了时间变化。之后,您只需将新时间更新为共享首选项。多数民众赞成。
快乐的编码。
答案 2 :(得分:0)
我不认为知道为什么可以更改时间,尽管自SystemClock.elapsedRealtime()以来,应该通过将System.currentTimeMillis()与SystemClock.elapsedRealtime()进行比较来找出更改时间的数量,在这种情况下无法调整。
例如:
private long realtimeOffset = System.currentTimeMillis() - SystemClock.elapsedRealtime();
private void onReceive(Context context, Intent intent) {
if(Intent.ACTION_TIME_CHANGED.equals(intent.getAction()) {
long prevRealtimeOffset = realtimeOffset;
realtimeOffset = System.currentTimeMillis() - SystemClock.elapsedRealtime();
Log.i(TAG, "Clock was adjusted by: " + (realtimeOffset - prevRealtimeOffset) + " ms");
}
}