diff --git a/res/layout/dialog_sim_status.xml b/res/layout/dialog_sim_status.xml
index 66b17d7..66d583b 100644
--- a/res/layout/dialog_sim_status.xml
+++ b/res/layout/dialog_sim_status.xml
@@ -141,5 +141,18 @@
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:text="@string/device_info_not_available"/>
+
+        <TextView
+            style="@style/device_info_dialog_label"
+            android:id="@+id/esim_id_label"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:text="@string/status_esim_id"/>
+        <TextView
+            style="@style/device_info_dialog_value"
+            android:id="@+id/esim_id_value"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:text="@string/device_info_not_available"/>
     </LinearLayout>
 </ScrollView>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 4e76d5d..800113e 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -2765,6 +2765,8 @@
     <string name="status_latest_area_info">Operator info</string>
     <!-- About phone, status item title. The status of data access.  For example, the value may be "Connected" -->
     <string name="status_data_state">Mobile network state</string>
+    <!-- About phone, status item title. The ID of embedded SIM card. -->
+    <string name="status_esim_id">EID</string>
     <!-- About phone, status item title. The status of whether we have service.  for example, the value may be "In service" -->
     <string name="status_service_state">Service state</string>
     <!-- About phone, status item title. The  current cell tower signal strength -->
diff --git a/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java b/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java
index 91440f7..af898d5 100644
--- a/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java
+++ b/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java
@@ -26,6 +26,7 @@
 import android.content.IntentFilter;
 import android.content.pm.PackageManager;
 import android.content.res.Resources;
+import android.os.AsyncTask;
 import android.os.Bundle;
 import android.os.PersistableBundle;
 import android.os.UserHandle;
@@ -41,10 +42,12 @@
 import android.telephony.TelephonyManager;
 import android.text.BidiFormatter;
 import android.text.TextDirectionHeuristics;
+import android.telephony.euicc.EuiccManager;
 import android.text.TextUtils;
 import android.util.Log;
 
 import com.android.settings.R;
+import com.android.settings.wrapper.EuiccManagerWrapper;
 import com.android.settingslib.DeviceInfoUtils;
 import com.android.settingslib.core.lifecycle.Lifecycle;
 import com.android.settingslib.core.lifecycle.LifecycleObserver;
@@ -81,6 +84,8 @@
     final static int ICCID_INFO_LABEL_ID = R.id.icc_id_label;
     @VisibleForTesting
     final static int ICCID_INFO_VALUE_ID = R.id.icc_id_value;
+    @VisibleForTesting
+    final static int EID_INFO_VALUE_ID = R.id.esim_id_value;
 
     private final static String CB_AREA_INFO_RECEIVED_ACTION =
             "com.android.cellbroadcastreceiver.CB_AREA_INFO_RECEIVED";
@@ -92,6 +97,7 @@
     private final SubscriptionInfo mSubscriptionInfo;
     private final TelephonyManager mTelephonyManager;
     private final CarrierConfigManager mCarrierConfigManager;
+    private final EuiccManagerWrapper mEuiccManager;
     private final Resources mRes;
     private final Context mContext;
 
@@ -116,7 +122,6 @@
         }
     };
 
-
     private PhoneStateListener mPhoneStateListener;
 
     public SimStatusDialogController(@NonNull SimStatusDialogFragment dialog, Lifecycle lifecycle,
@@ -128,6 +133,7 @@
                 TELEPHONY_SERVICE);
         mCarrierConfigManager = (CarrierConfigManager) mContext.getSystemService(
                 CARRIER_CONFIG_SERVICE);
+        mEuiccManager = new EuiccManagerWrapper(mContext);
 
         mRes = mContext.getResources();
 
@@ -137,6 +143,8 @@
     }
 
     public void initialize() {
+        updateEid();
+
         if (mSubscriptionInfo == null) {
             return;
         }
@@ -363,6 +371,10 @@
         }
     }
 
