From dc868a18f80fae26ae2c472163af707ad462482f Mon Sep 17 00:00:00 2001 From: Yorke Lee Date: Tue, 21 Apr 2015 10:18:51 -0700 Subject: [PATCH] Add default phone app to system settings Bug: 20303635 Change-Id: Ibf052fa92347bff49a638c4042d899c9d6587410 --- res/values/strings.xml | 6 +- res/xml/default_apps.xml | 6 ++ .../applications/DefaultDialerPreference.java | 81 +++++++++++++++++++ .../applications/ManageDefaultApps.java | 8 +- 4 files changed, 99 insertions(+), 2 deletions(-) create mode 100644 src/com/android/settings/applications/DefaultDialerPreference.java diff --git a/res/values/strings.xml b/res/values/strings.xml index 5546cc40ef9..f01107b2bfc 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -750,7 +750,7 @@ Fingerprint setup - To use your fingerprint to unlock your screen or confirm purchases, we\'ll need to: @@ -5792,6 +5792,7 @@ text correction correct sound vibrate auto language gesture suggest suggestion theme offensive word type emoji international reset preferences default emergency ice app default + dialer default apps download applications system apps permissions security apps default @@ -6453,6 +6454,9 @@ No default Browser + + Dialer app + (Default) diff --git a/res/xml/default_apps.xml b/res/xml/default_apps.xml index 392dd85a6ad..301c248f7ab 100644 --- a/res/xml/default_apps.xml +++ b/res/xml/default_apps.xml @@ -25,6 +25,12 @@ android:summary="@string/default_browser_title_none" /> + + dialerComponents = + DefaultDialerManager.getInstalledDialerApplications(getContext()); + + final String[] dialers = new String[dialerComponents.size()]; + for (int i = 0; i < dialerComponents.size(); i++) { + dialers[i] = dialerComponents.get(i).getPackageName(); + } + setPackageNames(dialers, getDefaultPackage()); + } + + private String getDefaultPackage() { + ComponentName appName = DefaultDialerManager.getDefaultDialerApplication(getContext()); + if (appName != null) { + return appName.getPackageName(); + } + return null; + } + + public static boolean isAvailable(Context context) { + final TelephonyManager tm = + (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); + if (!tm.isVoiceCapable()) { + return false; + } + + final UserManager um = + (UserManager) context.getSystemService(Context.USER_SERVICE); + return !um.hasUserRestriction(UserManager.DISALLOW_OUTGOING_CALLS); + } +} diff --git a/src/com/android/settings/applications/ManageDefaultApps.java b/src/com/android/settings/applications/ManageDefaultApps.java index 326de229728..6f58612cc40 100644 --- a/src/com/android/settings/applications/ManageDefaultApps.java +++ b/src/com/android/settings/applications/ManageDefaultApps.java @@ -26,6 +26,7 @@ import android.os.UserHandle; import android.os.UserManager; import android.preference.Preference; import android.provider.SearchIndexableResource; +import android.telephony.TelephonyManager; import android.text.TextUtils; import android.util.Log; import android.view.View; @@ -47,8 +48,9 @@ public class ManageDefaultApps extends SettingsPreferenceFragment private static final String TAG = ManageDefaultApps.class.getSimpleName(); private static final String KEY_DEFAULT_BROWSER = "default_browser"; - private static final String KEY_SMS_APPLICATION = "default_sms_app"; + private static final String KEY_DEFAULT_DIALER = "default_dialer"; private static final String KEY_DEFAULT_EMERGENCY_APP = "default_emergency_app"; + private static final String KEY_SMS_APPLICATION = "default_sms_app"; private DefaultBrowserPreference mDefaultBrowserPreference; private PackageManager mPm; @@ -84,6 +86,10 @@ public class ManageDefaultApps extends SettingsPreferenceFragment removePreference(KEY_SMS_APPLICATION); } + if (!DefaultDialerPreference.isAvailable(getActivity())) { + removePreference(KEY_DEFAULT_DIALER); + } + if (!DefaultEmergencyPreference.isAvailable(getActivity())) { removePreference(KEY_DEFAULT_EMERGENCY_APP); }