diff --git a/src/com/android/phone/EmergencyActionGroup.java b/src/com/android/phone/EmergencyActionGroup.java
index d72c265..4f9121a 100644
--- a/src/com/android/phone/EmergencyActionGroup.java
+++ b/src/com/android/phone/EmergencyActionGroup.java
@@ -143,7 +143,7 @@
                 ComponentName name = EmergencyAssistanceHelper.getComponentName(info);
 
                 button.setTag(R.id.tag_intent,
-                        new Intent(TelephonyManager.ACTION_EMERGENCY_ASSISTANCE)
+                        new Intent(EmergencyAssistanceHelper.getIntentAction(getContext()))
                                 .setComponent(name));
                 button.setText(info.loadLabel(getContext().getPackageManager()));
                 visible = true;
diff --git a/src/com/android/phone/EmergencyAssistanceHelper.java b/src/com/android/phone/EmergencyAssistanceHelper.java
index 3053125..9e1ac21 100644
--- a/src/com/android/phone/EmergencyAssistanceHelper.java
+++ b/src/com/android/phone/EmergencyAssistanceHelper.java
@@ -26,6 +26,7 @@
 import android.provider.Settings;
 import android.telephony.TelephonyManager;
 import android.text.TextUtils;
+import android.util.FeatureFlagUtils;
 
 import java.util.List;
 
@@ -35,6 +36,24 @@
 public class EmergencyAssistanceHelper {
 
     /**
+     * Get intent action of target emergency app.
+     *
+     * @param context The context of the application.
+     * @return A string of intent action to launch target emergency app by feature flag, it will be
+     * used for team food.
+     */
+    public static String getIntentAction(Context context) {
+        if (FeatureFlagUtils.isEnabled(context, FeatureFlagUtils.SAFETY_HUB)) {
+            String action = context.getResources().getString(R.string.config_emergency_app_intent);
+            if (!action.isEmpty()) {
+                return action;
+            }
+        }
+
+        return TelephonyManager.ACTION_EMERGENCY_ASSISTANCE;
+    }
+
+    /**
      * Query activities of emergency assistance.
      *
      * @param context The context of the application.
@@ -46,7 +65,7 @@
 
         if (infos == null || infos.isEmpty()) {
             PackageManager packageManager = context.getPackageManager();
-            Intent queryIntent = new Intent(TelephonyManager.ACTION_EMERGENCY_ASSISTANCE);
+            Intent queryIntent = new Intent(getIntentAction(context));
             infos = packageManager.queryIntentActivities(queryIntent, 0);
 
             PackageInfo bestMatch = null;
@@ -93,7 +112,7 @@
         List<ResolveInfo> infos = null;
 
         if (!TextUtils.isEmpty(assistPackage)) {
-            Intent queryIntent = new Intent(TelephonyManager.ACTION_EMERGENCY_ASSISTANCE)
+            Intent queryIntent = new Intent(getIntentAction(context))
                     .setPackage(assistPackage);
             infos = context.getPackageManager().queryIntentActivities(queryIntent, 0);
         }
diff --git a/src/com/android/phone/EmergencyInfoGroup.java b/src/com/android/phone/EmergencyInfoGroup.java
index 5c01834..6ce10aa 100644
--- a/src/com/android/phone/EmergencyInfoGroup.java
+++ b/src/com/android/phone/EmergencyInfoGroup.java
@@ -126,7 +126,8 @@
 
         if (infos != null && infos.size() > 0) {
             final String packageName = infos.get(0).activityInfo.packageName;
-            final Intent intent = new Intent(TelephonyManager.ACTION_EMERGENCY_ASSISTANCE)
+            final Intent intent = new Intent(
+                    EmergencyAssistanceHelper.getIntentAction(getContext()))
                     .setPackage(packageName);
             setTag(R.id.tag_intent, intent);
             setUserIcon();
