Merge "Pass voicemail: URIs directly to Telephony. Rename handle -> number" into lmp-dev
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index 158c252..3b13384 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"Vra elke keer"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"Moenie Wi-Fi vir oproepe gebruik nie"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"Hierdie gebruiker word nie toegelaat om nienood-foonoproepe te maak nie"</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"Oproep nie gestuur nie; geen geldige nommer is ingevoer nie."</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"Vermiste stemboodskapnommer"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"Geen stemboodskapnommer is op die SIM-kaart gestoor nie."</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"Voeg nommer by"</string>
 </resources>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index 53a608c..9933742 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"ሁልጊዜ ጊዜ ጠይቅ"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"የWi-Fi ጥሪ አይጠቀሙ"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"ይህ ተጠቃሚ የአስቸኳይ አደጋ ያልሆኑ ስልክ ጥሪዎችን እንዲያደርጉ አልተፈቀደላቸውም"</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"ጥሪ አልተላከም፣ ትክክለኛ ቁጥር አልገባም።"</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"የድምፅመልዕክት ቁጥርአመለጠ"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"በSIM ካርዱ ላይምንም የድምፅመልዕክት ቁጥር አልከተቀመጠም።"</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"ቁጥር አክል"</string>
 </resources>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 0943943..70f222c 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"الطلب في كل مرة"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"‏عدم استخدام الاتصال عبر Wi-Fi"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"هذا المستخدم غير مسموح له بإجراء مكالمات هاتفية بخلاف مكالمات الطوارئ"</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"لم يتم إرسال الاتصال، لم يتم إدخال رقم صالح."</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"رقم البريد الصوتي مفقود"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"‏لم يتم تخزين رقم بريد صوتي على بطاقة SIM."</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"إضافة رقم"</string>
 </resources>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index b9ffa44..98ed67c 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"Извеждане на запитване всеки път"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"Без използване на обаждане през Wi-Fi"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"На този потребител е разрешено да провежда само спешни обаждания"</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"Обаждането не е изпратено, не е въведен валиден номер."</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"Липсващ номер на гласова поща"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"На SIM картата няма съхранен номер за гласова поща."</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"Добавяне на номер"</string>
 </resources>
diff --git a/res/values-bn-rBD/strings.xml b/res/values-bn-rBD/strings.xml
index 9fc3317..20a58ad 100644
--- a/res/values-bn-rBD/strings.xml
+++ b/res/values-bn-rBD/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"প্রতিবার জিজ্ঞাসা করুন"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"Wi-Fi কলিং ব্যবহার করবেন না"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"জরুরী নয় এমন ফোন কল করার জন্য ব্যবহারকারী অনুমতি পাননি"</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"কল করা যায়নি, কোনো বৈধ নম্বর লেখা হয়নি।"</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"ভয়েসমেল নম্বর অনুপস্থিত"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"SIM কার্ডটিতে কোনো ভয়েসমেল নম্বর সংরক্ষিত নেই৷"</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"একটি নম্বর যোগ করুন"</string>
 </resources>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index 9f9fdbf..3ea01f0 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"Pregunta sempre"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"No facis servir les trucades mitjançant Wi-Fi"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"Aquest usuari no pot fer trucades que no siguin d\'emergència."</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"No s\'ha enviat la trucada perquè no s\'ha introduït cap número vàlid."</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"Falta el número de correu de veu"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"No hi ha cap número de correu de veu emmagatzemat a la targeta SIM."</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"Afegeix número"</string>
 </resources>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index ee20fc4..996f241 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"Vždy se dotázat"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"Nepoužívat volání pomocí Wi-Fi"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"Uživatel smí uskutečňovat pouze tísňová volání."</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"Hovor nelze spojit, nebylo zadáno platné číslo."</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"Chybí číslo hlasové schránky"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"Na SIM kartě není uloženo žádné číslo hlasové schránky."</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"Přidat číslo"</string>
 </resources>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 7179b2f..d329ec3 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"Spørg hver gang"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"Brug ikke Wi-Fi-opkald"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"Denne bruger har kun tilladelse til at foretage nødopkald"</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"Opkaldet kunne ikke sendes. Der blev ikke indtastet et gyldigt nummer."</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"Telefonsvarernummer mangler"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"Der er ikke gemt noget telefonsvarernummer på SIM-kortet."</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"Tilføj nummer"</string>
 </resources>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 92ef8a6..f31124d 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"Jedes Mal fragen"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"Keine WLAN-Anrufe nutzen"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"Dieser Nutzer darf abgesehen von Notrufen keine Anrufe tätigen."</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"Anruf nicht verbunden; keine gültige Nummer eingegeben."</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"Fehlende Mailbox-Nummer"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"Auf der SIM-Karte ist keine Mailbox-Nummer gespeichert."</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"Nummer hinzufügen"</string>
 </resources>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index 0072977..6283f37 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"Ερώτηση κάθε φορά"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"Να μη χρησιμοποιείται η κλήση μέσω Wi-Fi"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"Δεν επιτρέπεται σε αυτόν το χρήστη να πραγματοποιεί τηλεφωνικές κλήσεις οι οποίες δεν είναι εκτάκτου ανάγκης"</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"Η κλήση δεν πραγματοποιήθηκε, δεν έγινε εισαγωγή έγκυρου αριθμού."</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"Λείπει ο αριθμός αυτόματου τηλεφωνητή"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"Δεν έχει αποθηκευτεί αριθμός για τον αυτόματο τηλεφωνητή στην κάρτα SIM."</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"Προσθήκη αριθμού"</string>
 </resources>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index a4f625b..8ecf761 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"Ask every time"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"Do not use Wi-Fi calling"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"This user is not allowed to make non-emergency phone calls"</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"Call not sent. No valid number entered."</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"Missing voicemail number"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"No voicemail number is stored on the SIM card."</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"Add number"</string>
 </resources>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index a4f625b..8ecf761 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"Ask every time"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"Do not use Wi-Fi calling"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"This user is not allowed to make non-emergency phone calls"</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"Call not sent. No valid number entered."</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"Missing voicemail number"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"No voicemail number is stored on the SIM card."</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"Add number"</string>
 </resources>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 2c4f49c..e31d1a2 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"Preguntar siempre"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"No utilizar llamadas por Wi-Fi"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"Este usuario solo tiene permisos para hacer llamadas de emergencia."</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"Llamada no enviada. No se ingresó un número válido."</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"Falta el número de correo de voz"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"No hay un número de correo de voz almacenado en la tarjeta SIM."</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"Agregar número"</string>
 </resources>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 67440a3..c17fdf2 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"Preguntar siempre"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"No usar llamadas Wi-Fi"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"Este usuario solo puede realizar llamadas de emergencia"</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"No se ha enviado la llamada; el número introducido no es válido."</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"Falta el número del buzón de voz."</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"No se ha almacenado ningún número de buzón de voz en la tarjeta SIM."</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"Añadir número"</string>
 </resources>
diff --git a/res/values-et-rEE/strings.xml b/res/values-et-rEE/strings.xml
index 06736fd..20e1aaa 100644
--- a/res/values-et-rEE/strings.xml
+++ b/res/values-et-rEE/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"Küsi iga kord"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"Ära kasuta WiFi-kõnesid"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"See kasutaja võib teha ainult hädaabikõnesid"</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"Kõnet ei tehtud, sisestati kehtetu number."</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"Puudub kõnepostinumber"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"SIM-kaardile pole salvestatud ühtegi kõnepostinumbrit."</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"Lisa number"</string>
 </resources>
diff --git a/res/values-eu-rES/strings.xml b/res/values-eu-rES/strings.xml
index b194e6e..0a44223 100644
--- a/res/values-eu-rES/strings.xml
+++ b/res/values-eu-rES/strings.xml
@@ -36,10 +36,14 @@
     <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"Erantzun bizkorra"</string>
     <string name="respond_via_sms_menu_reset_default_activity" msgid="1461742052902053466">"Berrezarri aplik. lehenetsia"</string>
     <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"Mezua bidali da <xliff:g id="PHONE_NUMBER">%s</xliff:g> zenbakira."</string>
-    <string name="phone_account_preferences_title" msgid="5042332049625236956">"Telefonoaren kontuaren ezarpenak"</string>
+    <string name="phone_account_preferences_title" msgid="5042332049625236956">"Telefonoko kontuaren ezarpenak"</string>
     <string name="default_outgoing_account_title" msgid="8261079649574578970">"Irteerako kontu lehenetsia"</string>
     <string name="sim_call_manager_account" msgid="2559930293628077755">"Wi-Fi bidezko deiak egiteko kontua"</string>
     <string name="account_ask_every_time" msgid="944077828070287407">"Galdetu beti"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"Ez erabili Wi-Fi bidezko deiak"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"Erabiltzaile honek ez du larrialdietakoak ez diren telefono-deiak egiteko baimenik"</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"Ez da deia egin ez delako baliozko zenbakirik idatzi."</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"Erantzungailuaren zenbakia falta da"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"Ez da erantzungailuaren zenbakirik gorde SIM txartelean."</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"Gehitu zenbakia"</string>
 </resources>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index ccbf993..8078fa4 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"هر بار پرسیده شود"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"‏از تماس تلفنی با Wi-Fi استفاده نشود"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"این کاربر اجازه برقراری تماس‌های تلفنی غیر اضطراری ندارد."</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"تماس ارسال نشد، هیچ شماره معتبری وارد نشده است."</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"عدم وجود شماره پست صوتی"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"شماره پست صوتی در سیم کارت ذخیره نشده است."</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"افزودن شماره"</string>
 </resources>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index b7344f9..b7713bb 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"Kysy aina"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"Älä käytä puheluihin Wi-Fiä"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"Tämä käyttäjä saa soittaa vain hätäpuheluita"</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"Puhelua ei soitettu, et antanut kelvollista numeroa."</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"Puhelinvastaajan numero puuttuu"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"SIM-kortille ei ole tallennettu puhelinvastaajan numeroa."</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"Lisää numero"</string>
 </resources>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index f0b2319..f7935d6 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"Toujours demander"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"Ne pas utiliser les appels par Wi-Fi"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"Cet utilisateur n\'est pas autorisé à faire des appels téléphoniques non urgents"</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"L\'appel n\'a pas été effectué, car le numéro entré n\'est pas valide."</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"Numéro de messagerie vocale manquant"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"Aucun numéro de messagerie vocale n\'est enregistré sur la carte SIM."</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"Ajouter un numéro"</string>
 </resources>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index f58d6cb..9bea305 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"Toujours demander"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"Ne pas utiliser les appels Wi-Fi"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"Cet utilisateur n\'est autorisé à effectuer que des appels d\'urgence."</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"L\'appel n\'a pas été effectué. Aucun numéro valide n\'a été saisi."</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"Numéro de messagerie vocale manquant"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"Aucun numéro de messagerie vocale n\'est enregistré sur la carte SIM."</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"Ajouter un numéro"</string>
 </resources>
diff --git a/res/values-gl-rES/strings.xml b/res/values-gl-rES/strings.xml
index f75da28..66f4ac4 100644
--- a/res/values-gl-rES/strings.xml
+++ b/res/values-gl-rES/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"Preguntar sempre"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"Non utilizar as chamadas wifi"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"Este usuario non ten permiso para facer chamadas telefónicas que non sexan de emerxencia"</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"Chamada non enviada; o número introducido non é válido."</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"Falta o número de correo de voz"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"Non hai ningún número de correo de voz almacenado na tarxeta SIM."</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"Engadir número"</string>
 </resources>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index 5d71149..ee242e3 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"हर बार पूछें"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"वाई-फ़ाई  कॉलिंग का उपयोग न करें"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"इस उपयोगकर्ता को गैर-आपातकालीन फ़ोन कॉल करने की अनुमति नहीं है"</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"कॉल नहीं भेजा गया, कोई मान्य नंबर नहीं डाला गया था."</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"गुम ध्वनिमेल नंबर"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"सिम कार्ड पर कोई ध्वनिमेल नंबर संग्रहीत नहीं है."</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"नंबर जोड़ें"</string>
 </resources>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index 9aec86a..adf4033 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"Pitaj svaki put"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"Ne upotrebljavaj Wi-Fi pozive"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"Ovaj korisnik smije uspostavljati samo hitne pozive"</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"Poziv nije uspostavljen, nije unesen važeći broj."</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"Nedostaje broj govorne pošte"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"Na SIM kartici nije spremljen broj govorne pošte."</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"Dodaj broj"</string>
 </resources>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index 5291f45..136bb7e 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"Mindig rákérdez"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"Ne használja a Wi-Fi-hívást"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"Ez a felhasználó csak vészhelyzeti telefonhívásokat kezdeményezhet"</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"A hívás indítása érvénytelen szám beírása miatt nem történt meg."</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"Hiányzik a hangposta száma"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"Nincs hangpostaszám a SIM kártyán."</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"Szám hozzáadása"</string>
 </resources>
