summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/SecuritySettings.java
diff options
context:
space:
mode:
authorAdrian Roos <roosa@google.com>2015-04-07 14:09:39 +0200
committerAdrian Roos <roosa@google.com>2015-04-13 17:14:41 -0700
commit088de47aa8595f9e4142ce0fe6885840b83edc93 (patch)
tree1e7e49d956949cc327ed5405bf30953f3f4d6463 /src/com/android/settings/SecuritySettings.java
parent94573125d578e3f86c9b95088970f5b6edb2e8fc (diff)
downloadpackages_apps_Settings-088de47aa8595f9e4142ce0fe6885840b83edc93.tar.gz
packages_apps_Settings-088de47aa8595f9e4142ce0fe6885840b83edc93.tar.bz2
packages_apps_Settings-088de47aa8595f9e4142ce0fe6885840b83edc93.zip
Disable trust agent settings when disabled by policy
Bug: 19868604 Change-Id: Ie476be0338da399a6bc2d20953f6f005ae5eb423
Diffstat (limited to 'src/com/android/settings/SecuritySettings.java')
-rw-r--r--src/com/android/settings/SecuritySettings.java21
1 files changed, 17 insertions, 4 deletions
diff --git a/src/com/android/settings/SecuritySettings.java b/src/com/android/settings/SecuritySettings.java
index fd99536b6..30b75902a 100644
--- a/src/com/android/settings/SecuritySettings.java
+++ b/src/com/android/settings/SecuritySettings.java
@@ -362,7 +362,7 @@ public class SecuritySettings extends SettingsPreferenceFragment
private void addTrustAgentSettings(PreferenceGroup securityCategory) {
final boolean hasSecurity = mLockPatternUtils.isSecure();
ArrayList<TrustAgentComponentInfo> agents =
- getActiveTrustAgents(getPackageManager(), mLockPatternUtils);
+ getActiveTrustAgents(getPackageManager(), mLockPatternUtils, mDPM);
for (int i = 0; i < agents.size(); i++) {
final TrustAgentComponentInfo agent = agents.get(i);
Preference trustAgentPreference =
@@ -377,7 +377,11 @@ public class SecuritySettings extends SettingsPreferenceFragment
trustAgentPreference.setIntent(intent);
// Add preference to the settings menu.
securityCategory.addPreference(trustAgentPreference);
- if (!hasSecurity) {
+
+ if (agent.disabledByAdministrator) {
+ trustAgentPreference.setEnabled(false);
+ trustAgentPreference.setSummary(R.string.trust_agent_disabled_device_admin);
+ } else if (!hasSecurity) {
trustAgentPreference.setEnabled(false);
trustAgentPreference.setSummary(R.string.disabled_because_no_backup_security);
}
@@ -422,11 +426,15 @@ public class SecuritySettings extends SettingsPreferenceFragment
}
private static ArrayList<TrustAgentComponentInfo> getActiveTrustAgents(
- PackageManager pm, LockPatternUtils utils) {
+ PackageManager pm, LockPatternUtils utils, DevicePolicyManager dpm) {
ArrayList<TrustAgentComponentInfo> result = new ArrayList<TrustAgentComponentInfo>();
List<ResolveInfo> resolveInfos = pm.queryIntentServices(TRUST_AGENT_INTENT,
PackageManager.GET_META_DATA);
List<ComponentName> enabledTrustAgents = utils.getEnabledTrustAgents();
+
+ boolean disableTrustAgents = (dpm.getKeyguardDisabledFeatures(null)
+ & DevicePolicyManager.KEYGUARD_DISABLE_TRUST_AGENTS) != 0;
+
if (enabledTrustAgents != null && !enabledTrustAgents.isEmpty()) {
for (int i = 0; i < resolveInfos.size(); i++) {
ResolveInfo resolveInfo = resolveInfos.get(i);
@@ -438,6 +446,10 @@ public class SecuritySettings extends SettingsPreferenceFragment
!enabledTrustAgents.contains(
TrustAgentUtils.getComponentName(resolveInfo)) ||
TextUtils.isEmpty(trustAgentComponentInfo.title)) continue;
+ if (disableTrustAgents && dpm.getTrustAgentConfiguration(
+ null, TrustAgentUtils.getComponentName(resolveInfo)) == null) {
+ trustAgentComponentInfo.disabledByAdministrator = true;
+ }
result.add(trustAgentComponentInfo);
if (ONLY_ONE_TRUST_AGENT) break;
}
@@ -772,7 +784,8 @@ public class SecuritySettings extends SettingsPreferenceFragment
final LockPatternUtils lockPatternUtils = new LockPatternUtils(context);
if (lockPatternUtils.isSecure()) {
ArrayList<TrustAgentComponentInfo> agents =
- getActiveTrustAgents(context.getPackageManager(), lockPatternUtils);
+ getActiveTrustAgents(context.getPackageManager(), lockPatternUtils,
+ context.getSystemService(DevicePolicyManager.class));
for (int i = 0; i < agents.size(); i++) {
final TrustAgentComponentInfo agent = agents.get(i);
data = new SearchIndexableRaw(context);