am ed0878a0: (-s ours) Import translations. DO NOT MERGE

* commit 'ed0878a0dbc0a4606143c4d28e60bfc82a51d1e1':
  Import translations. DO NOT MERGE
diff --git a/Android.mk b/Android.mk
index b12d32e..17c748a 100644
--- a/Android.mk
+++ b/Android.mk
@@ -4,16 +4,26 @@
 # for the 'other' dialer.
 include $(CLEAR_VARS)
 
+phone_common_dir := ../../apps/PhoneCommon
+
+src_dirs := src $(phone_common_dir)/src
+res_dirs := res $(phone_common_dir)/res
+
 LOCAL_JAVA_LIBRARIES := telephony-common voip-common
-LOCAL_STATIC_JAVA_LIBRARIES := com.android.phone.shared \
+LOCAL_STATIC_JAVA_LIBRARIES := \
         com.android.services.telephony.common \
         guava \
 
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
+LOCAL_SRC_FILES := $(call all-java-files-under, $(src_dirs))
 LOCAL_SRC_FILES += \
         src/com/android/phone/EventLogTags.logtags \
         src/com/android/phone/INetworkQueryService.aidl \
         src/com/android/phone/INetworkQueryServiceCallback.aidl
+LOCAL_RESOURCE_DIR := $(addprefix $(LOCAL_PATH)/, $(res_dirs))
+
+LOCAL_AAPT_FLAGS := \
+    --auto-add-overlay \
+    --extra-packages com.android.phone.common
 
 LOCAL_PACKAGE_NAME := TeleService
 
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index c0d67e4..a2da689 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -87,6 +87,7 @@
     <uses-permission android:name="android.permission.USE_SIP" />
     <uses-permission android:name="android.permission.REBOOT" />
     <uses-permission android:name="android.permission.UPDATE_LOCK" />
+    <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS" />
     <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" />
     <uses-permission android:name="com.android.smspush.WAPPUSH_MANAGER_BIND" />
     <uses-permission android:name="android.permission.MANAGE_USERS" />
@@ -546,31 +547,22 @@
         <service android:name="HfaService" android:exported="false"/>
 
         <!-- Telecomm integration -->
-        <service android:name="com.android.services.telephony.TelephonyCallServiceProvider">
+        <service android:name="com.android.services.telephony.TelephonyCallServiceProvider"
+                android:singleUser="true">
             <intent-filter>
                 <action android:name="android.telecomm.CallServiceProvider" />
             </intent-filter>
         </service>
-        <service android:name="com.android.services.telephony.TelephonyCallServiceSelector">
-            <intent-filter>
-                <action android:name="android.telecomm.CallServiceSelector" />
-            </intent-filter>
-        </service>
         <service
-                android:name="com.android.services.telephony.GsmConnectionService"
-                android:label="@string/gsm_connection_service_label">
+                android:singleUser="true"
+                android:name="com.android.services.telephony.PstnConnectionService"
+                android:label="@string/pstn_connection_service_label">
             <intent-filter>
                 <action android:name="android.telecomm.CallService" />
             </intent-filter>
         </service>
         <service
-                android:name="com.android.services.telephony.CdmaConnectionService"
-                android:label="@string/cdma_connection_service_label">
-            <intent-filter>
-                <action android:name="android.telecomm.CallService" />
-            </intent-filter>
-        </service>
-        <service
+                android:singleUser="true"
                 android:name="com.android.services.telephony.SipConnectionService"
                 android:label="@string/sip_connection_service_label">
             <intent-filter>
diff --git a/common/src/com/android/services/telephony/common/Call.java b/common/src/com/android/services/telephony/common/Call.java
index 3537019..bb1806c 100644
--- a/common/src/com/android/services/telephony/common/Call.java
+++ b/common/src/com/android/services/telephony/common/Call.java
@@ -153,6 +153,12 @@
     // Gateway service package name
     private String mGatewayPackage;
 
+    // The subscription id
+    private long mSubId;
+
+    // The call type
+    private int mType;
+
     public Call(int callId) {
         mCallId = callId;
         mIdentification = new CallIdentification(mCallId);
@@ -169,6 +175,8 @@
         mChildCallIds = new TreeSet<Integer>(call.mChildCallIds);
         mGatewayNumber = call.mGatewayNumber;
         mGatewayPackage = call.mGatewayPackage;
+        mSubId = call.mSubId;
+        mType = call.mType;
     }
 
     public int getCallId() {
@@ -301,6 +309,22 @@
         mGatewayPackage = packageName;
     }
 
+    public long getSubId() {
+        return mSubId;
+    }
+
+    public void setSubId(long subId) {
+        mSubId = subId;
+    }
+
+    public void setType(int type) {
+        mType = type;
+    }
+
+    public int getType() {
+        return mType;
+    }
+
     /**
      * Parcelable implementation
      */
@@ -317,6 +341,8 @@
         dest.writeString(getGatewayNumber());
         dest.writeString(getGatewayPackage());
         dest.writeParcelable(mIdentification, 0);
