Android 通过应用设置系统日期和时间的方法

android 2.3

android 4.0

测试可行,不过需要ROOT权限.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
import java.io.DataOutputStream;
import java.io.File;
import java.io.IOException;
import java.util.Calendar;
 
import android.os.SystemClock;
 
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;
    }
}

结伴旅游,一个免费的交友网站:www.jieberu.com

推推族,免费得门票,游景区:www.tuituizu.com

最新文章

  1. Keras官方Example里Mnist-cnn的调试运行
  2. VS2013,VS2015设置类模板文件表头
  3. 脚本录制--html模式和url模式
  4. Initialize the shader 初始化着色器
  5. cadence电路板布线
  6. LeetCode 178. 分数排名
  7. laravel之数据库
  8. 树莓派上配置electron记录
  9. 大臣的旅费---树的直径(dfs)
  10. 地址重写 No input file specified的解决方法
  11. poj 3678(SCC+2-SAT)
  12. 雷林鹏分享:jQuery EasyUI 树形菜单 - 创建异步树形菜单
  13. Android简易项目--傻瓜式阿拉伯语输入法(Dummy Arabic Input)
  14. linux之shell终端使用操作快捷键
  15. WPF GridLinesVisibility属性
  16. Linux 信号:signal 与 sigaction
  17. 沐雪多用户微信公众平台开发源码,商城小程序源码(2018年最新的asp.net C# 微信源码,小程序源码)
  18. mySql---or和in的效率问题(和&lt;=、&gt;=、between之间的关系)
  19. MVC相关资料收集
  20. 三种实现日志过滤器的方式 (过滤器 (Filter)、拦截器(Interceptors)和切面(Aspect))

热门文章

  1. HDU 1042 N!(高精度阶乘、大数乘法)
  2. java监控
  3. Elasticsearch-安装、日志解读
  4. [转帖]虚拟内存探究 -- 第四篇:malloc, heap &amp; the program break
  5. Maven - 配置setting.xml
  6. Linux 中将用户添加到指定组
  7. PostgreSQL-优化之分表
  8. vue render 渲染函数
  9. 【网络安全】telnet 登陆远程服务器
  10. 异常:Caused by: java.lang.NoClassDefFoundError: org/springframework/web/context/WebApplicationContext