diff --git a/src/com/android/settings/ChooseLockGeneric.java b/src/com/android/settings/ChooseLockGeneric.java index 03a3fef3f25..5eda429bac4 100644 --- a/src/com/android/settings/ChooseLockGeneric.java +++ b/src/com/android/settings/ChooseLockGeneric.java @@ -416,7 +416,7 @@ public class ChooseLockGeneric extends SettingsActivity { 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 5ce5cfc79d5..840cd593416 100644 --- a/src/com/android/settings/accessibility/AccessibilitySettings.java +++ b/src/com/android/settings/accessibility/AccessibilitySettings.java @@ -482,8 +482,8 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements 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 418fd58348d..33c29bddabd 100644 --- a/src/com/android/settings/accounts/AccountSyncSettings.java +++ b/src/com/android/settings/accounts/AccountSyncSettings.java @@ -272,7 +272,7 @@ public class AccountSyncSettings extends AccountPreferenceBase { 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 d4f824f810e..3f691e3ab15 100644 --- a/src/com/android/settings/accounts/AddAccountSettings.java +++ b/src/com/android/settings/accounts/AddAccountSettings.java @@ -34,11 +34,14 @@ import android.widget.Toast; 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 @@ public class AddAccountSettings extends Activity { 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 80017cdae8d..2f904cf402a 100644 --- a/src/com/android/settings/accounts/ChooseAccountActivity.java +++ b/src/com/android/settings/accounts/ChooseAccountActivity.java @@ -39,6 +39,7 @@ import com.android.internal.util.CharSequences; 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 java.util.Map; 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 @@ public class ChooseAccountActivity extends InstrumentedPreferenceActivity { } } + 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 @@ public class ChooseAccountActivity extends InstrumentedPreferenceActivity { 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 31f0c8e79c7..817c3b6e65a 100644 --- a/src/com/android/settings/accounts/ProviderPreference.java +++ b/src/com/android/settings/accounts/ProviderPreference.java @@ -46,9 +46,9 @@ public class ProviderPreference extends RestrictedPreference { 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 c807e8ab560..11464bf180d 100755 --- a/src/com/android/settings/inputmethod/InputMethodPreference.java +++ b/src/com/android/settings/inputmethod/InputMethodPreference.java @@ -21,6 +21,7 @@ import android.content.ActivityNotFoundException; 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 @@ class InputMethodPreference extends RestrictedSwitchPreference implements OnPref setOnPreferenceClickListener(this); setOnPreferenceChangeListener(this); useAdminDisabledSummary(true); - if (!isAllowedByOrganization) { - EnforcedAdmin admin = - RestrictedLockUtils.getProfileOrDeviceOwnerOnCallingUser(context); - setDisabledByAdmin(admin); - } } public InputMethodInfo getInputMethodInfo() { @@ -192,11 +188,23 @@ class InputMethodPreference extends RestrictedSwitchPreference implements OnPref 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()); } }