Move more Accessibility stuff to SettingsLib
Change-Id: Id5dec8af86c1d4b0d98b169c4365410c2cee10b6
This commit is contained in:
@@ -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
|
||||
|
@@ -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
|
||||
|
Reference in New Issue
Block a user