diff --git a/res/layout/app_preference_item.xml b/res/layout/app_preference_item.xml
index 0ad08cc5f72..2f722a1452d 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"
/>
+
+
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 14bcd0e4365..bc89640b8fe 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -6607,6 +6607,12 @@
(Default)
+
+ (System)
+
+
+ (System default)
+
Apps storage
diff --git a/src/com/android/settings/AppListPreference.java b/src/com/android/settings/AppListPreference.java
index 8dee7b8f530..b42f17be9c8 100644
--- a/src/com/android/settings/AppListPreference.java
+++ b/src/com/android/settings/AppListPreference.java
@@ -56,6 +56,7 @@ public class AppListPreference extends CustomListPreference {
private Drawable[] mEntryDrawables;
private boolean mShowItemNone = false;
private CharSequence[] mSummaries;
+ private int mSystemAppIndex = -1;
public class AppArrayAdapter extends ArrayAdapter {
private Drawable[] mImageDrawables = null;
@@ -79,8 +80,12 @@ public class AppListPreference extends CustomListPreference {
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 class AppListPreference extends CustomListPreference {
}
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 @@ public class AppListPreference extends CustomListPreference {
List validatedPackageNames = new ArrayList<>(entryCount);
List 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 @@ public class AppListPreference extends CustomListPreference {
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 23f392939f4..fdaf7add3fc 100644
--- a/src/com/android/settings/applications/DefaultPhonePreference.java
+++ b/src/com/android/settings/applications/DefaultPhonePreference.java
@@ -20,6 +20,7 @@ import android.content.Context;
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 @@ public class DefaultPhonePreference extends AppListPreference implements SelfAva
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 =