summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/PrivacySettings.java
diff options
context:
space:
mode:
authorZoltan Szatmary-Ban <szatmz@google.com>2014-11-12 23:46:52 +0000
committerZoltan Szatmary-Ban <szatmz@google.com>2014-11-20 20:20:49 +0000
commit876a21bae81e8468d2d6415313c9805d56ae3dfe (patch)
tree8983eebecdb3307727a77a318fe998f9f60f3af4 /src/com/android/settings/PrivacySettings.java
parent101743f9ecccae0054ba5867ae0585750a0a8bd2 (diff)
downloadpackages_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.java64
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;
+ }
+}