diff --git a/src/com/android/settings/TextToSpeechSettings.java b/src/com/android/settings/TextToSpeechSettings.java
index 93613b7..34ce251 100644
--- a/src/com/android/settings/TextToSpeechSettings.java
+++ b/src/com/android/settings/TextToSpeechSettings.java
@@ -683,6 +683,8 @@
 
     private void loadEngines() {
         List<EngineInfo> engines = mEnginesHelper.getEngines();
+        updateUserEnabledEngines(engines);
+
         ArrayList<CharSequence> entries = new ArrayList<CharSequence>();
         ArrayList<CharSequence> values = new ArrayList<CharSequence>();
         StringBuilder enabledEngines = new StringBuilder();
@@ -692,12 +694,9 @@
             if (mEnginesHelper.isEngineEnabled(engine.name)) {
                 entries.add(engine.label);
                 values.add(engine.name);
-                if (enabledEngines.length() > 0) enabledEngines.append(' ');
-                enabledEngines.append(engine.name);
             }
         }
-        ContentResolver resolver = getContentResolver();
-        Settings.Secure.putString(resolver, TTS_ENABLED_PLUGINS, enabledEngines.toString());
+
 
         CharSequence entriesArray[] = new CharSequence[entries.size()];
         CharSequence valuesArray[] = new CharSequence[values.size()];
@@ -717,4 +716,26 @@
         }
     }
 
+    /*
+     * Write out the list of engines enabled by the user to a
+     * shared preference.
+     */
+    private void updateUserEnabledEngines(List<EngineInfo> engines) {
+        StringBuilder enginesList = new StringBuilder();
+        for (EngineInfo engine : engines) {
+            if (isEngineUserEnabled(engine.name)) {
+                if (enginesList.length() > 0) enginesList.append(' ');
+                enginesList.append(engine.name);
+            }
+        }
+
+        ContentResolver resolver = getContentResolver();
+        Settings.Secure.putString(resolver, TTS_ENABLED_PLUGINS, enginesList.toString());
+    }
+
+    private boolean isEngineUserEnabled(String engineName) {
+        String enginePref = KEY_PLUGIN_ENABLED_PREFIX + engineName;
+        return getPreferenceManager().getSharedPreferences().getBoolean(enginePref, false);
+    }
+
 }