+        dest.writeLong(mSubId);
+        dest.writeInt(mType);
     }
 
     /**
@@ -333,6 +359,8 @@
         mGatewayNumber = in.readString();
         mGatewayPackage = in.readString();
         mIdentification = in.readParcelable(CallIdentification.class.getClassLoader());
+        mSubId = in.readLong();
+        mType = in.readInt();
     }
 
     @Override
@@ -370,6 +398,8 @@
                 .add("mGatewayNumber", MoreStrings.toSafeString(mGatewayNumber))
                 .add("mGatewayPackage", mGatewayPackage)
                 .add("mIdentification", mIdentification)
+                .add("mSubId", mSubId)
+                .add("mType", mType)
                 .toString();
     }
 }
diff --git a/res/drawable-ar-hdpi/dial_num_0_no_plus_wht.png b/res/drawable-ar-hdpi/dial_num_0_no_plus_wht.png
deleted file mode 100644
index bc947b2..0000000
--- a/res/drawable-ar-hdpi/dial_num_0_no_plus_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ar-hdpi/dial_num_1_no_vm_wht.png b/res/drawable-ar-hdpi/dial_num_1_no_vm_wht.png
deleted file mode 100644
index 2bbaead..0000000
--- a/res/drawable-ar-hdpi/dial_num_1_no_vm_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ar-hdpi/dial_num_2_wht.png b/res/drawable-ar-hdpi/dial_num_2_wht.png
deleted file mode 100644
index 15583a0..0000000
--- a/res/drawable-ar-hdpi/dial_num_2_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ar-hdpi/dial_num_3_wht.png b/res/drawable-ar-hdpi/dial_num_3_wht.png
deleted file mode 100644
index c8fd5b6..0000000
--- a/res/drawable-ar-hdpi/dial_num_3_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ar-hdpi/dial_num_4_wht.png b/res/drawable-ar-hdpi/dial_num_4_wht.png
deleted file mode 100644
index 2df8330..0000000
--- a/res/drawable-ar-hdpi/dial_num_4_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ar-hdpi/dial_num_5_wht.png b/res/drawable-ar-hdpi/dial_num_5_wht.png
deleted file mode 100644
index b16701c..0000000
--- a/res/drawable-ar-hdpi/dial_num_5_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ar-hdpi/dial_num_6_wht.png b/res/drawable-ar-hdpi/dial_num_6_wht.png
deleted file mode 100644
index 823fa50..0000000
--- a/res/drawable-ar-hdpi/dial_num_6_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ar-hdpi/dial_num_7_wht.png b/res/drawable-ar-hdpi/dial_num_7_wht.png
deleted file mode 100644
index 6f5fbff..0000000
--- a/res/drawable-ar-hdpi/dial_num_7_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ar-hdpi/dial_num_8_wht.png b/res/drawable-ar-hdpi/dial_num_8_wht.png
deleted file mode 100644
index d15c47f..0000000
--- a/res/drawable-ar-hdpi/dial_num_8_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ar-hdpi/dial_num_9_wht.png b/res/drawable-ar-hdpi/dial_num_9_wht.png
deleted file mode 100644
index 7b28361..0000000
--- a/res/drawable-ar-hdpi/dial_num_9_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ar-mdpi/dial_num_0_no_plus_wht.png b/res/drawable-ar-mdpi/dial_num_0_no_plus_wht.png
deleted file mode 100644
index 2339f89..0000000
--- a/res/drawable-ar-mdpi/dial_num_0_no_plus_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ar-mdpi/dial_num_1_no_vm_wht.png b/res/drawable-ar-mdpi/dial_num_1_no_vm_wht.png
deleted file mode 100644
index 7c80f05..0000000
--- a/res/drawable-ar-mdpi/dial_num_1_no_vm_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ar-mdpi/dial_num_2_wht.png b/res/drawable-ar-mdpi/dial_num_2_wht.png
deleted file mode 100644
index d4421a3..0000000
--- a/res/drawable-ar-mdpi/dial_num_2_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ar-mdpi/dial_num_3_wht.png b/res/drawable-ar-mdpi/dial_num_3_wht.png
deleted file mode 100644
index 10e8216..0000000
--- a/res/drawable-ar-mdpi/dial_num_3_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ar-mdpi/dial_num_4_wht.png b/res/drawable-ar-mdpi/dial_num_4_wht.png
deleted file mode 100644
index 2c7971f..0000000
--- a/res/drawable-ar-mdpi/dial_num_4_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ar-mdpi/dial_num_5_wht.png b/res/drawable-ar-mdpi/dial_num_5_wht.png
deleted file mode 100644
index 472ad7a..0000000
--- a/res/drawable-ar-mdpi/dial_num_5_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ar-mdpi/dial_num_6_wht.png b/res/drawable-ar-mdpi/dial_num_6_wht.png
deleted file mode 100644
index 682e76a..0000000
--- a/res/drawable-ar-mdpi/dial_num_6_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ar-mdpi/dial_num_7_wht.png b/res/drawable-ar-mdpi/dial_num_7_wht.png
deleted file mode 100644
index 9a1395f..0000000
--- a/res/drawable-ar-mdpi/dial_num_7_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ar-mdpi/dial_num_8_wht.png b/res/drawable-ar-mdpi/dial_num_8_wht.png
deleted file mode 100644
index 6ef31dd..0000000
--- a/res/drawable-ar-mdpi/dial_num_8_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ar-mdpi/dial_num_9_wht.png b/res/drawable-ar-mdpi/dial_num_9_wht.png
deleted file mode 100644
index e99e20a..0000000
--- a/res/drawable-ar-mdpi/dial_num_9_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ar-xhdpi/dial_num_0_no_plus_wht.png b/res/drawable-ar-xhdpi/dial_num_0_no_plus_wht.png
deleted file mode 100644
index 8924fc8..0000000
--- a/res/drawable-ar-xhdpi/dial_num_0_no_plus_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ar-xhdpi/dial_num_1_no_vm_wht.png b/res/drawable-ar-xhdpi/dial_num_1_no_vm_wht.png
deleted file mode 100644
index 667a7c5..0000000
--- a/res/drawable-ar-xhdpi/dial_num_1_no_vm_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ar-xhdpi/dial_num_2_wht.png b/res/drawable-ar-xhdpi/dial_num_2_wht.png
deleted file mode 100644
index 1b39dbe..0000000
--- a/res/drawable-ar-xhdpi/dial_num_2_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ar-xhdpi/dial_num_3_wht.png b/res/drawable-ar-xhdpi/dial_num_3_wht.png
deleted file mode 100644
index 2cf7577..0000000
--- a/res/drawable-ar-xhdpi/dial_num_3_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ar-xhdpi/dial_num_4_wht.png b/res/drawable-ar-xhdpi/dial_num_4_wht.png
deleted file mode 100644
index 1816e60..0000000
--- a/res/drawable-ar-xhdpi/dial_num_4_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ar-xhdpi/dial_num_5_wht.png b/res/drawable-ar-xhdpi/dial_num_5_wht.png
deleted file mode 100644
index b846a14..0000000
--- a/res/drawable-ar-xhdpi/dial_num_5_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ar-xhdpi/dial_num_6_wht.png b/res/drawable-ar-xhdpi/dial_num_6_wht.png
deleted file mode 100644
index 5768e87..0000000
--- a/res/drawable-ar-xhdpi/dial_num_6_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ar-xhdpi/dial_num_7_wht.png b/res/drawable-ar-xhdpi/dial_num_7_wht.png
deleted file mode 100644
index 98667a2..0000000
--- a/res/drawable-ar-xhdpi/dial_num_7_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ar-xhdpi/dial_num_8_wht.png b/res/drawable-ar-xhdpi/dial_num_8_wht.png
deleted file mode 100644
index dc71242..0000000
--- a/res/drawable-ar-xhdpi/dial_num_8_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ar-xhdpi/dial_num_9_wht.png b/res/drawable-ar-xhdpi/dial_num_9_wht.png
deleted file mode 100644
index 4917ee0..0000000
--- a/res/drawable-ar-xhdpi/dial_num_9_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-fa-hdpi/dial_num_0_no_plus_wht.png b/res/drawable-fa-hdpi/dial_num_0_no_plus_wht.png
deleted file mode 100644
index bc947b2..0000000
--- a/res/drawable-fa-hdpi/dial_num_0_no_plus_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-fa-hdpi/dial_num_1_no_vm_wht.png b/res/drawable-fa-hdpi/dial_num_1_no_vm_wht.png
deleted file mode 100644
index 2bbaead..0000000
--- a/res/drawable-fa-hdpi/dial_num_1_no_vm_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-fa-hdpi/dial_num_2_wht.png b/res/drawable-fa-hdpi/dial_num_2_wht.png
deleted file mode 100644
index 15583a0..0000000
--- a/res/drawable-fa-hdpi/dial_num_2_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-fa-hdpi/dial_num_3_wht.png b/res/drawable-fa-hdpi/dial_num_3_wht.png
deleted file mode 100644
index c8fd5b6..0000000
--- a/res/drawable-fa-hdpi/dial_num_3_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-fa-hdpi/dial_num_4_wht.png b/res/drawable-fa-hdpi/dial_num_4_wht.png
deleted file mode 100644
index 4d6b4ea..0000000
--- a/res/drawable-fa-hdpi/dial_num_4_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-fa-hdpi/dial_num_5_wht.png b/res/drawable-fa-hdpi/dial_num_5_wht.png
deleted file mode 100644
index 43b2886..0000000
--- a/res/drawable-fa-hdpi/dial_num_5_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-fa-hdpi/dial_num_6_wht.png b/res/drawable-fa-hdpi/dial_num_6_wht.png
deleted file mode 100644
index 7db627e..0000000
--- a/res/drawable-fa-hdpi/dial_num_6_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-fa-hdpi/dial_num_7_wht.png b/res/drawable-fa-hdpi/dial_num_7_wht.png
deleted file mode 100644
index 6f5fbff..0000000
--- a/res/drawable-fa-hdpi/dial_num_7_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-fa-hdpi/dial_num_8_wht.png b/res/drawable-fa-hdpi/dial_num_8_wht.png
deleted file mode 100644
index d15c47f..0000000
--- a/res/drawable-fa-hdpi/dial_num_8_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-fa-hdpi/dial_num_9_wht.png b/res/drawable-fa-hdpi/dial_num_9_wht.png
deleted file mode 100644
index 7b28361..0000000
--- a/res/drawable-fa-hdpi/dial_num_9_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-fa-mdpi/dial_num_0_no_plus_wht.png b/res/drawable-fa-mdpi/dial_num_0_no_plus_wht.png
deleted file mode 100644
index 2339f89..0000000
--- a/res/drawable-fa-mdpi/dial_num_0_no_plus_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-fa-mdpi/dial_num_1_no_vm_wht.png b/res/drawable-fa-mdpi/dial_num_1_no_vm_wht.png
deleted file mode 100644
index 7c80f05..0000000
--- a/res/drawable-fa-mdpi/dial_num_1_no_vm_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-fa-mdpi/dial_num_2_wht.png b/res/drawable-fa-mdpi/dial_num_2_wht.png
deleted file mode 100644
index d4421a3..0000000
--- a/res/drawable-fa-mdpi/dial_num_2_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-fa-mdpi/dial_num_3_wht.png b/res/drawable-fa-mdpi/dial_num_3_wht.png
deleted file mode 100644
index 10e8216..0000000
--- a/res/drawable-fa-mdpi/dial_num_3_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-fa-mdpi/dial_num_4_wht.png b/res/drawable-fa-mdpi/dial_num_4_wht.png
deleted file mode 100644
index de5c7b2..0000000
--- a/res/drawable-fa-mdpi/dial_num_4_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-fa-mdpi/dial_num_5_wht.png b/res/drawable-fa-mdpi/dial_num_5_wht.png
deleted file mode 100644
index ba461d7..0000000
--- a/res/drawable-fa-mdpi/dial_num_5_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-fa-mdpi/dial_num_6_wht.png b/res/drawable-fa-mdpi/dial_num_6_wht.png
deleted file mode 100644
index ec41f38..0000000
--- a/res/drawable-fa-mdpi/dial_num_6_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-fa-mdpi/dial_num_7_wht.png b/res/drawable-fa-mdpi/dial_num_7_wht.png
deleted file mode 100644
index 9a1395f..0000000
--- a/res/drawable-fa-mdpi/dial_num_7_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-fa-mdpi/dial_num_8_wht.png b/res/drawable-fa-mdpi/dial_num_8_wht.png
deleted file mode 100644
index 6ef31dd..0000000
--- a/res/drawable-fa-mdpi/dial_num_8_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-fa-mdpi/dial_num_9_wht.png b/res/drawable-fa-mdpi/dial_num_9_wht.png
deleted file mode 100644
index e99e20a..0000000
--- a/res/drawable-fa-mdpi/dial_num_9_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-fa-xhdpi/dial_num_0_no_plus_wht.png b/res/drawable-fa-xhdpi/dial_num_0_no_plus_wht.png
deleted file mode 100644
index 8924fc8..0000000
--- a/res/drawable-fa-xhdpi/dial_num_0_no_plus_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-fa-xhdpi/dial_num_1_no_vm_wht.png b/res/drawable-fa-xhdpi/dial_num_1_no_vm_wht.png
deleted file mode 100644
index 667a7c5..0000000
--- a/res/drawable-fa-xhdpi/dial_num_1_no_vm_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-fa-xhdpi/dial_num_2_wht.png b/res/drawable-fa-xhdpi/dial_num_2_wht.png
deleted file mode 100644
index 1b39dbe..0000000
--- a/res/drawable-fa-xhdpi/dial_num_2_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-fa-xhdpi/dial_num_3_wht.png b/res/drawable-fa-xhdpi/dial_num_3_wht.png
deleted file mode 100644
index 2cf7577..0000000
--- a/res/drawable-fa-xhdpi/dial_num_3_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-fa-xhdpi/dial_num_4_wht.png b/res/drawable-fa-xhdpi/dial_num_4_wht.png
deleted file mode 100644
index 6e0a5a9..0000000
--- a/res/drawable-fa-xhdpi/dial_num_4_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-fa-xhdpi/dial_num_5_wht.png b/res/drawable-fa-xhdpi/dial_num_5_wht.png
deleted file mode 100644
index f496906..0000000
--- a/res/drawable-fa-xhdpi/dial_num_5_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-fa-xhdpi/dial_num_6_wht.png b/res/drawable-fa-xhdpi/dial_num_6_wht.png
deleted file mode 100644
index e75b83e..0000000
--- a/res/drawable-fa-xhdpi/dial_num_6_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-fa-xhdpi/dial_num_7_wht.png b/res/drawable-fa-xhdpi/dial_num_7_wht.png
deleted file mode 100644
index 98667a2..0000000
--- a/res/drawable-fa-xhdpi/dial_num_7_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-fa-xhdpi/dial_num_8_wht.png b/res/drawable-fa-xhdpi/dial_num_8_wht.png
deleted file mode 100644
index dc71242..0000000
--- a/res/drawable-fa-xhdpi/dial_num_8_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-fa-xhdpi/dial_num_9_wht.png b/res/drawable-fa-xhdpi/dial_num_9_wht.png
deleted file mode 100644
index 4917ee0..0000000
--- a/res/drawable-fa-xhdpi/dial_num_9_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/btn_call_pressed.png b/res/drawable-hdpi/btn_call_pressed.png
deleted file mode 100644
index d6e47f4..0000000
--- a/res/drawable-hdpi/btn_call_pressed.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/dial_background_texture.png b/res/drawable-hdpi/dial_background_texture.png
deleted file mode 100644
index 9df3b1e..0000000
--- a/res/drawable-hdpi/dial_background_texture.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/dial_num_0_no_plus_wht.png b/res/drawable-hdpi/dial_num_0_no_plus_wht.png
deleted file mode 100644
index 69849ec..0000000
--- a/res/drawable-hdpi/dial_num_0_no_plus_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/dial_num_1_no_vm_wht.png b/res/drawable-hdpi/dial_num_1_no_vm_wht.png
deleted file mode 100644
index af7ec42..0000000
--- a/res/drawable-hdpi/dial_num_1_no_vm_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/dial_num_2_wht.png b/res/drawable-hdpi/dial_num_2_wht.png
deleted file mode 100644
index 2ae20ab..0000000
--- a/res/drawable-hdpi/dial_num_2_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/dial_num_3_wht.png b/res/drawable-hdpi/dial_num_3_wht.png
deleted file mode 100644
index 991d5f3..0000000
--- a/res/drawable-hdpi/dial_num_3_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/dial_num_4_wht.png b/res/drawable-hdpi/dial_num_4_wht.png
deleted file mode 100644
index 7aad3ef..0000000
--- a/res/drawable-hdpi/dial_num_4_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/dial_num_5_wht.png b/res/drawable-hdpi/dial_num_5_wht.png
deleted file mode 100644
index 42a1d0b..0000000
--- a/res/drawable-hdpi/dial_num_5_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/dial_num_6_wht.png b/res/drawable-hdpi/dial_num_6_wht.png
deleted file mode 100644
index b03e019..0000000
--- a/res/drawable-hdpi/dial_num_6_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/dial_num_7_wht.png b/res/drawable-hdpi/dial_num_7_wht.png
deleted file mode 100644
index 8b72fff..0000000
--- a/res/drawable-hdpi/dial_num_7_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/dial_num_8_wht.png b/res/drawable-hdpi/dial_num_8_wht.png
deleted file mode 100644
index 822f21a..0000000
--- a/res/drawable-hdpi/dial_num_8_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/dial_num_9_wht.png b/res/drawable-hdpi/dial_num_9_wht.png
deleted file mode 100644
index 2ee944b..0000000
--- a/res/drawable-hdpi/dial_num_9_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/fab_ic_call.png b/res/drawable-hdpi/fab_ic_call.png
new file mode 100644
index 0000000..7bf83fa
--- /dev/null
+++ b/res/drawable-hdpi/fab_ic_call.png
Binary files differ
diff --git a/res/drawable-hdpi/fab_teal_background.png b/res/drawable-hdpi/fab_teal_background.png
new file mode 100644
index 0000000..e2f01e8
--- /dev/null
+++ b/res/drawable-hdpi/fab_teal_background.png
Binary files differ
diff --git a/res/drawable-mdpi/btn_call_pressed.png b/res/drawable-mdpi/btn_call_pressed.png
deleted file mode 100644
index 9d38da5..0000000
--- a/res/drawable-mdpi/btn_call_pressed.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/dial_background_texture.png b/res/drawable-mdpi/dial_background_texture.png
deleted file mode 100644
index 90cd07c..0000000
--- a/res/drawable-mdpi/dial_background_texture.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/dial_num_0_no_plus_wht.png b/res/drawable-mdpi/dial_num_0_no_plus_wht.png
deleted file mode 100644
index 1d8b0e3..0000000
--- a/res/drawable-mdpi/dial_num_0_no_plus_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/dial_num_1_no_vm_wht.png b/res/drawable-mdpi/dial_num_1_no_vm_wht.png
deleted file mode 100644
index e253724..0000000
--- a/res/drawable-mdpi/dial_num_1_no_vm_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/dial_num_2_wht.png b/res/drawable-mdpi/dial_num_2_wht.png
deleted file mode 100644
index e311f4f..0000000
--- a/res/drawable-mdpi/dial_num_2_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/dial_num_3_wht.png b/res/drawable-mdpi/dial_num_3_wht.png
deleted file mode 100644
index f07324a..0000000
--- a/res/drawable-mdpi/dial_num_3_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/dial_num_4_wht.png b/res/drawable-mdpi/dial_num_4_wht.png
deleted file mode 100644
index cd8d33c..0000000
--- a/res/drawable-mdpi/dial_num_4_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/dial_num_5_wht.png b/res/drawable-mdpi/dial_num_5_wht.png
deleted file mode 100644
index a9f27dc..0000000
--- a/res/drawable-mdpi/dial_num_5_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/dial_num_6_wht.png b/res/drawable-mdpi/dial_num_6_wht.png
deleted file mode 100644
index 2bdf08e..0000000
--- a/res/drawable-mdpi/dial_num_6_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/dial_num_7_wht.png b/res/drawable-mdpi/dial_num_7_wht.png
deleted file mode 100644
index 6c1c599..0000000
--- a/res/drawable-mdpi/dial_num_7_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/dial_num_8_wht.png b/res/drawable-mdpi/dial_num_8_wht.png
deleted file mode 100644
index db0694c..0000000
--- a/res/drawable-mdpi/dial_num_8_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/dial_num_9_wht.png b/res/drawable-mdpi/dial_num_9_wht.png
deleted file mode 100644
index 692fdb0..0000000
--- a/res/drawable-mdpi/dial_num_9_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/fab_ic_call.png b/res/drawable-mdpi/fab_ic_call.png
new file mode 100644
index 0000000..790f935
--- /dev/null
+++ b/res/drawable-mdpi/fab_ic_call.png
Binary files differ
diff --git a/res/drawable-mdpi/fab_teal_background.png b/res/drawable-mdpi/fab_teal_background.png
new file mode 100644
index 0000000..c95d124
--- /dev/null
+++ b/res/drawable-mdpi/fab_teal_background.png
Binary files differ
diff --git a/res/drawable-xhdpi/btn_call_pressed.png b/res/drawable-xhdpi/btn_call_pressed.png
deleted file mode 100644
index 48e7eba..0000000
--- a/res/drawable-xhdpi/btn_call_pressed.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/dial_background_texture.png b/res/drawable-xhdpi/dial_background_texture.png
deleted file mode 100644
index 02aacc8..0000000
--- a/res/drawable-xhdpi/dial_background_texture.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/dial_num_0_no_plus_wht.png b/res/drawable-xhdpi/dial_num_0_no_plus_wht.png
deleted file mode 100644
index 11ca993..0000000
--- a/res/drawable-xhdpi/dial_num_0_no_plus_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/dial_num_1_no_vm_wht.png b/res/drawable-xhdpi/dial_num_1_no_vm_wht.png
deleted file mode 100644
index 8d2ac70..0000000
--- a/res/drawable-xhdpi/dial_num_1_no_vm_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/dial_num_2_wht.png b/res/drawable-xhdpi/dial_num_2_wht.png
deleted file mode 100644
index 12c4ab9..0000000
--- a/res/drawable-xhdpi/dial_num_2_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/dial_num_3_wht.png b/res/drawable-xhdpi/dial_num_3_wht.png
deleted file mode 100644
index 4353e8a..0000000
--- a/res/drawable-xhdpi/dial_num_3_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/dial_num_4_wht.png b/res/drawable-xhdpi/dial_num_4_wht.png
deleted file mode 100644
index ccee5cc..0000000
--- a/res/drawable-xhdpi/dial_num_4_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/dial_num_5_wht.png b/res/drawable-xhdpi/dial_num_5_wht.png
deleted file mode 100644
index f27f153..0000000
--- a/res/drawable-xhdpi/dial_num_5_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/dial_num_6_wht.png b/res/drawable-xhdpi/dial_num_6_wht.png
deleted file mode 100644
index 8966d13..0000000
--- a/res/drawable-xhdpi/dial_num_6_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/dial_num_7_wht.png b/res/drawable-xhdpi/dial_num_7_wht.png
deleted file mode 100644
index b018810..0000000
--- a/res/drawable-xhdpi/dial_num_7_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/dial_num_8_wht.png b/res/drawable-xhdpi/dial_num_8_wht.png
deleted file mode 100644
index 7c7b4f8..0000000
--- a/res/drawable-xhdpi/dial_num_8_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/dial_num_9_wht.png b/res/drawable-xhdpi/dial_num_9_wht.png
deleted file mode 100644
index 23984f0..0000000
--- a/res/drawable-xhdpi/dial_num_9_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/fab_ic_call.png b/res/drawable-xhdpi/fab_ic_call.png
new file mode 100644
index 0000000..6bd53f5
--- /dev/null
+++ b/res/drawable-xhdpi/fab_ic_call.png
Binary files differ
diff --git a/res/drawable-xhdpi/fab_teal_background.png b/res/drawable-xhdpi/fab_teal_background.png
new file mode 100644
index 0000000..f94f759
--- /dev/null
+++ b/res/drawable-xhdpi/fab_teal_background.png
Binary files differ
diff --git a/res/drawable-xxhdpi/fab_ic_call.png b/res/drawable-xxhdpi/fab_ic_call.png
new file mode 100644
index 0000000..6866fa4
--- /dev/null
+++ b/res/drawable-xxhdpi/fab_ic_call.png
Binary files differ
diff --git a/res/drawable-xxhdpi/fab_teal_background.png b/res/drawable-xxhdpi/fab_teal_background.png
new file mode 100644
index 0000000..cc0ba27
--- /dev/null
+++ b/res/drawable-xxhdpi/fab_teal_background.png
Binary files differ
diff --git a/res/drawable/background_dial_holo_dark.xml b/res/drawable/background_dial_holo_dark.xml
deleted file mode 100644
index e06507f..0000000
--- a/res/drawable/background_dial_holo_dark.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2012 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<shape xmlns:android="http://schemas.android.com/apk/res/android">
-    <gradient
-            android:startColor="#ff020709"
-            android:endColor="#ff0a242d"
-            android:angle="270" />
-</shape>
diff --git a/res/drawable/btn_call.xml b/res/drawable/btn_call.xml
deleted file mode 100644
index abce983..0000000
--- a/res/drawable/btn_call.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<!-- Background resource for call button in the various dialpads.
-     Almost a copy from framework's item_background_holo_dark.xml, but has different pressed effect
-  -->
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-
-    <item android:state_window_focused="false" android:drawable="@android:color/transparent" />
-
-    <!-- Even though these two point to the same resource, have two states so the drawable will invalidate itself when coming out of pressed state. -->
-    <item android:state_focused="true"  android:state_enabled="false" android:state_pressed="true" android:drawable="@drawable/list_selector_disabled_holo_dark" />
-    <item android:state_focused="true"  android:state_enabled="false"                              android:drawable="@drawable/list_selector_disabled_holo_dark" />
-    <item android:state_focused="true"                                android:state_pressed="true" android:drawable="@drawable/btn_call_pressed" />
-    <item android:state_focused="false"                               android:state_pressed="true" android:drawable="@drawable/btn_call_pressed" />
-    <item android:state_focused="true"                                                             android:drawable="@drawable/list_focused_holo" />
-    <item                                                                                          android:drawable="@android:color/transparent" />
-</selector>
-
diff --git a/res/drawable/dialpad_background.xml b/res/drawable/floating_action_button.xml
similarity index 71%
rename from res/drawable/dialpad_background.xml
rename to res/drawable/floating_action_button.xml
index 0e31f5e..d518ddd 100644
--- a/res/drawable/dialpad_background.xml
+++ b/res/drawable/floating_action_button.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 The Android Open Source Project
+<!--
+     Copyright (C) 2014 The Android Open Source Project
 
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
@@ -14,6 +15,7 @@
      limitations under the License.
 -->
 
-<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/dial_background_texture"
-    android:tileMode="repeat" />
+<ripple xmlns:android="http://schemas.android.com/apk/res/android"
+    android:color="@color/dialer_accent_color">
+    <item android:drawable="@drawable/fab_teal_background" />
+</ripple>
diff --git a/res/layout/dialpad.xml b/res/layout/dialpad.xml
deleted file mode 100644
index 45ce513..0000000
--- a/res/layout/dialpad.xml
+++ /dev/null
@@ -1,88 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2006 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<!-- The grid of buttons used in the onscreen DTMF dialpad;
-     see dtmf_twelve_key_dialer_view.xml. -->
-<TableLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/dialpad"
-    android:layout_width="match_parent"
-    android:layout_height="0px"
-    android:layout_weight="@integer/dialpad_layout_weight_dialpad"
-    android:layout_gravity="center_horizontal"
-    android:layout_marginTop="@dimen/dialpad_vertical_margin"
-    android:paddingStart="5dip"
-    android:paddingEnd="5dip"
-    android:paddingBottom="10dip"
-    android:background="@drawable/dialpad_background"
-    android:layoutDirection="ltr">
-
-    <TableRow
-         android:layout_height="0px"
-         android:layout_weight="1">
-        <ImageButton android:id="@+id/one" style="@style/DialpadButtonStyle"
-            android:src="@drawable/dial_num_1_no_vm_wht"
-            android:contentDescription="@string/description_image_button_one" />
-        <ImageButton android:id="@+id/two" style="@style/DialpadButtonStyle"
-            android:src="@drawable/dial_num_2_wht"
-            android:contentDescription="@string/description_image_button_two" />
-        <ImageButton android:id="@+id/three" style="@style/DialpadButtonStyle"
-            android:src="@drawable/dial_num_3_wht"
-            android:contentDescription="@string/description_image_button_three" />
-    </TableRow>
-
-    <TableRow
-         android:layout_height="0px"
-         android:layout_weight="1">
-        <ImageButton android:id="@+id/four" style="@style/DialpadButtonStyle"
-            android:src="@drawable/dial_num_4_wht"
-            android:contentDescription="@string/description_image_button_four" />
-        <ImageButton android:id="@+id/five" style="@style/DialpadButtonStyle"
-            android:src="@drawable/dial_num_5_wht"
-            android:contentDescription="@string/description_image_button_five" />
-        <ImageButton android:id="@+id/six" style="@style/DialpadButtonStyle"
-            android:src="@drawable/dial_num_6_wht"
-            android:contentDescription="@string/description_image_button_six" />
-    </TableRow>
-
-    <TableRow
-         android:layout_height="0px"
-         android:layout_weight="1">
-        <ImageButton android:id="@+id/seven" style="@style/DialpadButtonStyle"
-            android:src="@drawable/dial_num_7_wht"
-            android:contentDescription="@string/description_image_button_seven" />
-        <ImageButton android:id="@+id/eight" style="@style/DialpadButtonStyle"
-            android:src="@drawable/dial_num_8_wht"
-            android:contentDescription="@string/description_image_button_eight" />
-        <ImageButton android:id="@+id/nine" style="@style/DialpadButtonStyle"
-            android:src="@drawable/dial_num_9_wht"
-            android:contentDescription="@string/description_image_button_nine" />
-    </TableRow>
-
-    <TableRow
-         android:layout_height="0px"
-         android:layout_weight="1">
-        <ImageButton android:id="@+id/star" style="@style/DialpadButtonStyle"
-            android:src="@drawable/dial_num_star_wht"
-            android:contentDescription="@string/description_image_button_star" />
-        <ImageButton android:id="@+id/zero" style="@style/DialpadButtonStyle"
-            android:src="@drawable/dial_num_0_no_plus_wht"
-            android:contentDescription="@string/description_image_button_zero" />
-        <ImageButton android:id="@+id/pound" style="@style/DialpadButtonStyle"
-            android:src="@drawable/dial_num_pound_wht"
-            android:contentDescription="@string/description_image_button_pound" />
-    </TableRow>
-</TableLayout>
diff --git a/res/layout/emergency_dialer.xml b/res/layout/emergency_dialer.xml
index d98631e..5c721c5 100644
--- a/res/layout/emergency_dialer.xml
+++ b/res/layout/emergency_dialer.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2006 The Android Open Source Project
+<!-- Copyright (C) 2014 The Android Open Source Project
 
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
@@ -15,76 +15,24 @@
 -->
 
 <!-- Layout for the emergency dialer; see EmergencyDialer.java. -->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/top"
     android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:orientation="vertical"
-    android:layout_marginStart="@dimen/dialpad_horizontal_margin"
-    android:layout_marginEnd="@dimen/dialpad_horizontal_margin">
-
-    <!-- Text field above the keypad where the digits are displayed -->
-    <LinearLayout
-        android:id="@+id/digits_container"
-        android:layout_width="match_parent"
-        android:layout_height="0px"
-        android:layout_weight="@integer/dialpad_layout_weight_digits"
-        android:layout_marginTop="@dimen/dialpad_vertical_margin"
-        android:gravity="center"
-        android:background="@drawable/dialpad_background" >
-
-        <EditText
-            android:id="@+id/digits"
-            android:layout_width="0dip"
-            android:layout_weight="1"
-            android:layout_height="match_parent"
-            android:gravity="center"
-            android:scrollHorizontally="true"
-            android:textAppearance="@style/DialtactsDigitsTextAppearance"
-            android:focusableInTouchMode="false"
-            android:nextFocusRight="@+id/deleteButton"
-            android:background="@android:color/transparent" />
-
-        <ImageButton
-            android:id="@+id/deleteButton"
-            android:layout_width="56dip"
-            android:layout_height="match_parent"
-            android:layout_gravity="center_vertical"
-            android:gravity="center"
-            android:state_enabled="false"
-            android:background="?android:attr/selectableItemBackground"
-            android:contentDescription="@string/description_delete_button"
-            android:src="@drawable/ic_dial_action_delete" />
-    </LinearLayout>
-
-    <!-- Keypad section -->
-    <include layout="@layout/dialpad" />
-
-    <View
-       android:layout_width="match_parent"
-       android:layout_height="@dimen/dialpad_vertical_margin"
-       android:background="#66000000"/>
-
-    <!-- In usual dialpad we set some padding between this button and the
-         left/right edges. Here, we don't do that just for simplicitly. -->
+    android:layout_height="match_parent" >
+    <include layout="@layout/dialpad_view" />
     <FrameLayout
-        android:id="@+id/dialButtonContainer"
-        android:layout_width="match_parent"
-        android:layout_height="0px"
-        android:layout_weight="@integer/dialpad_layout_weight_additional_buttons"
-        android:layout_gravity="center_horizontal"
-        android:background="@drawable/dialpad_background">
+        android:id="@+id/floating_action_button_container"
+        android:layout_width="@dimen/floating_action_button_width"
+        android:layout_height="@dimen/floating_action_button_height"
+        android:layout_marginBottom="@dimen/floating_action_button_margin_bottom"
+        android:layout_gravity="center_horizontal|bottom" >
 
         <ImageButton
-            android:id="@+id/dialButton"
+            android:id="@+id/floating_action_button"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
-            android:layout_gravity="center"
-            android:state_enabled="false"
-            android:background="@drawable/btn_call"
+            android:background="@drawable/floating_action_button"
             android:contentDescription="@string/description_dial_button"
-            android:src="@drawable/ic_dial_action_call" />
-
+            android:src="@drawable/fab_ic_call"/>
     </FrameLayout>
-
-</LinearLayout>
+</FrameLayout>
diff --git a/res/layout/otacall_card.xml b/res/layout/otacall_card.xml
index d90e940..74b31e8 100644
--- a/res/layout/otacall_card.xml
+++ b/res/layout/otacall_card.xml
@@ -89,7 +89,7 @@
                   />
 
         <!-- Progress bar -->
-        <ProgressBar android:id="@+android:id/progress_large"
+        <ProgressBar android:id="@+id/progress_large"
                      style="?android:attr/progressBarStyleHorizontal"
                      android:layout_marginTop="20dip"
                      android:layout_width="match_parent"
diff --git a/res/layout/telephony_disallowed_preference_screen.xml b/res/layout/telephony_disallowed_preference_screen.xml
new file mode 100644
index 0000000..18b4d94
--- /dev/null
+++ b/res/layout/telephony_disallowed_preference_screen.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+             android:id="@+id/listContainer"
+             android:layout_width="match_parent"
+             android:layout_height="match_parent">
+
+        <ListView android:id="@android:id/list"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:drawSelectorOnTop="false"
+                android:scrollbarStyle="insideOverlay"
+                android:background="@android:color/white"
+                android:cacheColorHint="@android:color/white"
+                android:fadingEdgeLength="16dip" />
+
+        <TextView android:id="@+android:id/empty"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:gravity="center"
+                android:text="@string/mobile_network_settings_not_available"
+                android:textAppearance="?android:attr/textAppearanceMedium" />
+</FrameLayout>
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index 17e58d1..993688e 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -52,6 +52,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Versoek tans netwerkontsluiting…"</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Netwerkaanvraag onsuksesvol ontsluit."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Netwerkontsluiting suksesvol."</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Mobiele netwerkinstellings is nie vir hierdie gebruiker beskikbaar nie"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"GSM-oproepinstellings"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA-oproepinstellings"</string>
     <string name="apn_settings" msgid="9043423184895642077">"Toegangspuntname"</string>
@@ -613,7 +614,6 @@
     <string name="choose_wifi_for_call_msg" msgid="193549297122949976">"Gebruik Wi-Fi om oproep te maak?"</string>
     <string name="choose_wifi_for_call_yes" msgid="5312994368472630983">"Ja"</string>
     <string name="choose_wifi_for_call_no" msgid="7132239734287157307">"Nee"</string>
-    <string name="gsm_connection_service_label" msgid="2332284528867411683">"Ingeboude GSM-SIM-kaart"</string>
-    <string name="cdma_connection_service_label" msgid="5038725238949035222">"Ingeboude CDMA-SIM-kaart"</string>
+    <string name="pstn_connection_service_label" msgid="1743245930577325900">"Ingeboude SIM-kaarte"</string>
     <string name="sip_connection_service_label" msgid="3547998349299125294">"Ingeboude internetoproepe"</string>
 </resources>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index 47ae0d4..e55e9ad 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -52,6 +52,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"አውታረመረብ ለማስከፈት በመጠየቅ ላይ..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"የአውታረ መረብ ክፈትጥየቃአል ተሳካም።"</string>
     <string name="unlock_success" msgid="6770085622238180152">"የአውታረ መረብክፈት ተሳክቷል።"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"የተንቀሳቃሽ ስልክ አውታረ መረብ ቅንብሮች ቅንብሮች ለዚህ ተጠቃሚ አይገኙም"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"የGSM  ጥሪ ቅንብሮች"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA የጥሪ ቅንብሮች"</string>
     <string name="apn_settings" msgid="9043423184895642077">"የድረስ ነጥብ ስም"</string>
@@ -609,7 +610,6 @@
     <string name="choose_wifi_for_call_msg" msgid="193549297122949976">"ጥሪ ለማድረግ Wi-Fi ይጠቀሙ?"</string>
     <string name="choose_wifi_for_call_yes" msgid="5312994368472630983">"አዎ"</string>
     <string name="choose_wifi_for_call_no" msgid="7132239734287157307">"አይ"</string>
-    <string name="gsm_connection_service_label" msgid="2332284528867411683">"አብሮ የተሰራ የጂኤስኤም SIM ካርድ"</string>
-    <string name="cdma_connection_service_label" msgid="5038725238949035222">"አብሮ የተሰራ የCDMA SIM ካርድ"</string>
+    <string name="pstn_connection_service_label" msgid="1743245930577325900">"አብሮገነብ ሲም ካርዶች"</string>
     <string name="sip_connection_service_label" msgid="3547998349299125294">"አብሮ የተሰራ የበይነመረብ መደወያ"</string>
 </resources>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 620e023..ff32640 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -52,6 +52,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"جارٍ طلب إلغاء تأمين الشبكة..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"لم ينجح طلب إلغاء تأمين الشبكة."</string>
     <string name="unlock_success" msgid="6770085622238180152">"نجح إلغاء تأمين الشبكة."</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"لا تتوفّر إعدادات شبكة الجوّال للمستخدم الحالي."</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"‏إعدادات اتصال نظام GSM"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"‏إعدادات اتصال CDMA"</string>
     <string name="apn_settings" msgid="9043423184895642077">"الدخول إلى أسماء النقاط"</string>
@@ -609,7 +610,6 @@
     <string name="choose_wifi_for_call_msg" msgid="193549297122949976">"‏هل تريد استخدام Wi-Fi لإجراء مكالمة؟"</string>
     <string name="choose_wifi_for_call_yes" msgid="5312994368472630983">"نعم"</string>
     <string name="choose_wifi_for_call_no" msgid="7132239734287157307">"لا"</string>
-    <string name="gsm_connection_service_label" msgid="2332284528867411683">"‏بطاقة SIM مدمجة لنظام GSM"</string>
-    <string name="cdma_connection_service_label" msgid="5038725238949035222">"‏بطاقة SIM مدمجة لاتصال CDMA"</string>
+    <string name="pstn_connection_service_label" msgid="1743245930577325900">"‏بطاقات SIM مدمجة"</string>
     <string name="sip_connection_service_label" msgid="3547998349299125294">"اتصال مدمج بالإنترنت"</string>
 </resources>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index eb7f24e..f0c101c 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -52,6 +52,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Изпраща се заявка за отключване на мрежата..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Заявката за отключване на мрежата не бе успешна."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Отключването на мрежата бе успешно."</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Настройките за мобилната мрежа не са налице за този потребител"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"Настройки за обаждане с GSM"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"Настройки за обаждане в CDMА"</string>
     <string name="apn_settings" msgid="9043423184895642077">"Имена на точки за достъп"</string>
@@ -609,7 +610,6 @@
     <string name="choose_wifi_for_call_msg" msgid="193549297122949976">"Да се използва ли Wi-Fi за извършване на обаждането?"</string>
     <string name="choose_wifi_for_call_yes" msgid="5312994368472630983">"Да"</string>
     <string name="choose_wifi_for_call_no" msgid="7132239734287157307">"Не"</string>
-    <string name="gsm_connection_service_label" msgid="2332284528867411683">"Вградена SIM карта за GSM"</string>
-    <string name="cdma_connection_service_label" msgid="5038725238949035222">"Вградена SIM карта за CDMA"</string>
+    <string name="pstn_connection_service_label" msgid="1743245930577325900">"Вградени SIM карти"</string>
     <string name="sip_connection_service_label" msgid="3547998349299125294">"Вградена услуга за интернет обаждания"</string>
 </resources>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index 6407ab9..c082332 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -52,6 +52,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"S\'està sol·licitant el desbloqueig de la xarxa..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Sol·licitud de desbloqueig de xarxa incorrecta."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Desbloqueig de la xarxa correcte."</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"La configuració de la xarxa per a mòbils no està disponible per a aquest usuari."</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"Configuració de trucades GSM"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"Configuració de trucades CDMA"</string>
     <string name="apn_settings" msgid="9043423184895642077">"APN"</string>
@@ -609,7 +610,6 @@
     <string name="choose_wifi_for_call_msg" msgid="193549297122949976">"Vols fer servir la connexió Wi-Fi per fer trucades?"</string>
     <string name="choose_wifi_for_call_yes" msgid="5312994368472630983">"Sí"</string>
     <string name="choose_wifi_for_call_no" msgid="7132239734287157307">"No"</string>
-    <string name="gsm_connection_service_label" msgid="2332284528867411683">"Targeta SIM integrada amb GSM"</string>
-    <string name="cdma_connection_service_label" msgid="5038725238949035222">"Targeta SIM integrada amb CDMA"</string>
+    <string name="pstn_connection_service_label" msgid="1743245930577325900">"Targetes SIM integrades"</string>
     <string name="sip_connection_service_label" msgid="3547998349299125294">"Trucades d\'Internet integrades"</string>
 </resources>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 3df812b..dddf17e 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -52,6 +52,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Žádost o odblokování sítě..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Požadavek na odblokování sítě se nezdařil."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Síť byla úspěšně odblokována."</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Nastavení mobilní sítě pro tohoto uživatele není dostupné."</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"Nastavení hovorů GSM"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"Nastavení hovorů CDMA"</string>
     <string name="apn_settings" msgid="9043423184895642077">"Názvy přístupových bodů (APN)"</string>
@@ -609,7 +610,6 @@
     <string name="choose_wifi_for_call_msg" msgid="193549297122949976">"Uskutečňovat hovory přes Wi-Fi?"</string>
     <string name="choose_wifi_for_call_yes" msgid="5312994368472630983">"Ano"</string>
     <string name="choose_wifi_for_call_no" msgid="7132239734287157307">"Ne"</string>
-    <string name="gsm_connection_service_label" msgid="2332284528867411683">"Vestavěná SIM karta GSM"</string>
-    <string name="cdma_connection_service_label" msgid="5038725238949035222">"Vestavěná SIM karta CDMA"</string>
+    <string name="pstn_connection_service_label" msgid="1743245930577325900">"Vestavěné SIM karty"</string>
     <string name="sip_connection_service_label" msgid="3547998349299125294">"Vestavěné internetové volání"</string>
 </resources>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 3b41d47..4580b6e 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -52,6 +52,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Anmoder om oplåsning af netværk ..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Anmodningen om oplåsning af netværk mislykkedes."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Netværket blev låst op."</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Denne bruger har ikke adgang til mobilnetværksindstillinger"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"Indstillinger for GSM-opkald"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"Indstillinger for CDMA-opkald"</string>
     <string name="apn_settings" msgid="9043423184895642077">"Adgangspunkter"</string>
@@ -615,7 +616,6 @@
     <string name="choose_wifi_for_call_msg" msgid="193549297122949976">"Vil du bruge Wi-Fi til at foretage opkald?"</string>
     <string name="choose_wifi_for_call_yes" msgid="5312994368472630983">"Ja"</string>
     <string name="choose_wifi_for_call_no" msgid="7132239734287157307">"Nej"</string>
-    <string name="gsm_connection_service_label" msgid="2332284528867411683">"Indbygget GSM-SIM-kort"</string>
-    <string name="cdma_connection_service_label" msgid="5038725238949035222">"Indbygget CDMA-SIM-kort"</string>
+    <string name="pstn_connection_service_label" msgid="1743245930577325900">"Indbyggede SIM-kort"</string>
     <string name="sip_connection_service_label" msgid="3547998349299125294">"Indbygget internetopkald"</string>
 </resources>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 2bc00ec..4c25b7c 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -52,6 +52,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Netzwerkentsperrung wird angefordert..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Anfrage für Entsperrung des Netzwerks war nicht erfolgreich."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Entsperrung des Netzwerks nicht erfolgreich."</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Mobile Netzwerkeinstellungen sind für diesen Nutzer nicht verfügbar."</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"GSM-Anrufeinstellungen"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA-Anrufeinstellungen"</string>
     <string name="apn_settings" msgid="9043423184895642077">"Zugangspunkte (APNs)"</string>
@@ -613,7 +614,6 @@
     <string name="choose_wifi_for_call_msg" msgid="193549297122949976">"Über WLAN anrufen?"</string>
     <string name="choose_wifi_for_call_yes" msgid="5312994368472630983">"Ja"</string>
     <string name="choose_wifi_for_call_no" msgid="7132239734287157307">"Nein"</string>
-    <string name="gsm_connection_service_label" msgid="2332284528867411683">"Integrierte GSM-SIM-Karte"</string>
-    <string name="cdma_connection_service_label" msgid="5038725238949035222">"Integrierte CDMA-SIM-Karte"</string>
+    <string name="pstn_connection_service_label" msgid="1743245930577325900">"Integrierte SIM-Karten"</string>
     <string name="sip_connection_service_label" msgid="3547998349299125294">"Integrierte Internettelefonie"</string>
 </resources>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index c3a3b10..f408b0b 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -52,6 +52,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Αίτηση ξεκλειδώματος δικτύου..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Ανεπιτυχές αίτημα ξεκλειδώματος δικτύου."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Το ξεκλείδωμα δικτύου ήταν επιτυχές."</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Οι ρυθμίσεις δικτύου κινητής τηλεφωνίας δεν είναι διαθέσιμες γι\' αυτόν το χρήστη"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"Ρυθμίσεις κλήσης GSM"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"Ρυθμίσεις κλήσης CDMA"</string>
     <string name="apn_settings" msgid="9043423184895642077">"Ονόματα σημείου πρόσβασης"</string>
@@ -609,7 +610,6 @@
     <string name="choose_wifi_for_call_msg" msgid="193549297122949976">"Χρήση του Wi-Fi για την πραγματοποίηση της κλήσης;"</string>
     <string name="choose_wifi_for_call_yes" msgid="5312994368472630983">"Ναι"</string>
     <string name="choose_wifi_for_call_no" msgid="7132239734287157307">"Όχι"</string>
-    <string name="gsm_connection_service_label" msgid="2332284528867411683">"Ενσωματωμένη κάρτα SIM GSM"</string>
-    <string name="cdma_connection_service_label" msgid="5038725238949035222">"Ενσωματωμένη κάρτα SIM CDMA"</string>
+    <string name="pstn_connection_service_label" msgid="1743245930577325900">"Ενσωματωμένες κάρτες SIM"</string>
     <string name="sip_connection_service_label" msgid="3547998349299125294">"Ενσωματωμένες κλήσεις διαδικτύου"</string>
 </resources>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index 3b2ebb6..4dd8118 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -52,6 +52,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Requesting network unlock…"</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Network unlock request unsuccessful."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Network unlock successful."</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Mobile network settings are not available for this user"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"GSM call settings"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA call settings"</string>
     <string name="apn_settings" msgid="9043423184895642077">"Access Point Names"</string>
@@ -609,7 +610,6 @@
     <string name="choose_wifi_for_call_msg" msgid="193549297122949976">"Use Wi-Fi to place call?"</string>
     <string name="choose_wifi_for_call_yes" msgid="5312994368472630983">"Yes"</string>
     <string name="choose_wifi_for_call_no" msgid="7132239734287157307">"No"</string>
-    <string name="gsm_connection_service_label" msgid="2332284528867411683">"Built-in GSM SIM card"</string>
-    <string name="cdma_connection_service_label" msgid="5038725238949035222">"Built-in CDMA SIM card"</string>
+    <string name="pstn_connection_service_label" msgid="1743245930577325900">"Built-in SIM cards"</string>
     <string name="sip_connection_service_label" msgid="3547998349299125294">"Built-in Internet calling"</string>
 </resources>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index 3b2ebb6..4dd8118 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -52,6 +52,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Requesting network unlock…"</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Network unlock request unsuccessful."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Network unlock successful."</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Mobile network settings are not available for this user"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"GSM call settings"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA call settings"</string>
     <string name="apn_settings" msgid="9043423184895642077">"Access Point Names"</string>
@@ -609,7 +610,6 @@
     <string name="choose_wifi_for_call_msg" msgid="193549297122949976">"Use Wi-Fi to place call?"</string>
     <string name="choose_wifi_for_call_yes" msgid="5312994368472630983">"Yes"</string>
     <string name="choose_wifi_for_call_no" msgid="7132239734287157307">"No"</string>
-    <string name="gsm_connection_service_label" msgid="2332284528867411683">"Built-in GSM SIM card"</string>
-    <string name="cdma_connection_service_label" msgid="5038725238949035222">"Built-in CDMA SIM card"</string>
+    <string name="pstn_connection_service_label" msgid="1743245930577325900">"Built-in SIM cards"</string>
     <string name="sip_connection_service_label" msgid="3547998349299125294">"Built-in Internet calling"</string>
 </resources>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 0d80833..ef0d433 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -52,6 +52,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Solicitando desbloqueo de red..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Solicitud de desbloqueo de red incorrecta."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Desbloqueo de red correcto."</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"La configuración de la red móvil no está disponible para este usuario."</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"Config. de llam. GSM"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"Configuración de llamadas de CDMA"</string>
     <string name="apn_settings" msgid="9043423184895642077">"Nombres de puntos de acceso"</string>
@@ -609,7 +610,6 @@
     <string name="choose_wifi_for_call_msg" msgid="193549297122949976">"¿Usar Wi-Fi para hacer llamadas?"</string>
     <string name="choose_wifi_for_call_yes" msgid="5312994368472630983">"Sí"</string>
     <string name="choose_wifi_for_call_no" msgid="7132239734287157307">"No"</string>
-    <string name="gsm_connection_service_label" msgid="2332284528867411683">"Tarjeta SIM GSM integrada"</string>
-    <string name="cdma_connection_service_label" msgid="5038725238949035222">"Tarjeta SIM CDMA integrada"</string>
+    <string name="pstn_connection_service_label" msgid="1743245930577325900">"Tarjetas SIM integradas"</string>
     <string name="sip_connection_service_label" msgid="3547998349299125294">"Llamadas por Internet integradas"</string>
 </resources>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 4bdf365..c6b1325 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -52,6 +52,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Solicitando desbloqueo de red..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"La solicitud de desbloqueo de red no se ha realizado correctamente."</string>
     <string name="unlock_success" msgid="6770085622238180152">"El desbloqueo de red se ha realizado correctamente."</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Los ajustes de red móvil no están disponibles para este usuario"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"Ajustes de llamadas GSM"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"Ajustes de llamadas CDMA"</string>
     <string name="apn_settings" msgid="9043423184895642077">"APN"</string>
@@ -613,7 +614,6 @@
     <string name="choose_wifi_for_call_msg" msgid="193549297122949976">"¿Usar Wi-Fi para hacer llamadas?"</string>
     <string name="choose_wifi_for_call_yes" msgid="5312994368472630983">"Sí"</string>
     <string name="choose_wifi_for_call_no" msgid="7132239734287157307">"No"</string>
-    <string name="gsm_connection_service_label" msgid="2332284528867411683">"Tarjeta SIM GSM integradada"</string>
-    <string name="cdma_connection_service_label" msgid="5038725238949035222">"Tarjeta SIM CDMA integradada"</string>
+    <string name="pstn_connection_service_label" msgid="1743245930577325900">"Tarjetas SIM integradas"</string>
     <string name="sip_connection_service_label" msgid="3547998349299125294">"Llamadas por Internet integradas"</string>
 </resources>
diff --git a/res/values-et-rEE/strings.xml b/res/values-et-rEE/strings.xml
index 586f71a..19c49f5 100644
--- a/res/values-et-rEE/strings.xml
+++ b/res/values-et-rEE/strings.xml
@@ -52,6 +52,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Võrgu avamise taotlemine ..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Võrgu avamise taotlus ebaõnnestus."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Võrgu avamine õnnestus."</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Mobiilsidevõrgu seaded pole selle kasutaja jaoks saadaval"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"GSM-kõneseaded"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA-kõneseaded"</string>
     <string name="apn_settings" msgid="9043423184895642077">"Pääsupunktide nimed"</string>
@@ -609,7 +610,6 @@
     <string name="choose_wifi_for_call_msg" msgid="193549297122949976">"Kas kasutada helistamiseks WiFi-t?"</string>
     <string name="choose_wifi_for_call_yes" msgid="5312994368472630983">"Jah"</string>
     <string name="choose_wifi_for_call_no" msgid="7132239734287157307">"Ei"</string>
-    <string name="gsm_connection_service_label" msgid="2332284528867411683">"Sisseehitatud GSM-i SIM-kaart"</string>
-    <string name="cdma_connection_service_label" msgid="5038725238949035222">"Sisseehitatud CDMA SIM-kaart"</string>
+    <string name="pstn_connection_service_label" msgid="1743245930577325900">"Sisseehitatud SIM-kaardid"</string>
     <string name="sip_connection_service_label" msgid="3547998349299125294">"Sisseehitatud Interneti-kõne funktsioon"</string>
 </resources>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index 1ce0df1..ce28570 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -52,6 +52,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"در حال درخواست بازگشایی قفل شبکه..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"درخواست قفل گشایی شبکه ناموفق بود."</string>
     <string name="unlock_success" msgid="6770085622238180152">"قفل گشایی شبکه با موفقیت انجام شد."</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"تنظیمات شبکه دستگاه همراه برای این کاربر در دسترس نیست"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"‏تنظیمات تماس GSM"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"‏تنظیمات تماس CDMA"</string>
     <string name="apn_settings" msgid="9043423184895642077">"نام‌های نقاط دسترسی"</string>
@@ -609,7 +610,6 @@
     <string name="choose_wifi_for_call_msg" msgid="193549297122949976">"‏از Wi-Fi برای برقراری تماس استفاده شود؟"</string>
     <string name="choose_wifi_for_call_yes" msgid="5312994368472630983">"بله"</string>
     <string name="choose_wifi_for_call_no" msgid="7132239734287157307">"خیر"</string>
-    <string name="gsm_connection_service_label" msgid="2332284528867411683">"‏سیم‌کارت با GSM داخلی"</string>
-    <string name="cdma_connection_service_label" msgid="5038725238949035222">"‏سیم‌کارت با CDMA داخلی"</string>
+    <string name="pstn_connection_service_label" msgid="1743245930577325900">"سیم‌کارت‌های داخلی"</string>
     <string name="sip_connection_service_label" msgid="3547998349299125294">"تماس اینترنتی داخلی"</string>
 </resources>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index eaa0555..019682d 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -52,6 +52,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Pyydetään verkon lukituksen poistoa..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Verkon lukituksen poistopyyntö epäonnistui."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Verkon lukituksen poisto onnistui."</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Mobiiliverkkoasetukset eivät ole käytettävissä tälle käyttäjälle"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"GSM-puheluasetukset"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA-puheluasetukset"</string>
     <string name="apn_settings" msgid="9043423184895642077">"Tukiasemien nimet"</string>
@@ -613,7 +614,6 @@
     <string name="choose_wifi_for_call_msg" msgid="193549297122949976">"Soitetaanko Wi-Fi-puhelu?"</string>
     <string name="choose_wifi_for_call_yes" msgid="5312994368472630983">"Kyllä"</string>
     <string name="choose_wifi_for_call_no" msgid="7132239734287157307">"Ei"</string>
-    <string name="gsm_connection_service_label" msgid="2332284528867411683">"GSM-yhteyden SIM-kortti"</string>
-    <string name="cdma_connection_service_label" msgid="5038725238949035222">"CDMA-yhteyden SIM-kortti"</string>
+    <string name="pstn_connection_service_label" msgid="1743245930577325900">"Sisäiset SIM-kortit"</string>
     <string name="sip_connection_service_label" msgid="3547998349299125294">"Internetpuheluiden SIP-yhteys"</string>
 </resources>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index cc46aeb..7f65449 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -52,6 +52,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Demande de déblocage du réseau…"</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Échec de la demande de déblocage du réseau"</string>
     <string name="unlock_success" msgid="6770085622238180152">"Le réseau a été débloqué."</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Les paramètres de réseau cellulaire ne sont pas accessibles pour cet utilisateur"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"Paramètres d\'appel GSM"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"Paramètres d\'appel CDMA"</string>
     <string name="apn_settings" msgid="9043423184895642077">"Noms des points d\'accès"</string>
@@ -613,7 +614,6 @@
     <string name="choose_wifi_for_call_msg" msgid="193549297122949976">"Utiliser le Wi-Fi pour faire l\'appel?"</string>
     <string name="choose_wifi_for_call_yes" msgid="5312994368472630983">"Oui"</string>
     <string name="choose_wifi_for_call_no" msgid="7132239734287157307">"Non"</string>
-    <string name="gsm_connection_service_label" msgid="2332284528867411683">"Carte SIM GSM intégrée"</string>
-    <string name="cdma_connection_service_label" msgid="5038725238949035222">"Carte SIM CDMA intégrée"</string>
+    <string name="pstn_connection_service_label" msgid="1743245930577325900">"Cartes SIM intégrées"</string>
     <string name="sip_connection_service_label" msgid="3547998349299125294">"Fonctionnalité d\'appel par Internet intégrée"</string>
 </resources>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 38bdc98..c7a01c2 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -52,6 +52,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Demande de déblocage du réseau…"</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Échec de la demande de déblocage du réseau."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Le réseau a bien été débloqué."</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Les paramètres des réseaux mobiles ne sont pas disponibles pour cet utilisateur."</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"Paramètres d\'appel GSM"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"Paramètres d\'appel CDMA"</string>
     <string name="apn_settings" msgid="9043423184895642077">"Noms des points d\'accès"</string>
@@ -609,7 +610,6 @@
     <string name="choose_wifi_for_call_msg" msgid="193549297122949976">"Utiliser le Wi-Fi pour passer l\'appel ?"</string>
     <string name="choose_wifi_for_call_yes" msgid="5312994368472630983">"Oui"</string>
     <string name="choose_wifi_for_call_no" msgid="7132239734287157307">"Non"</string>
-    <string name="gsm_connection_service_label" msgid="2332284528867411683">"Carte SIM GSM intégrée"</string>
-    <string name="cdma_connection_service_label" msgid="5038725238949035222">"Carte SIM CDMA intégrée"</string>
+    <string name="pstn_connection_service_label" msgid="1743245930577325900">"Cartes SIM intégrées"</string>
     <string name="sip_connection_service_label" msgid="3547998349299125294">"Fonctionnalité d\'appel via Internet intégrée"</string>
 </resources>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index cad2fb8..92bce33 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -52,6 +52,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"नेटवर्क अनलॉक के लिए अनुरोध कर रहा है..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"नेटवर्क अनलॉक अनुरोध असफल."</string>
     <string name="unlock_success" msgid="6770085622238180152">"नेटवर्क अनलॉक सफल रहा."</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"मोबाइल नेटवर्क सेटिंग इस उपयोगकर्ता के लिए उपलब्ध नहीं हैं"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"GSM कॉल सेटिंग"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA कॉल सेटिंग"</string>
     <string name="apn_settings" msgid="9043423184895642077">"एक्सेस केन्द्र का नाम"</string>
@@ -609,7 +610,6 @@
     <string name="choose_wifi_for_call_msg" msgid="193549297122949976">"कॉल करने के लिए Wi-Fi का उपयोग करें?"</string>
     <string name="choose_wifi_for_call_yes" msgid="5312994368472630983">"हां"</string>
     <string name="choose_wifi_for_call_no" msgid="7132239734287157307">"नहीं"</string>
-    <string name="gsm_connection_service_label" msgid="2332284528867411683">"अंतर्निहित GSM SIM कार्ड"</string>
-    <string name="cdma_connection_service_label" msgid="5038725238949035222">"अंतर्निहित CDMA SIM कार्ड"</string>
+    <string name="pstn_connection_service_label" msgid="1743245930577325900">"अंतर्निहित SIM कार्ड"</string>
     <string name="sip_connection_service_label" msgid="3547998349299125294">"अंतर्निहित इंटरनेट कॉल सुविधा"</string>
 </resources>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index af37185..e6228a2 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -52,6 +52,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Traženje mrežnog otključavanja..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Neuspješan zahtjev za otključavanje mreže."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Mrežno otključavanje bilo je uspješno."</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Postavke mobilne mreže nisu dostupne za tog korisnika"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"Postavke GSM poziva"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"Postavke CDMA poziva"</string>
     <string name="apn_settings" msgid="9043423184895642077">"Nazivi pristupnih točaka"</string>
@@ -609,7 +610,6 @@
     <string name="choose_wifi_for_call_msg" msgid="193549297122949976">"Želite li uputiti poziv putem Wi-Fi-ja?"</string>
     <string name="choose_wifi_for_call_yes" msgid="5312994368472630983">"Da"</string>
     <string name="choose_wifi_for_call_no" msgid="7132239734287157307">"Ne"</string>
-    <string name="gsm_connection_service_label" msgid="2332284528867411683">"Ugrađena SIM kartica za GSM"</string>
-    <string name="cdma_connection_service_label" msgid="5038725238949035222">"Ugrađena SIM kartica za CDMA"</string>
+    <string name="pstn_connection_service_label" msgid="1743245930577325900">"Ugrađene SIM kartice"</string>
     <string name="sip_connection_service_label" msgid="3547998349299125294">"Ugrađeni internetski pozivi"</string>
 </resources>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index 5d5a455..f5cc45b 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -52,6 +52,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Függetlenítés kérése..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"A hálózatzárolás feloldására vonatkozó kérelem sikertelen volt."</string>
     <string name="unlock_success" msgid="6770085622238180152">"A függetlenítés sikerült."</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Mobilhálózati beállítások nem érhetők el ennél a felhasználónál"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"GSM-hívásbeállítások"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA-hívásbeállítások"</string>
     <string name="apn_settings" msgid="9043423184895642077">"Hozzáférési pontok nevei"</string>
@@ -609,7 +610,6 @@
     <string name="choose_wifi_for_call_msg" msgid="193549297122949976">"Wi-Fit szeretne használni a hívásindításhoz?"</string>
     <string name="choose_wifi_for_call_yes" msgid="5312994368472630983">"Igen"</string>
     <string name="choose_wifi_for_call_no" msgid="7132239734287157307">"Nem"</string>
-    <string name="gsm_connection_service_label" msgid="2332284528867411683">"Beépített GSM SIM kártya"</string>
-    <string name="cdma_connection_service_label" msgid="5038725238949035222">"Beépített CDMA SIM kártya"</string>
+    <string name="pstn_connection_service_label" msgid="1743245930577325900">"Beépített SIM kártyák"</string>
     <string name="sip_connection_service_label" msgid="3547998349299125294">"Beépített internetes hívás"</string>
 </resources>
diff --git a/res/values-hy-rAM/strings.xml b/res/values-hy-rAM/strings.xml
index 1024877..536c244 100644
--- a/res/values-hy-rAM/strings.xml
+++ b/res/values-hy-rAM/strings.xml
@@ -52,6 +52,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Հայցվում է ցանցի ապակողպում..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Ցանցի ապակողպման հարցումը խափանվեց:"</string>
     <string name="unlock_success" msgid="6770085622238180152">"Ցանցի ապակողպումը խափանվեց"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Բջջային ցանցի կարգավորումներն անհասանելի են այս օգտվողի համար"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"GSM զանգերի կարգավորումներ"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA զանգերի կարգավորումներ"</string>
     <string name="apn_settings" msgid="9043423184895642077">"Մատչման կետերի Անունները"</string>
@@ -615,7 +616,6 @@
     <string name="choose_wifi_for_call_msg" msgid="193549297122949976">"Օգտագործե՞լ Wi-Fi-ը զանգահարելու համար:"</string>
     <string name="choose_wifi_for_call_yes" msgid="5312994368472630983">"Այո"</string>
     <string name="choose_wifi_for_call_no" msgid="7132239734287157307">"Ոչ"</string>
-    <string name="gsm_connection_service_label" msgid="2332284528867411683">"Ներկառուցված GSM SIM քարտ"</string>
-    <string name="cdma_connection_service_label" msgid="5038725238949035222">"Ներկառուցված CDMA SIM քարտ"</string>
+    <string name="pstn_connection_service_label" msgid="1743245930577325900">"Ներկառուցված SIM քարտեր"</string>
     <string name="sip_connection_service_label" msgid="3547998349299125294">"Ներկառուցված Ինտերնետ զանգ"</string>
 </resources>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index dc9ab15..c1773bd 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -52,6 +52,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Meminta membuka jaringan..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Permintaan buka kunci jaringan gagal."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Jaringan berhasil dibuka."</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Setelan jaringan seluler tidak tersedia bagi pengguna ini"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"Setelan panggilan GSM"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"Setelan panggilan CDMA"</string>
     <string name="apn_settings" msgid="9043423184895642077">"Access Point Names (Nama Titik Akses)"</string>
@@ -609,7 +610,6 @@
     <string name="choose_wifi_for_call_msg" msgid="193549297122949976">"Gunakan Wi-Fi untuk melakukan panggilan?"</string>
     <string name="choose_wifi_for_call_yes" msgid="5312994368472630983">"Ya"</string>
     <string name="choose_wifi_for_call_no" msgid="7132239734287157307">"Tidak"</string>
-    <string name="gsm_connection_service_label" msgid="2332284528867411683">"Kartu SIM GSM yang terpasang di dalamnya"</string>
-    <string name="cdma_connection_service_label" msgid="5038725238949035222">"Kartu SIM CDMA yang terpasang di dalamnya"</string>
+    <string name="pstn_connection_service_label" msgid="1743245930577325900">"Kartu SIM internal"</string>
     <string name="sip_connection_service_label" msgid="3547998349299125294">"Panggilan internet yang terpasang di dalamnya"</string>
 </resources>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 65a9f5d..a784a4e 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -52,6 +52,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Richiesta sblocco rete..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Richiesta di sblocco della rete respinta."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Sblocco della rete riuscito."</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Le impostazioni per dispositivi mobili non sono disponibili per questo utente"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"Imp. chiamate GSM"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"Impostazioni di chiamata CDMA"</string>
     <string name="apn_settings" msgid="9043423184895642077">"Nomi punti di accesso"</string>
@@ -613,7 +614,6 @@
     <string name="choose_wifi_for_call_msg" msgid="193549297122949976">"Utilizzare il Wi-Fi per effettuare la chiamata?"</string>
     <string name="choose_wifi_for_call_yes" msgid="5312994368472630983">"Sì"</string>
     <string name="choose_wifi_for_call_no" msgid="7132239734287157307">"No"</string>
-    <string name="gsm_connection_service_label" msgid="2332284528867411683">"Scheda SIM GSM integrata"</string>
-    <string name="cdma_connection_service_label" msgid="5038725238949035222">"Scheda SIM CDMA integrata"</string>
+    <string name="pstn_connection_service_label" msgid="1743245930577325900">"Schede SIM integrate"</string>
     <string name="sip_connection_service_label" msgid="3547998349299125294">"Chiamate Internet integrate"</string>
 </resources>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 4d34d22..8fad7e0 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -52,6 +52,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"מבקש ביטול נעילת רשת..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"הבקשה לביטול נעילת הרשת נכשלה."</string>
     <string name="unlock_success" msgid="6770085622238180152">"ביטול נעילת הרשת התבצע בהצלחה."</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"הגדרות של רשת לנייד אינן זמינות עבור המשתמש הזה"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"‏הגדרות שיחה של GSM"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"‏הגדרות שיחה של CDMA"</string>
     <string name="apn_settings" msgid="9043423184895642077">"שמות של נקודות גישה"</string>
@@ -609,7 +610,6 @@
     <string name="choose_wifi_for_call_msg" msgid="193549297122949976">"‏האם להשתמש ב-Wi-Fi לביצוע השיחה?"</string>
     <string name="choose_wifi_for_call_yes" msgid="5312994368472630983">"כן"</string>
     <string name="choose_wifi_for_call_no" msgid="7132239734287157307">"לא"</string>
-    <string name="gsm_connection_service_label" msgid="2332284528867411683">"‏כרטיס SIM מובנה מסוג GSM"</string>
-    <string name="cdma_connection_service_label" msgid="5038725238949035222">"‏כרטיס SIM מובנה מסוג CDMA"</string>
+    <string name="pstn_connection_service_label" msgid="1743245930577325900">"‏כרטיסי SIM מובנים"</string>
     <string name="sip_connection_service_label" msgid="3547998349299125294">"שיחות אינטרנט מובנות"</string>
 </resources>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index ebb1f37..3154867 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -52,6 +52,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"ネットワークのロック解除をリクエスト中..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"ネットワークロックを解除できませんでした。"</string>
     <string name="unlock_success" msgid="6770085622238180152">"ネットワークロックを解除しました。"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"このユーザーはモバイルネットワーク設定を利用できません。"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"GSM通話設定"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA通話設定"</string>
     <string name="apn_settings" msgid="9043423184895642077">"アクセスポイント名"</string>
@@ -609,7 +610,6 @@
     <string name="choose_wifi_for_call_msg" msgid="193549297122949976">"Wi-Fiを使用して発信しますか?"</string>
     <string name="choose_wifi_for_call_yes" msgid="5312994368472630983">"はい"</string>
     <string name="choose_wifi_for_call_no" msgid="7132239734287157307">"いいえ"</string>
-    <string name="gsm_connection_service_label" msgid="2332284528867411683">"内蔵のGSM SIMカード"</string>
-    <string name="cdma_connection_service_label" msgid="5038725238949035222">"内蔵のCDMA SIMカード"</string>
+    <string name="pstn_connection_service_label" msgid="1743245930577325900">"内蔵のSIMカード"</string>
     <string name="sip_connection_service_label" msgid="3547998349299125294">"内蔵のインターネット通話機能"</string>
 </resources>
diff --git a/res/values-ka-rGE/strings.xml b/res/values-ka-rGE/strings.xml
index 1097b66..aa9c202 100644
--- a/res/values-ka-rGE/strings.xml
+++ b/res/values-ka-rGE/strings.xml
@@ -52,6 +52,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"ქსელის განბლოკვის მოთხოვნა…"</string>
     <string name="unlock_failed" msgid="6490531697031504225">"ქსელის განბლოკვის მოთხოვნა წარუმატებლად დასრულდა."</string>
     <string name="unlock_success" msgid="6770085622238180152">"ქსელის განბლოკვის მოთხოვნა წარმატებით დასრულდა."</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"მობილური ქსელის პარამეტრები ამ მომხმარებლისათვის მიუწვდომელია"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"GSM ზარის პარამეტრები"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA ზარის პარამეტრები"</string>
     <string name="apn_settings" msgid="9043423184895642077">"წვდომის წერტილის სახელები"</string>
@@ -609,7 +610,7 @@
     <string name="choose_wifi_for_call_msg" msgid="193549297122949976">"გსურთ დასარეკად Wi-Fi-ს გამოყენება?"</string>
     <string name="choose_wifi_for_call_yes" msgid="5312994368472630983">"დიახ"</string>
     <string name="choose_wifi_for_call_no" msgid="7132239734287157307">"არა"</string>
-    <string name="gsm_connection_service_label" msgid="2332284528867411683">"ჩაშენებული GSM SIM ბარათი"</string>
-    <string name="cdma_connection_service_label" msgid="5038725238949035222">"ჩაშენებული CDMA SIM ბარათი"</string>
+    <!-- no translation found for pstn_connection_service_label (1743245930577325900) -->
+    <skip />
     <string name="sip_connection_service_label" msgid="3547998349299125294">"ჩაშენებული ინტერნეტ-ზარი"</string>
 </resources>
diff --git a/res/values-km-rKH/strings.xml b/res/values-km-rKH/strings.xml
index ff2fc1a..9d08dfc 100644
--- a/res/values-km-rKH/strings.xml
+++ b/res/values-km-rKH/strings.xml
@@ -52,6 +52,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"កំពុង​ស្នើ​​ដោះ​សោ​បណ្ដាញ…"</string>
     <string name="unlock_failed" msgid="6490531697031504225">"បាន​បរាជ័យ​ក្នុង​ការ​ស្នើ​ដោះ​សោ​បណ្ដាញ។"</string>
     <string name="unlock_success" msgid="6770085622238180152">"ដោះ​សោ​បណ្ដាញ​បាន​ជោគជ័យ។"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"ការ​កំណត់​បណ្ដាញ​ចល័ត​មិន​អាច​ប្រើ​បាន​​សម្រាប់​អ្នក​ប្រើ​នេះ"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"កំណត់​ការ​ហៅ GSM"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"កំណត់​ការ​ហៅ CDMA"</string>
     <string name="apn_settings" msgid="9043423184895642077">"ចូល​ដំណើរ​ការ​ឈ្មោះ​ចំណុច"</string>
@@ -609,7 +610,6 @@
     <string name="choose_wifi_for_call_msg" msgid="193549297122949976">"ប្រើ​វ៉ាយហ្វាយ​ដើម្បី​ហៅ?"</string>
     <string name="choose_wifi_for_call_yes" msgid="5312994368472630983">"បាទ/ចាស"</string>
     <string name="choose_wifi_for_call_no" msgid="7132239734287157307">"ទេ"</string>
-    <string name="gsm_connection_service_label" msgid="2332284528867411683">"ស៊ីមកាត GSM ជាប់​ជា​មួយ​ស្រាប់"</string>
-    <string name="cdma_connection_service_label" msgid="5038725238949035222">"ស៊ីមកាត CDMA ជាប់​ជា​មួយ​ស្រាប់"</string>
+    <string name="pstn_connection_service_label" msgid="1743245930577325900">"ស៊ីមកាត​ជាប់​ជា​មួយ"</string>
     <string name="sip_connection_service_label" msgid="3547998349299125294">"ការ​ហៅ​តាម​អ៊ីនធឺណិត​ជាប់​ជា​មួយ​ស្រាប់"</string>
 </resources>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 834e620..44eab51 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -52,6 +52,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"네트워크 잠금해제 요청 중..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"네트워크 잠금해제 요청이 실패했습니다."</string>
     <string name="unlock_success" msgid="6770085622238180152">"네트워크의 잠금을 해제했습니다."</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"이 사용자는 모바일 네트워크 설정을 사용할 수 없습니다."</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"GSM 통화 설정"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA 통화 설정"</string>
     <string name="apn_settings" msgid="9043423184895642077">"APN"</string>
@@ -609,7 +610,6 @@
     <string name="choose_wifi_for_call_msg" msgid="193549297122949976">"전화 걸 때 Wi-Fi를 사용하시겠습니까?"</string>
     <string name="choose_wifi_for_call_yes" msgid="5312994368472630983">"예"</string>
     <string name="choose_wifi_for_call_no" msgid="7132239734287157307">"아니요"</string>
-    <string name="gsm_connection_service_label" msgid="2332284528867411683">"내장된 GSM SIM 카드"</string>
-    <string name="cdma_connection_service_label" msgid="5038725238949035222">"내장된 CDMA SIM 카드"</string>
+    <string name="pstn_connection_service_label" msgid="1743245930577325900">"내장된 SIM 카드"</string>
     <string name="sip_connection_service_label" msgid="3547998349299125294">"내장된 인터넷 전화"</string>
 </resources>
diff --git a/res/values-lo-rLA/strings.xml b/res/values-lo-rLA/strings.xml
index fd03639..bc0487e 100644
--- a/res/values-lo-rLA/strings.xml
+++ b/res/values-lo-rLA/strings.xml
@@ -52,6 +52,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"ກຳລັງຮ້ອງຂໍການປົດລັອກເຄືອຂ່າຍ..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"ຄຳຂໍການປົດລັອກເຄືອຂ່າຍບໍ່ສຳເລັດ."</string>
     <string name="unlock_success" msgid="6770085622238180152">"ການປົດລັອກເຄືອຂ່າຍບໍ່ສຳເລັດ."</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"​ການ​ຕັ້ງ​ຄ່າ​ເຄືອ​ຂ່າຍ​ມ​ື​ຖືບໍ່​ສາ​ມາດ​ໃຊ້​ໄດ້​ກັບ​ຜູ່​ໃຊ້​ນີ້"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"ການຕັ້ງຄ່າການໂທ GSM"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"ການຕັ້ງຄ່າໂທ CDMA"</string>
     <string name="apn_settings" msgid="9043423184895642077">"ຊື່ຂອງຈຸດການເຂົ້າເຖິງ (APN)"</string>
@@ -609,7 +610,6 @@
     <string name="choose_wifi_for_call_msg" msgid="193549297122949976">"ໃຊ້ Wi-Fi ເພື່ອ​ໂທ​ບໍ?"</string>
     <string name="choose_wifi_for_call_yes" msgid="5312994368472630983">"ແມ່ນແລ້ວ"</string>
     <string name="choose_wifi_for_call_no" msgid="7132239734287157307">"ບໍ່"</string>
-    <string name="gsm_connection_service_label" msgid="2332284528867411683">"GSM SIM ​ກາດ​ທີ່​ມາ​ກັບ​ເຄື່ອງ"</string>
-    <string name="cdma_connection_service_label" msgid="5038725238949035222">"CDMA SIM ກາດ​ທີ່​ມາ​ກັບ​ເຄື່ອງ"</string>
+    <string name="pstn_connection_service_label" msgid="1743245930577325900">"SIM ກາດ​ທີ່​ມາ​ກັບ​ເຄື່ອງ"</string>
     <string name="sip_connection_service_label" msgid="3547998349299125294">"ການ​ໂທ​ຜ່ານ​ອິນ​ເຕີ​ເນັດ​​ທີ່​ມາ​ກັບ​ເຄື່ອງ"</string>
 </resources>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index adeea64..9df1bba 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -52,6 +52,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Pateikiama užklausa atrakinti tinklą..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Nesėkminga tinklo atrakinimo užklausa."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Tinklas sėkmingai atrakintas."</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Mobiliojo ryšio tinklo nustatymai nepasiekiami šiam naudotojui"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"GSM skambinimo nustatymai"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA skambučio nustatymai"</string>
     <string name="apn_settings" msgid="9043423184895642077">"Prieigos taškų pavadinimai"</string>
@@ -609,7 +610,6 @@
     <string name="choose_wifi_for_call_msg" msgid="193549297122949976">"Skambinti naudojant „Wi-Fi“?"</string>
     <string name="choose_wifi_for_call_yes" msgid="5312994368472630983">"Taip"</string>
     <string name="choose_wifi_for_call_no" msgid="7132239734287157307">"Ne"</string>
-    <string name="gsm_connection_service_label" msgid="2332284528867411683">"Įtaisytoji GSM SIM kortelė"</string>
-    <string name="cdma_connection_service_label" msgid="5038725238949035222">"Įtaisytoji CDMA SIM kortelė"</string>
+    <string name="pstn_connection_service_label" msgid="1743245930577325900">"Įtaisytosios SIM kortelės"</string>
     <string name="sip_connection_service_label" msgid="3547998349299125294">"Įtaisytoji skambučių internetu paslauga"</string>
 </resources>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index d9b7dce..57895f8 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -52,6 +52,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Notiek tīkla atbloķēšanas pieprasīšana..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Tīkla atbloķēšanas pieprasījums nav veiksmīgs."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Tīkla atbloķēšana bija veiksmīga."</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Mobilā tīkla iestatījumi šim lietotājam nav pieejami."</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"GSM zvanu iestatījumi"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA zvanu iestatījumi"</string>
     <string name="apn_settings" msgid="9043423184895642077">"Piekļuves punktu nosaukumi"</string>
@@ -611,7 +612,6 @@
     <string name="choose_wifi_for_call_msg" msgid="193549297122949976">"Vai zvana veikšanai izmantot Wi-Fi?"</string>
     <string name="choose_wifi_for_call_yes" msgid="5312994368472630983">"Jā"</string>
     <string name="choose_wifi_for_call_no" msgid="7132239734287157307">"Nē"</string>
-    <string name="gsm_connection_service_label" msgid="2332284528867411683">"Iebūvēta GSM SIM karte"</string>
-    <string name="cdma_connection_service_label" msgid="5038725238949035222">"Iebūvēta CDMA SIM karte"</string>
+    <string name="pstn_connection_service_label" msgid="1743245930577325900">"Iebūvētās SIM kartes"</string>
     <string name="sip_connection_service_label" msgid="3547998349299125294">"Iebūvēta zvanīšanas funkcija internetā"</string>
 </resources>
diff --git a/res/values-mn-rMN/strings.xml b/res/values-mn-rMN/strings.xml
index 3a56b1d..6200582 100644
--- a/res/values-mn-rMN/strings.xml
+++ b/res/values-mn-rMN/strings.xml
@@ -52,6 +52,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Сүлжээг тайлах хүсэлтийг илгээж байна…"</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Сүлжээг тайлах хүсэлт амжилтгүй боллоо."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Сүлжээг амжилттай тайллаа."</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Энэ хэрэглэгч мобайл сүлжээний тохиргоог ашиглах боломжгүй"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"GSM дуудлагын тохиргоо"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA дуудлагын тохиргоо"</string>
     <string name="apn_settings" msgid="9043423184895642077">"Хандалтын Цэгийн Нэрс"</string>
@@ -609,7 +610,6 @@
     <string name="choose_wifi_for_call_msg" msgid="193549297122949976">"Дуудлага хийхэд Wi-Fi ашиглах уу?"</string>
     <string name="choose_wifi_for_call_yes" msgid="5312994368472630983">"Тийм"</string>
     <string name="choose_wifi_for_call_no" msgid="7132239734287157307">"Үгүй"</string>
-    <string name="gsm_connection_service_label" msgid="2332284528867411683">"Суурилагдсан GSM SIM карт"</string>
-    <string name="cdma_connection_service_label" msgid="5038725238949035222">"Суурилагдсан CDMA SIM карт"</string>
+    <string name="pstn_connection_service_label" msgid="1743245930577325900">"Суурилагдсан SIM карт"</string>
     <string name="sip_connection_service_label" msgid="3547998349299125294">"Суурилагдсан Интернет дуудлага"</string>
 </resources>
diff --git a/res/values-ms-rMY/strings.xml b/res/values-ms-rMY/strings.xml
index 47732b5..ef22417 100644
--- a/res/values-ms-rMY/strings.xml
+++ b/res/values-ms-rMY/strings.xml
@@ -52,6 +52,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Meminta dibukakan kunci rangkaian..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Permintaan dibukakan kunci rangkaian tidak berjaya."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Berjaya membuka kunci rangkaian."</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Tetapan rangkaian mudah alih tidak tersedia untuk pengguna ini"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"Tetapan panggilan GSM"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"Tetapan panggilan CDMA"</string>
     <string name="apn_settings" msgid="9043423184895642077">"Nama Titik Capaian"</string>
@@ -609,7 +610,7 @@
     <string name="choose_wifi_for_call_msg" msgid="193549297122949976">"Gunakan Wi-Fi untuk membuat panggilan?"</string>
     <string name="choose_wifi_for_call_yes" msgid="5312994368472630983">"Ya"</string>
     <string name="choose_wifi_for_call_no" msgid="7132239734287157307">"Tidak"</string>
-    <string name="gsm_connection_service_label" msgid="2332284528867411683">"Kad SIM GSM terbina dalam"</string>
-    <string name="cdma_connection_service_label" msgid="5038725238949035222">"Kad SIM CDMA terbina dalam"</string>
+    <!-- no translation found for pstn_connection_service_label (1743245930577325900) -->
+    <skip />
     <string name="sip_connection_service_label" msgid="3547998349299125294">"Panggilan Internet terbina dalam"</string>
 </resources>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index c78f12c..361458e 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -52,6 +52,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Spør om fjerning av operatørlås…"</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Fikk ikke fjerne operatørlås."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Operatørlåsen er fjernet."</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Innstillinger for mobilnettverk er ikke tilgjengelig for denne brukeren"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"Innstillinger for GSM-samtaler"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"Innstillinger for CDMA-samtaler"</string>
     <string name="apn_settings" msgid="9043423184895642077">"Navn på aksesspunkt"</string>
@@ -615,7 +616,6 @@
     <string name="choose_wifi_for_call_msg" msgid="193549297122949976">"Vil du bruke Wi-Fi for å ringe?"</string>
     <string name="choose_wifi_for_call_yes" msgid="5312994368472630983">"Ja"</string>
     <string name="choose_wifi_for_call_no" msgid="7132239734287157307">"Nei"</string>
-    <string name="gsm_connection_service_label" msgid="2332284528867411683">"Innebygd GSM SIM-kort"</string>
-    <string name="cdma_connection_service_label" msgid="5038725238949035222">"Innebygd CDMA SIM-kort"</string>
+    <string name="pstn_connection_service_label" msgid="1743245930577325900">"Innebygd SIM-kort"</string>
     <string name="sip_connection_service_label" msgid="3547998349299125294">"Innebygd Internett-ringing"</string>
 </resources>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 290e4d0..9478b7e 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -52,6 +52,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Verzoek om ontgrendelen netwerk..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Verzoek voor ontgrendelen netwerk mislukt."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Het netwerk is ontgrendeld."</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Instellingen voor mobiele netwerken zijn niet beschikbaar voor deze gebruiker"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"GSM-oproepinstellingen"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA-oproepinstellingen"</string>
     <string name="apn_settings" msgid="9043423184895642077">"Namen toegangspunten"</string>
@@ -609,7 +610,6 @@
     <string name="choose_wifi_for_call_msg" msgid="193549297122949976">"Wifi gebruiken om oproepen te plaatsen?"</string>
     <string name="choose_wifi_for_call_yes" msgid="5312994368472630983">"Ja"</string>
     <string name="choose_wifi_for_call_no" msgid="7132239734287157307">"Nee"</string>
-    <string name="gsm_connection_service_label" msgid="2332284528867411683">"Geïntegreerde GSM-simkaart"</string>
-    <string name="cdma_connection_service_label" msgid="5038725238949035222">"Geïntegreerde CDMA-simkaart"</string>
+    <string name="pstn_connection_service_label" msgid="1743245930577325900">"Ingebouwde simkaarten"</string>
     <string name="sip_connection_service_label" msgid="3547998349299125294">"Geïntegreerde internetoproepen"</string>
 </resources>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index 1cadbfb..11ad428 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -52,6 +52,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Żądanie odblokowania sieci..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Żądanie odblokowania sieci zakończyło się niepowodzeniem."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Sieć została pomyślnie odblokowana."</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Ustawienia sieci mobilnej są niedostępne dla tego użytkownika"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"Ustawienia połączenia GSM"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"Ustawienia połączenia CDMA"</string>
     <string name="apn_settings" msgid="9043423184895642077">"Punkty dostępowe"</string>
@@ -609,7 +610,6 @@
     <string name="choose_wifi_for_call_msg" msgid="193549297122949976">"Zadzwonić przez Wi-Fi?"</string>
     <string name="choose_wifi_for_call_yes" msgid="5312994368472630983">"Tak"</string>
     <string name="choose_wifi_for_call_no" msgid="7132239734287157307">"Nie"</string>
-    <string name="gsm_connection_service_label" msgid="2332284528867411683">"Wbudowana karta SIM GSM"</string>
-    <string name="cdma_connection_service_label" msgid="5038725238949035222">"Wbudowana karta SIM CDMA"</string>
+    <string name="pstn_connection_service_label" msgid="1743245930577325900">"Wbudowane karty SIM"</string>
     <string name="sip_connection_service_label" msgid="3547998349299125294">"Wbudowana funkcja telefonii internetowej"</string>
 </resources>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 0d8be65..7b8d4aa 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -52,6 +52,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"A pedir desbloqueio de rede..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"O pedido de desbloqueio de rede falhou."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Desbloqueio de rede bem sucedido."</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"As definições de rede móvel não estão disponíveis para este utilizador"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"Definições de chamadas GSM"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"Definições de chamada CDMA"</string>
     <string name="apn_settings" msgid="9043423184895642077">"Pontos de acesso (APN)"</string>
@@ -609,7 +610,6 @@
     <string name="choose_wifi_for_call_msg" msgid="193549297122949976">"Utilizar a rede Wi-Fi para efetuar a chamada?"</string>
     <string name="choose_wifi_for_call_yes" msgid="5312994368472630983">"Sim"</string>
     <string name="choose_wifi_for_call_no" msgid="7132239734287157307">"Não"</string>
-    <string name="gsm_connection_service_label" msgid="2332284528867411683">"Cartão SIM GSM incorporado"</string>
-    <string name="cdma_connection_service_label" msgid="5038725238949035222">"Cartão SIM CDMA incorporado"</string>
+    <string name="pstn_connection_service_label" msgid="1743245930577325900">"Cartões SIM incorporados"</string>
     <string name="sip_connection_service_label" msgid="3547998349299125294">"Chamadas por Internet incorporadas"</string>
 </resources>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 90956c2..d78d386 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -52,6 +52,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Solicitando o desbloqueio de rede…"</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Falha na solicitação de desbloqueio de rede."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Desbloqueio de rede bem-sucedido."</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"As configurações de rede para dispositivos móveis não estão disponíveis para este usuário"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"Configurações de chamada GSM"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"Configurações de chamada CDMA"</string>
     <string name="apn_settings" msgid="9043423184895642077">"Nomes dos pontos de acesso"</string>
@@ -609,7 +610,7 @@
     <string name="choose_wifi_for_call_msg" msgid="193549297122949976">"Usar o Wi-Fi para efetuar a chamada?"</string>
     <string name="choose_wifi_for_call_yes" msgid="5312994368472630983">"Sim"</string>
     <string name="choose_wifi_for_call_no" msgid="7132239734287157307">"Não"</string>
-    <string name="gsm_connection_service_label" msgid="2332284528867411683">"Cartão SIM GSM integrado"</string>
-    <string name="cdma_connection_service_label" msgid="5038725238949035222">"Cartão SIM CDMA integrado"</string>
+    <!-- no translation found for pstn_connection_service_label (1743245930577325900) -->
+    <skip />
     <string name="sip_connection_service_label" msgid="3547998349299125294">"Chamadas pela Internet integradas"</string>
 </resources>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index 350ce7b..0e96b4c 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -52,6 +52,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Se solicită deblocarea reţelei..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Cererea de deblocare a reţelei a eşuat."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Reţeaua a fost deblocată."</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Setările pentru rețeaua mobilă nu sunt disponibile pentru acest utilizator"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"Setările apelului GSM"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"Setările apelului CDMA"</string>
     <string name="apn_settings" msgid="9043423184895642077">"Numele punctelor de acces"</string>
@@ -609,7 +610,7 @@
     <string name="choose_wifi_for_call_msg" msgid="193549297122949976">"Folosiți Wi-Fi pentru a efectua apelul?"</string>
     <string name="choose_wifi_for_call_yes" msgid="5312994368472630983">"Da"</string>
     <string name="choose_wifi_for_call_no" msgid="7132239734287157307">"Nu"</string>
-    <string name="gsm_connection_service_label" msgid="2332284528867411683">"Card SIM GSM încorporat"</string>
-    <string name="cdma_connection_service_label" msgid="5038725238949035222">"Card SIM CDMA încorporat"</string>
+    <!-- no translation found for pstn_connection_service_label (1743245930577325900) -->
+    <skip />
     <string name="sip_connection_service_label" msgid="3547998349299125294">"Apeluri pe Internet integrate"</string>
 </resources>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 2765172..172abd2 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -52,6 +52,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Запрос разблокировки сети..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Запрос на разблокировку сети не выполнен."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Разблокировка сети успешно завершена."</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Настройки мобильных сетей недоступны этому пользователю"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"Настройки вызовов GSM"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"Настройки вызовов CDMA"</string>
     <string name="apn_settings" msgid="9043423184895642077">"Точки доступа (APN)"</string>
@@ -611,7 +612,6 @@
     <string name="choose_wifi_for_call_msg" msgid="193549297122949976">"Использовать Wi-Fi для звонка?"</string>
     <string name="choose_wifi_for_call_yes" msgid="5312994368472630983">"Да"</string>
     <string name="choose_wifi_for_call_no" msgid="7132239734287157307">"Нет"</string>
-    <string name="gsm_connection_service_label" msgid="2332284528867411683">"Встроенная SIM-карта GSM"</string>
-    <string name="cdma_connection_service_label" msgid="5038725238949035222">"Встроенная SIM-карта CDMA"</string>
+    <string name="pstn_connection_service_label" msgid="1743245930577325900">"Встроенные SIM-карты"</string>
     <string name="sip_connection_service_label" msgid="3547998349299125294">"Встроенный сервис интернет-вызовов"</string>
 </resources>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index c59832f..58dae27 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -52,6 +52,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Žiadosť o odomknutie siete..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Žiadosť o odomknutie siete nebola úspešná."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Sieť bola odomknutá."</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Nastavenia mobilnej siete nie sú pre tohto používateľa dostupné"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"Nastavenia hovorov GSM"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"Nastavenia hovorov CDMA"</string>
     <string name="apn_settings" msgid="9043423184895642077">"Názvy prístupových bodov"</string>
@@ -609,7 +610,6 @@
     <string name="choose_wifi_for_call_msg" msgid="193549297122949976">"Chcete volať prostredníctvom site Wi-Fi?"</string>
     <string name="choose_wifi_for_call_yes" msgid="5312994368472630983">"Áno"</string>
     <string name="choose_wifi_for_call_no" msgid="7132239734287157307">"Nie"</string>
-    <string name="gsm_connection_service_label" msgid="2332284528867411683">"Vstavaná SIM karta s pripojením GSM"</string>
-    <string name="cdma_connection_service_label" msgid="5038725238949035222">"Vstavaná SIM karta s pripojením CDMA"</string>
+    <string name="pstn_connection_service_label" msgid="1743245930577325900">"Vstavané SIM karty"</string>
     <string name="sip_connection_service_label" msgid="3547998349299125294">"Vstavané internetové volanie"</string>
 </resources>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index 101d56e..e248349 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -52,6 +52,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Zahteva za odklepanje omrežja ..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Zahteva za odklepanje omrežja neuspešna."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Odklepanje omrežja uspešno."</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Nastavitve mobilnega omrežja niso na voljo za tega uporabnika"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"Nastavitve klicev GSM"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"Nastavitve klicev CDMA"</string>
     <string name="apn_settings" msgid="9043423184895642077">"Imena dostopnih točk"</string>
@@ -609,7 +610,6 @@
     <string name="choose_wifi_for_call_msg" msgid="193549297122949976">"Želite klicati prek povezave Wi-Fi?"</string>
     <string name="choose_wifi_for_call_yes" msgid="5312994368472630983">"Da"</string>
     <string name="choose_wifi_for_call_no" msgid="7132239734287157307">"Ne"</string>
-    <string name="gsm_connection_service_label" msgid="2332284528867411683">"Vgrajena kartica SIM za omrežje GSM"</string>
-    <string name="cdma_connection_service_label" msgid="5038725238949035222">"Vgrajena kartica SIM za omrežje CDMA"</string>
+    <string name="pstn_connection_service_label" msgid="1743245930577325900">"Vgrajene kartice SIM"</string>
     <string name="sip_connection_service_label" msgid="3547998349299125294">"Vgrajeno internetno klicanje"</string>
 </resources>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index 3ca5668..6661759 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -52,6 +52,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Тражење откључавања мреже"</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Неуспешан захтев за закључавање мреже."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Успешно откључавање мреже"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Подешавања мобилне мреже нису доступна за овог корисника"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"Подешавања GSM позива"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA подешавања позива"</string>
     <string name="apn_settings" msgid="9043423184895642077">"Називи приступних тачака"</string>
@@ -609,7 +610,6 @@
     <string name="choose_wifi_for_call_msg" msgid="193549297122949976">"Желите ли да упутите Wi-Fi позив?"</string>
     <string name="choose_wifi_for_call_yes" msgid="5312994368472630983">"Да"</string>
     <string name="choose_wifi_for_call_no" msgid="7132239734287157307">"Не"</string>
-    <string name="gsm_connection_service_label" msgid="2332284528867411683">"Уграђена GSM SIM картица"</string>
-    <string name="cdma_connection_service_label" msgid="5038725238949035222">"Уграђена CDMA SIM картица"</string>
+    <string name="pstn_connection_service_label" msgid="1743245930577325900">"Уграђене SIM картице"</string>
     <string name="sip_connection_service_label" msgid="3547998349299125294">"Уграђено позивање преко интернета"</string>
 </resources>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 4f2af70..1f06fba 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -52,6 +52,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Försöker låsa upp nätverket…"</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Det gick inte att låsa upp nätverket."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Nätverket upplåst"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Inställningarna för mobilnätverk är inte tillgängliga för den här användaren"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"Samtalsinst. för GSM"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"Samtalsinst. för CDMA"</string>
     <string name="apn_settings" msgid="9043423184895642077">"Åtkomstpunktens namn (APN)"</string>
@@ -615,7 +616,6 @@
     <string name="choose_wifi_for_call_msg" msgid="193549297122949976">"Vill du ringa samtal via Wi-Fi?"</string>
     <string name="choose_wifi_for_call_yes" msgid="5312994368472630983">"Ja"</string>
     <string name="choose_wifi_for_call_no" msgid="7132239734287157307">"Nej"</string>
-    <string name="gsm_connection_service_label" msgid="2332284528867411683">"Inbyggt SIM-kort för GSM"</string>
-    <string name="cdma_connection_service_label" msgid="5038725238949035222">"Inbyggt SIM-kort för CDMA"</string>
+    <string name="pstn_connection_service_label" msgid="1743245930577325900">"Inbyggda SIM-kort"</string>
     <string name="sip_connection_service_label" msgid="3547998349299125294">"Inbyggd internettelefoni"</string>
 </resources>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index 9aa6e96..76f2561 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -52,6 +52,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Inaomba mtandao ufunguliwe…."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Ombi la kufungua mtandao halijafaulu."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Umefaulu kufungua mtandao."</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Mipangilio ya mtandao wa simu za mkononi haipatikani kwa mtumiaji huyu"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"Mipangilio ya simu ya GSM"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"Mipangilio ya simu ya CDMA"</string>
     <string name="apn_settings" msgid="9043423184895642077">"Majina ya Milango ya Kufikia"</string>
@@ -609,7 +610,6 @@
     <string name="choose_wifi_for_call_msg" msgid="193549297122949976">"Ungependa kutumia Wi-Fi kupiga simu?"</string>
     <string name="choose_wifi_for_call_yes" msgid="5312994368472630983">"Ndiyo"</string>
     <string name="choose_wifi_for_call_no" msgid="7132239734287157307">"La"</string>
-    <string name="gsm_connection_service_label" msgid="2332284528867411683">"SIM kadi ya GSM iliyojengewa ndani"</string>
-    <string name="cdma_connection_service_label" msgid="5038725238949035222">"SIM kadi ya CDMA iliyojengewa ndani"</string>
+    <string name="pstn_connection_service_label" msgid="1743245930577325900">"SIM kadi zilizojengewa ndani"</string>
     <string name="sip_connection_service_label" msgid="3547998349299125294">"Upigaji simu kupitia Intaneti uliojengewa ndani"</string>
 </resources>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index 80500c2..57cb7de 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -52,6 +52,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"กำลังขอปลดล็อกเครือข่าย..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"คำขอปลดล็อกเครือข่ายไม่สำเร็จ"</string>
     <string name="unlock_success" msgid="6770085622238180152">"ปลดล็อกเครือข่ายไม่สำเร็จ"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"การตั้งค่าเครือข่ายมือถือไม่พร้อมใช้งานสำหรับผู้ใช้รายนี้"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"การตั้งค่าการโทร GSM"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"การตั้งค่าการโทร CDMA"</string>
     <string name="apn_settings" msgid="9043423184895642077">"ชื่อจุดเข้าใช้งาน"</string>
@@ -609,7 +610,6 @@
     <string name="choose_wifi_for_call_msg" msgid="193549297122949976">"ต้องการใช้ Wi-Fi ในการโทรใช่ไหม"</string>
     <string name="choose_wifi_for_call_yes" msgid="5312994368472630983">"ใช่"</string>
     <string name="choose_wifi_for_call_no" msgid="7132239734287157307">"ไม่ใช่"</string>
-    <string name="gsm_connection_service_label" msgid="2332284528867411683">"ซิมการ์ด GSM ในตัว"</string>
-    <string name="cdma_connection_service_label" msgid="5038725238949035222">"ซิมการ์ด CDMA ในตัว"</string>
+    <string name="pstn_connection_service_label" msgid="1743245930577325900">"ซิมการ์ดในตัว"</string>
     <string name="sip_connection_service_label" msgid="3547998349299125294">"การโทรทางอินเทอร์เน็ตในตัว"</string>
 </resources>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index d66720e..09a8af2 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -52,6 +52,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Humihiling ng pag-unlock sa network…"</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Hindi matagumpay ang kahilingan na i-unlock ang network."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Matagumpay ang pag-unlock ng network."</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Hindi available ang mga setting ng mobile network para sa user na ito"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"Mga setting ng tawag ng GSM"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"Mga setting ng CDMA na tawag"</string>
     <string name="apn_settings" msgid="9043423184895642077">"Mga Pangalan ng Lugar ng Access"</string>
@@ -609,7 +610,6 @@
     <string name="choose_wifi_for_call_msg" msgid="193549297122949976">"Gamitin ang Wi-Fi upang tumawag?"</string>
     <string name="choose_wifi_for_call_yes" msgid="5312994368472630983">"Oo"</string>
     <string name="choose_wifi_for_call_no" msgid="7132239734287157307">"Huwag"</string>
-    <string name="gsm_connection_service_label" msgid="2332284528867411683">"Built-in na GSM SIM card"</string>
-    <string name="cdma_connection_service_label" msgid="5038725238949035222">"Built-in na CDMA SIM card"</string>
+    <string name="pstn_connection_service_label" msgid="1743245930577325900">"Mga built-in na SIM card"</string>
     <string name="sip_connection_service_label" msgid="3547998349299125294">"Built-in na pagtawag sa Internet"</string>
 </resources>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index 98f219b..e071f79 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -52,6 +52,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Ağ kilidini açma isteği yapılıyor..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Ağ kilidi açma isteği başarısız."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Ağ kilidi açılamadı."</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Bu kullanıcı için mobil ağ ayarları kullanılamıyor"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"GSM çağrı ayarları"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA çağrı ayarları"</string>
     <string name="apn_settings" msgid="9043423184895642077">"Erişim Noktası Adları"</string>
@@ -609,7 +610,6 @@
     <string name="choose_wifi_for_call_msg" msgid="193549297122949976">"Telefon etmek için Kablosuz bağlantı kullanılsın mı?"</string>
     <string name="choose_wifi_for_call_yes" msgid="5312994368472630983">"Evet"</string>
     <string name="choose_wifi_for_call_no" msgid="7132239734287157307">"Hayır"</string>
-    <string name="gsm_connection_service_label" msgid="2332284528867411683">"Yerleşik GSM SIM kartı"</string>
-    <string name="cdma_connection_service_label" msgid="5038725238949035222">"Yerleşik CDMA SIM kartı"</string>
+    <string name="pstn_connection_service_label" msgid="1743245930577325900">"Yerleşik SIM kartlar"</string>
     <string name="sip_connection_service_label" msgid="3547998349299125294">"Yerleşik İnternet çağrısı"</string>
 </resources>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index 8bb8a7a..5d3f5ae 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -52,6 +52,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Запитув. розблок. мережі..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Не здійсн. запит розблокування мережі"</string>
     <string name="unlock_success" msgid="6770085622238180152">"Мережу успішно розблоковано."</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Налаштування мобільної мережі недоступні для цього користувача"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"Налаштування викликів GSM"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"Налашт. викл. в CDMA"</string>
     <string name="apn_settings" msgid="9043423184895642077">"Назва точки доступу"</string>
@@ -609,7 +610,6 @@
     <string name="choose_wifi_for_call_msg" msgid="193549297122949976">"Телефонувати через Wi-Fi?"</string>
     <string name="choose_wifi_for_call_yes" msgid="5312994368472630983">"Так"</string>
     <string name="choose_wifi_for_call_no" msgid="7132239734287157307">"Ні"</string>
-    <string name="gsm_connection_service_label" msgid="2332284528867411683">"Вбудована SIM-карта стандарту GSM"</string>
-    <string name="cdma_connection_service_label" msgid="5038725238949035222">"Вбудована SIM-карта стандарту CDMA"</string>
+    <string name="pstn_connection_service_label" msgid="1743245930577325900">"Вбудовані SIM-карти"</string>
     <string name="sip_connection_service_label" msgid="3547998349299125294">"Вбудована функція інтернет-дзвінків"</string>
 </resources>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index 8ab16fa..5c5c75d 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -52,6 +52,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Đang yêu cầu mở khóa mạng..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Yêu cầu mở khóa mạng không thành công."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Mở khóa mạng thành công."</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Cài đặt mạng di động không khả dụng cho người dùng này"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"Cài đặt cuộc gọi GSM"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"Cài đặt cuộc gọi CDMA"</string>
     <string name="apn_settings" msgid="9043423184895642077">"Tên Điểm Truy cập"</string>
@@ -609,7 +610,6 @@
     <string name="choose_wifi_for_call_msg" msgid="193549297122949976">"Sử dụng Wi-Fi để thực hiện cuộc gọi?"</string>
     <string name="choose_wifi_for_call_yes" msgid="5312994368472630983">"Có"</string>
     <string name="choose_wifi_for_call_no" msgid="7132239734287157307">"Không"</string>
-    <string name="gsm_connection_service_label" msgid="2332284528867411683">"Tích hợp sẵn thẻ SIM GSM"</string>
-    <string name="cdma_connection_service_label" msgid="5038725238949035222">"Tích hợp sẵn thẻ SIM CDMA"</string>
+    <string name="pstn_connection_service_label" msgid="1743245930577325900">"Thẻ SIM tích hợp sẵn"</string>
     <string name="sip_connection_service_label" msgid="3547998349299125294">"Tích hợp sẵn gọi điện qua Internet"</string>
 </resources>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 3d1f57d..01369ce 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -52,6 +52,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"正在请求网络解锁..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"网络解锁请求失败。"</string>
     <string name="unlock_success" msgid="6770085622238180152">"网络解锁成功。"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"此用户无法修改移动网络设置"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"GSM 通话设置"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA 通话设置"</string>
     <string name="apn_settings" msgid="9043423184895642077">"接入点名称 (APN)"</string>
@@ -609,7 +610,7 @@
     <string name="choose_wifi_for_call_msg" msgid="193549297122949976">"要使用WLAN通话吗?"</string>
     <string name="choose_wifi_for_call_yes" msgid="5312994368472630983">"是"</string>
     <string name="choose_wifi_for_call_no" msgid="7132239734287157307">"否"</string>
-    <string name="gsm_connection_service_label" msgid="2332284528867411683">"内置GSM SIM卡"</string>
-    <string name="cdma_connection_service_label" msgid="5038725238949035222">"内置CDMA SIM卡"</string>
+    <!-- no translation found for pstn_connection_service_label (1743245930577325900) -->
+    <skip />
     <string name="sip_connection_service_label" msgid="3547998349299125294">"内置互联网通话服务"</string>
 </resources>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index 9cc55c3..9afd67d 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -52,6 +52,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"正在要求解除網絡鎖定..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"無法完成解除網絡鎖定的要求"</string>
     <string name="unlock_success" msgid="6770085622238180152">"成功解除網絡鎖定。"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"此使用者無法修改流動網絡設定"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"GSM 通話設定"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA 通話設定"</string>
     <string name="apn_settings" msgid="9043423184895642077">"接入點名稱"</string>
@@ -615,7 +616,6 @@
     <string name="choose_wifi_for_call_msg" msgid="193549297122949976">"使用 Wi-Fi 撥打電話嗎?"</string>
     <string name="choose_wifi_for_call_yes" msgid="5312994368472630983">"是"</string>
     <string name="choose_wifi_for_call_no" msgid="7132239734287157307">"否"</string>
-    <string name="gsm_connection_service_label" msgid="2332284528867411683">"內置 GSM SIM 卡"</string>
-    <string name="cdma_connection_service_label" msgid="5038725238949035222">"內置 CDMA SIM 卡"</string>
+    <string name="pstn_connection_service_label" msgid="1743245930577325900">"內置 SIM 卡"</string>
     <string name="sip_connection_service_label" msgid="3547998349299125294">"內置網絡通話服務"</string>
 </resources>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index a79757a..e2dfd16 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -52,6 +52,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"正在要求解除網路鎖定…"</string>
     <string name="unlock_failed" msgid="6490531697031504225">"網路解鎖失敗。"</string>
     <string name="unlock_success" msgid="6770085622238180152">"網路解鎖成功。"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"這位使用者無法修改行動網路設定"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"GSM 通話設定"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA 通話設定"</string>
     <string name="apn_settings" msgid="9043423184895642077">"存取點名稱 (APN)"</string>
@@ -615,7 +616,6 @@
     <string name="choose_wifi_for_call_msg" msgid="193549297122949976">"使用 Wi-Fi 網路撥打電話?"</string>
     <string name="choose_wifi_for_call_yes" msgid="5312994368472630983">"是"</string>
     <string name="choose_wifi_for_call_no" msgid="7132239734287157307">"否"</string>
-    <string name="gsm_connection_service_label" msgid="2332284528867411683">"內建 GSM SIM 卡"</string>
-    <string name="cdma_connection_service_label" msgid="5038725238949035222">"內建 CDMA SIM 卡"</string>
+    <string name="pstn_connection_service_label" msgid="1743245930577325900">"內建 SIM 卡"</string>
     <string name="sip_connection_service_label" msgid="3547998349299125294">"內建網路通話服務"</string>
 </resources>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index 75da8ec..cb34e20 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -52,6 +52,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Icela ukuvula inethiwekhi..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Isicelo sokuvula inethiwekhi asiphumelelanga."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Ukuvula inethiwekhi kuphumelele."</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Izilungiselelo zenethiwekhi yeselula azitholakaleli lo msebenzisi"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"Izilungiselelo zekholi ze-GSM"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"Izilungiselelo zekholi ye-CDMA"</string>
     <string name="apn_settings" msgid="9043423184895642077">"Ama-APN"</string>
@@ -613,7 +614,6 @@
     <string name="choose_wifi_for_call_msg" msgid="193549297122949976">"Sebenzisa i-Wi-Fi ukwenza ikholi?"</string>
     <string name="choose_wifi_for_call_yes" msgid="5312994368472630983">"Yebo"</string>
     <string name="choose_wifi_for_call_no" msgid="7132239734287157307">"Cha"</string>
-    <string name="gsm_connection_service_label" msgid="2332284528867411683">"Ikhadi le-GSM SIM elakhelwe ngaphakathi"</string>
-    <string name="cdma_connection_service_label" msgid="5038725238949035222">"Ikhadi le-CDMA SIM elakhelwe ngaphakathi"</string>
+    <string name="pstn_connection_service_label" msgid="1743245930577325900">"Amakhadi we-SIM akhelwe ngaphakathi"</string>
     <string name="sip_connection_service_label" msgid="3547998349299125294">"Ukushaya kwe-inthanethi okwakhelwe ngaphakathi"</string>
 </resources>
diff --git a/res/values/colors.xml b/res/values/colors.xml
index 5eab9e3..c493a11 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -50,4 +50,6 @@
     <color name="setting_primary_color">#4d4c4c</color>
     <!-- Color for the setting description text. -->
     <color name="setting_secondary_color">#989898</color>
+    <color name="dialer_dialpad_touch_tint">#331dc7db</color>
+    <color name="dialer_accent_color">#eeff41</color>
 </resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 188b284..f9ff5b8 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -114,6 +114,8 @@
 
     <!-- settings strings -->
 
+    <!-- Error message for users that aren't allowed to modify Mobile Network settings [CHAR LIMIT=none] -->
+    <string name="mobile_network_settings_not_available">Mobile network settings are not available for this user</string>
     <!-- GSM Call settings screen, setting option name -->
     <string name="labelGSMMore">GSM call settings</string>
     <!-- CDM Call settings screen, setting option name -->
@@ -1509,11 +1511,8 @@
     <!-- Title for button to not use WiFi calling. -->
     <string name ="choose_wifi_for_call_no">No</string>
 
-    <!-- Label for GSM connection service. -->
-    <string name="gsm_connection_service_label">Built-in GSM SIM card</string>
-
-    <!-- Label for CDMA connection service. -->
-    <string name="cdma_connection_service_label">Built-in CDMA SIM card</string>
+    <!-- Label for PSTN connection service. -->
+    <string name="pstn_connection_service_label">Built-in SIM cards</string>
 
     <!-- Label for SIP connection service. -->
     <string name="sip_connection_service_label">Built-in Internet calling</string>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index b62026b..689ec84 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -220,14 +220,6 @@
         <item name="*android:windowAnimationStyle">@style/InCallAnimationStyle</item>
     </style>
 
-    <style name="DialpadButtonStyle">
-        <item name="android:layout_width">0dip</item>
-        <item name="android:layout_height">match_parent</item>
-        <item name="android:layout_weight">1</item>
-        <item name="android:background">?android:attr/selectableItemBackground</item>
-        <item name="android:soundEffectsEnabled">false</item>
-    </style>
-
     <style name="ContactsActionBarStyle"
            parent="@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse">
         <item name="android:background">@color/people_app_theme_color</item>
@@ -255,15 +247,15 @@
         <item name="android:src">@drawable/ic_menu_overflow_lt</item>
     </style>
 
+    <style name="EmergencyDialerTheme" parent="@android:style/Theme.Material.Light">
+        <item name="dialpad_key_button_touch_tint">@color/dialer_dialpad_touch_tint</item>
+    </style>
+
     <style name="SimImportTheme"
            parent="@android:style/Theme.Holo.Light.DarkActionBar">
         <item name="android:actionBarStyle">@style/ContactsActionBarStyle</item>
     </style>
 
-    <style name="EmergencyDialerTheme" parent="@android:style/Theme.Holo">
-        <item name="android:windowBackground">@android:color/black</item>
-    </style>
-
     <style name="OutgoingCallBroadcasterTheme" parent="@android:style/Theme.Holo.NoActionBar">
         <item name="android:windowBackground">@android:color/black</item>
 
diff --git a/src/com/android/phone/CallLogger.java b/src/com/android/phone/CallLogger.java
index 8322101..fcc55ce 100644
--- a/src/com/android/phone/CallLogger.java
+++ b/src/com/android/phone/CallLogger.java
@@ -130,7 +130,7 @@
             }
 
             CallLogAsync.AddCallArgs args = new CallLogAsync.AddCallArgs(mApplication, ci, number,
-                    presentation, callType, start, duration);
+                    presentation, callType, null, start, duration);
             mCallLog.addCall(args);
         }
     }
diff --git a/src/com/android/phone/EmergencyDialer.java b/src/com/android/phone/EmergencyDialer.java
index db0bb17..8d4521f 100644
--- a/src/com/android/phone/EmergencyDialer.java
+++ b/src/com/android/phone/EmergencyDialer.java
@@ -44,6 +44,7 @@
 import android.widget.EditText;
 
 import com.android.phone.common.HapticFeedback;
+import com.android.phone.common.util.ViewUtil;
 
 
 /**
@@ -82,7 +83,6 @@
     private static final boolean DBG = false;
     private static final String LOG_TAG = "EmergencyDialer";
 
-    private PhoneGlobals mApp;
     private StatusBarManager mStatusBarManager;
     private AccessibilityManager mAccessibilityManager;
 
@@ -157,7 +157,6 @@
     protected void onCreate(Bundle icicle) {
         super.onCreate(icicle);
 
-        mApp = PhoneGlobals.getInstance();
         mStatusBarManager = (StatusBarManager) getSystemService(Context.STATUS_BAR_SERVICE);
         mAccessibilityManager = (AccessibilityManager) getSystemService(ACCESSIBILITY_SERVICE);
 
@@ -194,7 +193,7 @@
         mDelete.setOnClickListener(this);
         mDelete.setOnLongClickListener(this);
 
-        mDialButton = findViewById(R.id.dialButton);
+        mDialButton = findViewById(R.id.floating_action_button);
 
         // Check whether we should show the onscreen "Dial" button and co.
         Resources res = getResources();
@@ -203,6 +202,8 @@
         } else {
             mDialButton.setVisibility(View.GONE);
         }
+        View floatingActionButtonContainer = findViewById(R.id.floating_action_button_container);
+        ViewUtil.setupFloatingActionButton(floatingActionButtonContainer, getResources());
 
         if (icicle != null) {
             super.onRestoreInstanceState(icicle);
@@ -407,7 +408,7 @@
                 keyPressed(KeyEvent.KEYCODE_DEL);
                 return;
             }
-            case R.id.dialButton: {
+            case R.id.floating_action_button: {
                 mHaptic.vibrate();  // Vibrate here too, just like we do for the regular keys
                 placeCall();
                 return;
@@ -634,7 +635,6 @@
     private void updateDialAndDeleteButtonStateEnabledAttr() {
         final boolean notEmpty = mDigits.length() != 0;
 
-        mDialButton.setEnabled(notEmpty);
         mDelete.setEnabled(notEmpty);
     }
 }
diff --git a/src/com/android/phone/HfaService.java b/src/com/android/phone/HfaService.java
index d5c92b8..bc07453 100644
--- a/src/com/android/phone/HfaService.java
+++ b/src/com/android/phone/HfaService.java
@@ -57,7 +57,7 @@
         }, otaResponseIntent);
         mHfaLogic.start();
 
-        return START_STICKY;
+        return START_REDELIVER_INTENT;
     }
 
     @Override
diff --git a/src/com/android/phone/MobileNetworkSettings.java b/src/com/android/phone/MobileNetworkSettings.java
index 9d0a2d5..e663319 100644
--- a/src/com/android/phone/MobileNetworkSettings.java
+++ b/src/com/android/phone/MobileNetworkSettings.java
@@ -33,6 +33,7 @@
 import android.os.Handler;
 import android.os.Message;
 import android.os.SystemProperties;
+import android.os.UserManager;
 import android.preference.CheckBoxPreference;
 import android.preference.ListPreference;
 import android.preference.Preference;
@@ -87,6 +88,7 @@
 
     private static final String iface = "rmnet0"; //TODO: this will go away
 
+    private UserManager mUm;
     private Phone mPhone;
     private MyHandler mHandler;
     private boolean mOkClicked;
@@ -98,6 +100,7 @@
     private Preference mClickedPreference;
     private boolean mShow4GForLTE;
     private boolean mIsGlobalCdma;
+    private boolean mUnavailable;
 
     //This is a method implemented for DialogInterface.OnClickListener.
     //  Used to dismiss the dialogs when they come up.
@@ -211,10 +214,17 @@
     protected void onCreate(Bundle icicle) {
         super.onCreate(icicle);
 
-        addPreferencesFromResource(R.xml.network_setting);
-
         mPhone = PhoneGlobals.getPhone();
         mHandler = new MyHandler();
+        mUm = (UserManager) getSystemService(Context.USER_SERVICE);
+
+        if (mUm.hasUserRestriction(UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS)) {
+            mUnavailable = true;
+            setContentView(R.layout.telephony_disallowed_preference_screen);
+            return;
+        }
+
+        addPreferencesFromResource(R.xml.network_setting);
 
         try {
             Context con = createPackageContext("com.android.systemui", 0);
@@ -338,6 +348,10 @@
     protected void onResume() {
         super.onResume();
 
+        if (mUnavailable) {
+            return;
+        }
+
         // upon resumption from the sub-activity, make sure we re-enable the
         // preferences.
         getPreferenceScreen().setEnabled(true);
@@ -517,7 +531,7 @@
                                 modemNetworkMode);
                     }
 
-                    //check changes in modemNetworkMode and updates settingsNetworkMode
+                    //check changes in modemNetworkMode
                     if (modemNetworkMode != settingsNetworkMode) {
                         if (DBG) {
                             log("handleGetPreferredNetworkTypeResponse: if 2: " +
@@ -529,12 +543,6 @@
                         if (DBG) { log("handleGetPreferredNetworkTypeResponse: if 2: " +
                                 "settingsNetworkMode = " + settingsNetworkMode);
                         }
-
-                        //changes the Settings.System accordingly to modemNetworkMode
-                        android.provider.Settings.Global.putInt(
-                                mPhone.getContext().getContentResolver(),
-                                android.provider.Settings.Global.PREFERRED_NETWORK_MODE,
-                                settingsNetworkMode );
                     }
 
                     UpdatePreferredNetworkModeSummary(modemNetworkMode);
diff --git a/src/com/android/phone/NetworkSetting.java b/src/com/android/phone/NetworkSetting.java
index 5917795..4bd02cf 100644
--- a/src/com/android/phone/NetworkSetting.java
+++ b/src/com/android/phone/NetworkSetting.java
@@ -29,6 +29,7 @@
 import android.os.IBinder;
 import android.os.Message;
 import android.os.RemoteException;
+import android.os.UserManager;
 import android.preference.Preference;
 import android.preference.PreferenceActivity;
 import android.preference.PreferenceGroup;
@@ -72,6 +73,9 @@
     Phone mPhone;
     protected boolean mIsForeground = false;
 
+    private UserManager mUm;
+    private boolean mUnavailable;
+
     /** message for network selection */
     String mNetworkSelectMsg;
 
