From cbde0b8afdccf6069a3b3137fb1c3a6abd67758a Mon Sep 17 00:00:00 2001 From: Hall Liu Date: Tue, 15 Mar 2016 16:30:43 -0700 Subject: [PATCH] Add indicator for system dialer in Settings Bug: 26748630 Change-Id: I60b9f2783fb4c1f49c79449dd150132c73a9fb2a --- res/layout/app_preference_item.xml | 22 +++++++++++++++++++ res/values/strings.xml | 6 +++++ .../android/settings/AppListPreference.java | 17 +++++++++++++- .../applications/DefaultPhonePreference.java | 8 ++++++- 4 files changed, 51 insertions(+), 2 deletions(-) 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 4992d6b316d..9543670257e 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -6612,6 +6612,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 =