summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/accessibility
diff options
context:
space:
mode:
authorCasey Burkhardt <caseyburkhardt@google.com>2017-03-24 10:15:37 -0700
committerCasey Burkhardt <caseyburkhardt@google.com>2017-03-24 17:01:06 -0700
commitbc3827d7172955d58c4569fe003eb0d9ee46db1d (patch)
treeeac7c871c6b23844cfee70e42405788ab2150ca9 /src/com/android/settings/accessibility
parentece7be14cb26cbfce9f9fda97a99aef07ae0ec35 (diff)
downloadpackages_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.java48
-rw-r--r--src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java13
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) {