@@ -224,6 +228,14 @@
     protected void onCreate(Bundle icicle) {
         super.onCreate(icicle);
 
+        mUm = (UserManager) getSystemService(Context.USER_SERVICE);
+
+        if (mUm.hasUserRestriction(UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS)) {
+            setContentView(R.layout.telephony_disallowed_preference_screen);
+            mUnavailable = true;
+            return;
+        }
+
         addPreferencesFromResource(R.xml.carrier_select);
 
         mPhone = PhoneGlobals.getPhone();
@@ -262,9 +274,10 @@
      */
     @Override
     protected void onDestroy() {
-        // unbind the service.
-        unbindService(mNetworkQueryServiceConnection);
-
+        if (!mUnavailable) {
+            // unbind the service.
+            unbindService(mNetworkQueryServiceConnection);
+        }
         super.onDestroy();
     }
 
diff --git a/src/com/android/phone/PhoneInterfaceManager.java b/src/com/android/phone/PhoneInterfaceManager.java
index 35b9a19..71574b6 100644
--- a/src/com/android/phone/PhoneInterfaceManager.java
+++ b/src/com/android/phone/PhoneInterfaceManager.java
@@ -21,6 +21,7 @@
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
+import android.net.ConnectivityManager;
 import android.net.Uri;
 import android.os.AsyncResult;
 import android.os.Binder;
@@ -37,6 +38,7 @@
 import android.telephony.CellInfo;
 import android.telephony.NeighboringCellInfo;
 import android.telephony.ServiceState;
+import android.telephony.SubscriptionManager;
 import android.telephony.TelephonyManager;
 import android.text.TextUtils;
 import android.util.Log;
@@ -49,13 +51,19 @@
 import com.android.internal.telephony.ITelephony;
 import com.android.internal.telephony.IccCard;
 import com.android.internal.telephony.Phone;
+import com.android.internal.telephony.PhoneFactory;
+import com.android.internal.telephony.CallManager;
+import com.android.internal.telephony.CommandException;
 import com.android.internal.telephony.PhoneConstants;
+import com.android.internal.telephony.dataconnection.DctController;
 import com.android.internal.telephony.uicc.IccIoResult;
 import com.android.internal.telephony.uicc.IccUtils;
 import com.android.internal.telephony.uicc.UiccController;
 import com.android.internal.util.HexDump;
 import com.android.services.telephony.common.Call;
 
+import static com.android.internal.telephony.PhoneConstants.SUBSCRIPTION_KEY;
+
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Iterator;
@@ -95,6 +103,8 @@
     private static final int EVENT_GET_PREFERRED_NETWORK_TYPE_DONE = 22;
     private static final int CMD_SET_PREFERRED_NETWORK_TYPE = 23;
     private static final int EVENT_SET_PREFERRED_NETWORK_TYPE_DONE = 24;
+    private static final int CMD_SEND_ENVELOPE = 25;
+    private static final int EVENT_SEND_ENVELOPE_DONE = 26;
 
     /** The singleton instance. */
     private static PhoneInterfaceManager sInstance;
@@ -265,6 +275,34 @@
                     }
                     break;
 
