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); + } }