Android8.1 OTA升級之後Settings 新添加鍵值沒有初始化

軟件平臺:Android8.1

硬件平臺:展訊

問題:系統升級後,新添加的Settings鍵值沒有更新至系統,經查發現Settings的數據庫更新在SettingsProvider有更新觸發條件,就是SETTINGS_VERSION和currentVersion兩個值,這倆值是一個同步遞增的過程,如果SettingsProvider更新了一些鍵值,而不遞增SETTINGS_VERSION的值,升級後就不會觸發更新,具體改動如下:

--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
@@ -2899,7 +2899,7 @@ public class SettingsProvider extends ContentProvider {
         }
 
         private final class UpgradeController {
-            private static final int SETTINGS_VERSION = 148;
+            private static final int SETTINGS_VERSION = 149;
 
             private final int mUserId;
 
@@ -3458,6 +3458,30 @@ public class SettingsProvider extends ContentProvider {
                     }
@@ -3458,6 +3458,30 @@ public class SettingsProvider extends ContentProvider {
                     }
                     currentVersion = 148;
                 }
+                if (currentVersion == 148) {
+                    // Version 148: Add default end button behavior
+
+                    final SettingsState systemSettings = getSystemSettingsLocked(userId);
+                    if (systemSettings.getSettingLocked(Settings.System.XF_NOTIFICATION_ON).isNull()) {
+                        String def_notion = Integer.toString(getContext()
+                                .getResources().getInteger(R.integer.xf_notification_on));
+                        systemSettings.insertSettingLocked(Settings.System.XF_NOTIFICATION_ON,
+                                def_notion, null, true,
+                                SettingsState.SYSTEM_PACKAGE_NAME);
+                    }
+
+                    if (systemSettings.getSettingLocked(Settings.System.XF_NOTIFICATION_TONE_ON).isNull()) {
+                        String def_notion_tone = Integer.toString(getContext()
+                                .getResources().getInteger(R.integer.xf_notification_tone_on));
+                        systemSettings.insertSettingLocked(Settings.System.XF_NOTIFICATION_TONE_ON,
+                                def_notion_tone, null, true,
+                                SettingsState.SYSTEM_PACKAGE_NAME);
+                    }
+
+                    currentVersion = 149;
+                }

這樣的話,在OTA升級完成後會更新db數據庫,完美解決~~~

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章