diff --git a/res/values/strings.xml b/res/values/strings.xml
index b1180c423e0..2f2167eaf5d 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -7903,4 +7903,7 @@
Installed apps
+
+
+ Your storage is now being managed by the storage manager
diff --git a/src/com/android/settings/deletionhelper/ActivationWarningFragment.java b/src/com/android/settings/deletionhelper/ActivationWarningFragment.java
new file mode 100644
index 00000000000..f7d46d1c433
--- /dev/null
+++ b/src/com/android/settings/deletionhelper/ActivationWarningFragment.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.deletionhelper;
+
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.app.DialogFragment;
+import android.content.DialogInterface;
+import android.os.Bundle;
+import com.android.settings.R;
+
+/**
+ * Fragment to warn the user about activating the storage manager.
+ */
+public class ActivationWarningFragment extends DialogFragment {
+ public static final String TAG = "ActivationWarningFragment";
+
+ public static ActivationWarningFragment newInstance() {
+ return new ActivationWarningFragment();
+ }
+
+ @Override
+ public Dialog onCreateDialog(Bundle savedInstanceState) {
+ return new AlertDialog.Builder(getActivity())
+ .setMessage(R.string.automatic_storage_manager_activation_warning)
+ .setPositiveButton(android.R.string.ok, null)
+ .create();
+ }
+
+}
diff --git a/src/com/android/settings/deletionhelper/AutomaticStorageManagerSettings.java b/src/com/android/settings/deletionhelper/AutomaticStorageManagerSettings.java
index 6177ab4059d..861bbf85191 100644
--- a/src/com/android/settings/deletionhelper/AutomaticStorageManagerSettings.java
+++ b/src/com/android/settings/deletionhelper/AutomaticStorageManagerSettings.java
@@ -17,9 +17,11 @@
package com.android.settings.deletionhelper;
import android.app.Activity;
+import android.app.AlertDialog;
import android.content.ContentResolver;
import android.content.Intent;
import android.os.Bundle;
+import android.os.SystemProperties;
import android.os.storage.StorageManager;
import android.provider.Settings;
import android.support.v14.preference.SwitchPreference;
@@ -47,6 +49,8 @@ public class AutomaticStorageManagerSettings extends SettingsPreferenceFragment
private static final String KEY_STORAGE_MANAGER_SWITCH = "storage_manager_active";
private static final String KEY_DOWNLOADS_BACKUP_SWITCH = "downloads_backup_active";
private static final String KEY_DOWNLOADS_DAYS = "downloads_days";
+ private static final String STORAGE_MANAGER_ENABLED_BY_DEFAULT_PROPERTY =
+ "ro.storage_manager.enabled";
private DropDownPreference mDaysToRetain;
private DropDownPreference mDownloadsDaysToRetain;
@@ -138,6 +142,10 @@ public class AutomaticStorageManagerSettings extends SettingsPreferenceFragment
Settings.Secure.putInt(getContentResolver(),
Settings.Secure.AUTOMATIC_STORAGE_MANAGER_ENABLED,
storageManagerChecked ? 1 : 0);
+ // Only show a warning if enabling.
+ if (storageManagerChecked) {
+ maybeShowWarning();
+ }
break;
case KEY_DOWNLOADS_BACKUP_SWITCH:
boolean downloadsBackupChecked = (boolean) newValue;
@@ -186,4 +194,15 @@ public class AutomaticStorageManagerSettings extends SettingsPreferenceFragment
}
return indices.length - 1;
}
+
+ private void maybeShowWarning() {
+ // If the storage manager is on by default, we can use the normal message.
+ boolean warningUnneeded = SystemProperties.getBoolean(
+ STORAGE_MANAGER_ENABLED_BY_DEFAULT_PROPERTY, false);
+ if (warningUnneeded) {
+ return;
+ }
+ ActivationWarningFragment fragment = ActivationWarningFragment.newInstance();
+ fragment.show(getFragmentManager(), ActivationWarningFragment.TAG);
+ }
}