diff --git a/res/values/strings.xml b/res/values/strings.xml
index af02ae53a70..6f438810f88 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -3036,6 +3036,8 @@
Set options for app development
+
+ Developer options are not available for this user
USB debugging
Debug mode when USB is connected
@@ -4369,6 +4371,8 @@
Only the tablet\'s owner can manage users.
Only the phone\'s owner can manage users.
+
+ Limited users cannot add accounts
Delete %1$s from this device
diff --git a/src/com/android/settings/DevelopmentSettings.java b/src/com/android/settings/DevelopmentSettings.java
index 8694e9dc0fd..4597bf0d348 100644
--- a/src/com/android/settings/DevelopmentSettings.java
+++ b/src/com/android/settings/DevelopmentSettings.java
@@ -47,6 +47,7 @@ import android.os.ServiceManager;
import android.os.StrictMode;
import android.os.SystemProperties;
import android.os.UserHandle;
+import android.os.UserManager;
import android.preference.CheckBoxPreference;
import android.preference.ListPreference;
import android.preference.Preference;
@@ -64,6 +65,7 @@ import android.view.IWindowManager;
import android.view.View;
import android.widget.CompoundButton;
import android.widget.Switch;
+import android.widget.TextView;
import java.util.ArrayList;
import java.util.HashSet;
@@ -202,6 +204,8 @@ public class DevelopmentSettings extends PreferenceFragment
private Dialog mAdbDialog;
private Dialog mAdbKeysDialog;
+ private boolean mUnavailable;
+
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
@@ -211,6 +215,12 @@ public class DevelopmentSettings extends PreferenceFragment
ServiceManager.getService(Context.BACKUP_SERVICE));
mDpm = (DevicePolicyManager)getActivity().getSystemService(Context.DEVICE_POLICY_SERVICE);
+ if (android.os.Process.myUserHandle().getIdentifier() != UserHandle.USER_OWNER) {
+ mUnavailable = true;
+ setPreferenceScreen(new PreferenceScreen(getActivity(), null));
+ return;
+ }
+
addPreferencesFromResource(R.xml.development_prefs);
mEnableAdb = findAndInitCheckboxPref(ENABLE_ADB);
@@ -333,6 +343,10 @@ public class DevelopmentSettings extends PreferenceFragment
final int padding = activity.getResources().getDimensionPixelSize(
R.dimen.action_bar_switch_padding);
mEnabledSwitch.setPaddingRelative(0, 0, padding, 0);
+ if (mUnavailable) {
+ mEnabledSwitch.setEnabled(false);
+ return;
+ }
mEnabledSwitch.setOnCheckedChangeListener(this);
}
@@ -379,6 +393,16 @@ public class DevelopmentSettings extends PreferenceFragment
public void onResume() {
super.onResume();
+ if (mUnavailable) {
+ // Show error message
+ TextView emptyView = (TextView) getView().findViewById(android.R.id.empty);
+ getListView().setEmptyView(emptyView);
+ if (emptyView != null) {
+ emptyView.setText(R.string.development_settings_not_available);
+ }
+ return;
+ }
+
if (mDpm.getMaximumTimeToLock(null) > 0) {
// A DeviceAdmin has specified a maximum time until the device
// will lock... in this case we can't allow the user to turn
diff --git a/src/com/android/settings/accounts/AddAccountSettings.java b/src/com/android/settings/accounts/AddAccountSettings.java
index f1b7752fc47..39906eb3043 100644
--- a/src/com/android/settings/accounts/AddAccountSettings.java
+++ b/src/com/android/settings/accounts/AddAccountSettings.java
@@ -28,7 +28,9 @@ import android.content.Intent;
import android.os.Bundle;
import android.os.UserManager;
import android.util.Log;
+import android.widget.Toast;
+import com.android.settings.R;
import com.android.settings.Utils;
import java.io.IOException;
@@ -124,9 +126,15 @@ public class AddAccountSettings extends Activity {
}
final UserManager um = (UserManager) getSystemService(Context.USER_SERVICE);
- if (mAddAccountCalled || um.hasUserRestriction(UserManager.DISALLOW_MODIFY_ACCOUNTS)) {
+ if (um.hasUserRestriction(UserManager.DISALLOW_MODIFY_ACCOUNTS)) {
+ // We aren't allowed to add an account.
+ Toast.makeText(this, R.string.user_cannot_add_accounts_message, Toast.LENGTH_LONG)
+ .show();
+ finish();
+ return;
+ }
+ if (mAddAccountCalled) {
// We already called add account - maybe the callback was lost.
- // Or we aren't allowed to add an account.
finish();
return;
}
diff --git a/src/com/android/settings/accounts/ManageAccountsSettings.java b/src/com/android/settings/accounts/ManageAccountsSettings.java
index 46aa566ec89..8a093ca6b1f 100644
--- a/src/com/android/settings/accounts/ManageAccountsSettings.java
+++ b/src/com/android/settings/accounts/ManageAccountsSettings.java
@@ -332,6 +332,7 @@ public class ManageAccountsSettings extends AccountPreferenceBase
getPreferenceScreen().addPreference(preference);
if (mFirstAccount == null) {
mFirstAccount = account;
+ getActivity().invalidateOptionsMenu();
}
}
}