修改步骤
Android系统默认是12小时制度的,现将它修改为24小时制。
一、修改默认配置文件
frameworks/base/packages/SettingsProvider/res/values/defaults.xml
添加配置
<string name="time_12_24">24</string>
time_12_24字符串是在SettingsProvide
r目录下Settings.java
中定义的。
二、数据库加载
frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
找到private void loadSystemSettings(SQLiteDatabase db) 方法,在该方法中添加
loadStringSetting(stmt, Settings.System.TIME_12_24, R.string.time_12_24);
三、测试
重新编译mm
,将生成的SettingsProvider.apk安装到测试机
注意,只替换SettingsProvider模块,需要删除旧的数据库,否则数据库不会重新加载!
adb root
adb remount
adb push xxx/SettingsProvider.apk system/priv-app
adb shell
#rm -rf data/data/com.android.providers.settings/databases/
#reboot
测试代码:
String value = Settings.System.getString(context.getContentResolver(),
Settings.System.TIME_12_24);
PS
android数据库中的load字段的方法是类型对应的,defaults.xml中定义的是<string name="time_12_24">24</string>
,这是一个string,就必须调用loadStringSetting
,如果用loadIntSetting的话就加载不到了,显然24和"24"对java来说是一样可以强转的。其他类型也一样,需要一一对应
修改记录
diff --git a/packages/SettingsProvider/res/values/defaults.xml b/packages/SettingsProvider/res/values/defaults.xml
index 4de559e9..3b4185c5 100755
--- a/packages/SettingsProvider/res/values/defaults.xml
+++ b/packages/SettingsProvider/res/values/defaults.xml
@@ -17,6 +17,7 @@
*/
-->
<resources>
+ <string name="time_12_24">24</string>
<bool name="def_dim_screen">true</bool>
<integer name="def_screen_off_timeout">60000</integer>
<integer name="def_button_light_off_timeout">1500</integer>
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
index 88fbce2f..28a294fe 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
@@ -1966,6 +1966,8 @@ public class DatabaseHelper extends SQLiteOpenHelper {
try {
stmt = db.compileStatement("INSERT OR IGNORE INTO system(name,value)"
+ " VALUES(?,?);");
+ //set default time foramt--bianjb
+ loadStringSetting(stmt, Settings.System.TIME_12_24, R.string.time_12_24);
loadBooleanSetting(stmt, Settings.System.DIM_SCREEN,
R.bool.def_dim_screen);
网友评论