diff --git a/res/values-hy-rAM/strings.xml b/res/values-hy-rAM/strings.xml
index 9113650..68eb9c4 100644
--- a/res/values-hy-rAM/strings.xml
+++ b/res/values-hy-rAM/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"Հարցնել ամեն անգամ"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"Չօգտագործել Wi-Fi զանգերը"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"Այս օգտվողին չի թույլատրվում կատարել ոչ արտակարգ զանգեր"</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"Զանգը չի կատարվել, անվավեր համար է մուտքագրված:"</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"Բացակայում է ձայնային փոստի համարը"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"SIM քարտում ձայնային փոստի ոչ մի համար գրանցված չէ:"</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"Ավելացնել համար"</string>
 </resources>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index 45a3ec4..6f35ca1 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"Tanyakan setiap kali"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"Jangan gunakan panggilan Wi-Fi"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"Pengguna ini tidak diizinkan untuk membuat panggilan telepon non-darurat"</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"Panggilan tidak terkirim, tidak ada nomor valid yang dimasukkan."</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"Nomor kotak pesan hilang"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"Tidak ada nomor kotak pesan tersimpan pada kartu SIM."</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"Tambahkan nomor"</string>
 </resources>
diff --git a/res/values-is-rIS/strings.xml b/res/values-is-rIS/strings.xml
index 8c37bd3..7346c6f 100644
--- a/res/values-is-rIS/strings.xml
+++ b/res/values-is-rIS/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"Spyrja í hvert skipti"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"Ekki nota Wi-Fi símtöl"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"Þessi notandi hefur ekki leyfi til að hringja símtöl önnur en neyðarsímtöl"</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"Símtalið var ekki sent. Ekki var slegið inn gilt símanúmer."</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"Talhólfsnúmer vantar"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"Ekkert talhólfsnúmer er vistað á SIM-kortinu."</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"Bæta númeri við"</string>
 </resources>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 450f17d..045fc49 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"Chiedi ogni volta"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"Non utilizzare chiamate Wi-Fi"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"Questo utente non è autorizzato a fare telefonate diverse da quelle di emergenza"</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"Chiamata non inviata. Nessun numero valido inserito."</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"Numero segreteria mancante"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"Nessun numero di segreteria presente nella SIM."</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"Aggiungi numero"</string>
 </resources>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 13ebe2f..508a337 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"שאל בכל פעם"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"‏אל תשתמש בשיחות ב-Wi-Fi"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"משתמש זה אינו רשאי לבצע שיחות טלפון שאינן שיחות חירום"</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"השיחה לא נשלחה. לא הוזן מספר חוקי."</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"חסר מספר של דואר קולי"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"‏בכרטיס ה-SIM לא מאוחסן מספר של דואר קולי."</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"הוסף מספר"</string>
 </resources>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 4e8f2ef..a014577 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"その都度確認"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"Wi-Fi発信を使用しない"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"このユーザーは緊急通報以外の通話は発信できません"</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"発信できません。有効な番号が入力されていません。"</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"ボイスメール番号がありません"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"SIMカードにボイスメールの番号がありません。"</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"番号を追加"</string>
 </resources>
diff --git a/res/values-ka-rGE/strings.xml b/res/values-ka-rGE/strings.xml
index a5b7315..fe21816 100644
--- a/res/values-ka-rGE/strings.xml
+++ b/res/values-ka-rGE/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"მკითხე ყოველ ჯერზე"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"Wi-Fi დარეკვა არ გამოიყენო"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"ამ მომხმარებელს არ აქვს უფლება, განახორციელოს არასაგანგებო სატელეფონო ზარები."</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"ვერ გაიგზავნა, ტელეფონის ნომერი სწორად არ იქნა შეყვანილი."</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"ხმოვანი ფოსტის ნომერი არ არის"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"SIM ბარათზე ხმოვანი ფოსტის ნომერი შენახული არ არის."</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"ნომრის დამატება"</string>
 </resources>
diff --git a/res/values-kk-rKZ/strings.xml b/res/values-kk-rKZ/strings.xml
index 921c40c..6f4547a 100644
--- a/res/values-kk-rKZ/strings.xml
+++ b/res/values-kk-rKZ/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"Әр қоңырау үшін сұрау"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"Wi-Fi қоңырауларын пайдаланбау"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"Бұл пайдаланушыға жедел емес қоңырауларды шалуға рұқсат етілмеген"</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"Қоңырау жіберілмеді, енгізілген нөмір жарамсыз."</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"Дауыс хабарының нөмірі жоқ"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"SIM картасында ешқандай дауыс хабарының нөмірі сақталмаған."</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"Нөмір қосу"</string>
 </resources>
diff --git a/res/values-km-rKH/strings.xml b/res/values-km-rKH/strings.xml
index 9d4c9e9..d442256 100644
--- a/res/values-km-rKH/strings.xml
+++ b/res/values-km-rKH/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"សួរ​ជានិច្ច"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"កុំ​ប្រើ​ការ​ហៅ​តាម​វ៉ាយហ្វាយ"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"អ្នក​ប្រើ​ម្នាក់​នេះ​មិន​ត្រូវ​បាន​អនុញ្ញាត​ឲ្យ​បង្កើត​កា​រ​ហៅ​ទូរស័ព្ទ​ពេល​មិន​អាសន្ន"</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"មិន​បាន​ផ្ញើ​ការ​ហៅ បាន​បញ្ចូល​លេខ​​​មិន​ត្រឹមត្រូវ។"</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"បាត់​​ចំនួន​​សារ​ជា​សំឡេង"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"គ្មាន​ចំនួន​សារ​ជា​សំឡេង​​ត្រូវ​បាន​រក្សា​ទុក​នៅ​លើ​ស៊ី​ម​កាត​ទេ​។"</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"បន្ថែម​លេខ"</string>
 </resources>
diff --git a/res/values-kn-rIN/strings.xml b/res/values-kn-rIN/strings.xml
index 5109406..f3c577f 100644
--- a/res/values-kn-rIN/strings.xml
+++ b/res/values-kn-rIN/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"ಪ್ರತಿ ಬಾರಿ ಕೇಳಿ"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"Wi-Fi ಕರೆ ಮಾಡುವಿಕೆಯನ್ನು ಬಳಸಬೇಡಿ"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"ತುರ್ತುಸ್ಥಿತಿಯಲ್ಲದ ಫೋನ್‌ ಕರೆಗಳನ್ನು ಮಾಡಲು ಈ ಬಳಕೆದಾರರನ್ನು ಅನುಮತಿಸಲಾಗುವುದಿಲ್ಲ"</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"ಕರೆ ಮಾಡಲಾಗಿಲ್ಲ, ಯಾವುದೇ ಮಾನ್ಯವಾದ ಸಂಖ್ಯೆಯನ್ನು ನಮೂದಿಸಿಲ್ಲ."</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"ಧ್ವನಿಮೇಲ್‌ ಸಂಖ್ಯೆಯು ಕಾಣೆಯಾಗಿದೆ"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"SIM ಕಾರ್ಡ್‌ನಲ್ಲಿ ಯಾವುದೇ ಧ್ವನಿಮೇಲ್‌ ಸಂಖ್ಯೆಯನ್ನು ಸಂಗ್ರಹಿಸಿಲ್ಲ."</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"ಸಂಖ್ಯೆಯನ್ನು ಸೇರಿಸಿ"</string>
 </resources>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 3061ca6..4ffb4d4 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"항상 확인"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"Wi-Fi 통화 사용 안함"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"일반 전화를 걸 수 없는 사용자입니다."</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"잘못된 번호를 입력했으므로 전화를 걸지 못했습니다."</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"음성사서함 번호 없음"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"SIM 카드에 저장된 음성사서함 번호가 없습니다."</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"번호 추가"</string>
 </resources>
diff --git a/res/values-ky-rKG/strings.xml b/res/values-ky-rKG/strings.xml
index 064a0d1..2155c8c 100644
--- a/res/values-ky-rKG/strings.xml
+++ b/res/values-ky-rKG/strings.xml
@@ -51,4 +51,11 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"Чалган сайын сурасын"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"Wi-Fi чалуу колдонулбасын"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"Бул колдонуучу шашылыш эмес чалууларды аткара албайт"</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"Чалуу жөнөтүлгөн жок, жарактуу номер киргизилген жок."</string>
+    <!-- no translation found for no_vm_number (4164780423805688336) -->
+    <skip />
+    <!-- no translation found for no_vm_number_msg (1300729501030053828) -->
+    <skip />
+    <!-- no translation found for add_vm_number_str (4676479471644687453) -->
+    <skip />
 </resources>
diff --git a/res/values-lo-rLA/strings.xml b/res/values-lo-rLA/strings.xml
index ef91c84..6ff0fe5 100644
--- a/res/values-lo-rLA/strings.xml
+++ b/res/values-lo-rLA/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"​ຖາມ​ທຸກ​ເທື່ອ"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"ບໍ່​ໃຊ້ການ​ໂທ​ດ້ວຍ Wi-Fi"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"ຜູ່​ໃຊ້​ນີ້ບໍ່​ໄດ້​ຮັບ​ອະ​ນຸ​ຍາດ​ໃຫ້​ໂທ​ສຸກ​ເສີນ​ໄດ້"</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"ບໍ່ໄດ້ໂທເທື່ອ, ເບີໂທທີ່ລະບຸບໍ່ຖືກຕ້ອງ."</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"ບໍ່ມີເບີຂໍ້ຄວາມສຽງ"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"ບໍ່ມີເບີຂໍ້ຄວາມສຽງຖືກບັນທຶກໃນ SIM card."</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"ເພີ່ມໝາຍເລກ"</string>
 </resources>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index 8772dcf..8e5b7f4 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"Klausti kaskart"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"Nenaudoti „Wi-Fi“ skambinimo"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"Šiam naudotojui leidžiama vykdyti tik skambučius pagalbos numeriais"</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"Skambutis neatliktas; įvestas netinkamas numeris."</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"Trūksta balso pašto numerio"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"SIM kortelėje nėra išsaugoto balso pašto numerio."</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"Pridėti numerį"</string>
 </resources>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index e0f37aa..70d3566 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"Jautāt katru reizi"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"Neizmantot Wi-Fi zvanus"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"Šim lietotājam nav atļauts veikt ārkārtas tālruņa zvanus."</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"Zvans nav nosūtīts; nav ievadīts derīgs numurs."</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"Trūkst balss pasta numura"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"SIM kartē neviens balss pasta numurs nav saglabāts."</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"Pievienot numuru"</string>
 </resources>
diff --git a/res/values-mk-rMK/strings.xml b/res/values-mk-rMK/strings.xml
index 52df23f..717266d 100644
--- a/res/values-mk-rMK/strings.xml
+++ b/res/values-mk-rMK/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"Секогаш прашај"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"Не користи повикување преку Wi-Fi"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"Корисникот нема дозвола да прави телефонски повици ако не е итно"</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"Повикот не се поврза, внесен е неважечки број."</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"Недостасува број на говорна пошта"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"Нема мемориран број на говорна пошта на СИМ картичката."</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"Додај број"</string>
 </resources>
diff --git a/res/values-ml-rIN/strings.xml b/res/values-ml-rIN/strings.xml
index 3e8d420..1f5a0dc 100644
--- a/res/values-ml-rIN/strings.xml
+++ b/res/values-ml-rIN/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"ഓരോ തവണയും ചോദിക്കുക"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"Wi-Fi കോൾ ചെയ്യൽ ഉപയോഗിക്കരുത്"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"അത്യാവശ്യമല്ലാത്ത ഫോൺ കോളുകൾ ചെയ്യാൻ ഈ ഉപയോക്താവിനെ അനുവദിക്കുന്നില്ല"</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"കോൾ ചെയ്യാനായില്ല, സാധുവായ നമ്പറൊന്നും നൽകിയിട്ടില്ല."</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"വോയ്‌സ്മെയിൽ നമ്പർ കാണുന്നില്ല"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"SIM കാർഡിൽ വോയ്‌സ്‌മെയിൽ നമ്പറൊന്നും സംഭരിച്ചിട്ടില്ല."</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"നമ്പർ ചേർക്കുക"</string>
 </resources>
diff --git a/res/values-mn-rMN/strings.xml b/res/values-mn-rMN/strings.xml
index 18fc55e..59a5130 100644
--- a/res/values-mn-rMN/strings.xml
+++ b/res/values-mn-rMN/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"Тухай бүрт асуух"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"Wi-Fi дуудлага бүү ашиглана уу"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"Энэ хэрэглэгч нь яаралтай бус утасны дуудлага хийх эрхгүй"</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"Дуудлага илгээгдсэнгүй, зөв дугаар оруулаагүй байна."</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"Дуут шуудангийн дугаар байхгүй"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"SIM карт дээр дуут шуудангийн дугаар хадгалагдаагүй байна."</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"Дугаар нэмэх"</string>
 </resources>
diff --git a/res/values-mr-rIN/strings.xml b/res/values-mr-rIN/strings.xml
index c04c823..332a379 100644
--- a/res/values-mr-rIN/strings.xml
+++ b/res/values-mr-rIN/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"प्रत्येक वेळी विचारा"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"Wi-Fi कॉल करणे वापरू नका"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"या वापरकर्त्यास आणीबाणी-नसलेले फोन कॉल करण्‍याची अनुमती नाही"</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"कॉल पाठविला नाही, वैध नंबर प्रविेष्‍ट केला नाही."</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"व्हॉइसमेल नंबर गहाळ"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"सिम कार्डवर कोणताही व्हॉइसमेल नंबर संचयित केला नाही."</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"नंबर जोडा"</string>
 </resources>