+                case CMD_SEND_ENVELOPE:
+                    request = (MainThreadRequest) msg.obj;
+                    onCompleted = obtainMessage(EVENT_SEND_ENVELOPE_DONE, request);
+                    UiccController.getInstance().getUiccCard().sendEnvelopeWithStatus(
+                            (String)request.argument, onCompleted);
+                    break;
+
+                case EVENT_SEND_ENVELOPE_DONE:
+                    ar = (AsyncResult) msg.obj;
+                    request = (MainThreadRequest) ar.userObj;
+                    if (ar.exception == null && ar.result != null) {
+                        request.result = ar.result;
+                    } else {
+                        request.result = new IccIoResult(0x6F, 0, (byte[])null);
+                        if (ar.result == null) {
+                            loge("sendEnvelopeWithStatus: Empty response");
+                        } else if (ar.exception instanceof CommandException) {
+                            loge("sendEnvelopeWithStatus: CommandException: " +
+                                    ar.exception);
+                        } else {
+                            loge("sendEnvelopeWithStatus: exception:" + ar.exception);
+                        }
+                    }
+                    synchronized (request) {
+                        request.notifyAll();
+                    }
+                    break;
+
                 case CMD_OPEN_CHANNEL:
                     request = (MainThreadRequest) msg.obj;
                     onCompleted = obtainMessage(EVENT_OPEN_CHANNEL_DONE, request);
