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) {