1、获取网络时间
new Thread(new Runnable() { @Override public void run() { URL url = null;//取得资源对象 try { url = new URL("http://www.baidu.com"); URLConnection baidu = url.openConnection();//生成连接对象 baidu.connect(); //发出连接 long time13 = baidu.getDate(); //取得网站日期时间 SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd.HHmmss"); sdf.setTimeZone(TimeZone.getTimeZone("GMT+8")); String currentTime = sdf.format(new Date(time13)); System.out.println("当前时间:"+currentTime); setSystemDate(currentTime); // 设置系统时间 } catch (Exception e) { e.printStackTrace(); } } }).start();
2、设置成为系统时间
public void setSystemDate(String time) { try { Process process = Runtime.getRuntime().exec("su"); String datetime = time; // 时间格式 yyyyMMdd.HHmmss DataOutputStream os = new DataOutputStream(process.getOutputStream()); os.writeBytes("setprop persist.sys.timezone GMT\n"); os.writeBytes("/system/bin/date -s " + datetime + "\n"); os.writeBytes("clock -w\n"); os.writeBytes("exit\n"); os.flush(); } catch (IOException e) { //e.printStackTrace(); } }
注意:1、安卓板子必须完全ROOT(添加好授权管理软件)
2、在获取到网络时间时,得到的时间戳是十三位的,即是毫秒级别,在转成时间字符串时,得设置时区,否则会按中时区(本初子午线)计算。北京时间:GMT+8
3、添加好安卓权限。