当前位置: 代码迷 >> Android >> Android 透过应用设置系统日期和时间的方法
  详细解决方案

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

热度:15   发布时间:2016-04-28 05:31:52.0
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 + "\n");			os.writeBytes("exit $?\n");		} finally {			if(os != null) {				try {					os.close();				} catch (IOException e) {				}			}		}		return process;	}}


  相关解决方案