diff --git a/res/values-ms-rMY/strings.xml b/res/values-ms-rMY/strings.xml
index a3c49cc..eb24231 100644
--- a/res/values-ms-rMY/strings.xml
+++ b/res/values-ms-rMY/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"Tanya setiap kali"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"Jangan gunakan panggilan Wi-Fi"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"Pengguna ini tidak dibenarkan membuat panggilan telefon bukan kecemasan"</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"Panggilan tidak dihantar, tiada nombor yang sah dimasukkan."</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"Nombor mel suara tiada"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"Tidak ada nombor mel suara disimpan pada kad SIM."</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"Tambah nombor"</string>
 </resources>
diff --git a/res/values-my-rMM/strings.xml b/res/values-my-rMM/strings.xml
index 3742912..61fe870 100644
--- a/res/values-my-rMM/strings.xml
+++ b/res/values-my-rMM/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"အကြိမ်တိုင်းမှာ မေးရန်"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"ကြိုးမဲ့ ခေါ်ဆိုမှုကို မသုံးပါနှင့်"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"ဒီအသုံးပြုသူအား အရေးပေါ် မဟုတ်သည့် ဖုန်း ခေါ်ဆိုမှုများ လုပ်ခွင့် မပြုပါ"</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"ခေါ်ဆို မရခဲ့ပါ၊ ထည့်သွင်းခဲ့သည့် နံပါတ် မမှန်ပါ"</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"အသံစာပို့စနစ် နံပါတ် ပျောက်နေပါသည်"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"ဆင်းမ်ကဒ်ပေါ်တွင် အသံစာပို့စနစ် နံပါတ် သိမ်းဆည်ထားခြင်း မရှိပါ"</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"နံပါတ်ထပ်ထည့်ရန်"</string>
 </resources>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 17e6c8f..40ac0b9 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"Spør hver gang"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"Ikke bruk Wi-Fi-anrop"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"Denne brukeren har bare tillatelse til å ringe nødnumre"</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"Kunne ikke ringe. Du har ikke angitt et gyldig nummer."</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"Mangler nummer til telefonsvarer"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"Det er ikke lagret noe telefonsvarernummer på SIM-kortet."</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"Legg til nummer"</string>
 </resources>
diff --git a/res/values-ne-rNP/strings.xml b/res/values-ne-rNP/strings.xml
index 0fe8775..7e0e52f 100644
--- a/res/values-ne-rNP/strings.xml
+++ b/res/values-ne-rNP/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"प्रत्येक चोटि सोध्नुहोस्"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"वाइफाइ कल प्रयोग नगर्नुहोस्"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"यो प्रयोगकर्तालाई गैर-आकस्मिक फोन कल गर्न अनुमति छैन"</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"कल पठाइएन, सही नम्बर प्रविष्टि गरिएको छैन।"</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"भ्वाइसमेल नम्बर हराइरहेको छ"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"SIM कार्डमा कुनै पनि भ्वाइसमेल नम्बर भण्डारण भएको छैन।"</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"नम्बर थप्नुहोस्"</string>
 </resources>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index d1d579b..c189cd6 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"Altijd vragen"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"Bellen via wifi niet gebruiken"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"Het is deze gebruiker niet toegestaan niet-noodoproepen te plaatsen"</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"Oproep niet verzonden, geen geldig nummer ingevoerd."</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"Voicemailnummer ontbreekt"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"Er is geen voicemailnummer op de SIM-kaart opgeslagen."</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"Nummer toevoegen"</string>
 </resources>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index 6cacaca..325bdeb 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"Zawsze pytaj"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"Nie używaj połączeń Wi-Fi"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"Ten użytkownik nie ma uprawnień do połączeń innych niż alarmowe"</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"Połączenie niezrealizowane. Nie podano poprawnego numeru."</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"Brakuje numeru poczty głosowej"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"Na karcie SIM nie ma zapisanego numeru poczty głosowej."</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"Dodaj numer"</string>
 </resources>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index a2151ad..be1e1e2 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"Perguntar sempre"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"Não utilizar chamadas de Wi-Fi"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"Este utilizador não está autorizado a fazer chamadas telefónicas que não sejam de emergência"</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"A chamada não foi efetuada. Não foi introduzido um número válido."</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"Número do correio de voz em falta"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"Não existe um número de correio de voz armazenado no cartão SIM."</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"Adicionar número"</string>
 </resources>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 4f21e13..498f6e8 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"Perguntar sempre"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"Não usar chamadas por Wi-Fi"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"Este usuário não tem permissão para fazer chamadas não emergenciais pelo smartphone"</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"Chamada não enviada: nenhum número válido foi inserido."</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"Número correio de voz ausente"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"Não há um número correio de voz armazenado no cartão SIM."</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"Adicionar número"</string>
 </resources>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index 9b338ca..89e539a 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"Întreabă de fiecare dată"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"Nu utilizați apelurile Wi-Fi"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"Acest utilizator nu are permisiunea de a efectua apeluri telefonice către alte numere în afară de cele de urgență"</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"Apelul nu s-a trimis; niciun număr valid introdus."</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"Lipseşte numărul mesageriei vocale"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"Niciun număr de mesagerie vocală nu este stocat pe cardul SIM."</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"Adăugaţi numărul"</string>
 </resources>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 8c7095d..1136ce9 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"Всегда спрашивать"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"Не использовать Wi-Fi для звонков"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"Этот пользователь может звонить только в службы экстренной помощи"</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"Для вызова укажите действительный номер телефона."</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"Не указан номер голосовой почты"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"На SIM-карте нет ни одного номера голосовой почты."</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"Добавить номер"</string>
 </resources>
diff --git a/res/values-si-rLK/strings.xml b/res/values-si-rLK/strings.xml
index 91f9f29..0336368 100644
--- a/res/values-si-rLK/strings.xml
+++ b/res/values-si-rLK/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"සෑම වේලාවේම අසන්න"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"Wi-Fi ඇමතුම භාවිතා කරන්න එපා"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"හදිසි-නැති දුරකථන ඇමතුම් සිදුකිරීමට මෙම පරිශීලකයාට අවසර නොමැත"</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"ඇමතුම නොයැවිණි, වලංගු අංකයක් ඇතුලත් කර නැත."</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"හඬ තැපැල් අංකය නැත"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"SIM කාඩ් පතෙහි හඬ තැපැල් අංකයක් ආචිත වී නැත."</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"අංකයක් එක් කරන්න"</string>
 </resources>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index a9eae5f..a898af6 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"Vždy sa opýtať"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"Nepoužívať volanie prostredníctvom siete Wi-Fi"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"Tento používateľ smie uskutočňovať iba tiesňové hovory."</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"Hovor sa nepodarilo spojiť, nebolo zadané platné číslo."</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"Chýba číslo hlasovej schránky"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"Na karte SIM nie je uložené žiadne číslo hlasovej schránky."</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"Pridať číslo"</string>
 </resources>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index 2456650..54991b7 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"Vedno vprašaj"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"Ne uporabljaj klicanja prek povezave Wi-Fi"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"Temu uporabniku ni dovoljeno telefoniranje, razen klicev v sili"</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"Klic ni bil poslan, veljavna številka ni vnesena."</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"Manjkajoča številka glasovne pošte"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"Na kartici SIM ni shranjena številka glasovne pošte."</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"Dodaj številko"</string>
 </resources>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index 873b85e..a43e987 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"Питај сваки пут"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"Не користи Wi-Fi позивање"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"Овом кориснику није дозвољено да упућује телефонске позиве који нису хитни"</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"Позив није послат, није унет важећи број."</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"Недостаје број за говорну пошту"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"Није ускладиштен ниједан број говорне поште на SIM картици."</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"Додај број"</string>
 </resources>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 683411d..219bffd 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"Fråga varje gång"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"Använd inte Wi-Fi-samtal"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"Denna användare har inte tillåtelse att ringa icke-akuta samtal"</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"Samtalet har inte skickats. Du måste ange ett giltigt nummer."</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"Nummer till röstbrevlåda saknas"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"Det finns inget nummer till röstbrevlådan sparat på SIM-kortet."</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"Lägg till nummer"</string>
 </resources>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index 18b09cd..de4e530 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"Uliza kila wakati"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"Usitumie upigaji simu wa Wi-Fi"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"Mtumiaji huyu haruhusiwi kupiga simu zisizo za dharura"</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"Simu haijatumwa, hakuna nambari sahihi iliyowekwa."</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"Nambari ya sauti inayokosekana"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"Hakuna nambari ya ujumbe wa sauti iliyohifadhiwa katika SIM kadi."</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"Ongeza nambari"</string>
 </resources>
diff --git a/res/values-ta-rIN/strings.xml b/res/values-ta-rIN/strings.xml
index 5c50ffb..df9fbac 100644
--- a/res/values-ta-rIN/strings.xml
+++ b/res/values-ta-rIN/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"ஒவ்வொரு முறையும் கேள்"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"வைஃபை அழைப்பைப் பயன்படுத்தாதே"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"அவசரமற்ற ஃபோன் அழைப்புகளைச் செய்ய இவருக்கு அனுமதியில்லை"</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"அழைக்க முடியவில்லை, சரியான எண் உள்ளிடப்படவில்லை."</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"குரலஞ்சல் எண் இல்லை"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"சிம் கார்டில் குரலஞ்சலுக்கான எண் எதுவும் சேமிக்கப்படவில்லை."</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"எண்ணைச் சேர்"</string>
 </resources>
diff --git a/res/values-te-rIN/strings.xml b/res/values-te-rIN/strings.xml
index 627ed4a..bc1af17 100644
--- a/res/values-te-rIN/strings.xml
+++ b/res/values-te-rIN/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"ప్రతిసారి అడుగు"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"Wi-Fi కాలింగ్‌ను ఉపయోగించవద్దు"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"ఈ వినియోగదారుకి అత్యవసరం కాని ఫోన్ కాల్‌లు చేయడానికి అనుమతి లేదు"</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"కాల్ చేయలేరు, చెల్లుబాటు అయ్యే నంబర్ నమోదు చేయలేదు."</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"వాయిస్ మెయిల్ నంబర్ లేదు"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"SIM కార్డులో వాయిస్ మెయిల్ నంబర్ ఏదీ నిల్వ చేయబడలేదు."</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"నంబర్‌ను జోడించు"</string>
 </resources>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index a610398..968a955 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"ถามทุกครั้ง"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"ไม่ใช้การโทรผ่าน Wi-Fi"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"ไม่อนุญาตให้ผู้ใช้รายนี้ดำเนินการโทรที่ไม่ฉุกเฉิน"</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"ไม่ได้โทรออก ไม่ได้ป้อนหมายเลขที่ถูกต้อง"</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"ไม่มีหมายเลขข้อความเสียง"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"ไม่มีหมายเลขข้อความเสียงจัดเก็บอยู่ในซิมการ์ด"</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"เพิ่มหมายเลข"</string>
 </resources>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index c90db8b..a61453b 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"Magtanong palagi"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"Huwag gumamit ng pagtawag sa pamamagitan ng Wi-Fi"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"Hindi pinapahintulutan ang user na ito na gumawa ng mga hindi pang-emergency na tawag sa telepono"</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"Hindi naipadala ang tawag, walang inilagay na wastong numero."</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"Nawawala ang numero ng voicemail"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"Walang nakaimbak na numero ng voicemail sa SIM card."</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"Magdagdag ng numero"</string>
 </resources>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index 1d32d9b..6a4427d 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"Her zaman sor"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"Kablosuz çağrıyı kullanma"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"Bu kullanıcının acil olmayan telefon çağrıları yapmasına izin verilmiyor"</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"Çağrı gönderilmedi, geçerli bir numara girilmedi."</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"Eksik sesli mesaj numarası"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"SIM kartta depolanan sesli mesaj numarası yok."</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"Numara ekle"</string>
 </resources>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index a027a9f..76e8f19 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"Запитувати щоразу"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"Не використовувати дзвінки через Wi-Fi"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"Цьому користувачу не дозволено здійснювати звичайні телефонні дзвінки"</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"Дзвінок не відбувся, введіть дійсний номер."</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"Відстун. номер голос. пошти"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"На SIM-карті немає збереж. номерів голос. пошти."</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"Додати номер"</string>
 </resources>
diff --git a/res/values-ur-rPK/strings.xml b/res/values-ur-rPK/strings.xml
index 16b8bac..3d98a9c 100644
--- a/res/values-ur-rPK/strings.xml
+++ b/res/values-ur-rPK/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"ہر بار پوچھیں"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"‏Wi-Fi کالنگ کا استعمال نہ کریں"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"اس صارف کو غیر ہنگامی فون کالیں کرنے کی اجازت نہیں ہے"</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"کال نہیں بھیجی گئی، کوئی درست نمبر درج نہیں کیا گیا۔"</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"صوتی میل نمبر درج نہیں ہے"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"‏SIM کارڈ پر کوئی بھی صوتی میل نمبر اسٹور نہیں ہے۔"</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"نمبر شامل کریں"</string>
 </resources>
