diff options
author | Zoltan Szatmary-Ban <szatmz@google.com> | 2014-11-12 23:46:52 +0000 |
---|---|---|
committer | Zoltan Szatmary-Ban <szatmz@google.com> | 2014-11-20 20:20:49 +0000 |
commit | 876a21bae81e8468d2d6415313c9805d56ae3dfe (patch) | |
tree | 8983eebecdb3307727a77a318fe998f9f60f3af4 /src/com/android/settings/PrivacySettings.java | |
parent | 101743f9ecccae0054ba5867ae0585750a0a8bd2 (diff) | |
download | packages_apps_Settings-876a21bae81e8468d2d6415313c9805d56ae3dfe.zip packages_apps_Settings-876a21bae81e8468d2d6415313c9805d56ae3dfe.tar.gz packages_apps_Settings-876a21bae81e8468d2d6415313c9805d56ae3dfe.tar.bz2 |
Remove backup preferences if backup service is inactive
Also show informative message instead.
Bug: 16641441
Change-Id: I9920c07d56c4c0ccb1f3dce637c0fb390902d2ff
Diffstat (limited to 'src/com/android/settings/PrivacySettings.java')
-rw-r--r-- | src/com/android/settings/PrivacySettings.java | 64 |
1 files changed, 55 insertions, 9 deletions
diff --git a/src/com/android/settings/PrivacySettings.java b/src/com/android/settings/PrivacySettings.java index 4d52a35..8df78c5 100644 --- a/src/com/android/settings/PrivacySettings.java +++ b/src/com/android/settings/PrivacySettings.java @@ -30,11 +30,13 @@ import android.os.ServiceManager; import android.os.UserHandle; import android.os.UserManager; import android.preference.Preference; +import android.preference.PreferenceCategory; import android.preference.Preference.OnPreferenceChangeListener; import android.preference.PreferenceScreen; import android.preference.SwitchPreference; import android.provider.SearchIndexableResource; import android.provider.Settings; +import android.util.Log; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.search.Indexable; @@ -55,7 +57,9 @@ public class PrivacySettings extends SettingsPreferenceFragment implements private static final String BACKUP_DATA = "backup_data"; private static final String AUTO_RESTORE = "auto_restore"; private static final String CONFIGURE_ACCOUNT = "configure_account"; + private static final String BACKUP_INACTIVE = "backup_inactive"; private static final String PERSONAL_DATA_CATEGORY = "personal_data_category"; + private static final String TAG = "PrivacySettings"; private IBackupManager mBackupManager; private SwitchPreference mBackup; private SwitchPreference mAutoRestore; @@ -88,15 +92,23 @@ public class PrivacySettings extends SettingsPreferenceFragment implements mConfigure = (PreferenceScreen) screen.findPreference(CONFIGURE_ACCOUNT); - if (UserManager.get(getActivity()).hasUserRestriction( - UserManager.DISALLOW_FACTORY_RESET)) { - screen.removePreference(findPreference(PERSONAL_DATA_CATEGORY)); + ArrayList<String> keysToRemove = getNonVisibleKeys(getActivity()); + final int screenPreferenceCount = screen.getPreferenceCount(); + for (int i = screenPreferenceCount - 1; i >= 0; --i) { + Preference preference = screen.getPreference(i); + if (keysToRemove.contains(preference.getKey())) { + screen.removePreference(preference); + } } - - // Vendor specific - if (getActivity().getPackageManager(). - resolveContentProvider(GSETTINGS_PROVIDER, 0) == null) { - screen.removePreference(findPreference(BACKUP_CATEGORY)); + PreferenceCategory backupCategory = (PreferenceCategory) findPreference(BACKUP_CATEGORY); + if (backupCategory != null) { + final int backupCategoryPreferenceCount = backupCategory.getPreferenceCount(); + for (int i = backupCategoryPreferenceCount - 1; i >= 0; --i) { + Preference preference = backupCategory.getPreference(i); + if (keysToRemove.contains(preference.getKey())) { + backupCategory.removePreference(preference); + } + } } updateToggles(); } @@ -285,6 +297,40 @@ public class PrivacySettings extends SettingsPreferenceFragment implements return result; } + + @Override + public List<String> getNonIndexableKeys(Context context) { + return getNonVisibleKeys(context); + } } -}
\ No newline at end of file + private static ArrayList<String> getNonVisibleKeys(Context context) { + final ArrayList<String> nonVisibleKeys = new ArrayList<String>(); + final IBackupManager backupManager = IBackupManager.Stub.asInterface( + ServiceManager.getService(Context.BACKUP_SERVICE)); + boolean isServiceActive = false; + try { + isServiceActive = backupManager.isBackupServiceActive(UserHandle.myUserId()); + } catch (RemoteException e) { + Log.w(TAG, "Failed querying backup manager service activity status. " + + "Assuming it is inactive."); + } + if (isServiceActive) { + nonVisibleKeys.add(BACKUP_INACTIVE); + } else { + nonVisibleKeys.add(AUTO_RESTORE); + nonVisibleKeys.add(CONFIGURE_ACCOUNT); + nonVisibleKeys.add(BACKUP_DATA); + } + if (UserManager.get(context).hasUserRestriction( + UserManager.DISALLOW_FACTORY_RESET)) { + nonVisibleKeys.add(PERSONAL_DATA_CATEGORY); + } + // Vendor specific + if (context.getPackageManager(). + resolveContentProvider(GSETTINGS_PROVIDER, 0) == null) { + nonVisibleKeys.add(BACKUP_CATEGORY); + } + return nonVisibleKeys; + } +} |