0

有没有办法从cordova应用程序更改android设备时间?我需要将设备时间与服务器同步。该应用程序从 webapi 获取服务器时间,如果它与设备时间不同,我想更改设备时间。谢谢

4

1 回答 1

1

你不应该为了让你的应用程序工作而试图弯曲整个设备。如果服务器时间错误怎么办?如果用户想要不同的时间怎么办?

我们对我们的应用程序有相同的需求,我们正在做的就是在 server-time 中运行应用程序

这是 Java 中的原生 Android,但我认为这个想法应该很清楚,并且在 Cordova 中也应该是可能的。

所以我们有这个ServerTime类,每当我们需要应用程序中的当前时间时,我们不使用new Date()或者System.currentTimeMillis(), 而是使用ServerTime.now().

该类看起来像这样(从内存中编写并简化,确保进行测试,也许差异计算应该是 + 而不是 - ...):

public static class ServerTime {

    private static long diffMillis;

    public static Date now() {
        long millis = System.currentTimeMillis() - diffMillis;
        return new Date(millis;
    }

    public static void update(long serverTimeMillis) {
        diffMillis = System.currentTimeMillis() - serverTimeMillis;
    }
 }

服务器为每个响应提供服务器时间,另外我们每 15 分钟左右轮询一次服务器时间。每当我们获得服务器的时间时,我们都会调用ServerTime.update(server's time in millis).

于 2018-11-30T13:12:38.597 回答