本人用的下面方法修改系统时间
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());
本人是这么修改的 没有问题
// 年 月-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());
本人是这么修改的 没有问题