修改android系统时间出现的奇怪问题(已经有root权限)

移动开发 码拜 8年前 (2016-09-20) 2326次浏览
  本人用的下面方法修改系统时间

try {
						Process process = Runtime.getRuntime().exec("su");
						String datetime = "20131023.112800"; // 测试的设置的时间【时间格式
																// 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();
						Toast.makeText(MainActivity.this, "系统时间同步成功",
								Toast.LENGTH_SHORT).show();
					} catch (IOException e) {
						Toast.makeText(MainActivity.this,
								"系统时间同步失败,莫非没有ROOT权限?", Toast.LENGTH_SHORT)
								.show();
						e.printStackTrace();
					}

正常情况是时间被修改,修改后系统时间显示11:28,前天尝试成功了;可今天本人用这段代码修改,系统时间却显示19:28,不知道是时区的问题还是什么情况,代码都没变。假如把os.writeBytes(“setprop persist.sys.timezone GMT\n”);中的GMT改为GMT+16:00后,再运行,系统时间修改成功,成11:28。但是昨天本人也+16:00了,时间还是修改不对,也就是说有时修改的准,有时修改的不准,不知道为何,求高手指导!谢谢!

解决方案

1

用真机事实没有 模拟器很多问题的有时候

49

Calendar c = Calendar.getInstance();
// 年 月-1 日 时 分 秒
if (date != null) {
int year = date.getYear() + 1900;
int day = date.getDate();
int month = date.getMonth();
int hour = date.getHours();
int minutes = date.getMinutes();
int seconds = date.getSeconds();
c.set(year, month, day, hour, minutes, seconds);
}
AlarmManager am = (AlarmManager) LoginActivity.this
.getSystemService(Context.ALARM_SERVICE);
am.setTime(c.getTimeInMillis());
本人是这么修改的 没有问题

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明修改android系统时间出现的奇怪问题(已经有root权限)
喜欢 (0)
[1034331897@qq.com]
分享 (0)