问题描述
在使用Android 6设备接入一个设置了限制大多数TCP和UDP输出端口的私有WiFi网络时,若要与NTP时间服务器同步系统时间以解决Google Play无法连接的问题。尽管应用如ClocSync、NSync或Smart Times Sync均能成功连接NTPserver并显示当前时间,但并未更改Android设备的时间。
解决方案
方法一:使用root和Busybox工具手动设置自动时间同步
- 前提条件:
- 需要root权限;
- 安装Busybox支持
rdate
服务; -
/system/etc/init.d/
目录,用于在系统启动时运行守护进程服务。 -
操作步骤:
- 使用
su- mount -o remount,rw /system
命令读写系统分区; - 在
/system/etc/init.d/
目录创建一个可执行文件(例如命名为99my_daemon):
bash
#!/system/bin/sh
while ! ping -c1 "0.pool.ntp.org" > /dev/null
do
wait 10
done
/system/xbin/busybox rdate -s 0.pool.ntp.org
exit 0 - 使用
mount -o remount,rw /system
命令重新打开系统分区写入权限。 - 重启设备后,该守护进程将在启动时自动调用rdate命令查询NTP服务器以同步时间。
方法二:使用crontab定期检查时间同步
为了保证在长时间未连接至网络设备或使用时仍有时间校准需求,在crontab中添加一个定时任务来周期性地执行时间同步:
# 定义crontab文件,假设保存为 /system/etc/cron.d/timesync
* * * * * /system/sbin/busybox rdate -s 0.pool.ntp.org
需要特别注意的是此操作涉及设备root权限,且因涉及到设备底层设置修改可能带来安全风险和不稳定因素,请谨慎评估后按上述步骤操作。
通过以上两种方式之一可以基本解决在MarshMallow系统下的私有WiFi网络中设置自动时间同步的需求。如果遇到问题或不确定的地方,建议参考相关开发者文档或寻求技术社区的帮助。希望对你的需求有所帮助!
正文完