User management screens
Customized Settings for restricted users
- Only some top-level settings panels available
User management
- Primary user can add and remove users
- User details screen to change name and list of enabled apps
Change-Id: Ia6beb991b427197a4ec2724ca3c9222073f6cf7d
diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java
index eb30809..7e4e725 100644
--- a/src/com/android/settings/Settings.java
+++ b/src/com/android/settings/Settings.java
@@ -16,6 +16,7 @@
package com.android.settings;
+import com.android.internal.util.ArrayUtils;
import com.android.settings.accounts.AccountSyncSettings;
import com.android.settings.bluetooth.BluetoothEnabler;
import com.android.settings.deviceinfo.Memory;
@@ -29,6 +30,7 @@
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.os.Bundle;
+import android.os.UserId;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceFragment;
@@ -76,6 +78,17 @@
private Header mParentHeader;
private boolean mInLocalHeaderSwitch;
+ // Show only these settings for restricted users
+ private int[] SETTINGS_FOR_RESTRICTED = {
+ R.id.wifi_settings,
+ R.id.bluetooth_settings,
+ R.id.sound_settings,
+ R.id.display_settings,
+ //R.id.security_settings,
+ R.id.sync_settings,
+ R.id.about_settings
+ };
+
// TODO: Update Call Settings based on airplane mode state.
protected HashMap<Integer, Integer> mHeaderIndexMap = new HashMap<Integer, Integer>();
@@ -337,6 +350,16 @@
if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH)) {
target.remove(header);
}
+ } else if (id == R.id.user_settings) {
+ if (!UserId.MU_ENABLED || UserId.myUserId() != 0
+ || !getResources().getBoolean(R.bool.enable_user_management)
+ || Utils.isMonkeyRunning()) {
+ target.remove(header);
+ }
+ }
+ if (UserId.MU_ENABLED && UserId.myUserId() != 0
+ && !ArrayUtils.contains(SETTINGS_FOR_RESTRICTED, id)) {
+ target.remove(header);
}
// Increment if the current one wasn't removed by the Utils code.