@@ -433,6 +471,15 @@
      * @see #sendRequestAsync
      */
     private Object sendRequest(int command, Object argument) {
+        return sendRequest(command, argument, null);
+    }
+
+    /**
+     * Posts the specified command to be executed on the main thread,
+     * waits for the request to complete, and returns the result.
+     * @see #sendRequestAsync
+     */
+    private Object sendRequest(int command, Object argument, Object argument2) {
         if (Looper.myLooper() == mMainThreadHandler.getLooper()) {
             throw new RuntimeException("This method will deadlock if called from the main thread.");
         }
@@ -508,11 +555,22 @@
         ServiceManager.addService("phone", this);
     }
 
+    // returns phone associated with the subId.
+    // getPhone(0) returns default phone in single SIM mode.
+    private Phone getPhone(long subId) {
+        // FIXME: hack for the moment
+        return mPhone;
+        // return PhoneUtils.getPhoneUsingSubId(subId);
+    }
     //
     // Implementation of the ITelephony interface.
     //
 
     public void dial(String number) {
+        dialUsingSubId(getPreferredVoiceSubscription(), number);
+    }
+
+    public void dialUsingSubId(long subId, String number) {
         if (DBG) log("dial: " + number);
         // No permission check needed here: This is just a wrapper around the
         // ACTION_DIAL intent, which is available to any app since it puts up
@@ -524,15 +582,20 @@
         }
 
         // PENDING: should we just silently fail if phone is offhook or ringing?
