Show trust agent entries as disabled rather than removing them.

Fixes bug 17108810

Change-Id: I646f5c299cd680d5c3a4978610f3852eba4b116b
This commit is contained in:
Jim Miller
2014-08-21 19:24:47 -07:00
parent 2534be3746
commit 9d25005e7a
2 changed files with 14 additions and 3 deletions

View File

@@ -1103,6 +1103,9 @@
<!-- Title of preference to manage trust agents --> <!-- Title of preference to manage trust agents -->
<string name="manage_trust_agents">Trust agents</string> <string name="manage_trust_agents">Trust agents</string>
<!-- Summary shown when trust agent settings is disabled because the user hasn't set up primary security -->
<string name="disabled_because_no_backup_security">To use, first set a screen lock</string>
<!-- Summary of preference to manage device policies --> <!-- Summary of preference to manage device policies -->
<string name="manage_trust_agents_summary">View or deactivate trust agents</string> <string name="manage_trust_agents_summary">View or deactivate trust agents</string>

View File

@@ -225,7 +225,8 @@ public class SecuritySettings extends SettingsPreferenceFragment
// Trust Agent preferences // Trust Agent preferences
PreferenceGroup securityCategory = (PreferenceGroup) PreferenceGroup securityCategory = (PreferenceGroup)
root.findPreference(KEY_SECURITY_CATEGORY); root.findPreference(KEY_SECURITY_CATEGORY);
if (securityCategory != null && mLockPatternUtils.isSecure()) { if (securityCategory != null) {
final boolean hasSecurity = mLockPatternUtils.isSecure();
ArrayList<TrustAgentComponentInfo> agents = ArrayList<TrustAgentComponentInfo> agents =
getActiveTrustAgents(getPackageManager(), mLockPatternUtils); getActiveTrustAgents(getPackageManager(), mLockPatternUtils);
for (int i = 0; i < agents.size(); i++) { for (int i = 0; i < agents.size(); i++) {
@@ -242,6 +243,10 @@ public class SecuritySettings extends SettingsPreferenceFragment
trustAgentPreference.setIntent(intent); trustAgentPreference.setIntent(intent);
// Add preference to the settings menu. // Add preference to the settings menu.
securityCategory.addPreference(trustAgentPreference); securityCategory.addPreference(trustAgentPreference);
if (!hasSecurity) {
trustAgentPreference.setEnabled(false);
trustAgentPreference.setSummary(R.string.disabled_because_no_backup_security);
}
} }
} }
@@ -340,9 +345,12 @@ public class SecuritySettings extends SettingsPreferenceFragment
// Advanced Security features // Advanced Security features
PreferenceGroup advancedCategory = PreferenceGroup advancedCategory =
(PreferenceGroup)root.findPreference(KEY_ADVANCED_SECURITY); (PreferenceGroup)root.findPreference(KEY_ADVANCED_SECURITY);
if (advancedCategory != null && !mLockPatternUtils.isSecure()) { if (advancedCategory != null) {
Preference manageAgents = advancedCategory.findPreference(KEY_MANAGE_TRUST_AGENTS); Preference manageAgents = advancedCategory.findPreference(KEY_MANAGE_TRUST_AGENTS);
if (manageAgents != null) advancedCategory.removePreference(manageAgents); if (manageAgents != null && !mLockPatternUtils.isSecure()) {
manageAgents.setEnabled(false);
manageAgents.setSummary(R.string.disabled_because_no_backup_security);
}
} }
// The above preferences come and go based on security state, so we need to update // The above preferences come and go based on security state, so we need to update