diff --git a/res/values-uz-rUZ/strings.xml b/res/values-uz-rUZ/strings.xml
index 6d259b3..876a783 100644
--- a/res/values-uz-rUZ/strings.xml
+++ b/res/values-uz-rUZ/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"Har safar so‘ralsin"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"Wi-Fi qo‘ng‘iroqlardan foydalanilmasin"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"Ushbu foydalanuvchiga favqulodda qo‘ng‘iroqlardan boshqa telefon qo‘ng‘iroqlarini amalga oshirish uchun ruxsat berilmagan"</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"Qo‘ng‘iroq amalga oshmadi, chunki raqam noto‘g‘ri kiritildi"</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"Javobsiz ovozli xabar raqami"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"SIM kartada birorta ham ovozli xabar saqlanmagan."</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"Raqam qo‘shish"</string>
 </resources>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index d53148e..ea5aa9e 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"Luôn hỏi"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"Không sử dụng tính năng gọi qua Wi-Fi"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"Người dùng này không được phép thực hiện cuộc gọi điện thoại không khẩn cấp"</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"Không gọi được, bạn đã nhập số không hợp lệ."</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"Thiếu số thư thoại"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"Không có số thư thoại nào được lưu trữ trên thẻ SIM."</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"Thêm số điện thoại"</string>
 </resources>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 4a5ad27..bcfa47b 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"每次都询问"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"不使用WLAN通话功能"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"此用户无权拨打非紧急呼救电话"</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"拨号失败,因为输入的号码无效。"</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"缺少语音信箱号码"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"SIM卡上未存储语音信箱号码。"</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"添加号码"</string>
 </resources>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index 26516e4..2b1ed21 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"每次都詢問"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"不要使用 Wi-Fi 通話功能"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"這位使用者只可撥打緊急電話"</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"無法傳送,輸入的號碼無效。"</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"未填留言信箱號碼"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"SIM 卡中沒有儲存任何留言信箱號碼。"</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"新增電話號碼"</string>
 </resources>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 33dd66f..bd1299e 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"每次都詢問"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"不使用 Wi-Fi 通話功能"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"這位使用者只能撥打緊急電話"</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"輸入的號碼無效,無法撥出。"</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"遺失語音信箱號碼"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"SIM 卡中未儲存語音信箱號碼。"</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"新增號碼"</string>
 </resources>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index 087e92c..e6f7ad6 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -42,4 +42,8 @@
     <string name="account_ask_every_time" msgid="944077828070287407">"Buza ngaso sonke isikhathi"</string>
     <string name="do_not_use_sim_call_manager" msgid="5519252524007323694">"Ungasebenzisi ukushaya nge-Wi-Fi"</string>
     <string name="outgoing_call_not_allowed" msgid="1434784869685645427">"Lo msebenzisi akavunyelwe ukwenza amakholi wefoni okungewona wesimo esiphuthumayo"</string>
+    <string name="outgoing_call_error_no_phone_number_supplied" msgid="4987143284589568716">"Ikholi ayithunyelwe, ayikho inombolo evumelekile efakiwe."</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"Inombolo engekho yomyalezo wezwi"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"Ayikho inombolo yomlayezo wezwi egcinwe ekhadini le-SIM."</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"Engeza inombolo"</string>
 </resources>
diff --git a/src/com/android/telecomm/Call.java b/src/com/android/telecomm/Call.java
index dc3fa07..b8e2e19 100644
--- a/src/com/android/telecomm/Call.java
+++ b/src/com/android/telecomm/Call.java
@@ -17,11 +17,13 @@
 package com.android.telecomm;
 
 import android.app.PendingIntent;
+import android.content.ContentUris;
 import android.graphics.Bitmap;
 import android.graphics.drawable.Drawable;
 import android.net.Uri;
 import android.os.Bundle;
 import android.os.Handler;
+import android.provider.ContactsContract.Contacts;
 import android.telecomm.Connection;
 import android.telecomm.PhoneCapabilities;
 import android.telecomm.PropertyPresentation;
@@ -43,6 +45,7 @@
 import com.android.internal.telephony.CallerInfoAsyncQuery.OnQueryCompleteListener;
 import com.android.internal.telephony.SmsApplication;
 import com.android.telecomm.ContactsAsyncHelper.OnImageLoadCompleteListener;
+
 import com.google.common.base.Preconditions;
 
 import java.util.ArrayList;
@@ -81,7 +84,6 @@
         void onHandleChanged(Call call);
         void onCallerDisplayNameChanged(Call call);
         void onVideoStateChanged(Call call);
-        void onStartActivityFromInCall(Call call, PendingIntent intent);
         void onTargetPhoneAccountChanged(Call call);
         void onConnectionManagerPhoneAccountChanged(Call call);
         void onPhoneAccountChanged(Call call);
@@ -124,8 +126,6 @@
         @Override
         public void onVideoStateChanged(Call call) {}
         @Override
-        public void onStartActivityFromInCall(Call call, PendingIntent intent) {}
-        @Override
         public void onTargetPhoneAccountChanged(Call call) {}
         @Override
         public void onConnectionManagerPhoneAccountChanged(Call call) {}
@@ -331,8 +331,8 @@
             component = mConnectionService.getComponentName().flattenToShortString();
         }
 
-        return String.format(Locale.US, "[%s, %s, %s, %d]", mState, component,
-                Log.piiHandle(mHandle), getVideoState());
+        return String.format(Locale.US, "[%s, %s, %s, %s, %d]", System.identityHashCode(this),
+                mState, component, Log.piiHandle(mHandle), getVideoState());
     }
 
     int getState() {
@@ -813,6 +813,16 @@
         mExtras = extras;
     }
 
+    /**
+     * @return the uri of the contact associated with this call.
+     */
+    Uri getContactUri() {
+        if (mCallerInfo == null || !mCallerInfo.contactExists) {
+            return null;
+        }
+        return Contacts.getLookupUri(mCallerInfo.contactIdOrZero, mCallerInfo.lookupKey);
+    }
+
     Uri getRingtone() {
         return mCallerInfo == null ? null : mCallerInfo.contactRingtoneUri;
     }
@@ -1182,16 +1192,6 @@
         }
     }
 
-    public void startActivityFromInCall(PendingIntent intent) {
-        if (intent.isActivity()) {
-            for (Listener l : mListeners) {
-                l.onStartActivityFromInCall(this, intent);
-            }
-        } else {
-            Log.w(this, "startActivityFromInCall, activity intent required");
-        }
-    }
-
     static int getStateFromConnectionState(int state) {
         switch (state) {
             case Connection.STATE_INITIALIZING:
diff --git a/src/com/android/telecomm/CallActivity.java b/src/com/android/telecomm/CallActivity.java
index 0d36c8a..6d3b98f 100644
--- a/src/com/android/telecomm/CallActivity.java
+++ b/src/com/android/telecomm/CallActivity.java
@@ -149,15 +149,19 @@
         // Send to CallsManager to ensure the InCallUI gets kicked off before the broadcast returns
         Call call = mCallsManager.startOutgoingCall(handle, phoneAccountHandle, clientExtras);
 
-        NewOutgoingCallIntentBroadcaster broadcaster = new NewOutgoingCallIntentBroadcaster(
-                mCallsManager, call, intent, isDefaultDialer());
-        final int result = broadcaster.processIntent();
-        final boolean success = result == DisconnectCause.NOT_DISCONNECTED;
+        if (call == null) {
+            setResult(RESULT_CANCELED);
+        } else {
+            NewOutgoingCallIntentBroadcaster broadcaster = new NewOutgoingCallIntentBroadcaster(
+                    mCallsManager, call, intent, isDefaultDialer());
+            final int result = broadcaster.processIntent();
+            final boolean success = result == DisconnectCause.NOT_DISCONNECTED;
 
-        if (!success && call != null) {
-            disconnectCallAndShowErrorDialog(call, result);
+            if (!success && call != null) {
+                disconnectCallAndShowErrorDialog(call, result);
+            }
+            setResult(success ? RESULT_OK : RESULT_CANCELED);
         }
-        setResult(success ? RESULT_OK : RESULT_CANCELED);
     }
 
     /**
diff --git a/src/com/android/telecomm/CallsManager.java b/src/com/android/telecomm/CallsManager.java
index 40e97f4..116cf95 100644
--- a/src/com/android/telecomm/CallsManager.java
+++ b/src/com/android/telecomm/CallsManager.java
@@ -284,7 +284,8 @@
     Call startOutgoingCall(Uri handle, PhoneAccountHandle phoneAccountHandle, Bundle extras) {
         // We only allow a single outgoing call at any given time. Before placing a call, make sure
         // there doesn't already exist another outgoing call.
-        Call call = getFirstCallWithState(CallState.NEW, CallState.DIALING);
+        Call call = getFirstCallWithState(CallState.NEW, CallState.DIALING,
+                CallState.CONNECTING, CallState.PRE_DIAL_WAIT);
 
         if (call != null) {
             Log.i(this, "Canceling simultaneous outgoing call.");
@@ -304,9 +305,11 @@
         }
 
         if (phoneAccountHandle == null) {
-            // No preset account, check if default exists
+            // No preset account, check if default exists that supports the URI scheme for the
+            // handle.
             PhoneAccountHandle defaultAccountHandle =
-                    app.getPhoneAccountRegistrar().getDefaultOutgoingPhoneAccount();
+                    app.getPhoneAccountRegistrar().getDefaultOutgoingPhoneAccount(
+                            handle.getScheme());
             if (defaultAccountHandle != null) {
                 phoneAccountHandle = defaultAccountHandle;
             }
diff --git a/src/com/android/telecomm/ConnectionServiceWrapper.java b/src/com/android/telecomm/ConnectionServiceWrapper.java
index 5fcb9bd..787fbd0 100644
--- a/src/com/android/telecomm/ConnectionServiceWrapper.java
+++ b/src/com/android/telecomm/ConnectionServiceWrapper.java
@@ -35,6 +35,7 @@
 import android.telecomm.PhoneAccount;
 import android.telecomm.PhoneAccountHandle;
 import android.telecomm.StatusHints;
+import android.telecomm.VideoProfile;
 import android.telephony.DisconnectCause;
 
 import com.android.internal.os.SomeArgs;
@@ -79,7 +80,6 @@
     private static final int MSG_SET_CALLER_DISPLAY_NAME = 18;
     private static final int MSG_SET_VIDEO_STATE = 19;
     private static final int MSG_SET_CONFERENCEABLE_CONNECTIONS = 20;
-    private static final int MSG_START_ACTIVITY_FROM_IN_CALL = 21;
 
     private final Handler mHandler = new Handler() {
         @Override
@@ -337,18 +337,6 @@
                     }
                     break;
                 }
-                case MSG_START_ACTIVITY_FROM_IN_CALL: {
-                    SomeArgs args = (SomeArgs) msg.obj;
-                    try {
-                        call = mCallIdMapper.getCall(args.arg1);
-                        if (call != null) {
-                            call.startActivityFromInCall((PendingIntent) args.arg2);
-                        }
-                    } finally {
-                        args.recycle();
-                    }
-                    break;
-                }
             }
         }
     };
@@ -558,17 +546,6 @@
                 mHandler.obtainMessage(MSG_SET_CONFERENCEABLE_CONNECTIONS, args).sendToTarget();
             }
         }
-
-        @Override
-        public void startActivityFromInCall(String callId, PendingIntent intent) {
-            logIncoming("startActivityFromInCall %s %s", callId, intent);
-            if (mCallIdMapper.isValidCallId(callId)) {
-                SomeArgs args = SomeArgs.obtain();
-                args.arg1 = callId;
-                args.arg2 = intent;
-                mHandler.obtainMessage(MSG_START_ACTIVITY_FROM_IN_CALL, args).sendToTarget();
-            }
-        }
     }
 
     private final Adapter mAdapter = new Adapter();
@@ -740,7 +717,11 @@
         if (callId != null && isServiceValid("answer")) {
             try {
                 logOutgoing("answer %s %d", callId, videoState);
-                mServiceInterface.answer(callId, videoState);
+                if (videoState == VideoProfile.VideoState.AUDIO_ONLY) {
+                    mServiceInterface.answer(callId);
+                } else {
+                    mServiceInterface.answerVideo(callId, videoState);
+                }
             } catch (RemoteException e) {
             }
         }
diff --git a/src/com/android/telecomm/CreateConnectionProcessor.java b/src/com/android/telecomm/CreateConnectionProcessor.java
index cc2e8c0..fcf94cc 100644
--- a/src/com/android/telecomm/CreateConnectionProcessor.java
+++ b/src/com/android/telecomm/CreateConnectionProcessor.java
@@ -254,7 +254,7 @@
                     .getPhoneAccountRegistrar().getSimCallManager();
             CallAttemptRecord callAttemptRecord = new CallAttemptRecord(callManager,
                     TelecommApp.getInstance().getPhoneAccountRegistrar().
-                            getDefaultOutgoingPhoneAccount());
+                            getDefaultOutgoingPhoneAccount(mCall.getHandle().getScheme()));
 
             if (callManager != null && !mAttemptRecords.contains(callAttemptRecord)) {
                 Log.i(this, "Will try Connection Manager account %s for emergency",
diff --git a/src/com/android/telecomm/InCallController.java b/src/com/android/telecomm/InCallController.java
index 21581f5..f132934 100644
--- a/src/com/android/telecomm/InCallController.java
+++ b/src/com/android/telecomm/InCallController.java
@@ -61,11 +61,13 @@
     private class InCallServiceConnection implements ServiceConnection {
         /** {@inheritDoc} */
         @Override public void onServiceConnected(ComponentName name, IBinder service) {
+            Log.d(this, "onServiceConnected: %s", name);
             onConnected(name, service);
         }
 
         /** {@inheritDoc} */
         @Override public void onServiceDisconnected(ComponentName name) {
+            Log.d(this, "onDisconnected: %s", name);
             onDisconnected(name);
         }
     }
@@ -107,19 +109,6 @@
         }
 
         @Override