-        PhoneConstants.State state = mCM.getState();
+        PhoneConstants.State state = mCM.getState(subId);
         if (state != PhoneConstants.State.OFFHOOK && state != PhoneConstants.State.RINGING) {
             Intent  intent = new Intent(Intent.ACTION_DIAL, Uri.parse(url));
             intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+            intent.putExtra(SUBSCRIPTION_KEY, subId);
             mApp.startActivity(intent);
         }
     }
 
     public void call(String callingPackage, String number) {
+        callUsingSubId(getPreferredVoiceSubscription(), callingPackage, number);
+    }
+
+    public void callUsingSubId(long subId, String callingPackage, String number) {
         if (DBG) log("call: " + number);
 
         // This is just a wrapper around the ACTION_CALL intent, but we still
@@ -551,6 +614,7 @@
         }
 
         Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse(url));
+        intent.putExtra(SUBSCRIPTION_KEY, subId);
         intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
         mApp.startActivity(intent);
     }
@@ -560,11 +624,23 @@
      * @return true is a call was ended
      */
     public boolean endCall() {
+        return endCallUsingSubId(getDefaultSubscription());
+    }
+
+    /**
+     * End a call based on the call state of the subId
+     * @return true is a call was ended
+     */
+    public boolean endCallUsingSubId(long subId) {
         enforceCallPermission();
-        return (Boolean) sendRequest(CMD_END_CALL, null);
+        return (Boolean) sendRequest(CMD_END_CALL, subId, null);
     }
 
     public void answerRingingCall() {
+        answerRingingCallUsingSubId(getDefaultSubscription());
+    }
+
+    public void answerRingingCallUsingSubId(long subId) {
         if (DBG) log("answerRingingCall...");
         // TODO: there should eventually be a separate "ANSWER_PHONE" permission,
         // but that can probably wait till the big TelephonyManager API overhaul.
@@ -635,15 +711,27 @@
     }
 
     public boolean isOffhook() {
-        return (mCM.getState() == PhoneConstants.State.OFFHOOK);
+        return isOffhookUsingSubId(getDefaultSubscription());
+    }
+
+    public boolean isOffhookUsingSubId(long subId) {
+        return (getPhone(subId).getState() == PhoneConstants.State.OFFHOOK);
     }
 
     public boolean isRinging() {
-        return (mCM.getState() == PhoneConstants.State.RINGING);
+        return (isRingingUsingSubId(getDefaultSubscription()));
+    }
+
+    public boolean isRingingUsingSubId(long subId) {
+        return (getPhone(subId).getState() == PhoneConstants.State.RINGING);
     }
 
     public boolean isIdle() {
-        return (mCM.getState() == PhoneConstants.State.IDLE);
+        return isIdleUsingSubId(getDefaultSubscription());
+    }
+
+    public boolean isIdleUsingSubId(long subId) {
+        return (getPhone(subId).getState() == PhoneConstants.State.IDLE);
     }
 
     public boolean isSimPinEnabled() {
@@ -652,27 +740,43 @@
     }
 
     public boolean supplyPin(String pin) {
-        int [] resultArray = supplyPinReportResult(pin);
+        return supplyPinUsingSubId(getDefaultSubscription(), pin);
+    }
+
+    public boolean supplyPinUsingSubId(long subId, String pin) {
+        int [] resultArray = supplyPinReportResultUsingSubId(subId, pin);
         return (resultArray[0] == PhoneConstants.PIN_RESULT_SUCCESS) ? true : false;
     }
 
     public boolean supplyPuk(String puk, String pin) {
-        int [] resultArray = supplyPukReportResult(puk, pin);
+        return supplyPukUsingSubId(getDefaultSubscription(), puk, pin);
+    }
+
+    public boolean supplyPukUsingSubId(long subId, String puk, String pin) {
+        int [] resultArray = supplyPukReportResultUsingSubId(subId, puk, pin);
         return (resultArray[0] == PhoneConstants.PIN_RESULT_SUCCESS) ? true : false;
     }
 
     /** {@hide} */
     public int[] supplyPinReportResult(String pin) {
+        return supplyPinReportResultUsingSubId(getDefaultSubscription(), pin);
+    }
+
+    public int[] supplyPinReportResultUsingSubId(long subId, String pin) {
         enforceModifyPermission();
-        final UnlockSim checkSimPin = new UnlockSim(mPhone.getIccCard());
+        final UnlockSim checkSimPin = new UnlockSim(getPhone(subId).getIccCard());
         checkSimPin.start();
         return checkSimPin.unlockSim(null, pin);
     }
 
     /** {@hide} */
     public int[] supplyPukReportResult(String puk, String pin) {
+        return supplyPukReportResultUsingSubId(getDefaultSubscription(), puk, pin);
+    }
+
+    public int[] supplyPukReportResultUsingSubId(long subId, String puk, String pin) {
         enforceModifyPermission();
-        final UnlockSim checkSimPuk = new UnlockSim(mPhone.getIccCard());
+        final UnlockSim checkSimPuk = new UnlockSim(getPhone(subId).getIccCard());
         checkSimPuk.start();
         return checkSimPuk.unlockSim(puk, pin);
     }
@@ -777,79 +881,114 @@
     }
 
     public void updateServiceLocation() {
+        updateServiceLocationUsingSubId(getDefaultSubscription());
+
+    }
+
+    public void updateServiceLocationUsingSubId(long subId) {
         // No permission check needed here: this call is harmless, and it's
         // needed for the ServiceState.requestStateUpdate() call (which is
         // already intentionally exposed to 3rd parties.)
-        mPhone.updateServiceLocation();
+        getPhone(subId).updateServiceLocation();
     }
 
     public boolean isRadioOn() {
-        return mPhone.getServiceState().getVoiceRegState() != ServiceState.STATE_POWER_OFF;
+        return isRadioOnUsingSubId(getDefaultSubscription());
+    }
+
+    public boolean isRadioOnUsingSubId(long subId) {
+        return getPhone(subId).getServiceState().getState() != ServiceState.STATE_POWER_OFF;
     }
 
     public void toggleRadioOnOff() {
-        enforceModifyPermission();
-        mPhone.setRadioPower(!isRadioOn());
+        toggleRadioOnOffUsingSubId(getDefaultSubscription());
+
     }
-    public boolean setRadio(boolean turnOn) {
+
+    public void toggleRadioOnOffUsingSubId(long subId) {
         enforceModifyPermission();
-        if ((mPhone.getServiceState().getVoiceRegState() != ServiceState.STATE_POWER_OFF) != turnOn) {
-            toggleRadioOnOff();
+        getPhone(subId).setRadioPower(!isRadioOnUsingSubId(subId));
+    }
+
+    public boolean setRadio(boolean turnOn) {
+        return setRadioUsingSubId(getDefaultSubscription(), turnOn);
+    }
+
+    public boolean setRadioUsingSubId(long subId, boolean turnOn) {
+        enforceModifyPermission();
+        if ((getPhone(subId).getServiceState().getState() !=
+                ServiceState.STATE_POWER_OFF) != turnOn) {
+            toggleRadioOnOffUsingSubId(subId);
         }
         return true;
     }
+
     public boolean setRadioPower(boolean turnOn) {
+        return setRadioPowerUsingSubId(getDefaultSubscription(), turnOn);
+    }
+
+    public boolean setRadioPowerUsingSubId(long subId, boolean turnOn) {
         enforceModifyPermission();
-        mPhone.setRadioPower(turnOn);
+        getPhone(subId).setRadioPower(turnOn);
         return true;
     }
 
+    // FIXME: subId version needed
     public boolean enableDataConnectivity() {
         enforceModifyPermission();
-        mPhone.setDataEnabled(true);
+        long subId = SubscriptionManager.getDefaultDataSubId();
+        getPhone(subId).setDataEnabled(true);
         return true;
     }
 
-    public int enableApnType(String type) {
-        enforceModifyPermission();
-        return mPhone.enableApnType(type);
-    }
-
-    public int disableApnType(String type) {
-        enforceModifyPermission();
-        return mPhone.disableApnType(type);
-    }
-
+    // FIXME: subId version needed
     public boolean disableDataConnectivity() {
         enforceModifyPermission();
-        mPhone.setDataEnabled(false);
+        long subId = SubscriptionManager.getDefaultDataSubId();
+        getPhone(subId).setDataEnabled(false);
         return true;
     }
 
+    // FIXME: subId version needed
     public boolean isDataConnectivityPossible() {
-        return mPhone.isDataConnectivityPossible();
+        long subId = SubscriptionManager.getDefaultDataSubId();
+        return getPhone(subId).isDataConnectivityPossible();
     }
 
     public boolean handlePinMmi(String dialString) {
+        return handlePinMmiUsingSubId(getDefaultSubscription(), dialString);
+    }
+
+    public boolean handlePinMmiUsingSubId(long subId, String dialString) {
         enforceModifyPermission();
-        return (Boolean) sendRequest(CMD_HANDLE_PIN_MMI, dialString);
+        return (Boolean) sendRequest(CMD_HANDLE_PIN_MMI, dialString, subId);
     }
 
     public void cancelMissedCallsNotification() {
+        cancelMissedCallsNotificationUsingSubId(getDefaultSubscription());
+    }
+
+    public void cancelMissedCallsNotificationUsingSubId(long subId) {
         enforceModifyPermission();
         mApp.notificationMgr.cancelMissedCallNotification();
     }
 
     public int getCallState() {
-        return DefaultPhoneNotifier.convertCallState(mCM.getState());
+        return getCallStateUsingSubId(getDefaultSubscription());
+    }
+
+    public int getCallStateUsingSubId(long subId) {
+        return DefaultPhoneNotifier.convertCallState(getPhone(subId).getState());
     }
 
     public int getDataState() {
-        return DefaultPhoneNotifier.convertDataState(mPhone.getDataConnectionState());
+        Phone phone = getPhone(SubscriptionManager.getDefaultDataSubId());
+        return DefaultPhoneNotifier.convertDataState(phone.getDataConnectionState());
     }
 
     public int getDataActivity() {
-        return DefaultPhoneNotifier.convertDataActivityState(mPhone.getDataActivityState());
+        Phone phone = getPhone(SubscriptionManager.getDefaultDataSubId());
+        return DefaultPhoneNotifier.convertDataActivityState(phone.getDataActivityState());
     }
 
     @Override
@@ -878,16 +1017,24 @@
 
     @Override
     public void enableLocationUpdates() {
+        enableLocationUpdatesUsingSubId(getDefaultSubscription());
+    }
+
+    public void enableLocationUpdatesUsingSubId(long subId) {
         mApp.enforceCallingOrSelfPermission(
                 android.Manifest.permission.CONTROL_LOCATION_UPDATES, null);
-        mPhone.enableLocationUpdates();
+        getPhone(subId).enableLocationUpdates();
     }
 
     @Override
     public void disableLocationUpdates() {
+        disableLocationUpdatesUsingSubId(getDefaultSubscription());
+    }
+
+    public void disableLocationUpdatesUsingSubId(long subId) {
         mApp.enforceCallingOrSelfPermission(
                 android.Manifest.permission.CONTROL_LOCATION_UPDATES, null);
-        mPhone.disableLocationUpdates();
+        getPhone(subId).disableLocationUpdates();
     }
 
     @Override
@@ -916,9 +1063,9 @@
 
             try {
                 cells = (ArrayList<NeighboringCellInfo>) sendRequest(
-                        CMD_HANDLE_NEIGHBORING_CELL, null);
+                        CMD_HANDLE_NEIGHBORING_CELL, null, null);
             } catch (RuntimeException e) {
-                loge("getNeighboringCellInfo " + e);
+                Log.e(LOG_TAG, "getNeighboringCellInfo " + e);
             }
             return cells;
         } else {
@@ -1028,6 +1175,15 @@
                 null);
     }
 
