diff --git a/res/values/strings.xml b/res/values/strings.xml index aa5bfca336d..8a762a08d44 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -6378,9 +6378,6 @@ With domain URLs - - Disabled by administrator - Advanced diff --git a/src/com/android/settings/SecuritySettings.java b/src/com/android/settings/SecuritySettings.java index 3e873d463c7..85a4e5719c3 100644 --- a/src/com/android/settings/SecuritySettings.java +++ b/src/com/android/settings/SecuritySettings.java @@ -345,11 +345,11 @@ public class SecuritySettings extends SettingsPreferenceFragment private void addTrustAgentSettings(PreferenceGroup securityCategory) { final boolean hasSecurity = mLockPatternUtils.isSecure(MY_USER_ID); ArrayList agents = - getActiveTrustAgents(getPackageManager(), mLockPatternUtils, mDPM); + getActiveTrustAgents(getActivity(), mLockPatternUtils, mDPM); for (int i = 0; i < agents.size(); i++) { final TrustAgentComponentInfo agent = agents.get(i); - Preference trustAgentPreference = - new Preference(securityCategory.getContext()); + RestrictedPreference trustAgentPreference = + new RestrictedPreference(securityCategory.getContext()); trustAgentPreference.setKey(KEY_TRUST_AGENT); trustAgentPreference.setTitle(agent.title); trustAgentPreference.setSummary(agent.summary); @@ -361,10 +361,8 @@ public class SecuritySettings extends SettingsPreferenceFragment // Add preference to the settings menu. securityCategory.addPreference(trustAgentPreference); - if (agent.disabledByAdministrator) { - trustAgentPreference.setEnabled(false); - trustAgentPreference.setSummary(R.string.trust_agent_disabled_device_admin); - } else if (!hasSecurity) { + trustAgentPreference.setDisabledByAdmin(agent.admin); + if (!trustAgentPreference.isDisabledByAdmin() && !hasSecurity) { trustAgentPreference.setEnabled(false); trustAgentPreference.setSummary(R.string.disabled_because_no_backup_security); } @@ -409,14 +407,15 @@ public class SecuritySettings extends SettingsPreferenceFragment } private static ArrayList getActiveTrustAgents( - PackageManager pm, LockPatternUtils utils, DevicePolicyManager dpm) { + Context context, LockPatternUtils utils, DevicePolicyManager dpm) { + PackageManager pm = context.getPackageManager(); ArrayList result = new ArrayList(); List resolveInfos = pm.queryIntentServices(TRUST_AGENT_INTENT, PackageManager.GET_META_DATA); List enabledTrustAgents = utils.getEnabledTrustAgents(MY_USER_ID); - boolean disableTrustAgents = (dpm.getKeyguardDisabledFeatures(null) - & DevicePolicyManager.KEYGUARD_DISABLE_TRUST_AGENTS) != 0; + EnforcedAdmin admin = RestrictedLockUtils.checkIfKeyguardFeaturesDisabled(context, + DevicePolicyManager.KEYGUARD_DISABLE_TRUST_AGENTS, UserHandle.myUserId()); if (enabledTrustAgents != null && !enabledTrustAgents.isEmpty()) { for (int i = 0; i < resolveInfos.size(); i++) { @@ -429,9 +428,9 @@ public class SecuritySettings extends SettingsPreferenceFragment !enabledTrustAgents.contains( TrustAgentUtils.getComponentName(resolveInfo)) || TextUtils.isEmpty(trustAgentComponentInfo.title)) continue; - if (disableTrustAgents && dpm.getTrustAgentConfiguration( + if (admin != null && dpm.getTrustAgentConfiguration( null, TrustAgentUtils.getComponentName(resolveInfo)) == null) { - trustAgentComponentInfo.disabledByAdministrator = true; + trustAgentComponentInfo.admin = admin; } result.add(trustAgentComponentInfo); if (ONLY_ONE_TRUST_AGENT) break; @@ -722,7 +721,7 @@ public class SecuritySettings extends SettingsPreferenceFragment final LockPatternUtils lockPatternUtils = new LockPatternUtils(context); if (lockPatternUtils.isSecure(MY_USER_ID)) { ArrayList agents = - getActiveTrustAgents(context.getPackageManager(), lockPatternUtils, + getActiveTrustAgents(context, lockPatternUtils, context.getSystemService(DevicePolicyManager.class)); for (int i = 0; i < agents.size(); i++) { final TrustAgentComponentInfo agent = agents.get(i); @@ -784,7 +783,7 @@ public class SecuritySettings extends SettingsPreferenceFragment private RestrictedListPreference mLockAfter; private SwitchPreference mVisiblePattern; private SwitchPreference mPowerButtonInstantlyLocks; - private Preference mOwnerInfoPref; + private RestrictedPreference mOwnerInfoPref; private LockPatternUtils mLockPatternUtils; private DevicePolicyManager mDPM; @@ -860,19 +859,24 @@ public class SecuritySettings extends SettingsPreferenceFragment trustAgentPreference.getTitle())); } - mOwnerInfoPref = findPreference(KEY_OWNER_INFO_SETTINGS); + mOwnerInfoPref = (RestrictedPreference) findPreference(KEY_OWNER_INFO_SETTINGS); if (mOwnerInfoPref != null) { - mOwnerInfoPref.setEnabled(!mLockPatternUtils.isLockScreenDisabled(MY_USER_ID) - && !mLockPatternUtils.isDeviceOwnerInfoEnabled()); - - if (mOwnerInfoPref.isEnabled()) { - mOwnerInfoPref.setOnPreferenceClickListener(new OnPreferenceClickListener() { - @Override - public boolean onPreferenceClick(Preference preference) { - OwnerInfoSettings.show(SecuritySubSettings.this); - return true; - } - }); + if (mLockPatternUtils.isDeviceOwnerInfoEnabled()) { + EnforcedAdmin admin = RestrictedLockUtils.getDeviceOwner(getActivity()); + mOwnerInfoPref.setDisabledByAdmin(admin); + } else { + mOwnerInfoPref.setDisabledByAdmin(null); + mOwnerInfoPref.setEnabled(!mLockPatternUtils.isLockScreenDisabled(MY_USER_ID)); + if (mOwnerInfoPref.isEnabled()) { + mOwnerInfoPref.setOnPreferenceClickListener( + new OnPreferenceClickListener() { + @Override + public boolean onPreferenceClick(Preference preference) { + OwnerInfoSettings.show(SecuritySubSettings.this); + return true; + } + }); + } } } @@ -1000,7 +1004,8 @@ public class SecuritySettings extends SettingsPreferenceFragment public void updateOwnerInfo() { if (mOwnerInfoPref != null) { if (mLockPatternUtils.isDeviceOwnerInfoEnabled()) { - mOwnerInfoPref.setSummary(R.string.disabled_by_administrator_summary); + mOwnerInfoPref.setSummary( + mLockPatternUtils.getDeviceOwnerInfo()); } else { mOwnerInfoPref.setSummary(mLockPatternUtils.isOwnerInfoEnabled(MY_USER_ID) ? mLockPatternUtils.getOwnerInfo(MY_USER_ID) diff --git a/src/com/android/settings/SingleLineSummaryPreference.java b/src/com/android/settings/SingleLineSummaryPreference.java index 5c941f22ad0..822b0e6bdaa 100644 --- a/src/com/android/settings/SingleLineSummaryPreference.java +++ b/src/com/android/settings/SingleLineSummaryPreference.java @@ -22,7 +22,9 @@ import android.text.TextUtils.TruncateAt; import android.util.AttributeSet; import android.widget.TextView; -public class SingleLineSummaryPreference extends Preference { +import com.android.settingslib.RestrictedPreference; + +public class SingleLineSummaryPreference extends RestrictedPreference { public SingleLineSummaryPreference(Context context, AttributeSet attrs) { super(context, attrs); diff --git a/src/com/android/settings/TrustAgentSettings.java b/src/com/android/settings/TrustAgentSettings.java index a2f14e5c562..e5b6425fd91 100644 --- a/src/com/android/settings/TrustAgentSettings.java +++ b/src/com/android/settings/TrustAgentSettings.java @@ -34,9 +34,13 @@ import android.util.ArraySet; import com.android.internal.logging.MetricsProto.MetricsEvent; import com.android.internal.widget.LockPatternUtils; +import com.android.settingslib.RestrictedLockUtils; +import com.android.settingslib.RestrictedSwitchPreference; import java.util.List; +import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; + public class TrustAgentSettings extends SettingsPreferenceFragment implements Preference.OnPreferenceChangeListener { private static final String SERVICE_INTERFACE = TrustAgentService.SERVICE_INTERFACE; @@ -96,13 +100,15 @@ public class TrustAgentSettings extends SettingsPreferenceFragment implements (PreferenceGroup) getPreferenceScreen().findPreference("trust_agents"); category.removeAll(); - boolean disabledByDevicePolicy = (mDpm.getKeyguardDisabledFeatures(null) - & DevicePolicyManager.KEYGUARD_DISABLE_TRUST_AGENTS) != 0; + final EnforcedAdmin admin = RestrictedLockUtils.checkIfKeyguardFeaturesDisabled(context, + DevicePolicyManager.KEYGUARD_DISABLE_TRUST_AGENTS, UserHandle.myUserId()); final int count = mAvailableAgents.size(); for (int i = 0; i < count; i++) { AgentInfo agent = mAvailableAgents.valueAt(i); - final SwitchPreference preference = new SwitchPreference(getPrefContext()); + final RestrictedSwitchPreference preference = + new RestrictedSwitchPreference(getPrefContext()); + preference.useAdminDisabledSummary(true); agent.preference = preference; preference.setPersistent(false); preference.setTitle(agent.label); @@ -111,11 +117,10 @@ public class TrustAgentSettings extends SettingsPreferenceFragment implements preference.setOnPreferenceChangeListener(this); preference.setChecked(mActiveAgents.contains(agent.component)); - if (disabledByDevicePolicy + if (admin != null && mDpm.getTrustAgentConfiguration(null, agent.component) == null) { preference.setChecked(false); - preference.setEnabled(false); - preference.setSummary(R.string.trust_agent_disabled_device_admin); + preference.setDisabledByAdmin(admin); } category.addPreference(agent.preference); diff --git a/src/com/android/settings/TrustAgentUtils.java b/src/com/android/settings/TrustAgentUtils.java index 109663a2ce5..9c8d229b504 100644 --- a/src/com/android/settings/TrustAgentUtils.java +++ b/src/com/android/settings/TrustAgentUtils.java @@ -33,6 +33,8 @@ import org.xmlpull.v1.XmlPullParserException; import java.io.IOException; +import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; + public class TrustAgentUtils { static final String TAG = "TrustAgentUtils"; @@ -57,7 +59,7 @@ public class TrustAgentUtils { ComponentName componentName; String title; String summary; - boolean disabledByAdministrator; + EnforcedAdmin admin = null; } public static ComponentName getComponentName(ResolveInfo resolveInfo) {