summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/accessibility
diff options
context:
space:
mode:
authorKenny Guy <kennyguy@google.com>2014-08-21 13:20:21 +0100
committerKenny Guy <kennyguy@google.com>2014-08-21 17:15:49 +0100
commit333f2bc71a0866053f8e2fce8efbfb0bcec68811 (patch)
tree81db561524dbe7c980ce1a4c4adbe5f62109f482 /src/com/android/settings/accessibility
parent10673f1a1e330cf20ddab04fbc09cce3f18d111d (diff)
downloadpackages_apps_Settings-333f2bc71a0866053f8e2fce8efbfb0bcec68811.tar.gz
packages_apps_Settings-333f2bc71a0866053f8e2fce8efbfb0bcec68811.tar.bz2
packages_apps_Settings-333f2bc71a0866053f8e2fce8efbfb0bcec68811.zip
Disable non-permitted accessibility services and IMEs
Bug: 14469005 Change-Id: I4986f035318854c27ecb92bbe2f0c977d53b6361
Diffstat (limited to 'src/com/android/settings/accessibility')
-rw-r--r--src/com/android/settings/accessibility/AccessibilitySettings.java28
1 files changed, 25 insertions, 3 deletions
diff --git a/src/com/android/settings/accessibility/AccessibilitySettings.java b/src/com/android/settings/accessibility/AccessibilitySettings.java
index 36025a625..eff5fb6de 100644
--- a/src/com/android/settings/accessibility/AccessibilitySettings.java
+++ b/src/com/android/settings/accessibility/AccessibilitySettings.java
@@ -18,6 +18,7 @@ package com.android.settings.accessibility;
import android.accessibilityservice.AccessibilityServiceInfo;
import android.app.ActivityManagerNative;
+import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.pm.PackageManager;
@@ -28,6 +29,7 @@ import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.RemoteException;
+import android.os.UserHandle;
import android.preference.CheckBoxPreference;
import android.preference.ListPreference;
import android.preference.Preference;
@@ -197,11 +199,15 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
private int mLongPressTimeoutDefault;
+ private DevicePolicyManager mDpm;
+
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
addPreferencesFromResource(R.xml.accessibility_settings);
initializeAllPreferences();
+ mDpm = (DevicePolicyManager) (getActivity()
+ .getSystemService(Context.DEVICE_POLICY_SERVICE));
}
@Override
@@ -434,7 +440,8 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
accessibilityManager.getInstalledAccessibilityServiceList();
Set<ComponentName> enabledServices = AccessibilityUtils.getEnabledServicesFromSettings(
getActivity());
-
+ List<String> permittedServices = mDpm.getPermittedAccessibilityServices(
+ UserHandle.myUserId());
final boolean accessibilityEnabled = Settings.Secure.getInt(getContentResolver(),
Settings.Secure.ACCESSIBILITY_ENABLED, 0) == 1;
@@ -454,11 +461,26 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
preference.setTitle(title);
final boolean serviceEnabled = accessibilityEnabled
&& enabledServices.contains(componentName);
+ String serviceEnabledString;
if (serviceEnabled) {
- preference.setSummary(getString(R.string.accessibility_feature_state_on));
+ serviceEnabledString = getString(R.string.accessibility_feature_state_on);
} else {
- preference.setSummary(getString(R.string.accessibility_feature_state_off));
+ serviceEnabledString = getString(R.string.accessibility_feature_state_off);
+ }
+
+ // Disable all accessibility services that are not permitted.
+ String packageName = serviceInfo.packageName;
+ boolean serviceAllowed =
+ permittedServices == null || permittedServices.contains(packageName);
+ preference.setEnabled(serviceAllowed || serviceEnabled);
+
+ String summaryString;
+ if (serviceAllowed) {
+ summaryString = serviceEnabledString;
+ } else {
+ summaryString = getString(R.string.accessibility_feature_or_input_method_not_allowed);
}
+ preference.setSummary(summaryString);
preference.setOrder(i);
preference.setFragment(ToggleAccessibilityServicePreferenceFragment.class.getName());