diff --git a/src/com/android/settings/accessibility/AccessibilitySettings.java b/src/com/android/settings/accessibility/AccessibilitySettings.java index c2b29a6d407..23b0f1a7198 100644 --- a/src/com/android/settings/accessibility/AccessibilitySettings.java +++ b/src/com/android/settings/accessibility/AccessibilitySettings.java @@ -635,9 +635,11 @@ public class AccessibilitySettings extends DashboardFragment { final String description = info.loadDescription(mPm); final int imageRes = info.getAnimatedImageRes(); final String htmlDescription = info.loadHtmlDescription(mPm); + final String settingsClassName = info.getSettingsActivityName(); putBasicExtras(preference, prefKey, title, description, imageRes, htmlDescription, componentName); + putSettingsExtras(preference, packageName, settingsClassName); preferenceList.add(preference); } diff --git a/src/com/android/settings/accessibility/LaunchAccessibilityActivityPreferenceFragment.java b/src/com/android/settings/accessibility/LaunchAccessibilityActivityPreferenceFragment.java index 08e66198d27..7da1733d7e4 100644 --- a/src/com/android/settings/accessibility/LaunchAccessibilityActivityPreferenceFragment.java +++ b/src/com/android/settings/accessibility/LaunchAccessibilityActivityPreferenceFragment.java @@ -26,10 +26,12 @@ import android.content.pm.ActivityInfo; import android.net.Uri; import android.os.Bundle; import android.os.UserHandle; +import android.text.TextUtils; import android.util.Log; import android.view.View; import android.view.accessibility.AccessibilityManager; +import androidx.annotation.Nullable; import androidx.preference.SwitchPreference; import com.android.settings.R; @@ -82,6 +84,12 @@ public class LaunchAccessibilityActivityPreferenceFragment extends // Settings html description. mHtmlDescription = arguments.getCharSequence(AccessibilitySettings.EXTRA_HTML_DESCRIPTION); + + // Settings title and intent. + final String settingsTitle = arguments.getString( + AccessibilitySettings.EXTRA_SETTINGS_TITLE); + mSettingsIntent = TextUtils.isEmpty(settingsTitle) ? null : getSettingsIntent(arguments); + mSettingsTitle = (mSettingsIntent == null) ? null : settingsTitle; } @Override @@ -131,4 +139,21 @@ public class LaunchAccessibilityActivityPreferenceFragment extends Log.w(TAG, "Target activity not found."); } } + + @Nullable + private Intent getSettingsIntent(Bundle arguments) { + final String settingsComponentName = arguments.getString( + AccessibilitySettings.EXTRA_SETTINGS_COMPONENT_NAME); + if (TextUtils.isEmpty(settingsComponentName)) { + return null; + } + + final Intent settingsIntent = new Intent(Intent.ACTION_MAIN).setComponent( + ComponentName.unflattenFromString(settingsComponentName)); + if (getPackageManager().queryIntentActivities(settingsIntent, /* flags= */ 0).isEmpty()) { + return null; + } + + return settingsIntent; + } }