Android通过应用来设置系统时间
2016-10-09 09:36
357 查看
原文地址
最近项目要求在App中添加设置时间的功能,谷歌百度一番,找到了一个可行方案,再此记录,以便使用
注意:
本次测试在4.1, 4.2 原生均可用, 需root权限
最近项目要求在App中添加设置时间的功能,谷歌百度一番,找到了一个可行方案,再此记录,以便使用
注意:
本次测试在4.1, 4.2 原生均可用, 需root权限
public class SystemDateTime { static final String TAG = "SystemDateTime"; public static void setDateTime(int year, int month, int day, int hour, int minute) throws IOException, InterruptedException { requestPermission(); Calendar c = Calendar.getInstance(); c.set(Calendar.YEAR, year); c.set(Calendar.MONTH, month - 1); c.set(Calendar.DAY_OF_MONTH, day); c.set(Calendar.HOUR_OF_DAY, hour); c.set(Calendar.MINUTE, minute); long when = c.getTimeInMillis(); if (when / 1000 < Integer.MAX_VALUE) { SystemClock.setCurrentTimeMillis(when); } long now = Calendar.getInstance().getTimeInMillis(); //Log.d(TAG, "set tm="+when + ", now tm="+now); if (now - when > 1000) throw new IOException("failed to set Date."); } public static void setDate(int year, int month, int day) throws IOException, InterruptedException { requestPermission(); Calendar c = Calendar.getInstance(); c.set(Calendar.YEAR, year); c.set(Calendar.MONTH, month); c.set(Calendar.DAY_OF_MONTH, day); long when = c.getTimeInMillis(); if (when / 1000 < Integer.MAX_VALUE) { SystemClock.setCurrentTimeMillis(when); } long now = Calendar.getInstance().getTimeInMillis(); //Log.d(TAG, "set tm="+when + ", now tm="+now); if (now - when > 1000) throw new IOException("failed to set Date."); } public static void setTime(int hour, int minute) throws IOException, InterruptedException { requestPermission(); Calendar c = Calendar.getInstance(); c.set(Calendar.HOUR_OF_DAY, hour); c.set(Calendar.MINUTE, minute); long when = c.getTimeInMillis(); if (when / 1000 < Integer.MAX_VALUE) { SystemClock.setCurrentTimeMillis(when); } long now = Calendar.getInstance().getTimeInMillis(); //Log.d(TAG, "set tm="+when + ", now tm="+now); if (now - when > 1000) throw new IOException("failed to set Time."); } static void requestPermission() throws InterruptedException, IOException { createSuProcess("chmod 666 /dev/alarm").waitFor(); } static Process createSuProcess() throws IOException { File rootUser = new File("/system/xbin/ru"); if (rootUser.exists()) { return Runtime.getRuntime().exec(rootUser.getAbsolutePath()); } else { return Runtime.getRuntime().exec("su"); } } static Process createSuProcess(String cmd) throws IOException { DataOutputStream os = null; Process process = createSuProcess(); try { os = new DataOutputStream(process.getOutputStream()); os.writeBytes(cmd + "\n"); os.writeBytes("exit $?\n"); } finally { if (os != null) { try { os.close(); } catch (IOException e) { } } } return process; } }
相关文章推荐
- Android 通过应用设置系统日期和时间的方法
- Android 通过应用设置系统日期和时间的方法
- Android 通过应用设置系统日期和时间的方法
- Android 通过应用设置系统日期和时间的方法
- Android 通过应用设置系统日期和时间的方法
- Android开发板设置系统时间-系统应用开发
- Android 通过应用程序来设置系统的日期和时间中的
- 通过Android应用更改系统时间
- Android中系统设置参数改变监听(以时间同步为例)
- 通过PHP怎样取到android系统下apk应用的包名,版本号等信息
- 如何通过Java设置Linux的系统时间
- Linux下通过命令设置系统时间
- android应用开发揭秘examples_04-11笔记(DatePicker,TimePicker时间日期设置,略有改动)
- android 中对 gps 默认关闭+语言默认中文的设置+时区设置+修改系统名字+修改系统默认时间+修改屏幕休眠时间
- Android设置系统默认时间
- Android设置系统时间和时区
- android通过 哪些变量 来决定 哪些应用 会被编译进系统
- android应用程序跳转到系统的各个设置页面和通过Intent action 跳转到系统页面,
- Android ICS系统是支持通过互联网时间同步的
- android 中对 gps 默认关闭+语言默认中文的设置+时区设置+修改系统名字+修改系统默认时间