Move more Accessibility stuff to SettingsLib

Change-Id: Id5dec8af86c1d4b0d98b169c4365410c2cee10b6
This commit is contained in:
Tony Mantler
2015-10-30 12:44:23 -07:00
parent 31691bffd7
commit 514b81d233
4 changed files with 1 additions and 257 deletions

View File

@@ -127,7 +127,6 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
private final Runnable mUpdateRunnable = new Runnable() {
@Override
public void run() {
loadInstalledServices();
updateServicesPreferences();
}
};
@@ -162,7 +161,6 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
new SettingsContentObserver(mHandler) {
@Override
public void onChange(boolean selfChange, Uri uri) {
loadInstalledServices();
updateServicesPreferences();
}
};
@@ -218,7 +216,6 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
@Override
public void onResume() {
super.onResume();
loadInstalledServices();
updateAllPreferences();
mSettingsPackageMonitor.register(getActivity(), getActivity().getMainLooper(), false);
@@ -624,27 +621,6 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
}
}
private void loadInstalledServices() {
Set<ComponentName> installedServices = sInstalledServices;
installedServices.clear();
List<AccessibilityServiceInfo> installedServiceInfos =
AccessibilityManager.getInstance(getActivity())
.getInstalledAccessibilityServiceList();
if (installedServiceInfos == null) {
return;
}
final int installedServiceInfoCount = installedServiceInfos.size();
for (int i = 0; i < installedServiceInfoCount; i++) {
ResolveInfo resolveInfo = installedServiceInfos.get(i).getResolveInfo();
ComponentName installedService = new ComponentName(
resolveInfo.serviceInfo.packageName,
resolveInfo.serviceInfo.name);
installedServices.add(installedService);
}
}
public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
new BaseSearchIndexProvider() {
@Override

View File

@@ -49,10 +49,7 @@ import com.android.settings.widget.ToggleSwitch;
import com.android.settings.widget.ToggleSwitch.OnBeforeCheckedChangeListener;
import com.android.settingslib.accessibility.AccessibilityUtils;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class ToggleAccessibilityServicePreferenceFragment
extends ToggleFeaturePreferenceFragment implements DialogInterface.OnClickListener {
@@ -102,56 +99,8 @@ public class ToggleAccessibilityServicePreferenceFragment
@Override
public void onPreferenceToggled(String preferenceKey, boolean enabled) {
// Parse the enabled services.
Set<ComponentName> enabledServices = AccessibilityUtils.getEnabledServicesFromSettings(
getActivity());
if (enabledServices == (Set<?>) Collections.emptySet()) {
enabledServices = new HashSet<ComponentName>();
}
// Determine enabled services and accessibility state.
ComponentName toggledService = ComponentName.unflattenFromString(preferenceKey);
boolean accessibilityEnabled = false;
if (enabled) {
enabledServices.add(toggledService);
// Enabling at least one service enables accessibility.
accessibilityEnabled = true;
} else {
enabledServices.remove(toggledService);
// Check how many enabled and installed services are present.
Set<ComponentName> installedServices = AccessibilitySettings.sInstalledServices;
for (ComponentName enabledService : enabledServices) {
if (installedServices.contains(enabledService)) {
// Disabling the last service disables accessibility.
accessibilityEnabled = true;
break;
}
}
}
// Update the enabled services setting.
StringBuilder enabledServicesBuilder = new StringBuilder();
// Keep the enabled services even if they are not installed since we
// have no way to know whether the application restore process has
// completed. In general the system should be responsible for the
// clean up not settings.
for (ComponentName enabledService : enabledServices) {
enabledServicesBuilder.append(enabledService.flattenToString());
enabledServicesBuilder.append(
AccessibilityUtils.ENABLED_ACCESSIBILITY_SERVICES_SEPARATOR);
}
final int enabledServicesBuilderLength = enabledServicesBuilder.length();
if (enabledServicesBuilderLength > 0) {
enabledServicesBuilder.deleteCharAt(enabledServicesBuilderLength - 1);
}
Settings.Secure.putString(getContentResolver(),
Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES,
enabledServicesBuilder.toString());
// Update accessibility enabled.
Settings.Secure.putInt(getContentResolver(),
Settings.Secure.ACCESSIBILITY_ENABLED, accessibilityEnabled ? 1 : 0);
AccessibilityUtils.setAccessibilityServiceState(getActivity(), toggledService, enabled);
}
// IMPORTANT: Refresh the info since there are dynamically changing