diff --git a/res/values/cm_strings.xml b/res/values/cm_strings.xml
index 48133a6c83a253d9e5b0039aaf482347849ca149..8cdef90d249d7b8e7fb490fb8d860eaa5ae3ea24 100644
--- a/res/values/cm_strings.xml
+++ b/res/values/cm_strings.xml
@@ -206,6 +206,9 @@
/e/ OS version
+
+ /e/ OS license ID
+
/e/ legal
diff --git a/res/xml/my_device_info.xml b/res/xml/my_device_info.xml
index 16d6f9c0d83bfd2a286e8a9d5963295b71b4ead6..aef28eb873922de8e36b31a6e633cc6506bbde6a 100644
--- a/res/xml/my_device_info.xml
+++ b/res/xml/my_device_info.xml
@@ -187,6 +187,16 @@
android:summary="@string/summary_placeholder"
android:selectable="false"/>
+
+
+
.
+ */
+
+package com.android.settings.deviceinfo.firmwareversion;
+
+import android.content.Context;
+import android.os.UserHandle;
+import android.provider.Settings;
+
+import androidx.preference.Preference;
+
+import com.android.settings.R;
+import com.android.settings.core.BasePreferenceController;
+import com.android.settings.slices.Sliceable;
+
+
+public class LicenseIDDetailPreferenceController extends BasePreferenceController {
+
+ private static final String TAG = "LicenseIDDetailPreferenceController";
+
+ public LicenseIDDetailPreferenceController(Context context, String key) {
+ super(context, key);
+ }
+
+ @Override
+ public int getAvailabilityStatus() {
+ return AVAILABLE;
+ }
+
+ @Override
+ public boolean useDynamicSliceSummary() {
+ return true;
+ }
+
+ @Override
+ public boolean isSliceable() {
+ return true;
+ }
+
+ @Override
+ public CharSequence getSummary() {
+ String eLicenseID = Settings.Secure.getStringForUser(
+ mContext.getContentResolver(), Settings.Secure.E_LICENSE_ID,
+ UserHandle.USER_CURRENT);
+ if (eLicenseID == null) {
+ return mContext.getString(R.string.unknown);
+ }
+ return eLicenseID;
+ }
+
+ @Override
+ public void copy() {
+ Sliceable.setCopyContent(mContext, getSummary(),
+ mContext.getText(R.string.sentry_userid_title));
+ }
+}