+    private void updateEid() {
+        mDialog.setText(EID_INFO_VALUE_ID, mEuiccManager.getEid());
+    }
+
     private SubscriptionInfo getPhoneSubscriptionInfo(int slotId) {
         final List<SubscriptionInfo> subscriptionInfoList = SubscriptionManager.from(
                 mContext).getActiveSubscriptionInfoList();
diff --git a/src/com/android/settings/wrapper/EuiccManagerWrapper.java b/src/com/android/settings/wrapper/EuiccManagerWrapper.java
new file mode 100644
index 0000000..2a51526
--- /dev/null
+++ b/src/com/android/settings/wrapper/EuiccManagerWrapper.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.wrapper;
+
+import android.annotation.Nullable;
+import android.content.Context;
+import android.telephony.euicc.EuiccManager;
+
+/**
+ * This class replicates a subset of the {@link android.telephony.euicc.EuiccManager}.
+ * The interface exists so that we can use a thin wrapper around the EuiccManager in
+ * production code and a mock in tests.
+ */
+public class EuiccManagerWrapper {
+
+    private final EuiccManager mEuiccManager;
+
+    public EuiccManagerWrapper(Context context) {
+        mEuiccManager = (EuiccManager) context.getSystemService(Context.EUICC_SERVICE);
+    }
+
+    /**
+     * Returns the EID identifying the eUICC hardware.
+     *
+     * <p>Requires that the calling app has carrier privileges on the active subscription on the
+     * eUICC.
+     *
+     * @return the EID. May be null if {@link EuiccManager#isEnabled()} is false or the eUICC is not
+     * ready.
+     */
+    @Nullable
+    public String getEid() {
+        return mEuiccManager.getEid();
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogControllerTest.java
index cea4580..b10de63 100644
--- a/tests/robotests/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogControllerTest.java
+++ b/tests/robotests/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogControllerTest.java
@@ -18,6 +18,7 @@
 
 import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController
         .CELLULAR_NETWORK_TYPE_VALUE_ID;
+import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.EID_INFO_VALUE_ID;
 import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController
         .ICCID_INFO_LABEL_ID;
 import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController
@@ -60,6 +61,7 @@
 import com.android.settings.R;
 import com.android.settings.TestConfig;
 import com.android.settings.testutils.SettingsRobolectricTestRunner;
+import com.android.settings.wrapper.EuiccManagerWrapper;
 import com.android.settingslib.core.lifecycle.Lifecycle;
 
 import org.junit.Before;
@@ -91,7 +93,8 @@
     private CarrierConfigManager mCarrierConfigManager;
     @Mock
     private PersistableBundle mPersistableBundle;
-
+    @Mock
+    private EuiccManagerWrapper mEuiccManager;
 
     private SimStatusDialogController mController;
     private Context mContext;
@@ -107,15 +110,18 @@
         mLifecycle = new Lifecycle(mLifecycleOwner);
         mController = spy(
                 new SimStatusDialogController(mDialog, mLifecycle, 0 /* phone id */));
+        mEuiccManager = spy(new EuiccManagerWrapper(mContext));
         doReturn(mServiceState).when(mController).getCurrentServiceState();
         doReturn(0).when(mController).getDbm(any());
         doReturn(0).when(mController).getAsuLevel(any());
         doReturn(mPhoneStateListener).when(mController).getPhoneStateListener();
         doReturn("").when(mController).getPhoneNumber();
         doReturn(mSignalStrength).when(mController).getSignalStrength();
+        doReturn("").when(mEuiccManager).getEid();
         ReflectionHelpers.setField(mController, "mTelephonyManager", mTelephonyManager);
         ReflectionHelpers.setField(mController, "mCarrierConfigManager", mCarrierConfigManager);
         ReflectionHelpers.setField(mController, "mSubscriptionInfo", mSubscriptionInfo);
+        ReflectionHelpers.setField(mController, "mEuiccManager", mEuiccManager);
         when(mCarrierConfigManager.getConfigForSubId(anyInt())).thenReturn(mPersistableBundle);
     }
 
@@ -273,4 +279,14 @@
 
         verify(mDialog).setText(ICCID_INFO_VALUE_ID, iccid);
     }
+
+    @Test
+    public void initialize_showEid_shouldSetEidToSetting() {
+        final String eid = "12351351231241";
+        doReturn(eid).when(mEuiccManager).getEid();
+
+        mController.initialize();
+
+        verify(mDialog).setText(EID_INFO_VALUE_ID, eid);
+    }
 }
