Android ntp服务动态替换

ntp服务动态替换


参考博文
Android4.0 时间更新分析 NTPServer更改
https://blog.csdn.net/nickzhang2010/article/details/8004560
Android中通过NTP服务器获取时间功能源码分析
https://blog.csdn.net/i2cbus/article/details/21550901

解决方案
1、关闭系统自动刷新,调用SntpClient类结构,自行实现刷新时间apk
2、修改setting数据库中ntp server的值,重启设备
frameworks\base\core\java\android\util\NtpTrustedTime.java

public static synchronized NtpTrustedTime getInstance(Context context) {
        if (sSingleton == null) {
            final Resources res = context.getResources();
            final ContentResolver resolver = context.getContentResolver();

            final String defaultServer = res.getString(
                    com.android.internal.R.string.config_ntpServer);
            final long defaultTimeout = res.getInteger(
                    com.android.internal.R.integer.config_ntpTimeout);

           // 修改此处获取的ntp server值,重启后会从数据库那最新的值
            final String secureServer = Settings.Global.getString(
                    resolver, Settings.Global.NTP_SERVER);
            final long timeout = Settings.Global.getLong(
                    resolver, Settings.Global.NTP_TIMEOUT, defaultTimeout);

            final String server = secureServer != null ? secureServer : defaultServer;
            sSingleton = new NtpTrustedTime(server, timeout);
            sContext = context;
        }

        return sSingleton;
    }

修改接口使用
frameworks\base\core\java\android\provider\Settings.java

        /**
         * Store a name/value pair into the database.
         * @param resolver to access the database with
         * @param name to store
         * @param value to associate with the name
         * @return true if the value was set, false on database errors
         */
        public static boolean putString(ContentResolver resolver,
                String name, String value) {
            return putStringForUser(resolver, name, value, UserHandle.myUserId());
        }

注意: 如果直接调用该结构,apk需要system权限;绕过的解决方案,系统服务中增加接口实现该函数的调用,然后给上层apk拉一个调用服务的接口,适用于系统深度定制开发

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值