diff --git a/res/values/strings.xml b/res/values/strings.xml
index 515a3de..c45cdf1 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -2340,6 +2340,11 @@
     <string name="app_install_location_title">Preferred install location</string>
     <!-- Manage applications. application installation location summary -->
     <string name="app_install_location_summary">Change the preferred installation location for new applications.</string>
+    <!-- [CHAR LIMIT=30] Manage applications, title for dialog when disabling apps -->
+    <string name="app_disable_dlg_title">Disable built-in app</string>
+    <!-- [CHAR LIMIT=200] Manage applications, text for dialog when disabling apps -->
+    <string name="app_disable_dlg_text">Disabling a built-in application may cause other applications
+        to misbehave.  Are you sure?</string>
 
     <!-- [CHAR LIMIT=25] Services settings screen, setting option name for the user to go to the screen to view app storage use -->
     <string name="storageuse_settings_title">Storage use</string>
diff --git a/src/com/android/settings/applications/InstalledAppDetails.java b/src/com/android/settings/applications/InstalledAppDetails.java
index ab46661..a84b8bb 100644
--- a/src/com/android/settings/applications/InstalledAppDetails.java
+++ b/src/com/android/settings/applications/InstalledAppDetails.java
@@ -147,6 +147,7 @@
     private static final int DLG_CANNOT_CLEAR_DATA = DLG_BASE + 4;
     private static final int DLG_FORCE_STOP = DLG_BASE + 5;
     private static final int DLG_MOVE_FAILED = DLG_BASE + 6;
+    private static final int DLG_DISABLE = DLG_BASE + 7;
     
     private Handler mHandler = new Handler() {
         public void handleMessage(Message msg) {
@@ -754,6 +755,22 @@
                     .setMessage(msg)
                     .setNeutralButton(R.string.dlg_ok, null)
                     .create();
+                case DLG_DISABLE:
+                    return new AlertDialog.Builder(getActivity())
+                    .setTitle(getActivity().getText(R.string.app_disable_dlg_title))
+                    .setIcon(android.R.drawable.ic_dialog_alert)
+                    .setMessage(getActivity().getText(R.string.app_disable_dlg_text))
+                    .setPositiveButton(R.string.dlg_ok,
+                        new DialogInterface.OnClickListener() {
+                        public void onClick(DialogInterface dialog, int which) {
+                            // Disable the app
+                            new DisableChanger(getOwner(), getOwner().mAppEntry.info,
+                                    PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER)
+                            .execute((Object)null);
+                        }
+                    })
+                    .setNegativeButton(R.string.dlg_cancel, null)
+                    .create();
             }
             throw new IllegalArgumentException("unknown id " + id);
         }
@@ -837,9 +854,13 @@
                 showDialogInner(DLG_FACTORY_RESET, 0);
             } else {
                 if ((mAppEntry.info.flags & ApplicationInfo.FLAG_SYSTEM) != 0) {
-                    new DisableChanger(this, mAppEntry.info, mAppEntry.info.enabled ?
-                            PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER
-                            : PackageManager.COMPONENT_ENABLED_STATE_DEFAULT).execute((Object)null);
+                    if (mAppEntry.info.enabled) {
+                        showDialogInner(DLG_DISABLE, 0);
+                    } else {
+                        new DisableChanger(this, mAppEntry.info,
+                                PackageManager.COMPONENT_ENABLED_STATE_DEFAULT)
+                        .execute((Object)null);
+                    }
                 } else {
                     uninstallPkg(packageName);
                 }
