From 61479cde86f22f399e8ca09ff1506f2e7c3ed672 Mon Sep 17 00:00:00 2001 From: menghanli Date: Thu, 20 Jan 2022 21:59:22 +0800 Subject: [PATCH] Integrate new accessibility tileService attr into settings - Accessibilty service: AccessibilityService_tileService - Accesibility shortcut: AccessibilityShortcutTarget_tileService Bug: 216614718 Test: manual test Change-Id: I24baff13300dfc9a242fcfffe0a4888575ca0c9f --- .../AccessibilityDetailsSettingsFragment.java | 7 ++++ .../accessibility/AccessibilitySettings.java | 41 ++++++++++++++++++- ...cessibilityActivityPreferenceFragment.java | 10 ++++- ...ccessibilityServicePreferenceFragment.java | 9 +++- 4 files changed, 63 insertions(+), 4 deletions(-) diff --git a/src/com/android/settings/accessibility/AccessibilityDetailsSettingsFragment.java b/src/com/android/settings/accessibility/AccessibilityDetailsSettingsFragment.java index f9b537b16c3..5fc4cd21797 100644 --- a/src/com/android/settings/accessibility/AccessibilityDetailsSettingsFragment.java +++ b/src/com/android/settings/accessibility/AccessibilityDetailsSettingsFragment.java @@ -221,6 +221,13 @@ public class AccessibilityDetailsSettingsFragment extends InstrumentedFragment { extras.putString(AccessibilitySettings.EXTRA_SETTINGS_COMPONENT_NAME, new ComponentName(packageName, settingsClassName).flattenToString()); } + + final String tileServiceClassName = info.getTileServiceClassName(); + if (!TextUtils.isEmpty(tileServiceClassName)) { + extras.putString(AccessibilitySettings.EXTRA_TILE_SERVICE_COMPONENT_NAME, + new ComponentName(packageName, tileServiceClassName).flattenToString()); + } + extras.putParcelable(AccessibilitySettings.EXTRA_COMPONENT_NAME, componentName); extras.putInt(AccessibilitySettings.EXTRA_ANIMATED_IMAGE_RES, info.getAnimatedImageRes()); diff --git a/src/com/android/settings/accessibility/AccessibilitySettings.java b/src/com/android/settings/accessibility/AccessibilitySettings.java index b712b9d37bc..e834640e678 100644 --- a/src/com/android/settings/accessibility/AccessibilitySettings.java +++ b/src/com/android/settings/accessibility/AccessibilitySettings.java @@ -97,6 +97,7 @@ public class AccessibilitySettings extends DashboardFragment { static final String EXTRA_SETTINGS_TITLE = "settings_title"; static final String EXTRA_COMPONENT_NAME = "component_name"; static final String EXTRA_SETTINGS_COMPONENT_NAME = "settings_component_name"; + static final String EXTRA_TILE_SERVICE_COMPONENT_NAME = "tile_service_component_name"; static final String EXTRA_VIDEO_RAW_RESOURCE_ID = "video_resource"; static final String EXTRA_LAUNCHED_FROM_SUW = "from_suw"; static final String EXTRA_ANIMATED_IMAGE_RES = "animated_image_res"; @@ -573,11 +574,13 @@ public class AccessibilitySettings extends DashboardFragment { serviceEnabled); final String htmlDescription = info.loadHtmlDescription(mPm); final String settingsClassName = info.getSettingsActivityName(); + final String tileServiceClassName = info.getTileServiceClassName(); putBasicExtras(preference, prefKey, title, description, imageRes, htmlDescription, componentName); putServiceExtras(preference, resolveInfo, serviceEnabled); putSettingsExtras(preference, packageName, settingsClassName); + putTileServiceExtras(preference, packageName, tileServiceClassName); preferenceList.add(preference); } @@ -631,10 +634,13 @@ public class AccessibilitySettings extends DashboardFragment { final int imageRes = info.getAnimatedImageRes(); final String htmlDescription = info.loadHtmlDescription(mPm); final String settingsClassName = info.getSettingsActivityName(); + final String tileServiceClassName = info.getTileServiceClassName(); putBasicExtras(preference, prefKey, title, description, imageRes, htmlDescription, componentName); putSettingsExtras(preference, componentName.getPackageName(), settingsClassName); + putTileServiceExtras(preference, componentName.getPackageName(), + tileServiceClassName); preferenceList.add(preference); } @@ -730,7 +736,11 @@ public class AccessibilitySettings extends DashboardFragment { /** * Puts the service extras into {@link RestrictedPreference}'s getExtras(). * - * Called by {@link AccessibilityServiceInfo} for now. + *

Note: Called by {@link AccessibilityServiceInfo}.

+ * + * @param preference The preference we are configuring. + * @param resolveInfo The service resolve info. + * @param serviceEnabled Whether the accessibility service is enabled. */ private void putServiceExtras(RestrictedPreference preference, ResolveInfo resolveInfo, Boolean serviceEnabled) { @@ -743,7 +753,12 @@ public class AccessibilitySettings extends DashboardFragment { /** * Puts the settings extras into {@link RestrictedPreference}'s getExtras(). * - * Called when settings UI is needed. + *

Note: Called when settings UI is needed.

+ * + * @param preference The preference we are configuring. + * @param packageName Package of accessibility feature. + * @param settingsClassName The component name of an activity that allows the user to modify + * the settings for this accessibility feature. */ private void putSettingsExtras(RestrictedPreference preference, String packageName, String settingsClassName) { @@ -756,5 +771,27 @@ public class AccessibilitySettings extends DashboardFragment { new ComponentName(packageName, settingsClassName).flattenToString()); } } + + /** + * Puts the information about a particular application + * {@link android.service.quicksettings.TileService} into {@link RestrictedPreference}'s + * getExtras(). + * + *

Note: Called when a tooltip of + * {@link android.service.quicksettings.TileService} is needed.

+ * + * @param preference The preference we are configuring. + * @param packageName Package of accessibility feature. + * @param tileServiceClassName The component name of tileService is associated with this + * accessibility feature. + */ + private void putTileServiceExtras(RestrictedPreference preference, String packageName, + String tileServiceClassName) { + final Bundle extras = preference.getExtras(); + if (!TextUtils.isEmpty(tileServiceClassName)) { + extras.putString(EXTRA_TILE_SERVICE_COMPONENT_NAME, + new ComponentName(packageName, tileServiceClassName).flattenToString()); + } + } } } diff --git a/src/com/android/settings/accessibility/LaunchAccessibilityActivityPreferenceFragment.java b/src/com/android/settings/accessibility/LaunchAccessibilityActivityPreferenceFragment.java index afd334e199e..ce8db21ecb2 100644 --- a/src/com/android/settings/accessibility/LaunchAccessibilityActivityPreferenceFragment.java +++ b/src/com/android/settings/accessibility/LaunchAccessibilityActivityPreferenceFragment.java @@ -53,6 +53,7 @@ public class LaunchAccessibilityActivityPreferenceFragment extends ToggleFeature private static final String TAG = "LaunchA11yActivity"; private static final String EMPTY_STRING = ""; protected static final String KEY_LAUNCH_PREFERENCE = "launch_preference"; + private ComponentName mTileComponentName; @Override public int getMetricsCategory() { @@ -108,6 +109,13 @@ public class LaunchAccessibilityActivityPreferenceFragment extends ToggleFeature AccessibilitySettings.EXTRA_SETTINGS_TITLE); mSettingsIntent = TextUtils.isEmpty(settingsTitle) ? null : getSettingsIntent(arguments); mSettingsTitle = (mSettingsIntent == null) ? null : settingsTitle; + + // Tile service. + if (arguments.containsKey(AccessibilitySettings.EXTRA_TILE_SERVICE_COMPONENT_NAME)) { + final String tileServiceComponentName = arguments.getString( + AccessibilitySettings.EXTRA_TILE_SERVICE_COMPONENT_NAME); + mTileComponentName = ComponentName.unflattenFromString(tileServiceComponentName); + } } @Override @@ -118,7 +126,7 @@ public class LaunchAccessibilityActivityPreferenceFragment extends ToggleFeature @Override ComponentName getTileComponentName() { - return null; + return mTileComponentName; } @Override diff --git a/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java b/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java index d4d2f4cbce1..d7a506a21df 100644 --- a/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java @@ -65,6 +65,7 @@ public class ToggleAccessibilityServicePreferenceFragment extends private static final String EMPTY_STRING = ""; private Dialog mWarningDialog; + private ComponentName mTileComponentName; private BroadcastReceiver mPackageRemovedReceiver; private boolean mDisabledStateLogged = false; private long mStartTimeMillsForLogging = 0; @@ -240,7 +241,7 @@ public class ToggleAccessibilityServicePreferenceFragment extends @Override ComponentName getTileComponentName() { - return null; + return mTileComponentName; } @Override @@ -387,6 +388,12 @@ public class ToggleAccessibilityServicePreferenceFragment extends mPackageName = getAccessibilityServiceInfo().getResolveInfo().loadLabel( getPackageManager()); + if (arguments.containsKey(AccessibilitySettings.EXTRA_TILE_SERVICE_COMPONENT_NAME)) { + final String tileServiceComponentName = arguments.getString( + AccessibilitySettings.EXTRA_TILE_SERVICE_COMPONENT_NAME); + mTileComponentName = ComponentName.unflattenFromString(tileServiceComponentName); + } + mStartTimeMillsForLogging = arguments.getLong(AccessibilitySettings.EXTRA_TIME_FOR_LOGGING); }