+    /**
+     * Make sure the caller has SIM_COMMUNICATION permission.
+     *
+     * @throws SecurityException if the caller does not have the required permission.
+     */
+    private void enforceSimCommunicationPermission() {
+        mApp.enforceCallingOrSelfPermission(android.Manifest.permission.SIM_COMMUNICATION, null);
+    }
+
     private String createTelUrl(String number) {
         if (TextUtils.isEmpty(number)) {
             return null;
@@ -1045,14 +1201,23 @@
     }
 
     public int getActivePhoneType() {
-        return mPhone.getPhoneType();
+        return getActivePhoneTypeUsingSubId(getDefaultSubscription());
+    }
+
+    public int getActivePhoneTypeUsingSubId(long subId) {
+        return getPhone(subId).getPhoneType();
     }
 
     /**
      * Returns the CDMA ERI icon index to display
      */
     public int getCdmaEriIconIndex() {
-        return mPhone.getCdmaEriIconIndex();
+        return getCdmaEriIconIndexUsingSubId(getDefaultSubscription());
+
+    }
+
+    public int getCdmaEriIconIndexUsingSubId(long subId) {
+        return getPhone(subId).getCdmaEriIconIndex();
     }
 
     /**
@@ -1061,14 +1226,22 @@
      * 1 - FLASHING
      */
     public int getCdmaEriIconMode() {
-        return mPhone.getCdmaEriIconMode();
+        return getCdmaEriIconModeUsingSubId(getDefaultSubscription());
+    }
+
+    public int getCdmaEriIconModeUsingSubId(long subId) {
+        return getPhone(subId).getCdmaEriIconMode();
     }
 
     /**
      * Returns the CDMA ERI text,
      */
     public String getCdmaEriText() {
-        return mPhone.getCdmaEriText();
+        return getCdmaEriTextUsingSubId(getDefaultSubscription());
+    }
+
+    public String getCdmaEriTextUsingSubId(long subId) {
+        return getPhone(subId).getCdmaEriText();
     }
 
     /**
@@ -1082,7 +1255,14 @@
      * Returns the unread count of voicemails
      */
     public int getVoiceMessageCount() {
-        return mPhone.getVoiceMessageCount();
+        return getVoiceMessageCountUsingSubId(getDefaultSubscription());
+    }
+
+    /**
+     * Returns the unread count of voicemails for a subId
+     */
+    public int getVoiceMessageCountUsingSubId( long subId) {
+        return getPhone(subId).getVoiceMessageCount();
     }
 
     /**
@@ -1092,7 +1272,15 @@
      */
     @Override
     public int getNetworkType() {
-        return mPhone.getServiceState().getDataNetworkType();
+        return getNetworkTypeUsingSubId(getDefaultSubscription());
+    }
+
+    /**
+     * Returns the network type for a subId
+     */
+    @Override
+    public int getNetworkTypeUsingSubId(long subId) {
+        return getPhone(subId).getServiceState().getDataNetworkType();
     }
 
     /**
@@ -1100,7 +1288,15 @@
      */
     @Override
     public int getDataNetworkType() {
-        return mPhone.getServiceState().getDataNetworkType();
+        return getDataNetworkTypeUsingSubId(getDefaultSubscription());
+    }
+
+    /**
+     * Returns the data network type for a subId
+     */
+    @Override
+    public int getDataNetworkTypeUsingSubId(long subId) {
+        return getPhone(subId).getServiceState().getDataNetworkType();
     }
 
     /**
@@ -1108,14 +1304,30 @@
      */
     @Override
     public int getVoiceNetworkType() {
-        return mPhone.getServiceState().getVoiceNetworkType();
+        return getVoiceNetworkTypeUsingSubId(getDefaultSubscription());
+    }
+
+    /**
+     * Returns the Voice network type for a subId
+     */
+    @Override
+    public int getVoiceNetworkTypeUsingSubId(long subId) {
+        return getPhone(subId).getServiceState().getVoiceNetworkType();
     }
 
     /**
      * @return true if a ICC card is present
      */
     public boolean hasIccCard() {
-        return mPhone.getIccCard().hasIccCard();
+        // FIXME Make changes to pass defaultSimId of type int
+        return hasIccCardUsingSlotId(getDefaultSubscription());
+    }
+
+    /**
+     * @return true if a ICC card is present for a slotId
+     */
+    public boolean hasIccCardUsingSlotId(long slotId) {
+        return getPhone(slotId).getIccCard().hasIccCard();
     }
 
     /**
@@ -1127,7 +1339,27 @@
      * or {@link Phone#LTE_ON_CDMA_TRUE}
      */
     public int getLteOnCdmaMode() {
-        return mPhone.getLteOnCdmaMode();
+        return getLteOnCdmaModeUsingSubId(getDefaultSubscription());
+    }
+
+    public int getLteOnCdmaModeUsingSubId(long subId) {
+        return getPhone(subId).getLteOnCdmaMode();
+    }
+
+    public void setPhone(Phone phone) {
+        mPhone = phone;
+    }
+
+    /**
+     * {@hide}
+     * Returns Default subId, 0 in the case of single standby.
+     */
+    private long getDefaultSubscription() {
+        return SubscriptionManager.getDefaultSubId();
+    }
+
+    private long getPreferredVoiceSubscription() {
+        return SubscriptionManager.getDefaultVoiceSubId();
     }
 
     /**
@@ -1152,6 +1384,194 @@
         return TelephonyManager.WifiCallingChoices.ALWAYS_USE;
     }
 
+    @Override
+    public int iccOpenLogicalChannel(String AID) {
+        enforceSimCommunicationPermission();
+
+        if (DBG) log("iccOpenLogicalChannel: " + AID);
+        Integer channel = (Integer)sendRequest(CMD_OPEN_CHANNEL, AID);
+        if (DBG) log("iccOpenLogicalChannel: " + channel);
+        return channel;
+    }
+
+    @Override
+    public boolean iccCloseLogicalChannel(int channel) {
+        enforceSimCommunicationPermission();
+
+        if (DBG) log("iccCloseLogicalChannel: " + channel);
+        if (channel < 0) {
+          return false;
+        }
+        Boolean success = (Boolean)sendRequest(CMD_CLOSE_CHANNEL, channel);
+        if (DBG) log("iccCloseLogicalChannel: " + success);
+        return success;
+    }
+
+    @Override
+    public String iccTransmitApduLogicalChannel(int channel, int cla,
+            int command, int p1, int p2, int p3, String data) {
+        enforceSimCommunicationPermission();
+
+        if (DBG) {
+            log("iccTransmitApduLogicalChannel: chnl=" + channel + " cla=" + cla +
+                    " cmd=" + command + " p1=" + p1 + " p2=" + p2 + " p3=" + p3 +
+                    " data=" + data);
+        }
+
+        if (channel < 0) {
+            return "";
+        }
+
+        IccIoResult response = (IccIoResult)sendRequest(CMD_TRANSMIT_APDU,
+                new IccAPDUArgument(channel, cla, command, p1, p2, p3, data));
+        if (DBG) log("iccTransmitApduLogicalChannel: " + response);
+
+        // If the payload is null, there was an error. Indicate that by returning
+        // an empty string.
+        if (response.payload == null) {
+          return "";
+        }
+
+        // Append the returned status code to the end of the response payload.
+        String s = Integer.toHexString(
+                (response.sw1 << 8) + response.sw2 + 0x10000).substring(1);
+        s = IccUtils.bytesToHexString(response.payload) + s;
+        return s;
+    }
+
+    @Override
+    public String sendEnvelopeWithStatus(String content) {
+        enforceSimCommunicationPermission();
+
+        IccIoResult response = (IccIoResult)sendRequest(CMD_SEND_ENVELOPE, content);
+        if (response.payload == null) {
+          return "";
+        }
+
+        // Append the returned status code to the end of the response payload.
+        String s = Integer.toHexString(
+                (response.sw1 << 8) + response.sw2 + 0x10000).substring(1);
+        s = IccUtils.bytesToHexString(response.payload) + s;
+        return s;
+    }
+
+    /**
+     * Read one of the NV items defined in {@link com.android.internal.telephony.RadioNVItems}
+     * and {@code ril_nv_items.h}. Used for device configuration by some CDMA operators.
+     *
+     * @param itemID the ID of the item to read
+     * @return the NV item as a String, or null on error.
+     */
+    @Override
+    public String nvReadItem(int itemID) {
+        enforceModifyPermission();
+        if (DBG) log("nvReadItem: item " + itemID);
+        String value = (String) sendRequest(CMD_NV_READ_ITEM, itemID);
+        if (DBG) log("nvReadItem: item " + itemID + " is \"" + value + '"');
+        return value;
+    }
+
+    /**
+     * Write one of the NV items defined in {@link com.android.internal.telephony.RadioNVItems}
+     * and {@code ril_nv_items.h}. Used for device configuration by some CDMA operators.
+     *
+     * @param itemID the ID of the item to read
+     * @param itemValue the value to write, as a String
+     * @return true on success; false on any failure
+     */
+    @Override
+    public boolean nvWriteItem(int itemID, String itemValue) {
+        enforceModifyPermission();
+        if (DBG) log("nvWriteItem: item " + itemID + " value \"" + itemValue + '"');
+        Boolean success = (Boolean) sendRequest(CMD_NV_WRITE_ITEM,
+                new Pair<Integer, String>(itemID, itemValue));
+        if (DBG) log("nvWriteItem: item " + itemID + ' ' + (success ? "ok" : "fail"));
+        return success;
+    }
+
+    /**
+     * Update the CDMA Preferred Roaming List (PRL) in the radio NV storage.
+     * Used for device configuration by some CDMA operators.
+     *
+     * @param preferredRoamingList byte array containing the new PRL
+     * @return true on success; false on any failure
+     */
+    @Override
+    public boolean nvWriteCdmaPrl(byte[] preferredRoamingList) {
+        enforceModifyPermission();
+        if (DBG) log("nvWriteCdmaPrl: value: " + HexDump.toHexString(preferredRoamingList));
+        Boolean success = (Boolean) sendRequest(CMD_NV_WRITE_CDMA_PRL, preferredRoamingList);
+        if (DBG) log("nvWriteCdmaPrl: " + (success ? "ok" : "fail"));
+        return success;
+    }
+
+    /**
+     * Perform the specified type of NV config reset.
+     * Used for device configuration by some CDMA operators.
+     *
+     * @param resetType the type of reset to perform (1 == factory reset; 2 == NV-only reset)
+     * @return true on success; false on any failure
+     */
+    @Override
+    public boolean nvResetConfig(int resetType) {
+        enforceModifyPermission();
+        if (DBG) log("nvResetConfig: type " + resetType);
+        Boolean success = (Boolean) sendRequest(CMD_NV_RESET_CONFIG, resetType);
+        if (DBG) log("nvResetConfig: type " + resetType + ' ' + (success ? "ok" : "fail"));
+        return success;
+    }
+
+    /**
+     * {@hide}
+     * Returns Default sim, 0 in the case of single standby.
+     */
+    public int getDefaultSim() {
+        //TODO Need to get it from Telephony Devcontroller
+        return 0;
+    }
+
+    public String[] getPcscfAddress() {
+        enforceReadPermission();
+        return mPhone.getPcscfAddress();
+    }
+
+    public void setImsRegistrationState(boolean registered) {
+        enforceModifyPermission();
+        mPhone.setImsRegistrationState(registered);
+    }
+
+    /**
+     * Get the preferred network type.
+     * Used for device configuration by some CDMA operators.
+     *
+     * @return the preferred network type, defined in RILConstants.java.
+     */
+    @Override
+    public int getPreferredNetworkType() {
+        enforceModifyPermission();
+        if (DBG) log("getPreferredNetworkType");
+        int[] result = (int[]) sendRequest(CMD_GET_PREFERRED_NETWORK_TYPE, null);
+        int networkType = (result != null ? result[0] : -1);
+        if (DBG) log("getPreferredNetworkType: " + networkType);
+        return networkType;
+    }
+
+    /**
+     * Set the preferred network type.
+     * Used for device configuration by some CDMA operators.
+     *
+     * @param networkType the preferred network type, defined in RILConstants.java.
+     * @return true on success; false on any failure.
+     */
+    @Override
+    public boolean setPreferredNetworkType(int networkType) {
+        enforceModifyPermission();
+        if (DBG) log("setPreferredNetworkType: type " + networkType);
+        Boolean success = (Boolean) sendRequest(CMD_SET_PREFERRED_NETWORK_TYPE, networkType);
+        if (DBG) log("setPreferredNetworkType: " + (success ? "ok" : "fail"));
+        return success;
+    }
+
     /**
      * Set mobile data enabled
      * Used by the user through settings etc to turn on/off mobile data
diff --git a/src/com/android/services/telephony/CdmaConnectionService.java b/src/com/android/services/telephony/CdmaConnectionService.java
deleted file mode 100644
index 75bd12b..0000000
--- a/src/com/android/services/telephony/CdmaConnectionService.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.services.telephony;
-
-import android.content.Context;
-import android.net.Uri;
-import android.telephony.TelephonyManager;
-
-import com.android.internal.telephony.Connection;
-import com.android.internal.telephony.Phone;
-import com.android.internal.telephony.PhoneFactory;
-import com.android.phone.Constants;
-import android.telecomm.ConnectionRequest;
-
-/**
- * Connection service that uses CDMA.
- */
-public class CdmaConnectionService extends PstnConnectionService {
-
-    /** {@inheritDoc} */
-    @Override
-    protected Phone getPhone() {
-        return PhoneFactory.getDefaultPhone();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    protected boolean canCall(Uri handle) {
-        return canCall(this, handle);
-    }
-
-    // TODO: Refactor this out when CallServiceSelector is deprecated
-    /* package */ static boolean canCall(Context context, Uri handle) {
-        TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(
-                Context.TELEPHONY_SERVICE);
-        return telephonyManager.getPhoneType() == TelephonyManager.PHONE_TYPE_CDMA
-                && Constants.SCHEME_TEL.equals(handle.getScheme());
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    protected TelephonyConnection onCreateTelephonyConnection(
-            ConnectionRequest request, Connection connection) {
-        return new CdmaConnection(getPhone(), connection);
-    }
-}
diff --git a/src/com/android/services/telephony/GsmConferenceController.java b/src/com/android/services/telephony/GsmConferenceController.java
new file mode 100644
index 0000000..35b81d2
--- /dev/null
+++ b/src/com/android/services/telephony/GsmConferenceController.java
@@ -0,0 +1,122 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.services.telephony;
+
+import com.android.internal.telephony.Call;
+import com.android.internal.telephony.PhoneFactory;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import android.telecomm.Connection;
+
+/**
+ * Maintains a list of all the known GSM connections and implements GSM-specific conference
+ * call functionality.
+ */
+public class GsmConferenceController {
+
+    private final Connection.Listener mConnectionListener =
+            new Connection.ListenerBase() {
+                @Override
+                public void onStateChanged(Connection c, int state) {
+                    // No need to recalculate for conference calls, just traditional calls.
+                    if (c != mGsmConferenceConnection) {
+                        recalculate();
+                    }
+                }
+
+                /** ${inheritDoc} */
+                @Override
+                public void onDisconnected(
+                        Connection c, int cause, String message) {
+                    // When a connection disconnects, make sure to release its parent reference
+                    // so that the parent can move to disconnected as well.
+                    c.setParentConnection(null);
+                }
+
+            };
+
+    /** The known GSM connections. */
+    private final List<GsmConnection> mGsmConnections = new ArrayList<>();
+
+    /** The GSM conference connection object. */
+    private ConferenceConnection mGsmConferenceConnection;
+
+    public void add(GsmConnection connection) {
+        connection.addConnectionListener(mConnectionListener);
+        mGsmConnections.add(connection);
+        recalculate();
+    }
+
+    public void remove(GsmConnection connection) {
+        connection.removeConnectionListener(mConnectionListener);
+        mGsmConnections.remove(connection);
+        recalculate();
+    }
+
+    public ConferenceConnection createConferenceConnection(Connection rootConnection) {
+        if (mGsmConferenceConnection == null) {
+            mGsmConferenceConnection = new ConferenceConnection();
+            Log.d(this, "creating the conference connection: %s", mGsmConferenceConnection);
+        }
+        rootConnection.conference();
+        return mGsmConferenceConnection;
+    }
+
+    /**
+     * Calculates the conference-capable state of all GSM connections in this connection service.
+     */
+    private void recalculate() {
+        Log.v(this, "recalculateGsmConferenceState");
+        for (GsmConnection connection : mGsmConnections) {
+            Log.d(this, "recalc - %s", connection);
+            boolean isConferenceCapable = false;
+            com.android.internal.telephony.Connection radioConnection =
+                    connection.getOriginalConnection();
+            if (radioConnection != null) {
+
+                // First calculate to see if we are in the conference call. We only support a
+                // single active conference call on PSTN, which makes things a little easier.
+                if (mGsmConferenceConnection != null) {
+                    if (radioConnection.getCall().isMultiparty()) {
+                        connection.setParentConnection(mGsmConferenceConnection);
+                    } else {
+                        connection.setParentConnection(null);
+                    }
+                }
+
+                boolean callIsActive = radioConnection.getState() == Call.State.ACTIVE;
+                boolean isConferenced =
+                        callIsActive && radioConnection.getCall().isMultiparty();
+                // TODO: The below does not work when we use PhoneFactory.getGsmPhone() -- the
+                // phone from getGsmPhone() erroneously reports it has no background calls.
+                boolean hasBackgroundCall =
+                        radioConnection.getCall().getPhone().getBackgroundCall().hasConnections();
+                Log.d(this, "recalc: active: %b, is_conf: %b, has_bkgd: %b",
+                        callIsActive, isConferenced, hasBackgroundCall);
+                // We only set conference capable on:
+                // 1) Active calls,
+                // 2) which are not already part of a conference call
+                // 3) and there exists a call on HOLD
+                isConferenceCapable = callIsActive && !isConferenced && hasBackgroundCall;
+            }
+
+            connection.setIsConferenceCapable(isConferenceCapable);
+        }
+    }
+}
diff --git a/src/com/android/services/telephony/GsmConnection.java b/src/com/android/services/telephony/GsmConnection.java
index d37accd..34ef27e 100644
--- a/src/com/android/services/telephony/GsmConnection.java
+++ b/src/com/android/services/telephony/GsmConnection.java
@@ -53,10 +53,4 @@
             Log.e(this, e, "Failed to conference call.");
         }
     }
-
-    @Override
-    public void setIsConferenceCapable(boolean isConferenceCapable) {
-        // This method increases access modifier.
-        super.setIsConferenceCapable(isConferenceCapable);
-    }
 }
