diff --git a/res/values/config.xml b/res/values/config.xml
index adc54ee..5146b1f 100644
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -120,11 +120,14 @@
     <bool name="config_operator_selection_expand" translatable="false">true</bool>
     <bool name="config_prefer_2g" translatable="false">true</bool>
 
-    <!-- Package name for the default in-call UI Service [DO NOT TRANSLATE] -->
-    <string name="incall_ui_default_package" translatable="false">com.android.dialer</string>
+    <!-- Package name for the default in-call UI and dialer [DO NOT TRANSLATE] -->
+    <string name="ui_default_package" translatable="false">com.android.dialer</string>
 
     <!-- Class name for the default in-call UI Service [DO NOT TRANSLATE] -->
-    <string name="incall_ui_default_class" translatable="false">com.android.incallui.CallHandlerService</string>
+    <string name="incall_default_class" translatable="false">com.android.incallui.CallHandlerService</string>
+
+    <!-- Class name for the default main Dialer activity [DO NOT TRANSLATE] -->
+    <string name="dialer_default_class" translatable="false">com.android.dialer.DialtactsActivity</string>
 
     <!-- CDMA activation goes through HFA [DO NOT TRANSLATE] -->
     <bool name="config_use_hfa_for_provisioning" translatable="false">false</bool>
diff --git a/src/com/android/phone/CallHandlerServiceProxy.java b/src/com/android/phone/CallHandlerServiceProxy.java
index 18b77ef..fe39090 100644
--- a/src/com/android/phone/CallHandlerServiceProxy.java
+++ b/src/com/android/phone/CallHandlerServiceProxy.java
@@ -320,8 +320,8 @@
     private static Intent getInCallServiceIntent(Context context) {
         final Intent serviceIntent = new Intent(ICallHandlerService.class.getName());
         final ComponentName component = new ComponentName(context.getResources().getString(
-                R.string.incall_ui_default_package), context.getResources().getString(
-                R.string.incall_ui_default_class));
+                R.string.ui_default_package), context.getResources().getString(
+                R.string.incall_default_class));
         serviceIntent.setComponent(component);
         return serviceIntent;
     }
diff --git a/src/com/android/phone/OutgoingCallBroadcaster.java b/src/com/android/phone/OutgoingCallBroadcaster.java
index a4f7178..8939fdd 100644
--- a/src/com/android/phone/OutgoingCallBroadcaster.java
+++ b/src/com/android/phone/OutgoingCallBroadcaster.java
@@ -26,6 +26,7 @@
 import android.content.DialogInterface;
 import android.content.Intent;
 import android.content.res.Configuration;
+import android.content.res.Resources;
 import android.net.Uri;
 import android.os.Binder;
 import android.os.Bundle;
@@ -520,11 +521,12 @@
                 // use the java resolver to find the dialer class (as
                 // opposed to a Context which look up known android
                 // packages only)
-                invokeFrameworkDialer.setClassName("com.android.dialer",
-                                                   "com.android.dialer.DialtactsActivity");
+                final Resources resources = getResources();
+                invokeFrameworkDialer.setClassName(
+                        resources.getString(R.string.ui_default_package),
+                        resources.getString(R.string.dialer_default_class));
                 invokeFrameworkDialer.setAction(Intent.ACTION_DIAL);
                 invokeFrameworkDialer.setData(intent.getData());
-
                 if (DBG) Log.v(TAG, "onCreate(): calling startActivity for Dialer: "
                                + invokeFrameworkDialer);
                 startActivity(invokeFrameworkDialer);
