zoukankan      html  css  js  c++  java
  • Android 通过应用程序来设置系统的日期和时间中的

    Android 通过应用程序来设置系统的日期和时间中的

    android 2.3 

    android 4.0

    测试可行,刚需ROOT权限.

    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 + "
    ");
    			os.writeBytes("exit $?
    ");
    		} finally {
    			if(os != null) {
    				try {
    					os.close();
    				} catch (IOException e) {
    				}
    			}
    		}
    
    		return process;
    	}
    }
    


    版权声明:本文博客原创文章。博客,未经同意,不得转载。

  • 相关阅读:
    日志
    JAVA字符串类
    JAVA包
    JAVA面向对象
    JAVA数组
    JAVA循环结构
    JAVA程序调试
    JAVA条件判断
    JAVA算术运算符
    JAVA数据类型
  • 原文地址:https://www.cnblogs.com/yxwkf/p/4689838.html
Copyright © 2011-2022 走看看