diff --git a/src/com/android/services/telephony/GsmConnectionService.java b/src/com/android/services/telephony/GsmConnectionService.java
deleted file mode 100644
index ae5dc22..0000000
--- a/src/com/android/services/telephony/GsmConnectionService.java
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.services.telephony;
-
-import android.content.Context;
-import android.net.Uri;
-import android.telephony.TelephonyManager;
-
-import com.android.internal.telephony.Call;
-import com.android.internal.telephony.Connection;
-import com.android.internal.telephony.Phone;
-import com.android.internal.telephony.PhoneFactory;
-import com.android.phone.Constants;
-
-import java.util.Collection;
-import java.util.HashSet;
-
-import android.telecomm.CallState;
-import android.telecomm.ConnectionRequest;
-import android.telecomm.Response;
-
-/**
- * Connnection service that uses GSM.
- */
-public class GsmConnectionService extends PstnConnectionService {
-
-    private final android.telecomm.Connection.Listener mConnectionListener =
-            new android.telecomm.Connection.ListenerBase() {
-                @Override
-                public void onStateChanged(android.telecomm.Connection c, int state) {
-                    // No need to recalculate for conference calls, just traditional calls.
-                    if (c != mConferenceConnection) {
-                        recalculateConferenceState();
-                    }
-                }
-
-                /** ${inheritDoc} */
-                @Override
-                public void onDisconnected(
-                        android.telecomm.Connection c, int cause, String message) {
-                    // When a connection disconnects, make sure to release its parent reference
-                    // so that the parent can move to disconnected as well.
-                    c.setParentConnection(null);
-                }
-
-            };
-
-    /** The conferenc connection object. */
-    private ConferenceConnection mConferenceConnection;
-
-    /** {@inheritDoc} */
-    @Override
-    protected Phone getPhone() {
-        return PhoneFactory.getDefaultPhone();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    protected boolean canCall(Uri handle) {
-        return canCall(this, handle);
-    }
-
-    // TODO: Refactor this out when CallServiceSelector is deprecated
-    /* package */ static boolean canCall(Context context, Uri handle) {
-        TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(
-                Context.TELEPHONY_SERVICE);
-        return telephonyManager.getPhoneType() == TelephonyManager.PHONE_TYPE_GSM
-                && Constants.SCHEME_TEL.equals(handle.getScheme());
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    protected TelephonyConnection onCreateTelephonyConnection(
-            ConnectionRequest request, Connection connection) {
-        return new GsmConnection(getPhone(), connection);
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void onConnectionAdded(android.telecomm.Connection connection) {
-        connection.addConnectionListener(mConnectionListener);
-        recalculateConferenceState();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void onConnectionRemoved(android.telecomm.Connection connection) {
-        connection.removeConnectionListener(mConnectionListener);
-        recalculateConferenceState();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void onCreateConferenceConnection(
-            String token,
-            android.telecomm.Connection telecommConnection,
-            Response<String, android.telecomm.Connection> callback) {
-        if (mConferenceConnection == null) {
-            mConferenceConnection = new ConferenceConnection();
-            Log.d(this, "creating the conference connection: %s", mConferenceConnection);
-        }
-        callback.onResult(token, mConferenceConnection);
-        telecommConnection.conference();
-    }
-
-    /**
-     * Calculates the conference-capable state of all connections in this connection service.
-     */
-    private void recalculateConferenceState() {
-        Log.v(this, "recalculateConferenceState");
-        Collection<android.telecomm.Connection> allConnections = this.getAllConnections();
-        for (android.telecomm.Connection connection : new HashSet<>(allConnections)) {
-            Log.d(this, "recalc - %s", connection);
-            if (connection instanceof GsmConnection) {
-                boolean isConferenceCapable = false;
-                Connection radioConnection = ((GsmConnection) connection).getOriginalConnection();
-                if (radioConnection != null) {
-
-                    // First calculate to see if we are in the conference call. We only support a
-                    // single active conference call on PSTN, which makes things a little easier.
-                    if (mConferenceConnection != null) {
-                        if (radioConnection.getCall().isMultiparty()) {
-                            connection.setParentConnection(mConferenceConnection);
-                        } else {
-                            connection.setParentConnection(null);
-                        }
-                    }
-
-                    boolean callIsActive = radioConnection.getState() == Call.State.ACTIVE;
-                    boolean isConferenced =
-                            callIsActive && radioConnection.getCall().isMultiparty();
-                    boolean hasBackgroundCall = getPhone().getBackgroundCall().hasConnections();
-                    Log.d(this, "recalc: active: %b, is_conf: %b, has_bkgd: %b",
-                            callIsActive, isConferenced, hasBackgroundCall);
-                    // We only set conference capable on:
-                    // 1) Active calls,
-                    // 2) which are not already part of a conference call
-                    // 3) and there exists a call on HOLD
-                    isConferenceCapable = callIsActive && !isConferenced && hasBackgroundCall;
-                }
-
-                ((GsmConnection) connection).setIsConferenceCapable(isConferenceCapable);
-            }
-        }
-    }
-}
diff --git a/src/com/android/services/telephony/PstnConnectionService.java b/src/com/android/services/telephony/PstnConnectionService.java
index 21ee41c..00ed255 100644
--- a/src/com/android/services/telephony/PstnConnectionService.java
+++ b/src/com/android/services/telephony/PstnConnectionService.java
@@ -23,22 +23,27 @@
 import android.telecomm.ConnectionRequest;
 import android.telecomm.Response;
 import android.telephony.PhoneNumberUtils;
+import android.telephony.TelephonyManager;
 
 import com.android.internal.telephony.Call;
 import com.android.internal.telephony.Phone;
+import com.android.internal.telephony.PhoneFactory;
 import com.android.phone.Constants;
 
 import java.util.HashSet;
 import java.util.Set;
 
 /**
- * The parent class for PSTN-based call services. Handles shared functionality between all PSTN
- * call services.
+ * The connection service for making PSTN connections using built-in SIM cards.
  */
-public abstract class PstnConnectionService extends TelephonyConnectionService {
+public final class PstnConnectionService extends TelephonyConnectionService {
+
     private EmergencyCallHelper mEmergencyCallHelper;
+
     private final Set<ConnectionRequest> mPendingOutgoingEmergencyCalls = new HashSet<>();
 
+    private final GsmConferenceController mGsmConferenceController = new GsmConferenceController();
+
     @Override
     public void onCreate() {
         super.onCreate();
@@ -49,7 +54,7 @@
     @Override
     public void onCreateConnections(
             final ConnectionRequest request,
-            final Response<ConnectionRequest, Connection> response) {
+            final OutgoingCallResponse<Connection> response) {
 
         if (!canCall(request.getHandle())) {
             Log.d(this, "Cannot place the call with %s", this.getClass().getSimpleName());
@@ -64,7 +69,7 @@
         // TODO: Consider passing call emergency information as part of ConnectionRequest so
         // that we do not have to make the check here once again.
         String handle = request.getHandle().getSchemeSpecificPart();
-        final Phone phone = getPhone();
+        final Phone phone = PhoneFactory.getDefaultPhone();
         if (PhoneNumberUtils.isPotentialEmergencyNumber(handle)) {
             EmergencyCallHelper.Callback callback = new EmergencyCallHelper.Callback() {
                 @Override
@@ -102,7 +107,7 @@
             ConnectionRequest request,
             Response<ConnectionRequest, Connection> response) {
         Log.d(this, "onCreateIncomingConnection");
-        Call call = getPhone().getRingingCall();
+        Call call = PhoneFactory.getDefaultPhone().getRingingCall();
 
         // The ringing call is always not-null, check if it is truly ringing by checking its state.
         if (call.getState().isRinging()) {
@@ -125,7 +130,10 @@
 
                 TelephonyConnection telephonyConnection;
                 try {
-                    telephonyConnection = createTelephonyConnection(request, connection);
+                    telephonyConnection = createTelephonyConnection(
+                            request,
+                            PhoneFactory.getDefaultPhone(),
+                            connection);
                 } catch (Exception e) {
                     respondWithError(
                             request,
@@ -150,8 +158,51 @@
         super.onCreateIncomingConnection(request, response);
     }
 
-    /**
-     * @return The current phone object behind this call service.
-     */
-    protected abstract Phone getPhone();
+    /** {@inheritDoc} */
+    @Override
+    protected boolean canCall(Uri handle) {
+        return Constants.SCHEME_TEL.equals(handle.getScheme());
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected TelephonyConnection onCreateTelephonyConnection(
+            ConnectionRequest request,
+            Phone phone,
+            com.android.internal.telephony.Connection connection) {
+        switch (phone.getPhoneType()) {
+            case TelephonyManager.PHONE_TYPE_GSM: {
+                final GsmConnection gsmConn = new GsmConnection(phone, connection);
+                mGsmConferenceController.add(gsmConn);
+                gsmConn.addConnectionListener(new Connection.ListenerBase() {
+                    @Override
+                    public void onDestroyed(Connection c) {
+                        mGsmConferenceController.remove(gsmConn);
+                    }
+                });
+                return gsmConn;
+            }
+            case TelephonyManager.PHONE_TYPE_CDMA:
+                return new CdmaConnection(phone, connection);
+            default:
+                Log.d(this, "Inappropriate phone type for PSTN: %d", phone.getPhoneType());
+                return null;
+        }
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void onCreateConferenceConnection(
+            String token,
+            Connection connection,
+            Response<String, Connection> callback) {
+        // TODO: Create a more general framework for conferencing. At the moment, our goal is
+        // simply not to break the previous GSM-specific conferencing functionality.
+        if (connection instanceof GsmConnection || connection instanceof ConferenceConnection) {
+            if (connection.isConferenceCapable()) {
+                callback.onResult(token,
+                        mGsmConferenceController.createConferenceConnection(connection));
+            }
+        }
+    }
 }
diff --git a/src/com/android/services/telephony/IncomingCallNotifier.java b/src/com/android/services/telephony/PstnIncomingCallNotifier.java
similarity index 88%
rename from src/com/android/services/telephony/IncomingCallNotifier.java
rename to src/com/android/services/telephony/PstnIncomingCallNotifier.java
index 8d3ed4c..9dffe50 100644
--- a/src/com/android/services/telephony/IncomingCallNotifier.java
+++ b/src/com/android/services/telephony/PstnIncomingCallNotifier.java
@@ -23,6 +23,7 @@
 import android.os.AsyncResult;
 import android.os.Handler;
 import android.os.Message;
+import android.os.UserHandle;
 import android.telecomm.CallService;
 import android.telecomm.CallServiceDescriptor;
 import android.telecomm.TelecommConstants;
@@ -39,16 +40,13 @@
  * Listens to incoming-call events from the associated phone object and notifies Telecomm upon each
  * occurence. One instance of these exists for each of the telephony-based call services.
  */
-final class IncomingCallNotifier {
+final class PstnIncomingCallNotifier {
     /** New ringing connection event code. */
     private static final int EVENT_NEW_RINGING_CONNECTION = 100;
 
     /** The phone proxy object to listen to. */
     private final PhoneProxy mPhoneProxy;
 
-    /** The phone type for this incoming call notifier. */
-    private final int mPhoneType;
-
     /**
      * The base phone implementation behind phone proxy. The underlying phone implementation can
      * change underneath when the radio technology changes. We listen for these events and update
@@ -57,9 +55,6 @@
      */
     private Phone mPhoneBase;
 
-    /** The class for the associated call service. */
-    private final Class<? extends CallService> mCallServiceClass;
-
     /**
      * Used to listen to events from {@link #mPhoneBase}.
      */
@@ -95,17 +90,11 @@
     /**
      * Persists the specified parameters and starts listening to phone events.
      *
-     * @param callServiceClass The call service class.
-     * @param phoneType The type of phone this class should be listening to.
      * @param phoneProxy The phone object for listening to incoming calls.
      */
-    IncomingCallNotifier(
-            Class<? extends CallService> callServiceClass, int phoneType, PhoneProxy phoneProxy) {
-        Preconditions.checkNotNull(callServiceClass);
+    PstnIncomingCallNotifier(PhoneProxy phoneProxy) {
         Preconditions.checkNotNull(phoneProxy);
 
-        mCallServiceClass = callServiceClass;
-        mPhoneType = phoneType;
         mPhoneProxy = phoneProxy;
 
         registerForNotifications();
@@ -133,7 +122,7 @@
                 mPhoneBase.unregisterForNewRingingConnection(mHandler);
             }
 
-            if (newPhone != null && newPhone.getPhoneType() == mPhoneType) {
+            if (newPhone != null) {
                 Log.i(this, "Registering: %s", newPhone);
                 mPhoneBase = newPhone;
                 mPhoneBase.registerForNewRingingConnection(
@@ -167,7 +156,7 @@
         Context context = mPhoneProxy.getContext();
 
         CallServiceDescriptor.Builder builder = CallServiceDescriptor.newBuilder(context);
-        builder.setCallService(mCallServiceClass);
+        builder.setCallService(PstnConnectionService.class);
         builder.setNetworkType(CallServiceDescriptor.FLAG_PSTN);
 
         Intent intent = new Intent(TelecommConstants.ACTION_INCOMING_CALL);
@@ -175,6 +164,6 @@
         intent.putExtra(TelecommConstants.EXTRA_CALL_SERVICE_DESCRIPTOR, builder.build());
 
         Log.d(this, "Sending incoming call intent: %s", intent);
-        context.startActivity(intent);
+        context.startActivityAsUser(intent, UserHandle.CURRENT);
     }
 }
diff --git a/src/com/android/services/telephony/SipConnectionService.java b/src/com/android/services/telephony/SipConnectionService.java
index 7824274..465dba1 100644
--- a/src/com/android/services/telephony/SipConnectionService.java
+++ b/src/com/android/services/telephony/SipConnectionService.java
@@ -25,6 +25,7 @@
 import android.provider.Settings;
 import android.telephony.PhoneNumberUtils;
 
+import com.android.internal.telephony.Phone;
 import com.android.internal.telephony.PhoneFactory;
 import com.android.internal.telephony.sip.SipPhone;
 import com.android.phone.Constants;
@@ -47,7 +48,7 @@
     @Override
     public void onCreateConnections(
             ConnectionRequest request,
-            Response<ConnectionRequest, Connection> callback) {
+            OutgoingCallResponse callback) {
         new GetSipProfileTask(this, request, callback).execute();
         super.onCreateConnections(request, callback);
     }
@@ -64,23 +65,19 @@
     /** {@inheritDoc} */
     @Override
     protected boolean canCall(Uri handle) {
-        return canCall(this, handle);
-    }
-
-    // TODO: Refactor this out when CallServiceSelector is deprecated
-    /* package */ static boolean canCall(Context context, Uri handle) {
-        return shouldUseSipPhone(context, handle.getScheme(), handle.getSchemeSpecificPart());
+        return shouldUseSipPhone(handle.getScheme(), handle.getSchemeSpecificPart());
     }
 
     /** {@inheritDoc} */
     @Override
     protected TelephonyConnection onCreateTelephonyConnection(
             ConnectionRequest request,
+            Phone phone,
             com.android.internal.telephony.Connection connection) {
         return new SipConnection(connection);
     }
 
-    private static boolean shouldUseSipPhone(Context context, String scheme, String number) {
+    private boolean shouldUseSipPhone(String scheme, String number) {
         // Scheme must be "sip" or "tel".
         boolean isKnownCallScheme = Constants.SCHEME_TEL.equals(scheme)
                 || Constants.SCHEME_SIP.equals(scheme);
@@ -95,7 +92,7 @@
         }
 
         // Check SIP address only
-        SipSharedPreferences sipSharedPreferences = new SipSharedPreferences(context);
+        SipSharedPreferences sipSharedPreferences = new SipSharedPreferences(this);
         String callOption = sipSharedPreferences.getSipCallOption();
         boolean isRegularNumber = Constants.SCHEME_TEL.equals(scheme)
                 && !PhoneNumberUtils.isUriNumber(number);
@@ -104,7 +101,7 @@
         }
 
         // Check if no SIP profiles.
-        SipProfileDb sipProfileDb = new SipProfileDb(context);
+        SipProfileDb sipProfileDb = new SipProfileDb(this);
         if (sipProfileDb.getProfilesCount() == 0 && isRegularNumber) {
             return false;
         }
@@ -117,14 +114,14 @@
      */
     private class GetSipProfileTask extends AsyncTask<Void, Void, SipProfile> {
         private final ConnectionRequest mRequest;
-        private final Response<ConnectionRequest, Connection> mResponse;
+        private final OutgoingCallResponse mResponse;
         private final SipProfileDb mSipProfileDb;
         private final SipSharedPreferences mSipSharedPreferences;
 
         GetSipProfileTask(
                 Context context,
                 ConnectionRequest request,
-                Response<ConnectionRequest, Connection> response) {
+                OutgoingCallResponse response) {
             mRequest = request;
             mResponse = response;
             mSipProfileDb = new SipProfileDb(context);
@@ -152,7 +149,7 @@
     private void onSipProfileChosen(
             SipProfile profile,
             ConnectionRequest request,
-            Response<ConnectionRequest, Connection> response) {
+            OutgoingCallResponse response) {
         SipPhone phone = null;
         if (profile != null) {
             String sipUri = profile.getUriString();
diff --git a/src/com/android/services/telephony/TelephonyCallServiceProvider.java b/src/com/android/services/telephony/TelephonyCallServiceProvider.java
index a299913..cc89c0e 100644
--- a/src/com/android/services/telephony/TelephonyCallServiceProvider.java
+++ b/src/com/android/services/telephony/TelephonyCallServiceProvider.java
@@ -31,11 +31,7 @@
     public void lookupCallServices(CallServiceLookupResponse response) {
         ArrayList<CallServiceDescriptor> descriptors = new ArrayList<CallServiceDescriptor>();
         descriptors.add(CallServiceDescriptor.newBuilder(this)
-                   .setCallService(GsmConnectionService.class)
-                   .setNetworkType(CallServiceDescriptor.FLAG_PSTN)
-                   .build());
-        descriptors.add(CallServiceDescriptor.newBuilder(this)
-                   .setCallService(CdmaConnectionService.class)
+                   .setCallService(PstnConnectionService.class)
                    .setNetworkType(CallServiceDescriptor.FLAG_PSTN)
                    .build());
         descriptors.add(CallServiceDescriptor.newBuilder(this)
diff --git a/src/com/android/services/telephony/TelephonyCallServiceSelector.java b/src/com/android/services/telephony/TelephonyCallServiceSelector.java
deleted file mode 100644
index ef5d361..0000000
--- a/src/com/android/services/telephony/TelephonyCallServiceSelector.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.services.telephony;
-
-import android.telecomm.CallInfo;
-import android.telecomm.CallServiceDescriptor;
-import android.telecomm.CallServiceSelector;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Decides which call service should be used to place outgoing calls or to switch the call to.
- */
-public class TelephonyCallServiceSelector extends CallServiceSelector {
-
-    /** {@inheritDoc} */
-    @Override
-    protected void select(CallInfo callInfo, List<CallServiceDescriptor> descriptors) {
-        ArrayList<CallServiceDescriptor> selectedDescriptors =
-                new ArrayList<CallServiceDescriptor>();
-
-        CallServiceDescriptor descriptor = getDescriptor(descriptors, CdmaConnectionService.class);
-        if (descriptor != null) {
-            if (CdmaConnectionService.canCall(this, callInfo.getHandle())) {
-                selectedDescriptors.add(descriptor);
-            }
-        }
-        descriptor = getDescriptor(descriptors, GsmConnectionService.class);
-        if (descriptor != null) {
-            if (GsmConnectionService.canCall(this, callInfo.getHandle())) {
-                selectedDescriptors.add(descriptor);
-            }
-        }
-        descriptor = getDescriptor(descriptors, SipConnectionService.class);
-        if (descriptor != null) {
-            if (SipConnectionService.canCall(this, callInfo.getHandle())) {
-                selectedDescriptors.add(descriptor);
-            }
-        }
-
-        getAdapter().setSelectedCallServices(callInfo.getId(), selectedDescriptors);
-    }
-
-    private CallServiceDescriptor getDescriptor(
-            List<CallServiceDescriptor> descriptors, Class<?> clazz) {
-
-        for (CallServiceDescriptor descriptor : descriptors) {
-            if (!getPackageName().equals(descriptor.getServiceComponent().getPackageName())) {
-                continue;
-            }
-
-            if (clazz.getName().equals(descriptor.getServiceComponent().getClassName())) {
-                return descriptor;
-            }
-        }
-
-        return null;
-    }
-}
diff --git a/src/com/android/services/telephony/TelephonyCallVideoProvider.java b/src/com/android/services/telephony/TelephonyCallVideoProvider.java
new file mode 100644
index 0000000..6e0fafd
--- /dev/null
+++ b/src/com/android/services/telephony/TelephonyCallVideoProvider.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.services.telephony;
+
+import android.telecomm.CallVideoProvider;
+
+
+/**
+ * Implements the CallVideoProvider.
+ */
+public class TelephonyCallVideoProvider extends CallVideoProvider {
+
+    @Override
+    public void setCamera(String cameraId) {
+        // Stub, to be implemented.
+    }
+}
diff --git a/src/com/android/services/telephony/TelephonyConnection.java b/src/com/android/services/telephony/TelephonyConnection.java
index 43e72c8..f379347 100644
--- a/src/com/android/services/telephony/TelephonyConnection.java
+++ b/src/com/android/services/telephony/TelephonyConnection.java
@@ -124,7 +124,7 @@
     }
 
     @Override
-    protected void onSetAudioState(CallAudioState audioState) {
+    public void onSetAudioState(CallAudioState audioState) {
         // TODO: update TTY mode.
         if (mOriginalConnection != null) {
             Call call = mOriginalConnection.getCall();
diff --git a/src/com/android/services/telephony/TelephonyConnectionService.java b/src/com/android/services/telephony/TelephonyConnectionService.java
index 76d4291..a009bc8 100644
--- a/src/com/android/services/telephony/TelephonyConnectionService.java
+++ b/src/com/android/services/telephony/TelephonyConnectionService.java
@@ -19,6 +19,7 @@
 import android.net.Uri;
 import android.telephony.DisconnectCause;
 import android.telephony.ServiceState;
+import android.telecomm.Subscription;
 import android.text.TextUtils;
 
 import com.android.internal.telephony.CallStateException;
@@ -29,46 +30,28 @@
 import android.telecomm.ConnectionRequest;
 import android.telecomm.ConnectionService;
 import android.telecomm.Response;
-import android.telecomm.Subscription;
 
 import java.util.HashSet;
 import java.util.Set;
 
 /**
- * The parent class for telephony-based call services. Subclasses provide the specific phone (GSM,
- * CDMA, etc...) to use.
+ * The parent class for Android's built-in connection services.
  */
 public abstract class TelephonyConnectionService extends ConnectionService {
     private static final Set<com.android.internal.telephony.Connection> sKnownConnections
             = new HashSet<>();
 
-    /** {@inheritDoc} */
-    @Override
-    public void onFindSubscriptions(
-            Uri handle,
-            Response<Uri, Subscription> response) {
-        try {
-            respondWithResult(handle, response, canCall(handle) ? new Subscription() : null);
-        } catch (Exception e) {
-            respondWithError(
-                    handle,
-                    response,
-                    DisconnectCause.ERROR_UNSPECIFIED,  // Internal error
-                    "onFindSubscriptions error: " + e.toString());
-        }
-    }
-
     /**
      * Initiates the underlying Telephony call, then creates a {@link TelephonyConnection}
      * by calling
-     * {@link #createTelephonyConnection(ConnectionRequest,
-     *         com.android.internal.telephony.Connection)}
+     * {@link #createTelephonyConnection(
+     *         ConnectionRequest,Phone,com.android.internal.telephony.Connection)}
      * at the appropriate time. Should be called by the subclass.
      */
     protected void startCallWithPhone(
             Phone phone,
             ConnectionRequest request,
-            Response<ConnectionRequest, Connection> response) {
+            OutgoingCallResponse<Connection> response) {
         Log.d(this, "startCallWithPhone: %s.", request);
 
         if (phone == null) {
@@ -127,15 +110,15 @@
 
         try {
             final TelephonyConnection telephonyConnection =
-                    createTelephonyConnection(request, connection);
+                    createTelephonyConnection(request, phone, connection);
             respondWithResult(request, response, telephonyConnection);
 
-            final com.android.internal.telephony.Connection connectionCopy = connection;
+            final com.android.internal.telephony.Connection connectionFinal = connection;
             PostDialListener postDialListener = new PostDialListener() {
                 @Override
                 public void onPostDialWait() {
                     TelephonyConnectionService.this.onPostDialWait(telephonyConnection,
-                            connectionCopy.getRemainingPostDialString());
+                            connectionFinal.getRemainingPostDialString());
                 }
             };
             connection.addPostDialListener(postDialListener);
@@ -152,7 +135,7 @@
     private boolean checkServiceStateForOutgoingCall(
             Phone phone,
             ConnectionRequest request,
-            Response<ConnectionRequest, Connection> response) {
+            OutgoingCallResponse<Connection> response) {
         int state = phone.getServiceState().getState();
         switch (state) {
             case ServiceState.STATE_IN_SERVICE:
@@ -201,14 +184,6 @@
     }
 
     protected void respondWithResult(
-            Uri request,
-            Response<Uri, Subscription> response,
-            Subscription result) {
-        Log.d(this, "respondWithResult %s -> %s", request, result);
-        response.onResult(request, result);
-    }
-
-    protected void respondWithResult(
             ConnectionRequest request,
             Response<ConnectionRequest, Connection> response,
             Connection result) {
@@ -216,11 +191,29 @@
         response.onResult(request, result);
     }
 
+    protected void respondWithResult(
+            ConnectionRequest request,
+            OutgoingCallResponse<Connection> response,
+            Connection result) {
+        Log.d(this, "respondWithResult %s -> %s", request, result);
+        response.onSuccess(request, result);
+    }
+
+    protected void respondWithError(
+            ConnectionRequest request,
+            OutgoingCallResponse<Connection> response,
+            int errorCode,
+            String errorMsg) {
+        Log.d(this, "respondWithError %s: %d %s", request, errorCode, errorMsg);
+        response.onFailure(request, errorCode, errorMsg);
+    }
+
     protected final TelephonyConnection createTelephonyConnection(
             ConnectionRequest request,
+            Phone phone,
             final com.android.internal.telephony.Connection connection) {
         final TelephonyConnection telephonyConnection =
-                onCreateTelephonyConnection(request, connection);
+                onCreateTelephonyConnection(request, phone, connection);
         sKnownConnections.add(connection);
         telephonyConnection.addConnectionListener(new Connection.ListenerBase() {
             @Override
@@ -251,11 +244,13 @@
      * Create a Telephony-specific {@link Connection} object.
      *
      * @param request A request for creating a {@link Connection}.
+     * @param phone A {@code Phone} object to use.
      * @param connection An underlying Telephony {@link com.android.internal.telephony.Connection}
      *         to use.
      * @return A new {@link TelephonyConnection}.
      */
     protected abstract TelephonyConnection onCreateTelephonyConnection(
             ConnectionRequest request,
+            Phone phone,
             com.android.internal.telephony.Connection connection);
 }
diff --git a/src/com/android/services/telephony/TelephonyGlobals.java b/src/com/android/services/telephony/TelephonyGlobals.java
index 60389bf..22346b7 100644
--- a/src/com/android/services/telephony/TelephonyGlobals.java
+++ b/src/com/android/services/telephony/TelephonyGlobals.java
@@ -18,7 +18,6 @@
 
 import android.content.Context;
 
-import com.android.internal.telephony.PhoneConstants;
 import com.android.internal.telephony.PhoneFactory;
 import com.android.internal.telephony.PhoneProxy;
 
@@ -35,11 +34,8 @@
     /** The application context. */
     private final Context mContext;
 
-    /** Handles incoming calls for GSM. */
-    private IncomingCallNotifier mGsmIncomingCallNotifier;
-
-    /** Handles incoming calls for CDMA. */
-    private IncomingCallNotifier mCdmaIncomingCallNotifier;
+    /** Handles incoming calls for PSTN calls. */
+    private PstnIncomingCallNotifier mPtsnIncomingCallNotifier;
 
     /**
      * Persists the specified parameters.
@@ -61,13 +57,8 @@
         PhoneProxy defaultPhone = (PhoneProxy) PhoneFactory.getDefaultPhone();
         Log.i(this, "Default phone: %s.", defaultPhone);
 
-        Log.i(this, "Registering the GSM listener.");
-        mGsmIncomingCallNotifier = new IncomingCallNotifier(
-                GsmConnectionService.class, PhoneConstants.PHONE_TYPE_GSM, defaultPhone);
-
-        Log.i(this, "Registering the CDMA listener.");
-        mCdmaIncomingCallNotifier = new IncomingCallNotifier(
-                CdmaConnectionService.class, PhoneConstants.PHONE_TYPE_CDMA, defaultPhone);
+        Log.i(this, "Registering the PSTN listener.");
+        mPtsnIncomingCallNotifier = new PstnIncomingCallNotifier(defaultPhone);
 
         // TODO(santoscordon): Do SIP.  SIP will require a slightly different solution since it
         // doesn't have a phone object in the same way as PSTN calls. Additionally, the user can
diff --git a/tests/src/com/android/phone/unit/CnapTest.java b/tests/src/com/android/phone/CnapTest.java
similarity index 100%
rename from tests/src/com/android/phone/unit/CnapTest.java
rename to tests/src/com/android/phone/CnapTest.java