Android 一个获取网址时间的Demo
文章目录
- Android 一个获取网址时间的Demo
 - 通过一个网址获取时间的代码
 - 关于Android NTP 时间
 - Android 同步时间代码
 
前段时间有个客户想用局域网同步Android 设备的时间,开发后把这个demo分享一下。
效果:

这里也获取了阿里云的NTP网址的时间进行对比。
 因为同步时间需要系统权限。源码demo 把同步时间部分代码注释了!
 如果有系统签名,把系统签名放进去,配置对应的密钥信息,把对应的代码放开注释,编译运行是可以正常同步时间的。
下面demo apk 和源码地址:
 https://download.csdn.net/download/wenzhi20102321/87720170
下面是涉及的主要代码展示:
通过一个网址获取时间的代码
一定要注意的是,Http 网络请求需要用子线程里面进行,否则直接报错 null !
        URL url = null;//取得资源对象
        try {
            url = new URL("https://www.baidu.com/");
            URLConnection uc = url.openConnection();//生成连接对象
            uc.connect(); //发出连接
            long ld = uc.getDate(); //取得网站日期时间
            LogUtil.debug("ld = " + ld);
            //打印时间字符串看看:
            DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
            String format = formatter.format(calendar.getTime());
            LogUtil.debug("format = " + format);
        } catch (Exception e) {
           
        }
			
			
 
关于Android NTP 时间
之前写过 NTP 相关知识的介绍,需要的可以看看:
https://blog.csdn.net/wenzhi20102321/article/details/127482145
Android 系统如果配置了NTP 网址,点击同步时间的时候,默认会从NTP 网址进行同步时间的!因为Android 系统又专门同步时间的Service,上面的文章有介绍。
Android 同步时间代码
	//更新日历时间
	Calendar calendar = Calendar.getInstance();
	calendar.setTimeInMillis(ld); // ld 是获取的时间值
	//更新系统时间:(重点)
	((AlarmManager) MainActivity.this.getSystemService(Context.ALARM_SERVICE)).setTime(ld);
	//发送广播通知系统和所有应用
	Intent intent = new Intent("android.intent.action.DATE_CHANGED");
	sendBroadcast(intent);
	Intent intent_time = new Intent("android.intent.action.TIME_TICK");
	sendBroadcast(intent_time);
 
值得注意的是,更新时间到系统上和发送系统广播更新时间都是要系统权限的。
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
	//下面这两个应用需要系统权限uid 才能生效
    <uses-permission android:name="android.permission.SET_TIME"/>
    <uses-permission android:name="android.permission.SET_TIME_ZONE"/>
	
 
上面的东西不难,做个demo 有需要的可以提取。





![备忘录设计模式(Memento Pattern)[论点:概念、组成角色、示例代码、框架中的运用、适用场景]](https://img-blog.csdnimg.cn/acb031c96da74adb9019fff0d87a4664.png)













