diff --git a/res/layout/app_preference_item.xml b/res/layout/app_preference_item.xml
index 0ad08cc..2f722a1 100755
--- a/res/layout/app_preference_item.xml
+++ b/res/layout/app_preference_item.xml
@@ -69,4 +69,26 @@
         android:paddingEnd="7dip"
         android:duplicateParentState="true"
         />
+    <TextView
+        android:id="@+id/system_label"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:textAppearance="?android:attr/textAppearanceSmall"
+        android:layout_gravity="center_vertical"
+        android:text="@string/system_app"
+        android:visibility="gone"
+        android:paddingEnd="7dip"
+        android:duplicateParentState="true"
+        />
+    <TextView
+        android:id="@+id/system_default_label"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:textAppearance="?android:attr/textAppearanceSmall"
+        android:layout_gravity="center_vertical"
+        android:text="@string/system_default_app"
+        android:visibility="gone"
+        android:paddingEnd="7dip"
+        android:duplicateParentState="true"
+        />
 </LinearLayout>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 14bcd0e..bc89640 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -6607,6 +6607,12 @@
     <!-- Label of default app for current setting [CHAR LIMIT=40] -->
     <string name="default_app">(Default)</string>
 
+    <!-- Label of system app for current setting -->
+    <string name="system_app">(System)</string>
+
+    <!-- Label of system and default app for current setting -->
+    <string name="system_default_app">(System default)</string>
+
     <!-- Title of app storage screen [CHAR LIMIT=30] -->
     <string name="apps_storage">Apps storage</string>
 
diff --git a/src/com/android/settings/AppListPreference.java b/src/com/android/settings/AppListPreference.java
index 8dee7b8..b42f17b 100644
--- a/src/com/android/settings/AppListPreference.java
+++ b/src/com/android/settings/AppListPreference.java
@@ -56,6 +56,7 @@
     private Drawable[] mEntryDrawables;
     private boolean mShowItemNone = false;
     private CharSequence[] mSummaries;
+    private int mSystemAppIndex = -1;
 
     public class AppArrayAdapter extends ArrayAdapter<CharSequence> {
         private Drawable[] mImageDrawables = null;
@@ -79,8 +80,12 @@
             View view = inflater.inflate(R.layout.app_preference_item, parent, false);
             TextView textView = (TextView) view.findViewById(android.R.id.title);
             textView.setText(getItem(position));
-            if (position == mSelectedIndex) {
+            if (position == mSelectedIndex && position == mSystemAppIndex) {
+                view.findViewById(R.id.system_default_label).setVisibility(View.VISIBLE);
+            } else if (position == mSelectedIndex) {
                 view.findViewById(R.id.default_label).setVisibility(View.VISIBLE);
+            } else if (position == mSystemAppIndex) {
+                view.findViewById(R.id.system_label).setVisibility(View.VISIBLE);
             }
             ImageView imageView = (ImageView) view.findViewById(android.R.id.icon);
             imageView.setImageDrawable(mImageDrawables[position]);
@@ -122,6 +127,11 @@
     }
 
     public void setPackageNames(CharSequence[] packageNames, CharSequence defaultPackageName) {
+        setPackageNames(packageNames, defaultPackageName, null);
+    }
+
+    public void setPackageNames(CharSequence[] packageNames, CharSequence defaultPackageName,
+            CharSequence systemPackageName) {
         // Look up all package names in PackageManager. Skip ones we can't find.
         PackageManager pm = getContext().getPackageManager();
         final int entryCount = packageNames.length + (mShowItemNone ? 1 : 0);
@@ -129,6 +139,7 @@
         List<CharSequence> validatedPackageNames = new ArrayList<>(entryCount);
         List<Drawable> entryDrawables = new ArrayList<>(entryCount);
         int selectedIndex = -1;
+        mSystemAppIndex = -1;
         for (int i = 0; i < packageNames.length; i++) {
             try {
                 ApplicationInfo appInfo = pm.getApplicationInfoAsUser(packageNames[i].toString(), 0,
@@ -140,6 +151,10 @@
                         appInfo.packageName.contentEquals(defaultPackageName)) {
                     selectedIndex = i;
                 }
+                if (appInfo.packageName != null && systemPackageName != null &&
+                        appInfo.packageName.contentEquals(systemPackageName)) {
+                    mSystemAppIndex = i;
+                }
             } catch (NameNotFoundException e) {
                 // Skip unknown packages.
             }
diff --git a/src/com/android/settings/applications/DefaultPhonePreference.java b/src/com/android/settings/applications/DefaultPhonePreference.java
index 23f3929..fdaf7ad 100644
--- a/src/com/android/settings/applications/DefaultPhonePreference.java
+++ b/src/com/android/settings/applications/DefaultPhonePreference.java
@@ -20,6 +20,7 @@
 import android.os.UserHandle;
 import android.os.UserManager;
 import android.telecom.DefaultDialerManager;
+import android.telecom.TelecomManager;
 import android.telephony.TelephonyManager;
 import android.text.TextUtils;
 import android.util.AttributeSet;
@@ -56,13 +57,18 @@
         for (int i = 0; i < dialerPackages.size(); i++) {
             dialers[i] = dialerPackages.get(i);
         }
-        setPackageNames(dialers, getDefaultPackage());
+        setPackageNames(dialers, getDefaultPackage(), getSystemPackage());
     }
 
     private String getDefaultPackage() {
         return DefaultDialerManager.getDefaultDialerApplication(getContext(), mUserId);
     }
 
+    private String getSystemPackage() {
+        TelecomManager tm = TelecomManager.from(getContext());
+        return tm.getSystemDialerPackage();
+    }
+
     @Override
     public boolean isAvailable(Context context) {
         final TelephonyManager tm =
