diff --git a/src/com/android/phone/CallFeaturesSetting.java b/src/com/android/phone/CallFeaturesSetting.java
index 796e3e5..d56a274 100644
--- a/src/com/android/phone/CallFeaturesSetting.java
+++ b/src/com/android/phone/CallFeaturesSetting.java
@@ -1664,7 +1664,7 @@
         for (int i = 0; i < resolveInfos.size(); i++) {
             final ResolveInfo ri= resolveInfos.get(i);
             final ActivityInfo currentActivityInfo = ri.activityInfo;
-            final String key = makeKeyForActivity(currentActivityInfo);
+            final String key = currentActivityInfo.name;
             if (key.equals(providerToIgnore)) {
                 if (DBG) log("Ignoring key: " + key);
                 len--;
@@ -1694,7 +1694,7 @@
         values[0] = DEFAULT_VM_PROVIDER_KEY;
         int entryIdx = 1;
         for (int i = 0; i < resolveInfos.size(); i++) {
-            final String key = makeKeyForActivity(resolveInfos.get(i).activityInfo);
+            final String key = resolveInfos.get(i).activityInfo.name;
             if (!mVMProvidersData.containsKey(key)) {
                 continue;
             }
@@ -1717,10 +1717,6 @@
         updateVMPreferenceWidgets(mPreviousVMProviderKey);
     }
 
-    private String makeKeyForActivity(ActivityInfo ai) {
-        return ai.name;
-    }
-
     /**
      * Simulates user clicking on a passed preference.
      * Usually needed when the preference is a dialog preference and we want to invoke
diff --git a/src/com/android/services/telephony/TelecomAccountRegistry.java b/src/com/android/services/telephony/TelecomAccountRegistry.java
index f4c50a7..49767a2 100644
--- a/src/com/android/services/telephony/TelecomAccountRegistry.java
+++ b/src/com/android/services/telephony/TelecomAccountRegistry.java
@@ -103,7 +103,7 @@
 
             // Populate the phone account data.
             int subId = mPhone.getSubId();
-            int color = 0;
+            int color = PhoneAccount.NO_COLOR;
             int slotId = SubscriptionManager.INVALID_SLOT_ID;
             String line1Number = mTelephonyManager.getLine1NumberForSubscriber(subId);
             if (line1Number == null) {
