您的位置:首页 > 移动开发 > Android开发

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

2016-09-05 11:06 495 查看
http://blog.csdn.net/aikongmeng/article/details/26730737

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

android 2.3 

android 4.0

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

[java] view
plain copy

 





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;  

    }  

}  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: