diff options
author | Casey Burkhardt <caseyburkhardt@google.com> | 2017-03-24 10:15:37 -0700 |
---|---|---|
committer | Casey Burkhardt <caseyburkhardt@google.com> | 2017-03-24 17:01:06 -0700 |
commit | bc3827d7172955d58c4569fe003eb0d9ee46db1d (patch) | |
tree | eac7c871c6b23844cfee70e42405788ab2150ca9 /src/com/android/settings/accessibility | |
parent | ece7be14cb26cbfce9f9fda97a99aef07ae0ec35 (diff) | |
download | packages_apps_Settings-bc3827d7172955d58c4569fe003eb0d9ee46db1d.tar.gz packages_apps_Settings-bc3827d7172955d58c4569fe003eb0d9ee46db1d.tar.bz2 packages_apps_Settings-bc3827d7172955d58c4569fe003eb0d9ee46db1d.zip |
Settings revisions for Accessibility button
Populates and displays a warning message when a feature that relies
on the Accessibility button is enabled, but not assigned.
Bug: 34720082
Test: Manual
Change-Id: Ie7031716a91fdf7fc40f32bf4e0ad17af85aa573
Diffstat (limited to 'src/com/android/settings/accessibility')
-rw-r--r-- | src/com/android/settings/accessibility/MagnificationPreferenceFragment.java | 48 | ||||
-rw-r--r-- | src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java | 13 |
2 files changed, 44 insertions, 17 deletions
diff --git a/src/com/android/settings/accessibility/MagnificationPreferenceFragment.java b/src/com/android/settings/accessibility/MagnificationPreferenceFragment.java index 4a55ea9cf2..22706d7d0f 100644 --- a/src/com/android/settings/accessibility/MagnificationPreferenceFragment.java +++ b/src/com/android/settings/accessibility/MagnificationPreferenceFragment.java @@ -16,13 +16,16 @@ package com.android.settings.accessibility; -import android.content.ContentResolver; +import android.accessibilityservice.AccessibilityServiceInfo; +import android.content.ComponentName; import android.content.Context; import android.os.Bundle; import android.provider.SearchIndexableResource; import android.provider.Settings; import android.support.v7.preference.Preference; +import android.text.TextUtils; import android.view.View; +import android.view.accessibility.AccessibilityManager; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.R; @@ -42,6 +45,10 @@ public final class MagnificationPreferenceFragment extends SettingsPreferenceFra private static final String MAGNIFICATION_NAVBAR_PREFERENCE_SCREEN_KEY = "screen_magnification_navbar_preference_screen"; + // Pseudo ComponentName used to represent navbar magnification in Settings.Secure. + private static final String MAGNIFICATION_COMPONENT_ID = + "com.android.server.accessibility.MagnificationController"; + private Preference mMagnificationGesturesPreference; private Preference mMagnificationNavbarPreference; @@ -147,17 +154,38 @@ public final class MagnificationPreferenceFragment extends SettingsPreferenceFra extras.putBoolean(AccessibilitySettings.EXTRA_LAUNCHED_FROM_SUW, mLaunchedFromSuw); } - static int getConfigurationWarningStringResourceForSecureSettingsKey(String key, - ContentResolver resolver) { - if (Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED.equals(key)) { - if (Settings.Secure.getInt(resolver, - Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED, 0) == 1) { - // TODO(b/34720082): Only report a config warning when nav-bar is not mapped to mag - return R.string.accessibility_screen_magnification_navbar_configuration_warning; + static CharSequence getConfigurationWarningStringForSecureSettingsKey(String key, + Context context) { + if (!Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED.equals(key)) { + return null; + } + if (Settings.Secure.getInt(context.getContentResolver(), + Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED, 0) == 0) { + return null; + } + final AccessibilityManager am = (AccessibilityManager) context.getSystemService( + Context.ACCESSIBILITY_SERVICE); + final String assignedId = Settings.Secure.getString(context.getContentResolver(), + Settings.Secure.ACCESSIBILITY_BUTTON_TARGET_COMPONENT); + if (!TextUtils.isEmpty(assignedId) && !MAGNIFICATION_COMPONENT_ID.equals(assignedId)) { + final ComponentName assignedComponentName = ComponentName.unflattenFromString( + assignedId); + final List<AccessibilityServiceInfo> activeServices = + am.getEnabledAccessibilityServiceList( + AccessibilityServiceInfo.FEEDBACK_ALL_MASK); + final int serviceCount = activeServices.size(); + for (int i = 0; i < serviceCount; i++) { + final AccessibilityServiceInfo info = activeServices.get(i); + if (info.getComponentName().equals(assignedComponentName)) { + final CharSequence assignedServiceName = info.getResolveInfo().loadLabel( + context.getPackageManager()); + return context.getString( + R.string.accessibility_screen_magnification_navbar_configuration_warning, + assignedServiceName); + } } } - - return -1; + return null; } public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = diff --git a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java index 19cde08281..c6dc7a7cf3 100644 --- a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java @@ -214,14 +214,13 @@ public class ToggleScreenMagnificationPreferenceFragment extends } private void updateConfigurationWarningIfNeeded() { - final int warningRes = - MagnificationPreferenceFragment - .getConfigurationWarningStringResourceForSecureSettingsKey( - mPreferenceKey, getContentResolver()); - if (warningRes != -1) { - mConfigWarningPreference.setSummary(warningRes); + final CharSequence warningMessage = + MagnificationPreferenceFragment.getConfigurationWarningStringForSecureSettingsKey( + mPreferenceKey, getPrefContext()); + if (warningMessage != null) { + mConfigWarningPreference.setSummary(warningMessage); } - mConfigWarningPreference.setVisible(warningRes != -1); + mConfigWarningPreference.setVisible(warningMessage != null); } private static int getScreenWidth(Context context) { |