1,修改系统时间需要system权限:
参与framework代码编译,修改Android.mk 文件,添加获取system权限的certificate ,如红色所示:
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(call all-java-files-under,src) \
LOCAL_PACKAGE_NAME := SetTime
LOCAL_MODULE_PATH := $(TARGET_OUT)/preloadapp
LOCAL_CERTIFICATE := platform
include $(BUILD_PACKAGE)
# Use the following include to make our test apk.
include $(call all-makefiles-under,$(LOCAL_PATH))
修改AndroidManifest.xml文件,如红色所示:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.srttest"
android:sharedUserId="android.uid.system"
android:versionCode="1"
android:versionName="1.0" >
2:编写修改日期和时间的代码,仅供参考:
static void setSystemDate(int year, int month, int day) {
Calendar mCalendar = Calendar.getInstance();
mCalendar.set(Calendar.YEAR, year);
mCalendar.set(Calendar.MONTH, month);
mCalendar.set(Calendar.DAY_OF_MONTH, day);
long when = mCalendar.getTimeInMillis();
if (when / 1000 < Integer.MAX_VALUE) {
SystemClock.setCurrentTimeMillis(when);
}
}
static void setSystemTime(int hourOfDay, int minute,int second,int millsecond) {
Calendar mCalendar = Calendar.getInstance();
mCalendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
mCalendar.set(Calendar.MINUTE, minute);
mCalendar.set(Calendar.SECOND,second);
mCalendar.set(Calendar.MILLISECOND, millsecond);
long when = mCalendar.getTimeInMillis();
if (when / 1000 < Integer.MAX_VALUE) {
SystemClock.setCurrentTimeMillis(when);
}
}