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
This commit is contained in:
@@ -16,13 +16,16 @@
|
|||||||
|
|
||||||
package com.android.settings.accessibility;
|
package com.android.settings.accessibility;
|
||||||
|
|
||||||
import android.content.ContentResolver;
|
import android.accessibilityservice.AccessibilityServiceInfo;
|
||||||
|
import android.content.ComponentName;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.provider.SearchIndexableResource;
|
import android.provider.SearchIndexableResource;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
import android.support.v7.preference.Preference;
|
import android.support.v7.preference.Preference;
|
||||||
|
import android.text.TextUtils;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
import android.view.accessibility.AccessibilityManager;
|
||||||
|
|
||||||
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
@@ -42,6 +45,10 @@ public final class MagnificationPreferenceFragment extends SettingsPreferenceFra
|
|||||||
private static final String MAGNIFICATION_NAVBAR_PREFERENCE_SCREEN_KEY =
|
private static final String MAGNIFICATION_NAVBAR_PREFERENCE_SCREEN_KEY =
|
||||||
"screen_magnification_navbar_preference_screen";
|
"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 mMagnificationGesturesPreference;
|
||||||
private Preference mMagnificationNavbarPreference;
|
private Preference mMagnificationNavbarPreference;
|
||||||
|
|
||||||
@@ -147,17 +154,38 @@ public final class MagnificationPreferenceFragment extends SettingsPreferenceFra
|
|||||||
extras.putBoolean(AccessibilitySettings.EXTRA_LAUNCHED_FROM_SUW, mLaunchedFromSuw);
|
extras.putBoolean(AccessibilitySettings.EXTRA_LAUNCHED_FROM_SUW, mLaunchedFromSuw);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int getConfigurationWarningStringResourceForSecureSettingsKey(String key,
|
static CharSequence getConfigurationWarningStringForSecureSettingsKey(String key,
|
||||||
ContentResolver resolver) {
|
Context context) {
|
||||||
if (Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED.equals(key)) {
|
if (!Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED.equals(key)) {
|
||||||
if (Settings.Secure.getInt(resolver,
|
return null;
|
||||||
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
|
if (Settings.Secure.getInt(context.getContentResolver(),
|
||||||
return R.string.accessibility_screen_magnification_navbar_configuration_warning;
|
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 null;
|
||||||
return -1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
|
public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
|
||||||
|
@@ -214,14 +214,13 @@ public class ToggleScreenMagnificationPreferenceFragment extends
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void updateConfigurationWarningIfNeeded() {
|
private void updateConfigurationWarningIfNeeded() {
|
||||||
final int warningRes =
|
final CharSequence warningMessage =
|
||||||
MagnificationPreferenceFragment
|
MagnificationPreferenceFragment.getConfigurationWarningStringForSecureSettingsKey(
|
||||||
.getConfigurationWarningStringResourceForSecureSettingsKey(
|
mPreferenceKey, getPrefContext());
|
||||||
mPreferenceKey, getContentResolver());
|
if (warningMessage != null) {
|
||||||
if (warningRes != -1) {
|
mConfigWarningPreference.setSummary(warningMessage);
|
||||||
mConfigWarningPreference.setSummary(warningRes);
|
|
||||||
}
|
}
|
||||||
mConfigWarningPreference.setVisible(warningRes != -1);
|
mConfigWarningPreference.setVisible(warningMessage != null);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static int getScreenWidth(Context context) {
|
private static int getScreenWidth(Context context) {
|
||||||
|
Reference in New Issue
Block a user