diff --git a/res/xml/development_prefs.xml b/res/xml/development_prefs.xml
index 8362a83..e8dbc03 100644
--- a/res/xml/development_prefs.xml
+++ b/res/xml/development_prefs.xml
@@ -52,11 +52,6 @@
         android:entryValues="@array/hdcp_checking_values" />
 
     <CheckBoxPreference
-        android:key="enforce_read_external"
-        android:title="@string/enforce_read_external_title"
-        android:summary="@string/enforce_read_external_summary" />
-
-    <CheckBoxPreference
         android:key="bt_hci_snoop_log"
         android:title="@string/bt_hci_snoop_log"
         android:summary="@string/bt_hci_snoop_log_summary"/>
diff --git a/src/com/android/settings/DataUsageSummary.java b/src/com/android/settings/DataUsageSummary.java
index 3d5678d..a0b18fd 100644
--- a/src/com/android/settings/DataUsageSummary.java
+++ b/src/com/android/settings/DataUsageSummary.java
@@ -141,13 +141,13 @@
 import com.android.settings.widget.PieChartView;
 import com.google.android.collect.Lists;
 
+import libcore.util.Objects;
+
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 import java.util.Locale;
 
-import libcore.util.Objects;
-
 /**
  * Panel showing data usage history across various networks, including options
  * to inspect based on usage cycle and control through {@link NetworkPolicy}.
@@ -277,6 +277,16 @@
         mPolicyEditor.read();
 
         try {
+            if (!mNetworkService.isBandwidthControlEnabled()) {
+                Log.w(TAG, "No bandwidth control; leaving");
+                getActivity().finish();
+            }
+        } catch (RemoteException e) {
+            Log.w(TAG, "No bandwidth control; leaving");
+            getActivity().finish();
+        }
+
+        try {
             mStatsSession = mStatsService.openSession();
         } catch (RemoteException e) {
             throw new RuntimeException(e);
diff --git a/src/com/android/settings/DevelopmentSettings.java b/src/com/android/settings/DevelopmentSettings.java
index 1542bce..3e05bd9 100644
--- a/src/com/android/settings/DevelopmentSettings.java
+++ b/src/com/android/settings/DevelopmentSettings.java
@@ -16,15 +16,11 @@
 
 package com.android.settings;
 
-import static android.Manifest.permission.READ_EXTERNAL_STORAGE;
-
 import android.app.ActionBar;
 import android.app.Activity;
 import android.app.ActivityManagerNative;
-import android.app.ActivityThread;
 import android.app.AlertDialog;
 import android.app.Dialog;
-import android.app.DialogFragment;
 import android.app.admin.DevicePolicyManager;
 import android.app.backup.IBackupManager;
 import android.bluetooth.BluetoothAdapter;
@@ -59,11 +55,11 @@
 import android.provider.Settings;
 import android.text.TextUtils;
 import android.util.Log;
-import android.webkit.WebViewFactory;
 import android.view.Gravity;
 import android.view.HardwareRenderer;
 import android.view.IWindowManager;
 import android.view.View;
+import android.webkit.WebViewFactory;
 import android.widget.CompoundButton;
 import android.widget.Switch;
 import android.widget.TextView;
@@ -103,7 +99,6 @@
     private static final String ALLOW_MOCK_LOCATION = "allow_mock_location";
     private static final String HDCP_CHECKING_KEY = "hdcp_checking";
     private static final String HDCP_CHECKING_PROPERTY = "persist.sys.hdcp_checking";
-    private static final String ENFORCE_READ_EXTERNAL = "enforce_read_external";
     private static final String LOCAL_BACKUP_PASSWORD = "local_backup_password";
     private static final String HARDWARE_UI_PROPERTY = "persist.sys.ui.hw";
     private static final String MSAA_PROPERTY = "debug.egl.force_msaa";
@@ -171,7 +166,6 @@
     private CheckBoxPreference mBugreportInPower;
     private CheckBoxPreference mKeepScreenOn;
     private CheckBoxPreference mBtHciSnoopLog;
-    private CheckBoxPreference mEnforceReadExternal;
     private CheckBoxPreference mAllowMockLocation;
     private PreferenceScreen mPassword;
 
@@ -263,7 +257,6 @@
         mBugreportInPower = findAndInitCheckboxPref(BUGREPORT_IN_POWER_KEY);
         mKeepScreenOn = findAndInitCheckboxPref(KEEP_SCREEN_ON);
         mBtHciSnoopLog = findAndInitCheckboxPref(BT_HCI_SNOOP_LOG);
-        mEnforceReadExternal = findAndInitCheckboxPref(ENFORCE_READ_EXTERNAL);
         mAllowMockLocation = findAndInitCheckboxPref(ALLOW_MOCK_LOCATION);
         mPassword = (PreferenceScreen) findPreference(LOCAL_BACKUP_PASSWORD);
         mAllPrefs.add(mPassword);
@@ -492,7 +485,6 @@
                 Settings.Global.STAY_ON_WHILE_PLUGGED_IN, 0) != 0);
         updateCheckBox(mBtHciSnoopLog, Settings.Secure.getInt(cr,
                 Settings.Secure.BLUETOOTH_HCI_LOG, 0) != 0);
-        updateCheckBox(mEnforceReadExternal, isPermissionEnforced(READ_EXTERNAL_STORAGE));
         updateCheckBox(mAllowMockLocation, Settings.Secure.getInt(cr,
                 Settings.Secure.ALLOW_MOCK_LOCATION, 0) != 0);
         updateRuntimeValue();
@@ -1250,12 +1242,6 @@
                     (BatteryManager.BATTERY_PLUGGED_AC | BatteryManager.BATTERY_PLUGGED_USB) : 0);
         } else if (preference == mBtHciSnoopLog) {
             writeBtHciSnoopLogOptions();
-        } else if (preference == mEnforceReadExternal) {
-            if (mEnforceReadExternal.isChecked()) {
-                ConfirmEnforceFragment.show(this);
-            } else {
-                setPermissionEnforced(getActivity(), READ_EXTERNAL_STORAGE, false);
-            }
         } else if (preference == mAllowMockLocation) {
             Settings.Secure.putInt(getActivity().getContentResolver(),
                     Settings.Secure.ALLOW_MOCK_LOCATION,
@@ -1477,61 +1463,6 @@
         }
     }
 
-    /**
-     * Dialog to confirm enforcement of {@link android.Manifest.permission#READ_EXTERNAL_STORAGE}.
-     */
-    public static class ConfirmEnforceFragment extends DialogFragment {
-        public static void show(DevelopmentSettings parent) {
-            final ConfirmEnforceFragment dialog = new ConfirmEnforceFragment();
-            dialog.setTargetFragment(parent, 0);
-            dialog.show(parent.getFragmentManager(), TAG_CONFIRM_ENFORCE);
-        }
-
-        @Override
-        public Dialog onCreateDialog(Bundle savedInstanceState) {
-            final Context context = getActivity();
-
-            final AlertDialog.Builder builder = new AlertDialog.Builder(context);
-            builder.setTitle(R.string.enforce_read_external_confirm_title);
-            builder.setMessage(R.string.enforce_read_external_confirm_message);
-
-            builder.setPositiveButton(android.R.string.ok, new OnClickListener() {
-                @Override
-                public void onClick(DialogInterface dialog, int which) {
-                    setPermissionEnforced(context, READ_EXTERNAL_STORAGE, true);
-                    ((DevelopmentSettings) getTargetFragment()).updateAllOptions();
-                }
-            });
-            builder.setNegativeButton(android.R.string.cancel, new OnClickListener() {
-                @Override
-                public void onClick(DialogInterface dialog, int which) {
-                    ((DevelopmentSettings) getTargetFragment()).updateAllOptions();
-                }
-            });
-
-            return builder.create();
-        }
-    }
-
-    private static boolean isPermissionEnforced(String permission) {
-        try {
-            return ActivityThread.getPackageManager().isPermissionEnforced(permission);
-        } catch (RemoteException e) {
-            throw new RuntimeException("Problem talking with PackageManager", e);
-        }
-    }
-
-    private static void setPermissionEnforced(
-            Context context, String permission, boolean enforced) {
-        try {
-            // TODO: offload to background thread
-            ActivityThread.getPackageManager()
-                    .setPermissionEnforced(READ_EXTERNAL_STORAGE, enforced);
-        } catch (RemoteException e) {
-            throw new RuntimeException("Problem talking with PackageManager", e);
-        }
-    }
-
     private static boolean isPackageInstalled(Context context, String packageName) {
         try {
             return context.getPackageManager().getPackageInfo(packageName, 0) != null;
