Add calls to Backup Manager in Preferences Files.

Backs up display order, sort order, welcome card dismissal, and
hamburger promo preferences. Other preferences are either not impacted
by user actions or store data that may not be consistent across app
versions/devices.

Bug: 32935276
Change-Id: I6e4136978640068b3a681d3507c5f9f71aedc8f2
diff --git a/src/com/android/contacts/preference/ContactsPreferences.java b/src/com/android/contacts/preference/ContactsPreferences.java
index f18aedf..9613321 100644
--- a/src/com/android/contacts/preference/ContactsPreferences.java
+++ b/src/com/android/contacts/preference/ContactsPreferences.java
@@ -16,6 +16,8 @@
 
 package com.android.contacts.preference;
 
+import android.app.backup.BackupAgent;
+import android.app.backup.BackupManager;
 import android.content.Context;
 import android.content.SharedPreferences;
 import android.content.SharedPreferences.Editor;
@@ -79,6 +81,7 @@
     private ChangeListener mListener = null;
     private Handler mHandler;
     private final SharedPreferences mPreferences;
+    private final BackupManager mBackupManager;
     private final boolean mIsDefaultAccountUserChangeable;
     private String mDefaultAccountKey;
 
@@ -92,6 +95,8 @@
         mContext = context;
         mIsDefaultAccountUserChangeable = isDefaultAccountUserChangeable;
 
+        mBackupManager = new BackupManager(mContext);
+
         mHandler = new Handler(Looper.getMainLooper());
         mPreferences = mContext.getSharedPreferences(context.getPackageName(),
                 Context.MODE_PRIVATE);
@@ -127,6 +132,7 @@
         final Editor editor = mPreferences.edit();
         editor.putInt(SORT_ORDER_KEY, sortOrder);
         editor.commit();
+        mBackupManager.dataChanged();
     }
 
     public boolean isDisplayOrderUserChangeable() {
@@ -156,6 +162,7 @@
         final Editor editor = mPreferences.edit();
         editor.putInt(DISPLAY_ORDER_KEY, displayOrder);
         editor.commit();
+        mBackupManager.dataChanged();
     }
 
     public boolean isDefaultAccountUserChangeable() {
diff --git a/src/com/android/contacts/util/SharedPreferenceUtil.java b/src/com/android/contacts/util/SharedPreferenceUtil.java
index ada7a57..1604711 100644
--- a/src/com/android/contacts/util/SharedPreferenceUtil.java
+++ b/src/com/android/contacts/util/SharedPreferenceUtil.java
@@ -16,6 +16,7 @@
 
 package com.android.contacts.util;
 
+import android.app.backup.BackupManager;
 import android.content.Context;
 import android.content.SharedPreferences;
 
@@ -36,13 +37,13 @@
     public static final String PREFERENCE_KEY_GLOBAL_SYNC_OFF_DISMISSES =
             "num-of-dismisses-auto-sync-off";
 
-    private static final String PREFERENCE_KEY_HAMBURGER_PROMO_DISPLAYED =
+    public static final String PREFERENCE_KEY_HAMBURGER_PROMO_DISPLAYED =
             "hamburgerPromoDisplayed";
 
-    private static final String PREFERENCE_KEY_HAMBURGER_MENU_CLICKED =
+    public static final String PREFERENCE_KEY_HAMBURGER_MENU_CLICKED =
             "hamburgerMenuClicked";
 
-    private static final String PREFERENCE_KEY_HAMBURGER_PROMO_TRIGGER_ACTION_HAPPENED =
+    public static final String PREFERENCE_KEY_HAMBURGER_PROMO_TRIGGER_ACTION_HAPPENED =
             "hamburgerPromoTriggerActionHappened";
 
     private static final String PREFERENCE_KEY_IMPORTED_SIM_CARDS =
@@ -69,6 +70,7 @@
         getSharedPreferences(context).edit()
                 .putBoolean(PREFERENCE_KEY_HAMBURGER_PROMO_DISPLAYED, true)
                 .apply();
+        new BackupManager(context).dataChanged();
     }
 
     public static boolean getHamburgerMenuClickedBefore(Context context) {
@@ -80,6 +82,7 @@
         getSharedPreferences(context).edit()
                 .putBoolean(PREFERENCE_KEY_HAMBURGER_MENU_CLICKED, true)
                 .apply();
+        new BackupManager(context).dataChanged();
     }
 
     public static boolean getHamburgerPromoTriggerActionHappenedBefore(Context context) {
@@ -91,6 +94,7 @@
         getSharedPreferences(context).edit()
                 .putBoolean(PREFERENCE_KEY_HAMBURGER_PROMO_TRIGGER_ACTION_HAPPENED, true)
                 .apply();
+        new BackupManager(context).dataChanged();
     }
 
     /**
@@ -109,7 +113,12 @@
     }
 
     protected static SharedPreferences getSharedPreferences(Context context) {
-        return context.getSharedPreferences(context.getPackageName(), Context.MODE_PRIVATE);
+        return context.getSharedPreferences(getSharedPreferencesFilename(context),
+                Context.MODE_PRIVATE);
+    }
+
+    public static String getSharedPreferencesFilename(Context context) {
+        return context.getPackageName();
     }
 
     public static int getNumOfDismissesForAutoSyncOff(Context context) {
@@ -244,9 +253,11 @@
     public static void setWelcomeCardDismissed(Context context, boolean isDismissed) {
         getSharedPreferences(context).edit().putBoolean(PREFERENCE_WELCOME_CARD_DISMISSED,
                 isDismissed).apply();
+        new BackupManager(context).dataChanged();
     }
 
     public static void clear(Context context) {
         getSharedPreferences(context).edit().clear().commit();
+        new BackupManager(context).dataChanged();
     }
 }