diff --git a/src/com/android/settings/ChooseLockGeneric.java b/src/com/android/settings/ChooseLockGeneric.java
index 42ae602..32e5cc1 100644
--- a/src/com/android/settings/ChooseLockGeneric.java
+++ b/src/com/android/settings/ChooseLockGeneric.java
@@ -417,7 +417,7 @@
 
             int adminEnforcedQuality = mDPM.getPasswordQuality(null);
             EnforcedAdmin enforcedAdmin = RestrictedLockUtils.checkIfPasswordQualityIsSet(
-                    getActivity());
+                    getActivity(), mUserId);
             for (int i = entries.getPreferenceCount() - 1; i >= 0; --i) {
                 Preference pref = entries.getPreference(i);
                 if (pref instanceof RestrictedPreference) {
diff --git a/src/com/android/settings/accessibility/AccessibilitySettings.java b/src/com/android/settings/accessibility/AccessibilitySettings.java
index 5ce5cfc..840cd59 100644
--- a/src/com/android/settings/accessibility/AccessibilitySettings.java
+++ b/src/com/android/settings/accessibility/AccessibilitySettings.java
@@ -482,8 +482,8 @@
             boolean serviceAllowed =
                     permittedServices == null || permittedServices.contains(packageName);
             if (!serviceAllowed && !serviceEnabled) {
-                EnforcedAdmin admin =
-                        RestrictedLockUtils.getProfileOrDeviceOwnerOnCallingUser(getActivity());
+                EnforcedAdmin admin = RestrictedLockUtils.checkIfAccessibilityServiceDisallowed(
+                        getActivity(), serviceInfo.packageName, UserHandle.myUserId());
                 if (admin != null) {
                     preference.setDisabledByAdmin(admin);
                 } else {
diff --git a/src/com/android/settings/accounts/AccountSyncSettings.java b/src/com/android/settings/accounts/AccountSyncSettings.java
index 418fd58..33c29bd 100644
--- a/src/com/android/settings/accounts/AccountSyncSettings.java
+++ b/src/com/android/settings/accounts/AccountSyncSettings.java
@@ -272,7 +272,7 @@
                 mUserHandle.getIdentifier());
         if (admin == null) {
             admin = RestrictedLockUtils.checkIfAccountManagementDisabled(
-                    getPrefContext(), mAccount.type);
+                    getPrefContext(), mAccount.type, mUserHandle.getIdentifier());
         }
         RestrictedLockUtils.setMenuItemAsDisabledByAdmin(getPrefContext(),
                 removeAccount, admin);
diff --git a/src/com/android/settings/accounts/AddAccountSettings.java b/src/com/android/settings/accounts/AddAccountSettings.java
index d4f824f..3f691e3 100644
--- a/src/com/android/settings/accounts/AddAccountSettings.java
+++ b/src/com/android/settings/accounts/AddAccountSettings.java
@@ -34,11 +34,14 @@
 
 import com.android.settings.R;
 import com.android.settings.Utils;
+import com.android.settingslib.RestrictedLockUtils;
 
 import java.io.IOException;
 
 import static android.content.Intent.EXTRA_USER;
 
+import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
+
 /**
  * Entry point Activity for account setup. Works as follows
  *
@@ -171,6 +174,9 @@
         switch (requestCode) {
         case CHOOSE_ACCOUNT_REQUEST:
             if (resultCode == RESULT_CANCELED) {
+                if (data != null) {
+                    startActivityAsUser(data, mUserHandle);
+                }
                 setResult(resultCode);
                 finish();
                 return;
diff --git a/src/com/android/settings/accounts/ChooseAccountActivity.java b/src/com/android/settings/accounts/ChooseAccountActivity.java
index 80017cd..2f904cf 100644
--- a/src/com/android/settings/accounts/ChooseAccountActivity.java
+++ b/src/com/android/settings/accounts/ChooseAccountActivity.java
@@ -39,6 +39,7 @@
 import com.android.settings.InstrumentedPreferenceActivity;
 import com.android.settings.R;
 import com.android.settings.Utils;
+import com.android.settingslib.RestrictedLockUtils;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -48,6 +49,8 @@
 
 import static android.content.Intent.EXTRA_USER;
 
+import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
+
 /**
  * Activity asking a user to select an account to be set up.
  *
@@ -160,9 +163,19 @@
             }
         }
 
+        final Context context = getPreferenceScreen().getContext();
         if (mProviderList.size() == 1) {
-            // If there's only one provider that matches, just run it.
-            finishWithAccountType(mProviderList.get(0).type);
+            // There's only one provider that matches. If it is disabled by admin show the
+            // support dialog otherwise run it.
+            EnforcedAdmin admin = RestrictedLockUtils.checkIfAccountManagementDisabled(
+                    context, mProviderList.get(0).type, mUserHandle.getIdentifier());
+            if (admin != null) {
+                setResult(RESULT_CANCELED, RestrictedLockUtils.getShowAdminSupportDetailsIntent(
+                        context, admin));
+                finish();
+            } else {
+                finishWithAccountType(mProviderList.get(0).type);
+            }
         } else if (mProviderList.size() > 0) {
             Collections.sort(mProviderList);
             mAddAccountGroup.removeAll();
@@ -170,7 +183,7 @@
                 Drawable drawable = getDrawableForType(pref.type);
                 ProviderPreference p = new ProviderPreference(getPreferenceScreen().getContext(),
                         pref.type, drawable, pref.name);
-                p.checkAccountManagementAndSetDisabled();
+                p.checkAccountManagementAndSetDisabled(mUserHandle.getIdentifier());
                 mAddAccountGroup.addPreference(p);
             }
         } else {
diff --git a/src/com/android/settings/accounts/ProviderPreference.java b/src/com/android/settings/accounts/ProviderPreference.java
index 31f0c8e..817c3b6 100644
--- a/src/com/android/settings/accounts/ProviderPreference.java
+++ b/src/com/android/settings/accounts/ProviderPreference.java
@@ -46,9 +46,9 @@
         return mAccountType;
     }
 
-    public void checkAccountManagementAndSetDisabled() {
+    public void checkAccountManagementAndSetDisabled(int userId) {
         EnforcedAdmin admin = RestrictedLockUtils.checkIfAccountManagementDisabled(
-                getContext(), getAccountType());
+                getContext(), getAccountType(), userId);
         setDisabledByAdmin(admin);
     }
 }
diff --git a/src/com/android/settings/inputmethod/InputMethodPreference.java b/src/com/android/settings/inputmethod/InputMethodPreference.java
index c807e8a..11464bf 100755
--- a/src/com/android/settings/inputmethod/InputMethodPreference.java
+++ b/src/com/android/settings/inputmethod/InputMethodPreference.java
@@ -21,6 +21,7 @@
 import android.content.Context;
 import android.content.DialogInterface;
 import android.content.Intent;
+import android.os.UserHandle;
 import android.support.v14.preference.SwitchPreference;
 import android.support.v7.preference.Preference;
 import android.support.v7.preference.Preference.OnPreferenceChangeListener;
@@ -121,11 +122,6 @@
         setOnPreferenceClickListener(this);
         setOnPreferenceChangeListener(this);
         useAdminDisabledSummary(true);
-        if (!isAllowedByOrganization) {
-            EnforcedAdmin admin =
-                    RestrictedLockUtils.getProfileOrDeviceOwnerOnCallingUser(context);
-            setDisabledByAdmin(admin);
-        }
     }
 
     public InputMethodInfo getInputMethodInfo() {
@@ -192,11 +188,23 @@
     void updatePreferenceViews() {
         final boolean isAlwaysChecked = mInputMethodSettingValues.isAlwaysCheckedIme(
                 mImi, getContext());
-        // Only when this preference has a switch and an input method should be always enabled,
+        // When this preference has a switch and an input method should be always enabled,
         // this preference should be disabled to prevent accidentally disabling an input method.
-        setEnabled(!((isAlwaysChecked && isImeEnabler()) || (!mIsAllowedByOrganization)));
+        // This preference should also be disabled in case the admin does not allow this input
+        // method.
+        if (isAlwaysChecked && isImeEnabler()) {
+            setDisabledByAdmin(null);
+            setEnabled(false);
+        } else if (!mIsAllowedByOrganization) {
+            EnforcedAdmin admin =
+                    RestrictedLockUtils.checkIfInputMethodDisallowed(getContext(),
+                            mImi.getPackageName(), UserHandle.myUserId());
+            setDisabledByAdmin(admin);
+        } else {
+            setEnabled(true);
+        }
         setChecked(mInputMethodSettingValues.isEnabledImi(mImi));
-        if (mIsAllowedByOrganization) {
+        if (!isDisabledByAdmin()) {
             setSummary(getSummaryString());
         }
     }
