diff options
| author | Kenny Guy <kennyguy@google.com> | 2014-08-21 13:20:21 +0100 |
|---|---|---|
| committer | Kenny Guy <kennyguy@google.com> | 2014-08-21 17:15:49 +0100 |
| commit | 333f2bc71a0866053f8e2fce8efbfb0bcec68811 (patch) | |
| tree | 81db561524dbe7c980ce1a4c4adbe5f62109f482 /src/com/android/settings/accessibility | |
| parent | 10673f1a1e330cf20ddab04fbc09cce3f18d111d (diff) | |
| download | packages_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.java | 28 |
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()); |