-        public void onStartActivityFromInCall(Call call, PendingIntent intent) {
-            if (!mInCallServices.isEmpty()) {
-                Log.i(this, "Calling startActivity, intent: %s", intent);
-                for (IInCallService inCallService : mInCallServices.values()) {
-                    try {
-                        inCallService.startActivity(mCallIdMapper.getCallId(call), intent);
-                    } catch (RemoteException ignored) {
-                    }
-                }
-            }
-        }
-
-        @Override
         public void onTargetPhoneAccountChanged(Call call) {
             updateCall(call);
         }
@@ -161,7 +150,7 @@
         if (mInCallServices.isEmpty()) {
             bind();
         } else {
-            Log.i(this, "Adding call: %s", call);
+            Log.i(this, "onCallAdded: %s", call);
             // Track the call if we don't already know about it.
             addCall(call);
 
@@ -181,6 +170,7 @@
 
     @Override
     public void onCallRemoved(Call call) {
+        Log.i(this, "onCallRemoved: %s", call);
         if (CallsManager.getInstance().getCalls().isEmpty()) {
             // TODO: Wait for all messages to be delivered to the service before unbinding.
             unbind();
@@ -322,6 +312,8 @@
     private void onConnected(ComponentName componentName, IBinder service) {
         ThreadUtil.checkOnMainThread();
 
+        Log.i(this, "onConnected to %s", componentName);
+
         IInCallService inCallService = IInCallService.Stub.asInterface(service);
 
         try {
@@ -336,9 +328,12 @@
         // Upon successful connection, send the state of the world to the service.
         ImmutableCollection<Call> calls = CallsManager.getInstance().getCalls();
         if (!calls.isEmpty()) {
+            Log.i(this, "Adding %s calls to InCallService after onConnected: %s", calls.size(),
+                    componentName);
             for (Call call : calls) {
                 try {
                     // Track the call if we don't already know about it.
+                    Log.i(this, "addCall after binding: %s", call);
                     addCall(call);
 
                     inCallService.addCall(toParcelableCall(call,
@@ -358,6 +353,7 @@
      * @param disconnectedComponent The {@link ComponentName} of the service which disconnected.
      */
     private void onDisconnected(ComponentName disconnectedComponent) {
+        Log.i(this, "onDisconnected from %s", disconnectedComponent);
         ThreadUtil.checkOnMainThread();
         if (mInCallServices.containsKey(disconnectedComponent)) {
             mInCallServices.remove(disconnectedComponent);
diff --git a/src/com/android/telecomm/MissedCallNotifier.java b/src/com/android/telecomm/MissedCallNotifier.java
index eede65c..c3f162a 100644
--- a/src/com/android/telecomm/MissedCallNotifier.java
+++ b/src/com/android/telecomm/MissedCallNotifier.java
@@ -270,36 +270,42 @@
         AsyncQueryHandler queryHandler = new AsyncQueryHandler(mContext.getContentResolver()) {
             @Override
             protected void onQueryComplete(int token, Object cookie, Cursor cursor) {
+                Log.d(MissedCallNotifier.this, "onQueryComplete()...");
                 if (cursor != null) {
-                    while (cursor.moveToNext()) {
-                        // Get data about the missed call from the cursor
-                        Uri handle = Uri.parse(cursor.getString(
-                                cursor.getColumnIndexOrThrow(Calls.NUMBER)));
-                        int presentation = cursor.getInt(cursor.getColumnIndexOrThrow(
-                                Calls.NUMBER_PRESENTATION));
+                    try {
+                        while (cursor.moveToNext()) {
+                            // Get data about the missed call from the cursor
+                            Uri handle = Uri.parse(cursor.getString(
+                                    cursor.getColumnIndexOrThrow(Calls.NUMBER)));
+                            int presentation = cursor.getInt(cursor.getColumnIndexOrThrow(
+                                    Calls.NUMBER_PRESENTATION));
 
-                        if (presentation != Calls.PRESENTATION_ALLOWED) {
-                            handle = null;
-                        }
-
-                        // Convert the data to a call object
-                        Call call = new Call(null, null, null, null, null, true, false);
-                        call.setDisconnectCause(DisconnectCause.INCOMING_MISSED, "");
-                        call.setState(CallState.DISCONNECTED);
-
-                        // Listen for the update to the caller information before posting the
-                        // notification so that we have the contact info and photo.
-                        call.addListener(new Call.ListenerBase() {
-                            @Override
-                            public void onCallerInfoChanged(Call call) {
-                                call.removeListener(this);  // No longer need to listen to call
-                                                            // changes after the contact info
-                                                            // is retrieved.
-                                showMissedCallNotification(call);
+                            if (presentation != Calls.PRESENTATION_ALLOWED) {
+                                handle = null;
                             }
-                        });
-                        // Set the handle here because that is what triggers the contact info query.
-                        call.setHandle(handle, presentation);
+
+                            // Convert the data to a call object
+                            Call call = new Call(null, null, null, null, null, true, false);
+                            call.setDisconnectCause(DisconnectCause.INCOMING_MISSED, "");
+                            call.setState(CallState.DISCONNECTED);
+
+                            // Listen for the update to the caller information before posting the
+                            // notification so that we have the contact info and photo.
+                            call.addListener(new Call.ListenerBase() {
+                                @Override
+                                public void onCallerInfoChanged(Call call) {
+                                    call.removeListener(this);  // No longer need to listen to call
+                                                                // changes after the contact info
+                                                                // is retrieved.
+                                    showMissedCallNotification(call);
+                                }
+                            });
+                            // Set the handle here because that is what triggers the contact info
+                            // query.
+                            call.setHandle(handle, presentation);
+                        }
+                    } finally {
+                        cursor.close();
                     }
                 }
             }
diff --git a/src/com/android/telecomm/PhoneAccountRegistrar.java b/src/com/android/telecomm/PhoneAccountRegistrar.java
index f7cce27..f7652d7 100644
--- a/src/com/android/telecomm/PhoneAccountRegistrar.java
+++ b/src/com/android/telecomm/PhoneAccountRegistrar.java
@@ -21,6 +21,7 @@
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
 import android.content.pm.ServiceInfo;
+import android.provider.Settings;
 import android.telecomm.ConnectionService;
 import android.telecomm.PhoneAccount;
 import android.telecomm.PhoneAccountHandle;
@@ -47,6 +48,7 @@
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.lang.Integer;
 import java.lang.SecurityException;
 import java.lang.String;
 import java.util.ArrayList;
@@ -75,6 +77,11 @@
     }
 
     private static final String FILE_NAME = "phone-account-registrar-state.xml";
+    @VisibleForTesting
+    public static final int EXPECTED_STATE_VERSION = 2;
+
+    /** Keep in sync with the same in SipSettings.java */
+    private static final String SIP_SHARED_PREFERENCES = "SIP_PREFERENCES";
 
     private final List<Listener> mListeners = new CopyOnWriteArrayList<>();
     private final AtomicFile mAtomicFile;
@@ -94,13 +101,24 @@
         read();
     }
 
-    public PhoneAccountHandle getDefaultOutgoingPhoneAccount() {
+    /**
+     * Retrieves the default outgoing phone account supporting the specified uriScheme.
+     * @param uriScheme The URI scheme for the outgoing call.
+     * @return The {@link PhoneAccountHandle} to use.
+     */
+    public PhoneAccountHandle getDefaultOutgoingPhoneAccount(String uriScheme) {
         final PhoneAccountHandle userSelected = getUserSelectedOutgoingPhoneAccount();
+
         if (userSelected != null) {
-            return userSelected;
+            // If there is a default PhoneAccount, ensure it supports calls to handles with the
+            // specified uriScheme.
+            final PhoneAccount userSelectedAccount = getPhoneAccount(userSelected);
+            if (userSelectedAccount.supportsUriScheme(uriScheme)) {
+                return userSelected;
+            }
         }
 
-        List<PhoneAccountHandle> outgoing = getOutgoingPhoneAccounts();
+        List<PhoneAccountHandle> outgoing = getOutgoingPhoneAccounts(uriScheme);
         switch (outgoing.size()) {
             case 0:
                 // There are no accounts, so there can be no default
@@ -249,6 +267,10 @@
         return getPhoneAccountHandles(PhoneAccount.CAPABILITY_CALL_PROVIDER);
     }
 
+    public List<PhoneAccountHandle> getOutgoingPhoneAccounts(String uriScheme) {
+        return getPhoneAccountHandles(PhoneAccount.CAPABILITY_CALL_PROVIDER, uriScheme);
+    }
+
     public List<PhoneAccountHandle> getAllConnectionManagerPhoneAccounts() {
         if (isEnabledConnectionManager()) {
             return getPhoneAccountHandles(PhoneAccount.CAPABILITY_CONNECTION_MANAGER);
@@ -392,11 +414,25 @@
 
     /**
      * Returns a list of phone account handles with the specified flag.
+     *
+     * @param flags Flags which the {@code PhoneAccount} must have.
      */
     private List<PhoneAccountHandle> getPhoneAccountHandles(int flags) {
+        return getPhoneAccountHandles(flags, null);
+    }
+
+    /**
+     * Returns a list of phone account handles with the specified flag, supporting the specified
+     * URI scheme.
+     *
+     * @param flags Flags which the {@code PhoneAccount} must have.
+     * @param uriScheme URI schemes the PhoneAccount must handle.  {@code Null} bypasses the
+     *                  URI scheme check.
+     */
+    private List<PhoneAccountHandle> getPhoneAccountHandles(int flags, String uriScheme) {
         List<PhoneAccountHandle> accountHandles = new ArrayList<>();
         for (PhoneAccount m : mState.accounts) {
-            if (has(m, flags)) {
+            if (has(m, flags) && (uriScheme == null || m.supportsUriScheme(uriScheme))) {
                 accountHandles.add(m.getAccountHandle());
             }
         }
@@ -424,6 +460,11 @@
          * The complete list of {@code PhoneAccount}s known to the Telecomm subsystem.
          */
         public final List<PhoneAccount> accounts = new ArrayList<>();
+
+        /**
+         * The version number of the State data.
+         */
+        public int versionNumber;
     }
 
     ////////////////////////////////////////////////////////////////////////////////////////////////
@@ -462,12 +503,16 @@
             return;
         }
 
+        boolean versionChanged = false;
+
         XmlPullParser parser;
         try {
             parser = Xml.newPullParser();
             parser.setInput(new BufferedInputStream(is), null);
             parser.nextTag();
-            mState = readFromXml(parser);
+            mState = readFromXml(parser, mContext);
+            versionChanged = mState.versionNumber < EXPECTED_STATE_VERSION;
+
         } catch (IOException | XmlPullParserException e) {
             Log.e(this, e, "Reading state from XML file");
             mState = new State();
@@ -478,6 +523,11 @@
                 Log.e(this, e, "Closing InputStream");
             }
         }
+
+        // If an upgrade occurred, write out the changed data.
+        if (versionChanged) {
+            write();
+        }
     }
 
     private static void writeToXml(State state, XmlSerializer serializer)
@@ -485,9 +535,9 @@
         sStateXml.writeToXml(state, serializer);
     }
 
-    private static State readFromXml(XmlPullParser parser)
+    private static State readFromXml(XmlPullParser parser, Context context)
             throws IOException, XmlPullParserException {
-        State s = sStateXml.readFromXml(parser);
+        State s = sStateXml.readFromXml(parser, 0, context);
         return s != null ? s : new State();
     }
 
@@ -498,6 +548,9 @@
 
     @VisibleForTesting
     public abstract static class XmlSerialization<T> {
+        private static final String LENGTH_ATTRIBUTE = "length";
+        private static final String VALUE_TAG = "value";
+
         /**
          * Write the supplied object to XML
          */
@@ -511,7 +564,7 @@
          * object's writeToXml(). This object tries to fail early without modifying
          * 'parser' if it does not recognize the data it sees.
          */
-        public abstract T readFromXml(XmlPullParser parser)
+        public abstract T readFromXml(XmlPullParser parser, int version, Context context)
                 throws IOException, XmlPullParserException;
 
         protected void writeTextSafely(String tagName, Object value, XmlSerializer serializer)
@@ -522,6 +575,66 @@
                 serializer.endTag(null, tagName);
             }
         }
+
+        /**
+         * Serializes a string array.
+         *
+         * @param tagName The tag name for the string array.
+         * @param values The string values to serialize.
+         * @param serializer The serializer.
+         * @throws IOException
+         */
+        protected void writeStringList(String tagName, List<String> values,
+                XmlSerializer serializer)
+                throws IOException {
+
+            serializer.startTag(null, tagName);
+            if (values != null) {
+                serializer.attribute(null, LENGTH_ATTRIBUTE, Objects.toString(values.size()));
+                for (String toSerialize : values) {
+                    serializer.startTag(null, VALUE_TAG);
+                    if (toSerialize != null ){
+                        serializer.text(toSerialize);
+                    }
+
+                    serializer.endTag(null, VALUE_TAG);
+                }
+            } else {
+                serializer.attribute(null, LENGTH_ATTRIBUTE, "0");
+            }
+            serializer.endTag(null, tagName);
+
+        }
+
+        /**
+         * Reads a string array from the XML parser.
+         *
+         * @param parser The XML parser.
+         * @return String array containing the parsed values.
+         * @throws IOException Exception related to IO.
+         * @throws XmlPullParserException Exception related to parsing.
+         */
+        protected List<String> readStringList(XmlPullParser parser)
+                throws IOException, XmlPullParserException {
+
+            int length = Integer.parseInt(parser.getAttributeValue(null, LENGTH_ATTRIBUTE));
+            List<String> arrayEntries = new ArrayList<String>(length);
+            String value = null;
+
+            if (length == 0) {
+                return arrayEntries;
+            }
+
+            int outerDepth = parser.getDepth();
+            while (XmlUtils.nextElementWithin(parser, outerDepth)) {
+                if (parser.getName().equals(VALUE_TAG)) {
+                    value = parser.getText();
+                    arrayEntries.add(value);
+                }
+            }
+
+            return arrayEntries;
+        }
     }
 
     @VisibleForTesting
@@ -531,12 +644,14 @@
         private static final String DEFAULT_OUTGOING = "default_outgoing";
         private static final String SIM_CALL_MANAGER = "sim_call_manager";
         private static final String ACCOUNTS = "accounts";
+        private static final String VERSION = "version";
 
         @Override
         public void writeToXml(State o, XmlSerializer serializer)
                 throws IOException {
             if (o != null) {
                 serializer.startTag(null, CLASS_STATE);
+                serializer.attribute(null, VERSION, Objects.toString(EXPECTED_STATE_VERSION));
 
                 if (o.defaultOutgoing != null) {
                     serializer.startTag(null, DEFAULT_OUTGOING);
@@ -561,23 +676,32 @@
         }
 
         @Override
-        public State readFromXml(XmlPullParser parser)
+        public State readFromXml(XmlPullParser parser, int version, Context context)
                 throws IOException, XmlPullParserException {
             if (parser.getName().equals(CLASS_STATE)) {
                 State s = new State();
+
+                String rawVersion = parser.getAttributeValue(null, VERSION);
+                s.versionNumber = TextUtils.isEmpty(rawVersion) ? 1 :
+                        Integer.parseInt(rawVersion);
+
                 int outerDepth = parser.getDepth();
                 while (XmlUtils.nextElementWithin(parser, outerDepth)) {
                     if (parser.getName().equals(DEFAULT_OUTGOING)) {
                         parser.nextTag();
-                        s.defaultOutgoing = sPhoneAccountHandleXml.readFromXml(parser);
+                        s.defaultOutgoing = sPhoneAccountHandleXml.readFromXml(parser,
+                                s.versionNumber, context);
                     } else if (parser.getName().equals(SIM_CALL_MANAGER)) {
                         parser.nextTag();
-                        s.simCallManager = sPhoneAccountHandleXml.readFromXml(parser);
+                        s.simCallManager = sPhoneAccountHandleXml.readFromXml(parser,
+                                s.versionNumber, context);
                     } else if (parser.getName().equals(ACCOUNTS)) {
                         int accountsDepth = parser.getDepth();
                         while (XmlUtils.nextElementWithin(parser, accountsDepth)) {
-                            PhoneAccount account = sPhoneAccountXml.readFromXml(parser);
-                            if (account != null) {
+                            PhoneAccount account = sPhoneAccountXml.readFromXml(parser,
+                                    s.versionNumber, context);
+
+                            if (account != null && s.accounts != null) {
                                 s.accounts.add(account);
                             }
                         }
@@ -600,6 +724,7 @@
         private static final String ICON_RES_ID = "icon_res_id";
         private static final String LABEL = "label";
         private static final String SHORT_DESCRIPTION = "short_description";
+        private static final String SUPPORTED_URI_SCHEMES = "supported_uri_schemes";
 
         @Override
         public void writeToXml(PhoneAccount o, XmlSerializer serializer)
@@ -619,13 +744,13 @@
                 writeTextSafely(ICON_RES_ID, Integer.toString(o.getIconResId()), serializer);
                 writeTextSafely(LABEL, o.getLabel(), serializer);
                 writeTextSafely(SHORT_DESCRIPTION, o.getShortDescription(), serializer);
+                writeStringList(SUPPORTED_URI_SCHEMES, o.getSupportedUriSchemes(), serializer);
 
                 serializer.endTag(null, CLASS_PHONE_ACCOUNT);
             }
         }
 
-        @Override
-        public PhoneAccount readFromXml(XmlPullParser parser)
+        public PhoneAccount readFromXml(XmlPullParser parser, int version, Context context)
                 throws IOException, XmlPullParserException {
             if (parser.getName().equals(CLASS_PHONE_ACCOUNT)) {
                 int outerDepth = parser.getDepth();
@@ -636,11 +761,13 @@
                 int iconResId = 0;
                 String label = null;
                 String shortDescription = null;
+                List<String> supportedUriSchemes = null;
 
                 while (XmlUtils.nextElementWithin(parser, outerDepth)) {
                     if (parser.getName().equals(ACCOUNT_HANDLE)) {
                         parser.nextTag();
-                        accountHandle = sPhoneAccountHandleXml.readFromXml(parser);
+                        accountHandle = sPhoneAccountHandleXml.readFromXml(parser, version,
+                                context);
                     } else if (parser.getName().equals(HANDLE)) {
                         parser.next();
                         handle = Uri.parse(parser.getText());
@@ -659,8 +786,32 @@
                     } else if (parser.getName().equals(SHORT_DESCRIPTION)) {
                         parser.next();
                         shortDescription = parser.getText();
+                    } else if (parser.getName().equals(SUPPORTED_URI_SCHEMES)) {
+                        supportedUriSchemes = readStringList(parser);
                     }
                 }
+
+                // Upgrade older phone accounts to specify the supported URI schemes.
+                if (version < 2) {
+                    ComponentName sipComponentName = new ComponentName("com.android.phone",
+                            "com.android.services.telephony.sip.SipConnectionService");
+
+                    supportedUriSchemes = new ArrayList<>();
+
+                    // Handle the SIP connection service.
+                    // Check the system settings to see if it also should handle "tel" calls.
+                    if (accountHandle.getComponentName().equals(sipComponentName)) {
+                        boolean useSipForPstn = useSipForPstnCalls(context);
+                        supportedUriSchemes.add(PhoneAccount.SCHEME_SIP);
+                        if (useSipForPstn) {
+                            supportedUriSchemes.add(PhoneAccount.SCHEME_TEL);
+                        }
+                    } else {
+                        supportedUriSchemes.add(PhoneAccount.SCHEME_TEL);
+                        supportedUriSchemes.add(PhoneAccount.SCHEME_VOICEMAIL);
+                    }
+                }
+
                 return PhoneAccount.builder()
                         .withAccountHandle(accountHandle)
                         .withHandle(handle)
@@ -669,10 +820,24 @@
                         .withIconResId(iconResId)
                         .withLabel(label)
                         .withShortDescription(shortDescription)
+                        .withSupportedUriSchemes(supportedUriSchemes)
                         .build();
             }
             return null;
         }
+
+        /**
+         * Determines if the SIP call settings specify to use SIP for all calls, including PSTN calls.
+         *
+         * @param context The context.
+         * @return {@code True} if SIP should be used for all calls.
+         */
+        private boolean useSipForPstnCalls(Context context) {
+            String option = Settings.System.getString(context.getContentResolver(),
+                    Settings.System.SIP_CALL_OPTIONS);
+            option = (option != null) ? option : Settings.System.SIP_ADDRESS_ONLY;
+            return option.equals(Settings.System.SIP_ALWAYS);
+        }
     };
 
     @VisibleForTesting
@@ -700,7 +865,7 @@
         }
 
         @Override
-        public PhoneAccountHandle readFromXml(XmlPullParser parser)
+        public PhoneAccountHandle readFromXml(XmlPullParser parser, int version, Context context)
                 throws IOException, XmlPullParserException {
             if (parser.getName().equals(CLASS_PHONE_ACCOUNT_HANDLE)) {
                 String componentNameString = null;
diff --git a/src/com/android/telecomm/ProximitySensorManager.java b/src/com/android/telecomm/ProximitySensorManager.java
index 287c6d4..7b8773d 100644
--- a/src/com/android/telecomm/ProximitySensorManager.java
+++ b/src/com/android/telecomm/ProximitySensorManager.java
@@ -52,6 +52,11 @@
      * Turn the proximity sensor on.
      */
     void turnOn() {
+        if (CallsManager.getInstance().getCalls().isEmpty()) {
+            Log.w(this, "Asking to turn on prox sensor without a call? I don't think so.");
+            return;
+        }
+
         if (mProximityWakeLock == null) {
             return;
         }
diff --git a/src/com/android/telecomm/QuickResponseUtils.java b/src/com/android/telecomm/QuickResponseUtils.java
new file mode 100644
index 0000000..ead9105
--- /dev/null
+++ b/src/com/android/telecomm/QuickResponseUtils.java
@@ -0,0 +1,116 @@
+/*
+ * 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.telecomm;
+
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.content.pm.PackageManager;
+import android.content.res.Resources;
+
+
+/**
+ * Utils class that exposes some helper routines to used to manage the QuickResponses
+ */
+public class QuickResponseUtils {
+    public static final String LOG_TAG = "QuickResponseUtils";
+
+    // SharedPreferences file name for our persistent settings.
+    public static final String SHARED_PREFERENCES_NAME = "respond_via_sms_prefs";
+    private static final String PACKAGE_NAME_TELEPHONY = "com.android.phone";
+
+    // Preference keys for the 4 "canned responses"; see RespondViaSmsManager$Settings.
+    // Since (for now at least) the number of messages is fixed at 4, and since
+    // SharedPreferences can't deal with arrays anyway, just store the messages
+    // as 4 separate strings.
+    public static final int NUM_CANNED_RESPONSES = 4;
+    public static final String KEY_CANNED_RESPONSE_PREF_1 = "canned_response_pref_1";
+    public static final String KEY_CANNED_RESPONSE_PREF_2 = "canned_response_pref_2";
+    public static final String KEY_CANNED_RESPONSE_PREF_3 = "canned_response_pref_3";
+    public static final String KEY_CANNED_RESPONSE_PREF_4 = "canned_response_pref_4";
+
+    /**
+     * As of L, QuickResponses were moved from Telephony to Telecomm. Because of
+     * this, we need to make sure that we migrate any old QuickResponses to our
+     * current SharedPreferences.  This is a lazy migration as it happens only when
+     * the QuickResponse settings are viewed or if they are queried via RespondViaSmsManager.
+     */
+    public static void maybeMigrateLegacyQuickResponses() {
+        // The algorithm will go as such:
+        // If Telecomm QuickResponses exist, we will skip migration because this implies
+        // that a user has already specified their desired QuickResponses and have abandoned any
+        // older QuickResponses.
+        // Then, if Telephony QuickResponses exist, we will move those to Telecomm.
+        // If neither exist, we'll populate Telecomm with the default QuickResponses.
+        // This guarantees the caller that QuickResponses exist in SharedPreferences after this
+        // function is called.
+
+        Log.d(LOG_TAG, "maybeMigrateLegacyQuickResponses() - Starting");
+
+        final Context telecommContext = TelecommApp.getInstance();
+        final SharedPreferences prefs = telecommContext.getSharedPreferences(
+                SHARED_PREFERENCES_NAME, Context.MODE_PRIVATE);
+        final Resources res = telecommContext.getResources();
+
+        final boolean responsesExist = prefs.contains(KEY_CANNED_RESPONSE_PREF_1);
+        if (responsesExist) {
+            // If one QuickResponse exists, they all exist.
+            Log.d(LOG_TAG, "maybeMigrateLegacyQuickResponses() - Telecomm QuickResponses exist");
+            return;
+        }
+
+        // Grab the all the default QuickResponses from our resources.
+        String cannedResponse1 = res.getString(R.string.respond_via_sms_canned_response_1);
+        String cannedResponse2 = res.getString(R.string.respond_via_sms_canned_response_2);
+        String cannedResponse3 = res.getString(R.string.respond_via_sms_canned_response_3);
+        String cannedResponse4 = res.getString(R.string.respond_via_sms_canned_response_4);
+
+        Log.d(LOG_TAG, "maybeMigrateLegacyQuickResponses() - No local QuickResponses");
+
+        // We don't have local QuickResponses, let's see if they live in
+        // the Telephony package and we'll fall back on using our default values.
+        Context telephonyContext = null;
+        try {
+            telephonyContext = telecommContext.createPackageContext(PACKAGE_NAME_TELEPHONY, 0);
+        } catch (PackageManager.NameNotFoundException e) {
+            Log.e(LOG_TAG, e, "maybeMigrateLegacyQuickResponses() - Can't find Telephony package.");
+        }
+
+        // Read the old canned responses from the Telephony SharedPreference if possible.
+        if (telephonyContext != null) {
+            // Note that if any one QuickResponse does not exist, we'll use the default
+            // value to populate it.
+            Log.d(LOG_TAG, "maybeMigrateLegacyQuickResponses() - Using Telephony QuickResponses.");
+            final SharedPreferences oldPrefs = telephonyContext.getSharedPreferences(
+                    SHARED_PREFERENCES_NAME, Context.MODE_PRIVATE);
+            cannedResponse1 = oldPrefs.getString(KEY_CANNED_RESPONSE_PREF_1, cannedResponse1);
+            cannedResponse2 = oldPrefs.getString(KEY_CANNED_RESPONSE_PREF_2, cannedResponse2);
+            cannedResponse3 = oldPrefs.getString(KEY_CANNED_RESPONSE_PREF_3, cannedResponse3);
+            cannedResponse4 = oldPrefs.getString(KEY_CANNED_RESPONSE_PREF_4, cannedResponse4);
+        }
+
+        // Either way, write them back into Telecomm SharedPreferences.
+        final SharedPreferences.Editor editor = prefs.edit();
+        editor.putString(KEY_CANNED_RESPONSE_PREF_1, cannedResponse1);
+        editor.putString(KEY_CANNED_RESPONSE_PREF_2, cannedResponse2);
+        editor.putString(KEY_CANNED_RESPONSE_PREF_3, cannedResponse3);
+        editor.putString(KEY_CANNED_RESPONSE_PREF_4, cannedResponse4);
+        editor.commit();
+
+        Log.d(LOG_TAG, "maybeMigrateLegacyQuickResponses() - Done.");
+        return;
+    }
+}
diff --git a/src/com/android/telecomm/RespondViaSmsManager.java b/src/com/android/telecomm/RespondViaSmsManager.java
index 8618af0..f1e6033 100644
--- a/src/com/android/telecomm/RespondViaSmsManager.java
+++ b/src/com/android/telecomm/RespondViaSmsManager.java
@@ -40,19 +40,6 @@
 public class RespondViaSmsManager extends CallsManagerListenerBase {
     private static final String SCHEME_SMSTO = "smsto";
 
-    /** SharedPreferences file name for our persistent settings. */
-    private static final String SHARED_PREFERENCES_NAME = "respond_via_sms_prefs";
-
-    // Preference keys for the 4 "canned responses"; see RespondViaSmsManager$Settings.
-    // Since (for now at least) the number of messages is fixed at 4, and since
-    // SharedPreferences can't deal with arrays anyway, just store the messages
-    // as 4 separate strings.
-    private static final int NUM_CANNED_RESPONSES = 4;
-    private static final String KEY_CANNED_RESPONSE_PREF_1 = "canned_response_pref_1";
-    private static final String KEY_CANNED_RESPONSE_PREF_2 = "canned_response_pref_2";
-    private static final String KEY_CANNED_RESPONSE_PREF_3 = "canned_response_pref_3";
-    private static final String KEY_CANNED_RESPONSE_PREF_4 = "canned_response_pref_4";
-
     private static final int MSG_CANNED_TEXT_MESSAGES_READY = 1;
     private static final int MSG_SHOW_SENT_TOAST = 2;
 
@@ -104,22 +91,28 @@
             @Override
             public void run() {
                 Log.d(RespondViaSmsManager.this, "loadCannedResponses() starting");
+
+                // This function guarantees that QuickResponses will be in our
+                // SharedPreferences with the proper values considering there may be
+                // old QuickResponses in Telephony pre L.
+                QuickResponseUtils.maybeMigrateLegacyQuickResponses();
+
                 final SharedPreferences prefs = TelecommApp.getInstance().getSharedPreferences(
-                        SHARED_PREFERENCES_NAME, Context.MODE_PRIVATE);
+                        QuickResponseUtils.SHARED_PREFERENCES_NAME, Context.MODE_PRIVATE);
                 final Resources res = TelecommApp.getInstance().getInstance().getResources();
 
-                final ArrayList<String> textMessages = new ArrayList<>(NUM_CANNED_RESPONSES);
+                final ArrayList<String> textMessages = new ArrayList<>(
+                        QuickResponseUtils.NUM_CANNED_RESPONSES);
 
                 // Note the default values here must agree with the corresponding
                 // android:defaultValue attributes in respond_via_sms_settings.xml.
-
-                textMessages.add(0, prefs.getString(KEY_CANNED_RESPONSE_PREF_1,
+                textMessages.add(0, prefs.getString(QuickResponseUtils.KEY_CANNED_RESPONSE_PREF_1,
                         res.getString(R.string.respond_via_sms_canned_response_1)));
-                textMessages.add(1, prefs.getString(KEY_CANNED_RESPONSE_PREF_2,
+                textMessages.add(1, prefs.getString(QuickResponseUtils.KEY_CANNED_RESPONSE_PREF_2,
                         res.getString(R.string.respond_via_sms_canned_response_2)));
-                textMessages.add(2, prefs.getString(KEY_CANNED_RESPONSE_PREF_3,
+                textMessages.add(2, prefs.getString(QuickResponseUtils.KEY_CANNED_RESPONSE_PREF_3,
                         res.getString(R.string.respond_via_sms_canned_response_3)));
-                textMessages.add(3, prefs.getString(KEY_CANNED_RESPONSE_PREF_4,
+                textMessages.add(3, prefs.getString(QuickResponseUtils.KEY_CANNED_RESPONSE_PREF_4,
                         res.getString(R.string.respond_via_sms_canned_response_4)));
 
                 Log.d(RespondViaSmsManager.this,
diff --git a/src/com/android/telecomm/RespondViaSmsSettings.java b/src/com/android/telecomm/RespondViaSmsSettings.java
index 231dbaa..ecca39c 100644
--- a/src/com/android/telecomm/RespondViaSmsSettings.java
+++ b/src/com/android/telecomm/RespondViaSmsSettings.java
@@ -19,9 +19,7 @@
 import android.app.ActionBar;
 import android.app.Activity;
 import android.content.Context;
-import android.content.Intent;
 import android.content.SharedPreferences;
-import android.content.pm.PackageManager;
 import android.os.Bundle;
 import android.preference.EditTextPreference;
 import android.preference.Preference;
@@ -33,18 +31,6 @@
  * Helper class to manage the "Respond via SMS Message" feature for incoming calls.
  */
 public class RespondViaSmsSettings {
-    /** SharedPreferences file name for our persistent settings. */
-    private static final String SHARED_PREFERENCES_NAME = "respond_via_sms_prefs";
-
-    // Preference keys for the 4 "canned responses"; see RespondViaSmsManager$Settings.
-    // Since (for now at least) the number of messages is fixed at 4, and since
-    // SharedPreferences can't deal with arrays anyway, just store the messages
-    // as 4 separate strings.
-    private static final int NUM_CANNED_RESPONSES = 4;
-    private static final String KEY_CANNED_RESPONSE_PREF_1 = "canned_response_pref_1";
-    private static final String KEY_CANNED_RESPONSE_PREF_2 = "canned_response_pref_2";
-    private static final String KEY_CANNED_RESPONSE_PREF_3 = "canned_response_pref_3";
-    private static final String KEY_CANNED_RESPONSE_PREF_4 = "canned_response_pref_4";
     private static final String KEY_PREFERRED_PACKAGE = "preferred_package_pref";
     private static final String KEY_INSTANT_TEXT_DEFAULT_COMPONENT = "instant_text_def_component";
 
@@ -63,7 +49,13 @@
             super.onCreate(icicle);
             Log.d(this, "Settings: onCreate()...");
 
-            getPreferenceManager().setSharedPreferencesName(SHARED_PREFERENCES_NAME);
+            // This function guarantees that QuickResponses will be in our
+            // SharedPreferences with the proper values considering there may be
+            // old QuickResponses in Telephony pre L.
+            QuickResponseUtils.maybeMigrateLegacyQuickResponses();
+
+            getPreferenceManager().setSharedPreferencesName(
+                    QuickResponseUtils.SHARED_PREFERENCES_NAME);
 
             // This preference screen is ultra-simple; it's just 4 plain
             // <EditTextPreference>s, one for each of the 4 "canned responses".
@@ -79,19 +71,23 @@
             addPreferencesFromResource(R.xml.respond_via_sms_settings);
 
             EditTextPreference pref;
-            pref = (EditTextPreference) findPreference(KEY_CANNED_RESPONSE_PREF_1);
+            pref = (EditTextPreference) findPreference(
+                    QuickResponseUtils.KEY_CANNED_RESPONSE_PREF_1);
             pref.setTitle(pref.getText());
             pref.setOnPreferenceChangeListener(this);
 
-            pref = (EditTextPreference) findPreference(KEY_CANNED_RESPONSE_PREF_2);
+            pref = (EditTextPreference) findPreference(
+                    QuickResponseUtils.KEY_CANNED_RESPONSE_PREF_2);
             pref.setTitle(pref.getText());
             pref.setOnPreferenceChangeListener(this);
 
-            pref = (EditTextPreference) findPreference(KEY_CANNED_RESPONSE_PREF_3);
+            pref = (EditTextPreference) findPreference(
+                    QuickResponseUtils.KEY_CANNED_RESPONSE_PREF_3);
             pref.setTitle(pref.getText());
             pref.setOnPreferenceChangeListener(this);
 
-            pref = (EditTextPreference) findPreference(KEY_CANNED_RESPONSE_PREF_4);
+            pref = (EditTextPreference) findPreference(
+                    QuickResponseUtils.KEY_CANNED_RESPONSE_PREF_4);
             pref.setTitle(pref.getText());
             pref.setOnPreferenceChangeListener(this);
 
@@ -130,7 +126,7 @@
                 case R.id.respond_via_message_reset:
                     // Reset the preferences settings
                     SharedPreferences prefs = getSharedPreferences(
-                            SHARED_PREFERENCES_NAME, Context.MODE_PRIVATE);
+                            QuickResponseUtils.SHARED_PREFERENCES_NAME, Context.MODE_PRIVATE);
                     SharedPreferences.Editor editor = prefs.edit();
                     editor.remove(KEY_INSTANT_TEXT_DEFAULT_COMPONENT);
                     editor.apply();
diff --git a/src/com/android/telecomm/Ringer.java b/src/com/android/telecomm/Ringer.java
index 7741eab..9c554ce 100644
--- a/src/com/android/telecomm/Ringer.java
+++ b/src/com/android/telecomm/Ringer.java
@@ -16,9 +16,13 @@
 
 package com.android.telecomm;
 
+import android.app.Notification;
+import android.app.NotificationManager;
 import android.content.Context;
 import android.media.AudioAttributes;
 import android.media.AudioManager;
+import android.net.Uri;
+import android.os.Bundle;
 import android.os.SystemVibrator;
 import android.os.Vibrator;
 import android.provider.Settings;
@@ -174,6 +178,10 @@
             // The foreground call is one of incoming calls so play the ringer out loud.
             stopCallWaiting();
 
+            if (!shouldRingForContact(foregroundCall.getContactUri())) {
+                return;
+            }
+
             AudioManager audioManager =
                     (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
             if (audioManager.getStreamVolume(AudioManager.STREAM_RING) > 0) {
@@ -208,6 +216,16 @@
         }
     }
 
+    private boolean shouldRingForContact(Uri contactUri) {
+        final NotificationManager manager =
+                (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
+        final Bundle extras = new Bundle();
+        if (contactUri != null) {
+            extras.putStringArray(Notification.EXTRA_PEOPLE, new String[] {contactUri.toString()});
+        }
+        return manager.matchesCallFilter(extras);
+    }
+
     private void stopRinging() {
         Log.v(this, "stopRinging");
 
diff --git a/src/com/android/telecomm/TelecommServiceImpl.java b/src/com/android/telecomm/TelecommServiceImpl.java
index 05f0e0a..ef26085 100644
--- a/src/com/android/telecomm/TelecommServiceImpl.java
+++ b/src/com/android/telecomm/TelecommServiceImpl.java
@@ -160,9 +160,9 @@
     //
 
     @Override
-    public PhoneAccountHandle getDefaultOutgoingPhoneAccount() {
+    public PhoneAccountHandle getDefaultOutgoingPhoneAccount(String uriScheme) {
         try {
-            return mPhoneAccountRegistrar.getDefaultOutgoingPhoneAccount();
+            return mPhoneAccountRegistrar.getDefaultOutgoingPhoneAccount(uriScheme);
         } catch (Exception e) {
             Log.e(this, e, "getDefaultOutgoingPhoneAccount");
             throw e;
@@ -170,6 +170,18 @@
     }
 
     @Override
+    public void setDefaultOutgoingPhoneAccount(PhoneAccountHandle accountHandle) {
+        enforceModifyPermission();
+
+        try {
+            mPhoneAccountRegistrar.setDefaultOutgoingPhoneAccount(accountHandle);
+        } catch (Exception e) {
+            Log.e(this, e, "setDefaultOutgoingPhoneAccount");
+            throw e;
+        }
+    }
+
+    @Override
     public List<PhoneAccountHandle> getOutgoingPhoneAccounts() {
         try {
             return mPhoneAccountRegistrar.getOutgoingPhoneAccounts();
@@ -180,6 +192,16 @@
     }
 
     @Override
+    public List<PhoneAccountHandle> getPhoneAccountsSupportingScheme(String uriScheme) {
+        try {
+            return mPhoneAccountRegistrar.getOutgoingPhoneAccounts(uriScheme);
+        } catch (Exception e) {
+            Log.e(this, e, "getPhoneAccountsSupportingScheme");
+            throw e;
+        }
+    }
+
+    @Override
     public PhoneAccount getPhoneAccount(PhoneAccountHandle accountHandle) {
         try {
             return mPhoneAccountRegistrar.getPhoneAccount(accountHandle);
@@ -190,6 +212,38 @@
     }
 
     @Override
+    public PhoneAccountHandle getSimCallManager() {
+        try {
+            return mPhoneAccountRegistrar.getSimCallManager();
+        } catch (Exception e) {
+            Log.e(this, e, "getSimCallManager");
+            throw e;
+        }
+    }
+
+    @Override
+    public void setSimCallManager(PhoneAccountHandle accountHandle) {
+        enforceModifyPermission();
+
+        try {
+            mPhoneAccountRegistrar.setSimCallManager(accountHandle);
+        } catch (Exception e) {
+            Log.e(this, e, "setSimCallManager");
+            throw e;
+        }
+    }
+
+    @Override
+    public List<PhoneAccountHandle> getSimCallManagers() {
+        try {
+            return mPhoneAccountRegistrar.getAllConnectionManagerPhoneAccounts();
+        } catch (Exception e) {
+            Log.e(this, e, "getSimCallManagers");
+            throw e;
+        }
+    }
+
+    @Override
     public void registerPhoneAccount(PhoneAccount account) {
         try {
             enforceModifyPermissionOrCallingPackage(
diff --git a/tests/AndroidManifest.xml b/tests/AndroidManifest.xml
index d8877fb..8ae47d2 100644
--- a/tests/AndroidManifest.xml
+++ b/tests/AndroidManifest.xml
@@ -16,7 +16,8 @@
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
           coreApp="true"
-          package="com.android.telecomm.tests">
+          package="com.android.telecomm.tests"
+          android:debuggable="true">
 
     <!-- Test connection service outgoing video preview. -->
     <uses-permission android:name="android.permission.CAMERA" />
@@ -24,7 +25,8 @@
             android:name="com.android.telecomm.permission.REGISTER_PROVIDER_OR_SUBSCRIPTION" />
     <uses-permission android:name="android.permission.CONTROL_INCALL_EXPERIENCE" />
 
-    <application android:label="@string/app_name">
+    <application android:label="@string/app_name"
+                 android:debuggable="true">
         <uses-library android:name="android.test.runner" />
 
         <!-- Miscellaneous telecomm app-related test activities. -->
@@ -116,5 +118,6 @@
     -->
     <instrumentation android:name="android.test.InstrumentationTestRunner"
             android:targetPackage="com.android.telecomm"
-            android:label="Telecomm application tests." />
+            android:label="Telecomm application tests."
+            android:debuggable="true"/>
 </manifest>
diff --git a/tests/src/com/android/telecomm/testapps/CallServiceNotifier.java b/tests/src/com/android/telecomm/testapps/CallServiceNotifier.java
index 5fd75e5..e8aa19f 100644
--- a/tests/src/com/android/telecomm/testapps/CallServiceNotifier.java
+++ b/tests/src/com/android/telecomm/testapps/CallServiceNotifier.java
@@ -109,6 +109,7 @@
                 .withIconResId(R.drawable.stat_sys_phone_call)
                 .withLabel("TelecommTestApp Call Provider")
                 .withShortDescription("a short description for the call provider")
+                .withSupportedUriScheme("tel")
                 .build());
 
         telecommManager.registerPhoneAccount(PhoneAccount.builder()
diff --git a/tests/src/com/android/telecomm/testapps/TestConnectionManager.java b/tests/src/com/android/telecomm/testapps/TestConnectionManager.java
index 95f0718..78c148d 100644
--- a/tests/src/com/android/telecomm/testapps/TestConnectionManager.java
+++ b/tests/src/com/android/telecomm/testapps/TestConnectionManager.java
@@ -95,12 +95,6 @@
             }
 
             @Override
-            public void onStartActivityFromInCall(
-                    RemoteConnection connection, PendingIntent intent) {
-                startActivityFromInCall(intent);
-            }
-
-            @Override
             public void onDestroyed(RemoteConnection connection) {
                 destroy();
                 mManagedConnectionByRemote.remove(mRemote);
diff --git a/tests/src/com/android/telecomm/tests/unit/PhoneAccountRegistrarTest.java b/tests/src/com/android/telecomm/tests/unit/PhoneAccountRegistrarTest.java
index 9daa026..3522153 100644
--- a/tests/src/com/android/telecomm/tests/unit/PhoneAccountRegistrarTest.java
+++ b/tests/src/com/android/telecomm/tests/unit/PhoneAccountRegistrarTest.java
@@ -24,6 +24,7 @@
 import org.xmlpull.v1.XmlSerializer;
 
 import android.content.ComponentName;
+import android.content.Context;
 import android.net.Uri;
 import android.telecomm.PhoneAccount;
 import android.telecomm.PhoneAccountHandle;
@@ -35,6 +36,7 @@
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.File;
+import java.util.Arrays;
 
 public class PhoneAccountRegistrarTest extends AndroidTestCase {
 
@@ -61,7 +63,8 @@
                 .withSubscriptionNumber("555-1212")
                 .withCapabilities(
                         PhoneAccount.CAPABILITY_CALL_PROVIDER
-                                | PhoneAccount.CAPABILITY_SIM_SUBSCRIPTION)
+                                | PhoneAccount.CAPABILITY_SIM_SUBSCRIPTION
+                )
                 .withIconResId(0)
                 .withLabel("label1")
                 .withShortDescription("desc1")
@@ -86,6 +89,17 @@
                 .withLabel("label2")
                 .withShortDescription("desc2")
                 .build());
+        mRegistrar.registerPhoneAccount(PhoneAccount.builder()
+                .withAccountHandle(
+                        new PhoneAccountHandle(new ComponentName("sippkg", "sipcls"), "id4"))
+                .withHandle(Uri.parse("sip:test@sip.com"))
+                .withSubscriptionNumber("test")
+                .withCapabilities(PhoneAccount.CAPABILITY_CALL_PROVIDER)
+                .withIconResId(0)
+                .withLabel("label2")
+                .withShortDescription("desc2")
+                .withSupportedUriScheme("tel")
+                .build());
     }
 
     @Override
@@ -97,7 +111,8 @@
     private static <T> T roundTrip(
             Object self,
             T input,
-            PhoneAccountRegistrar.XmlSerialization<T> xml)
+            PhoneAccountRegistrar.XmlSerialization<T> xml,
+            Context context)
             throws Exception {
         Log.d(self, "Input = %s", input);
 
@@ -118,7 +133,7 @@
             XmlPullParser parser = Xml.newPullParser();
             parser.setInput(new BufferedInputStream(new ByteArrayInputStream(data)), null);
             parser.nextTag();
-            result = xml.readFromXml(parser);
+            result = xml.readFromXml(parser, 0, context);
         }
 
         Log.d(self, "result = " + result);
@@ -140,7 +155,8 @@
 
     public void testPhoneAccountHandle() throws Exception {
         PhoneAccountHandle input = new PhoneAccountHandle(new ComponentName("pkg0", "cls0"), "id0");
-        PhoneAccountHandle result = roundTrip(this, input, PhoneAccountRegistrar.sPhoneAccountHandleXml);
+        PhoneAccountHandle result = roundTrip(this, input,
+                PhoneAccountRegistrar.sPhoneAccountHandleXml, mContext);
         assertPhoneAccountHandleEquals(input, result);
         PhoneAccountHandle inputN =
                 new PhoneAccountHandle(
@@ -148,7 +164,8 @@
                                 "pkg0",  // ctor does not allow null
                                 "cls0"), // ctor does not allow null
                         null);
-        PhoneAccountHandle resultN = roundTrip(this, inputN, PhoneAccountRegistrar.sPhoneAccountHandleXml);
+        PhoneAccountHandle resultN = roundTrip(this, inputN,
+                PhoneAccountRegistrar.sPhoneAccountHandleXml, mContext);
         Log.i(this, "inputN = %s, resultN = %s", inputN, resultN);
         assertPhoneAccountHandleEquals(inputN, resultN);
     }
@@ -162,15 +179,18 @@
             assertEquals(a.getIconResId(), b.getIconResId());
             assertEquals(a.getLabel(), b.getLabel());
             assertEquals(a.getShortDescription(), b.getShortDescription());
+            assertEquals(a.getSupportedUriSchemes(), b.getSupportedUriSchemes());
         }
     }
 
     public void testPhoneAccount() throws Exception {
         PhoneAccount input = makeQuickAccount("pkg0", "cls0", "id0", 0);
-        PhoneAccount result = roundTrip(this, input, PhoneAccountRegistrar.sPhoneAccountXml);
+        PhoneAccount result = roundTrip(this, input, PhoneAccountRegistrar.sPhoneAccountXml,
+                mContext);
         assertPhoneAccountEquals(input, result);
         PhoneAccount inputN = PhoneAccount.builder().build();
-        PhoneAccount resultN = roundTrip(this, inputN, PhoneAccountRegistrar.sPhoneAccountXml);
+        PhoneAccount resultN = roundTrip(this, inputN, PhoneAccountRegistrar.sPhoneAccountXml,
+                mContext);
         assertPhoneAccountEquals(inputN, resultN);
     }
 
@@ -185,7 +205,8 @@
 
     public void testState() throws Exception {
         PhoneAccountRegistrar.State input = makeQuickState();
-        PhoneAccountRegistrar.State result = roundTrip(this, input, PhoneAccountRegistrar.sStateXml);
+        PhoneAccountRegistrar.State result = roundTrip(this, input, PhoneAccountRegistrar.sStateXml,
+                mContext);
         assertStateEquals(input, result);
     }
 
@@ -193,7 +214,7 @@
         assertEquals(4, mRegistrar.getAllPhoneAccountHandles().size());
         assertEquals(3, mRegistrar.getOutgoingPhoneAccounts().size());
         assertEquals(null, mRegistrar.getSimCallManager());
-        assertEquals(null, mRegistrar.getDefaultOutgoingPhoneAccount());
+        assertEquals(null, mRegistrar.getDefaultOutgoingPhoneAccount("tel"));
     }
 
     public void testSimCallManager() throws Exception {
@@ -219,23 +240,23 @@
 
     public void testDefaultOutgoing() {
         // Establish initial conditions
-        assertEquals(null, mRegistrar.getDefaultOutgoingPhoneAccount());
+        assertEquals(null, mRegistrar.getDefaultOutgoingPhoneAccount("tel"));
         PhoneAccountHandle h = new PhoneAccountHandle(new ComponentName("pkg0", "cls0"), "id1");
         mRegistrar.setDefaultOutgoingPhoneAccount(h);
-        assertPhoneAccountHandleEquals(h, mRegistrar.getDefaultOutgoingPhoneAccount());
+        assertPhoneAccountHandleEquals(h, mRegistrar.getDefaultOutgoingPhoneAccount("tel"));
         // If account is un-registered, querying returns null
         mRegistrar.unregisterPhoneAccount(h);
-        assertEquals(null, mRegistrar.getDefaultOutgoingPhoneAccount());
+        assertEquals(null, mRegistrar.getDefaultOutgoingPhoneAccount("tel"));
         // But if account is re-registered, setting comes back
         mRegistrar.registerPhoneAccount(makeQuickAccount("pkg0", "cls0", "id1", 99));
-        assertPhoneAccountHandleEquals(h, mRegistrar.getDefaultOutgoingPhoneAccount());
+        assertPhoneAccountHandleEquals(h, mRegistrar.getDefaultOutgoingPhoneAccount("tel"));
         // De-register by setting to null
         mRegistrar.setDefaultOutgoingPhoneAccount(null);
-        assertEquals(null, mRegistrar.getDefaultOutgoingPhoneAccount());
+        assertEquals(null, mRegistrar.getDefaultOutgoingPhoneAccount("tel"));
         // If argument not have CALL_PROVIDER capability, this is a no-op
         mRegistrar.setDefaultOutgoingPhoneAccount(
                 new PhoneAccountHandle(new ComponentName("pkg0", "cls0"), "id0"));
-        assertEquals(null, mRegistrar.getDefaultOutgoingPhoneAccount());
+        assertEquals(null, mRegistrar.getDefaultOutgoingPhoneAccount("tel"));
         // If only have one account, it is the default
         mRegistrar.unregisterPhoneAccount(
                 new PhoneAccountHandle(new ComponentName("pkg0", "cls0"), "id0"));
@@ -245,7 +266,7 @@
                 new PhoneAccountHandle(new ComponentName("pkg1", "cls1"), "id2"));
         assertPhoneAccountHandleEquals(
                 new PhoneAccountHandle(new ComponentName("pkg1", "cls1"), "id3"),
-                mRegistrar.getDefaultOutgoingPhoneAccount());
+                mRegistrar.getDefaultOutgoingPhoneAccount("tel"));
         // If have one account but not suitable, default returns null
         mRegistrar.unregisterPhoneAccount(
                 new PhoneAccountHandle(new ComponentName("pkg1", "cls1"), "id3"));
@@ -258,7 +279,7 @@
                 .withLabel("label0")
                 .withShortDescription("desc0")
                 .build());
-        assertEquals(null, mRegistrar.getDefaultOutgoingPhoneAccount());
+        assertEquals(null, mRegistrar.getDefaultOutgoingPhoneAccount("tel"));
     }
 
     private static PhoneAccount makeQuickAccount(String pkg, String cls, String id, int idx) {