diff --git a/res/values/strings.xml b/res/values/strings.xml index f7f687b6c66..50b1ebfdab2 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 @@ -4374,6 +4376,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 a372fa159d1..07b2e59d9ec 100644 --- a/src/com/android/settings/DevelopmentSettings.java +++ b/src/com/android/settings/DevelopmentSettings.java @@ -48,6 +48,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; @@ -65,6 +66,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; @@ -207,6 +209,8 @@ public class DevelopmentSettings extends PreferenceFragment private Dialog mAdbDialog; private Dialog mAdbKeysDialog; + private boolean mUnavailable; + @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); @@ -216,6 +220,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); final PreferenceGroup debugDebuggingCategory = (PreferenceGroup) @@ -343,6 +353,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); } @@ -389,6 +403,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(); } } }