[Hearing device shortcut] Provide a way to open accessibility hearing device settings via intent

* hearing device shortcut trigger action is to open accessibility hearing device settings. Framework needs a way to open it.

Bug: 237625815
Test: adb shell am start -a \
"android.settings.ACCESSIBILITY_DETAILS_SETTINGS" \
--es android.intent.extra.COMPONENT_NAME \
"com.android.server.accessibility/HearingAids"
Test: make RunSettingsRoboTests ROBOTEST_FILTER=AccessibilityDetailsSettingsFragmentTest

Change-Id: Ie47e24d29998eac0cf4805e1ac4e7d2bcb77ed8e
diff --git a/src/com/android/settings/accessibility/AccessibilityDetailsSettingsFragment.java b/src/com/android/settings/accessibility/AccessibilityDetailsSettingsFragment.java
index 04db825..5f84c3c 100644
--- a/src/com/android/settings/accessibility/AccessibilityDetailsSettingsFragment.java
+++ b/src/com/android/settings/accessibility/AccessibilityDetailsSettingsFragment.java
@@ -17,6 +17,7 @@
 package com.android.settings.accessibility;
 
 import static com.android.internal.accessibility.AccessibilityShortcutController.ACCESSIBILITY_BUTTON_COMPONENT_NAME;
+import static com.android.internal.accessibility.AccessibilityShortcutController.ACCESSIBILITY_HEARING_AIDS_COMPONENT_NAME;
 import static com.android.internal.accessibility.AccessibilityShortcutController.MAGNIFICATION_COMPONENT_NAME;
 
 import android.accessibilityservice.AccessibilityServiceInfo;
@@ -31,6 +32,7 @@
 import android.os.Bundle;
 import android.os.UserHandle;
 import android.text.TextUtils;
+import android.util.FeatureFlagUtils;
 import android.util.Log;
 import android.view.accessibility.AccessibilityManager;
 
@@ -113,6 +115,13 @@
             return new LaunchFragmentArguments(destination, /* arguments= */ null);
         }
 
+        if (ACCESSIBILITY_HEARING_AIDS_COMPONENT_NAME.equals(componentName)
+                && FeatureFlagUtils.isEnabled(getContext(),
+                FeatureFlagUtils.SETTINGS_ACCESSIBILITY_HEARING_AID_PAGE)) {
+            final String destination = AccessibilityHearingAidsFragment.class.getName();
+            return new LaunchFragmentArguments(destination, /* arguments= */ null);
+        }
+
         return null;
     }
 
diff --git a/tests/robotests/src/com/android/settings/accessibility/AccessibilityDetailsSettingsFragmentTest.java b/tests/robotests/src/com/android/settings/accessibility/AccessibilityDetailsSettingsFragmentTest.java
index 605c258..bf29c95 100644
--- a/tests/robotests/src/com/android/settings/accessibility/AccessibilityDetailsSettingsFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/AccessibilityDetailsSettingsFragmentTest.java
@@ -17,6 +17,7 @@
 package com.android.settings.accessibility;
 
 import static com.android.internal.accessibility.AccessibilityShortcutController.ACCESSIBILITY_BUTTON_COMPONENT_NAME;
+import static com.android.internal.accessibility.AccessibilityShortcutController.ACCESSIBILITY_HEARING_AIDS_COMPONENT_NAME;
 import static com.android.internal.accessibility.AccessibilityShortcutController.MAGNIFICATION_COMPONENT_NAME;
 
 import static com.google.common.truth.Truth.assertThat;
@@ -36,6 +37,7 @@
 import android.content.pm.ResolveInfo;
 import android.content.pm.ServiceInfo;
 import android.os.Bundle;
+import android.util.FeatureFlagUtils;
 import android.view.accessibility.AccessibilityManager;
 
 import androidx.fragment.app.FragmentActivity;
@@ -172,6 +174,21 @@
     }
 
     @Test
+    public void onCreate_hearingAidsComponentName_launchAccessibilityHearingAidsFragment() {
+        FeatureFlagUtils.setEnabled(mContext,
+                FeatureFlagUtils.SETTINGS_ACCESSIBILITY_HEARING_AID_PAGE, true);
+        final Intent intent = new Intent();
+        intent.putExtra(Intent.EXTRA_COMPONENT_NAME,
+                ACCESSIBILITY_HEARING_AIDS_COMPONENT_NAME.flattenToString());
+        doReturn(intent).when(mActivity).getIntent();
+
+        mFragment.onCreate(Bundle.EMPTY);
+
+        assertStartActivityWithExpectedFragment(mActivity,
+                AccessibilityHearingAidsFragment.class.getName());
+    }
+
+    @Test
     public void getMetricsCategory_returnsCorrectCategory() {
         assertThat(mFragment.getMetricsCategory()).isEqualTo(
                 SettingsEnums.ACCESSIBILITY_DETAILS_SETTINGS);