diff options
author | Christopher Tate <ctate@google.com> | 2010-12-08 18:46:38 -0800 |
---|---|---|
committer | Christopher Tate <ctate@google.com> | 2010-12-09 12:58:34 -0800 |
commit | df6a7e55ccffd4a8b17780ee07b9f11988b98aaa (patch) | |
tree | 5314e513c98877493a2d032bc99347cf161fd7a9 | |
parent | 1c7e49ba670ad70822d34234e3677fef53e94569 (diff) | |
download | packages_apps_settings-df6a7e55ccffd4a8b17780ee07b9f11988b98aaa.zip packages_apps_settings-df6a7e55ccffd4a8b17780ee07b9f11988b98aaa.tar.gz packages_apps_settings-df6a7e55ccffd4a8b17780ee07b9f11988b98aaa.tar.bz2 |
Add backup configuration action to Privacy settings
Settings now queries the backup manager for a configuration Intent and
text descriptive of the state of the currently-active transport. These
are used by a new Intent PreferenceScreen within the backup section of
the Privacy settings UI.
When touched, the Configure item launches the Intent supplied by the
transport; when no such Intent is available, the item is disabled. The
summary text describing the current backup state is also supplied by
the transport.
Bug: 2753632
Change-Id: I3d8fb3d4b08a2b6fa8d3ad8f9e02a66430948423
-rw-r--r-- | res/values/strings.xml | 4 | ||||
-rw-r--r-- | res/xml/privacy_settings.xml | 8 | ||||
-rw-r--r-- | src/com/android/settings/PrivacySettings.java | 36 |
3 files changed, 42 insertions, 6 deletions
diff --git a/res/values/strings.xml b/res/values/strings.xml index 5df08d7..36046c4 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -2906,6 +2906,10 @@ found in the list of installed applications.</string> <string name="backup_data_title">Back up my data</string> <!-- Summary text of the "back up data" setting --> <string name="backup_data_summary">Back up application data, Wi-Fi passwords, and other settings to Google servers</string> + <!-- Configure backup options menu title [CHAR LIMIT=25]--> + <string name="backup_configure_transport_title">Configure backup</string> + <!-- Default summary text of the "Configure backup" setting [CHAR LIMIT=80]--> + <string name="backup_configure_transport_default_summary">No backup destination is available.</string> <!-- Auto-restore menu title --> <string name="auto_restore_title">Automatic restore</string> <!-- Summary text of the "automatic restore" setting --> diff --git a/res/xml/privacy_settings.xml b/res/xml/privacy_settings.xml index 86fc306..c28dbc1 100644 --- a/res/xml/privacy_settings.xml +++ b/res/xml/privacy_settings.xml @@ -25,6 +25,14 @@ android:title="@string/backup_data_title" android:summary="@string/backup_data_summary" android:persistent="false" /> + <PreferenceScreen + android:key="configure_transport" + android:dependency="backup_data" + android:layout="?android:attr/preferenceLayoutChild" + android:title="@string/backup_configure_transport_title" + android:summary="@string/backup_configure_transport_default_summary"> + <intent android:action="dummy" /> + </PreferenceScreen> <CheckBoxPreference android:key="auto_restore" android:title="@string/auto_restore_title" diff --git a/src/com/android/settings/PrivacySettings.java b/src/com/android/settings/PrivacySettings.java index 3f62f19..4132507 100644 --- a/src/com/android/settings/PrivacySettings.java +++ b/src/com/android/settings/PrivacySettings.java @@ -22,6 +22,7 @@ import android.app.backup.IBackupManager; import android.content.ContentResolver; import android.content.Context; import android.content.DialogInterface; +import android.content.Intent; import android.os.Bundle; import android.os.RemoteException; import android.os.ServiceManager; @@ -41,9 +42,12 @@ public class PrivacySettings extends SettingsPreferenceFragment implements private static final String BACKUP_CATEGORY = "backup_category"; private static final String BACKUP_DATA = "backup_data"; private static final String AUTO_RESTORE = "auto_restore"; + private static final String CONFIGURE_TRANSPORT = "configure_transport"; + private IBackupManager mBackupManager; private CheckBoxPreference mBackup; private CheckBoxPreference mAutoRestore; private Dialog mConfirmDialog; + private PreferenceScreen mConfigure; private static final int DIALOG_ERASE_BACKUP = 2; private int mDialogType; @@ -54,8 +58,12 @@ public class PrivacySettings extends SettingsPreferenceFragment implements addPreferencesFromResource(R.xml.privacy_settings); final PreferenceScreen screen = getPreferenceScreen(); + mBackupManager = IBackupManager.Stub.asInterface( + ServiceManager.getService(Context.BACKUP_SERVICE)); + mBackup = (CheckBoxPreference) screen.findPreference(BACKUP_DATA); mAutoRestore = (CheckBoxPreference) screen.findPreference(AUTO_RESTORE); + mConfigure = (PreferenceScreen) screen.findPreference(CONFIGURE_TRANSPORT); // Vendor specific if (getActivity().getPackageManager(). @@ -121,13 +129,31 @@ public class PrivacySettings extends SettingsPreferenceFragment implements private void updateToggles() { ContentResolver res = getContentResolver(); - final boolean backupEnabled = Settings.Secure.getInt(res, - Settings.Secure.BACKUP_ENABLED, 0) == 1; + boolean backupEnabled = false; + Intent configIntent = null; + String configSummary = null; + try { + backupEnabled = mBackupManager.isBackupEnabled(); + String transport = mBackupManager.getCurrentTransport(); + configIntent = mBackupManager.getConfigurationIntent(transport); + configSummary = mBackupManager.getDestinationString(transport); + } catch (RemoteException e) { + // leave it 'false' and disable the UI; there's no backup manager + mBackup.setEnabled(false); + } mBackup.setChecked(backupEnabled); mAutoRestore.setChecked(Settings.Secure.getInt(res, Settings.Secure.BACKUP_AUTO_RESTORE, 1) == 1); mAutoRestore.setEnabled(backupEnabled); + + mConfigure.setEnabled(configIntent != null); + mConfigure.setIntent(configIntent); + if (configSummary != null) { + mConfigure.setSummary(configSummary); + } else { + mConfigure.setSummary(R.string.backup_configure_transport_default_summary); + } } public void onClick(DialogInterface dialog, int which) { @@ -151,11 +177,9 @@ public class PrivacySettings extends SettingsPreferenceFragment implements * @param enable whether to enable backup */ private void setBackupEnabled(boolean enable) { - IBackupManager bm = IBackupManager.Stub.asInterface( - ServiceManager.getService(Context.BACKUP_SERVICE)); - if (bm != null) { + if (mBackupManager != null) { try { - bm.setBackupEnabled(enable); + mBackupManager.setBackupEnabled(enable); } catch (RemoteException e) { mBackup.setChecked(!enable); mAutoRestore.setEnabled(!enable); |