Merge "Add support for telephony tests in testing script"
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 4caa4a3..6579106 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -43,6 +43,7 @@
     <uses-permission android:name="android.permission.WRITE_CALL_LOG" />
     <uses-permission android:name="android.permission.READ_BLOCKED_NUMBERS" />
     <uses-permission android:name="android.permission.WRITE_BLOCKED_NUMBERS" />
+    <uses-permission android:name="android.permission.SUBSTITUTE_NOTIFICATION_APP_NAME" />
 
     <permission
             android:name="android.permission.BROADCAST_CALLLOG_INFO"
@@ -209,6 +210,8 @@
                 <action android:name="com.android.server.telecom.ACTION_CLEAR_MISSED_CALLS" />
                 <action android:name="com.android.server.telecom.ACTION_CALL_BACK_FROM_NOTIFICATION" />
                 <action android:name="com.android.server.telecom.ACTION_SEND_SMS_FROM_NOTIFICATION" />
+                <action android:name="com.android.server.telecom.ACTION_ANSWER_FROM_NOTIFICATION" />
+                <action android:name="com.android.server.telecom.ACTION_REJECT_FROM_NOTIFICATION" />
             </intent-filter>
         </receiver>
 
diff --git a/res/anim/on_going_call.xml b/res/anim/on_going_call.xml
new file mode 100644
index 0000000..ba3ed46
--- /dev/null
+++ b/res/anim/on_going_call.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2017 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
+  -->
+
+<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
+  android:oneshot="false">
+  <item
+    android:drawable="@drawable/ic_ongoing_phone_24px_01"
+    android:duration="200"/>
+  <item
+    android:drawable="@drawable/ic_ongoing_phone_24px_02"
+    android:duration="200"/>
+  <item
+    android:drawable="@drawable/ic_ongoing_phone_24px_03"
+    android:duration="200"/>
+  <item
+    android:drawable="@drawable/ic_ongoing_phone_24px_04"
+    android:duration="200"/>
+  <item
+    android:drawable="@drawable/ic_ongoing_phone_24px_05"
+    android:duration="200"/>
+  <item
+    android:drawable="@drawable/ic_ongoing_phone_24px_06"
+    android:duration="200"/>
+  <item
+    android:drawable="@drawable/ic_ongoing_phone_24px_07"
+    android:duration="200"/>
+  <item
+    android:drawable="@drawable/ic_ongoing_phone_24px_08"
+    android:duration="200"/>
+  <item
+    android:drawable="@drawable/ic_ongoing_phone_24px_09"
+    android:duration="200"/>
+</animation-list>
\ No newline at end of file
diff --git a/res/drawable-hdpi/ic_call_white_24dp.png b/res/drawable-hdpi/ic_call_white_24dp.png
new file mode 100644
index 0000000..77f9de5
--- /dev/null
+++ b/res/drawable-hdpi/ic_call_white_24dp.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_close_dk.png b/res/drawable-hdpi/ic_close_dk.png
new file mode 100644
index 0000000..590a728
--- /dev/null
+++ b/res/drawable-hdpi/ic_close_dk.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_ongoing_phone_24px_01.png b/res/drawable-hdpi/ic_ongoing_phone_24px_01.png
new file mode 100644
index 0000000..ae31e04
--- /dev/null
+++ b/res/drawable-hdpi/ic_ongoing_phone_24px_01.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_ongoing_phone_24px_02.png b/res/drawable-hdpi/ic_ongoing_phone_24px_02.png
new file mode 100644
index 0000000..67b2b16
--- /dev/null
+++ b/res/drawable-hdpi/ic_ongoing_phone_24px_02.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_ongoing_phone_24px_03.png b/res/drawable-hdpi/ic_ongoing_phone_24px_03.png
new file mode 100644
index 0000000..fa936cb
--- /dev/null
+++ b/res/drawable-hdpi/ic_ongoing_phone_24px_03.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_ongoing_phone_24px_04.png b/res/drawable-hdpi/ic_ongoing_phone_24px_04.png
new file mode 100644
index 0000000..ef51379
--- /dev/null
+++ b/res/drawable-hdpi/ic_ongoing_phone_24px_04.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_ongoing_phone_24px_05.png b/res/drawable-hdpi/ic_ongoing_phone_24px_05.png
new file mode 100644
index 0000000..3712d16
--- /dev/null
+++ b/res/drawable-hdpi/ic_ongoing_phone_24px_05.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_ongoing_phone_24px_06.png b/res/drawable-hdpi/ic_ongoing_phone_24px_06.png
new file mode 100644
index 0000000..c6a4216
--- /dev/null
+++ b/res/drawable-hdpi/ic_ongoing_phone_24px_06.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_ongoing_phone_24px_07.png b/res/drawable-hdpi/ic_ongoing_phone_24px_07.png
new file mode 100644
index 0000000..80ad50b
--- /dev/null
+++ b/res/drawable-hdpi/ic_ongoing_phone_24px_07.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_ongoing_phone_24px_08.png b/res/drawable-hdpi/ic_ongoing_phone_24px_08.png
new file mode 100644
index 0000000..871a1ee
--- /dev/null
+++ b/res/drawable-hdpi/ic_ongoing_phone_24px_08.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_ongoing_phone_24px_09.png b/res/drawable-hdpi/ic_ongoing_phone_24px_09.png
new file mode 100644
index 0000000..871a1ee
--- /dev/null
+++ b/res/drawable-hdpi/ic_ongoing_phone_24px_09.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_call_white_24dp.png b/res/drawable-mdpi/ic_call_white_24dp.png
new file mode 100644
index 0000000..77f9de5
--- /dev/null
+++ b/res/drawable-mdpi/ic_call_white_24dp.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_close_dk.png b/res/drawable-mdpi/ic_close_dk.png
new file mode 100644
index 0000000..590a728
--- /dev/null
+++ b/res/drawable-mdpi/ic_close_dk.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_ongoing_phone_24px_01.png b/res/drawable-mdpi/ic_ongoing_phone_24px_01.png
new file mode 100644
index 0000000..ae31e04
--- /dev/null
+++ b/res/drawable-mdpi/ic_ongoing_phone_24px_01.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_ongoing_phone_24px_02.png b/res/drawable-mdpi/ic_ongoing_phone_24px_02.png
new file mode 100644
index 0000000..67b2b16
--- /dev/null
+++ b/res/drawable-mdpi/ic_ongoing_phone_24px_02.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_ongoing_phone_24px_03.png b/res/drawable-mdpi/ic_ongoing_phone_24px_03.png
new file mode 100644
index 0000000..fa936cb
--- /dev/null
+++ b/res/drawable-mdpi/ic_ongoing_phone_24px_03.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_ongoing_phone_24px_04.png b/res/drawable-mdpi/ic_ongoing_phone_24px_04.png
new file mode 100644
index 0000000..ef51379
--- /dev/null
+++ b/res/drawable-mdpi/ic_ongoing_phone_24px_04.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_ongoing_phone_24px_05.png b/res/drawable-mdpi/ic_ongoing_phone_24px_05.png
new file mode 100644
index 0000000..3712d16
--- /dev/null
+++ b/res/drawable-mdpi/ic_ongoing_phone_24px_05.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_ongoing_phone_24px_06.png b/res/drawable-mdpi/ic_ongoing_phone_24px_06.png
new file mode 100644
index 0000000..c6a4216
--- /dev/null
+++ b/res/drawable-mdpi/ic_ongoing_phone_24px_06.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_ongoing_phone_24px_07.png b/res/drawable-mdpi/ic_ongoing_phone_24px_07.png
new file mode 100644
index 0000000..80ad50b
--- /dev/null
+++ b/res/drawable-mdpi/ic_ongoing_phone_24px_07.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_ongoing_phone_24px_08.png b/res/drawable-mdpi/ic_ongoing_phone_24px_08.png
new file mode 100644
index 0000000..871a1ee
--- /dev/null
+++ b/res/drawable-mdpi/ic_ongoing_phone_24px_08.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_ongoing_phone_24px_09.png b/res/drawable-mdpi/ic_ongoing_phone_24px_09.png
new file mode 100644
index 0000000..871a1ee
--- /dev/null
+++ b/res/drawable-mdpi/ic_ongoing_phone_24px_09.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_call_white_24dp.png b/res/drawable-xhdpi/ic_call_white_24dp.png
new file mode 100644
index 0000000..77f9de5
--- /dev/null
+++ b/res/drawable-xhdpi/ic_call_white_24dp.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_close_dk.png b/res/drawable-xhdpi/ic_close_dk.png
new file mode 100644
index 0000000..590a728
--- /dev/null
+++ b/res/drawable-xhdpi/ic_close_dk.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_ongoing_phone_24px_01.png b/res/drawable-xhdpi/ic_ongoing_phone_24px_01.png
new file mode 100644
index 0000000..ae31e04
--- /dev/null
+++ b/res/drawable-xhdpi/ic_ongoing_phone_24px_01.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_ongoing_phone_24px_02.png b/res/drawable-xhdpi/ic_ongoing_phone_24px_02.png
new file mode 100644
index 0000000..67b2b16
--- /dev/null
+++ b/res/drawable-xhdpi/ic_ongoing_phone_24px_02.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_ongoing_phone_24px_03.png b/res/drawable-xhdpi/ic_ongoing_phone_24px_03.png
new file mode 100644
index 0000000..fa936cb
--- /dev/null
+++ b/res/drawable-xhdpi/ic_ongoing_phone_24px_03.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_ongoing_phone_24px_04.png b/res/drawable-xhdpi/ic_ongoing_phone_24px_04.png
new file mode 100644
index 0000000..ef51379
--- /dev/null
+++ b/res/drawable-xhdpi/ic_ongoing_phone_24px_04.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_ongoing_phone_24px_05.png b/res/drawable-xhdpi/ic_ongoing_phone_24px_05.png
new file mode 100644
index 0000000..3712d16
--- /dev/null
+++ b/res/drawable-xhdpi/ic_ongoing_phone_24px_05.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_ongoing_phone_24px_06.png b/res/drawable-xhdpi/ic_ongoing_phone_24px_06.png
new file mode 100644
index 0000000..c6a4216
--- /dev/null
+++ b/res/drawable-xhdpi/ic_ongoing_phone_24px_06.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_ongoing_phone_24px_07.png b/res/drawable-xhdpi/ic_ongoing_phone_24px_07.png
new file mode 100644
index 0000000..80ad50b
--- /dev/null
+++ b/res/drawable-xhdpi/ic_ongoing_phone_24px_07.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_ongoing_phone_24px_08.png b/res/drawable-xhdpi/ic_ongoing_phone_24px_08.png
new file mode 100644
index 0000000..871a1ee
--- /dev/null
+++ b/res/drawable-xhdpi/ic_ongoing_phone_24px_08.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_ongoing_phone_24px_09.png b/res/drawable-xhdpi/ic_ongoing_phone_24px_09.png
new file mode 100644
index 0000000..871a1ee
--- /dev/null
+++ b/res/drawable-xhdpi/ic_ongoing_phone_24px_09.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_call_white_24dp.png b/res/drawable-xxhdpi/ic_call_white_24dp.png
new file mode 100644
index 0000000..77f9de5
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_call_white_24dp.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_close_dk.png b/res/drawable-xxhdpi/ic_close_dk.png
new file mode 100644
index 0000000..590a728
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_close_dk.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_ongoing_phone_24px_01.png b/res/drawable-xxhdpi/ic_ongoing_phone_24px_01.png
new file mode 100644
index 0000000..ae31e04
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_ongoing_phone_24px_01.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_ongoing_phone_24px_02.png b/res/drawable-xxhdpi/ic_ongoing_phone_24px_02.png
new file mode 100644
index 0000000..67b2b16
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_ongoing_phone_24px_02.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_ongoing_phone_24px_03.png b/res/drawable-xxhdpi/ic_ongoing_phone_24px_03.png
new file mode 100644
index 0000000..fa936cb
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_ongoing_phone_24px_03.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_ongoing_phone_24px_04.png b/res/drawable-xxhdpi/ic_ongoing_phone_24px_04.png
new file mode 100644
index 0000000..ef51379
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_ongoing_phone_24px_04.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_ongoing_phone_24px_05.png b/res/drawable-xxhdpi/ic_ongoing_phone_24px_05.png
new file mode 100644
index 0000000..3712d16
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_ongoing_phone_24px_05.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_ongoing_phone_24px_06.png b/res/drawable-xxhdpi/ic_ongoing_phone_24px_06.png
new file mode 100644
index 0000000..c6a4216
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_ongoing_phone_24px_06.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_ongoing_phone_24px_07.png b/res/drawable-xxhdpi/ic_ongoing_phone_24px_07.png
new file mode 100644
index 0000000..80ad50b
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_ongoing_phone_24px_07.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_ongoing_phone_24px_08.png b/res/drawable-xxhdpi/ic_ongoing_phone_24px_08.png
new file mode 100644
index 0000000..871a1ee
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_ongoing_phone_24px_08.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_ongoing_phone_24px_09.png b/res/drawable-xxhdpi/ic_ongoing_phone_24px_09.png
new file mode 100644
index 0000000..871a1ee
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_ongoing_phone_24px_09.png
Binary files differ
diff --git a/res/drawable-xxxhdpi/ic_call_white_24dp.png b/res/drawable-xxxhdpi/ic_call_white_24dp.png
new file mode 100644
index 0000000..77f9de5
--- /dev/null
+++ b/res/drawable-xxxhdpi/ic_call_white_24dp.png
Binary files differ
diff --git a/res/drawable-xxxhdpi/ic_close_dk.png b/res/drawable-xxxhdpi/ic_close_dk.png
new file mode 100644
index 0000000..590a728
--- /dev/null
+++ b/res/drawable-xxxhdpi/ic_close_dk.png
Binary files differ
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index 2109cef..817f180 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"Kan nie noodgevalnommer blokkeer nie."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> is reeds geblokkeer."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"Gebruik tans die persoonlike beller om die oproep te maak"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"<xliff:g id="CALL_VIA">%1$s</xliff:g>-oproep vanaf <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"<xliff:g id="CALL_VIA">%1$s</xliff:g>-video-oproep vanaf <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"As jy antwoord, sal dit jou <xliff:g id="CALL_VIA">%1$s</xliff:g>-oproep beëindig"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"As jy antwoord, sal dit jou <xliff:g id="CALL_VIA">%1$s</xliff:g>-oproepe beëindig"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"As jy antwoord, sal dit jou <xliff:g id="CALL_VIA">%1$s</xliff:g>-video-oproep beëindig"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"As jy antwoord, sal dit jou huidige oproep beëindig"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"As jy antwoord, sal dit jou huidige oproepe beëindig"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"As jy antwoord, sal dit jou huidige video-oproep beëindig"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"Antwoord"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"Wys af"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"Oproep kan nie gemaak word nie weens jou <xliff:g id="OTHER_CALL">%1$s</xliff:g>-oproep."</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"Oproep kan nie gemaak word nie weens jou <xliff:g id="OTHER_CALL">%1$s</xliff:g>-oproepe."</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"Oproep kan nie gemaak word nie weens \'n oproep in \'n ander program."</string>
 </resources>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index 41f8b2d..eac4c0f 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"አስቸኳይ ጊዜ ቁጥር ማገድ አልቻለም።"</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> ቀድሞውኑ ታግዷል።"</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"ጥሪውን ለማድረግ የግል መደወያውን መጠቀም"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"<xliff:g id="CALL_VIA">%1$s</xliff:g> ጥሪ ከ<xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"<xliff:g id="CALL_VIA">%1$s</xliff:g> የቪዲዮ ጥሪ ከ<xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"መመለስ የ<xliff:g id="CALL_VIA">%1$s</xliff:g> ጥሪዎን ይጨርሳል"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"መመለስ የ<xliff:g id="CALL_VIA">%1$s</xliff:g> ጥሪዎችዎን ይጨርሳል"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"መመለስ የ<xliff:g id="CALL_VIA">%1$s</xliff:g> የቪዲዮ ጥሪዎን ይጨርሳል"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"መመለስ በመካሄድ ላይ ያለ ጥሪዎን ይጨርሳል"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"መመለስ እየተካሄዱ ያሉ ጥሪዎችዎን ይጨርሳል"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"መመለስ እየተካሄደ ያለ የቪዲዮ ጥሪዎን ይጨርሳል"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"ይመልሱ"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"አትቀበል"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"በ<xliff:g id="OTHER_CALL">%1$s</xliff:g> ጥሪዎ ምክንያት ጥሪ መደረግ አይችልም።"</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"በ<xliff:g id="OTHER_CALL">%1$s</xliff:g> ጥሪዎችዎ ምክንያት ጥሪዎች መደረግ አይችሉም።"</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"በሌላ መተግበሪያ ውስጥ ባለ ጥሪ ምክንያት ጥሪ መደረግ አይችልም።"</string>
 </resources>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 8e3abbe..9f58d87 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"غير قادر على حظر رقم الطوارئ."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"تم حظر <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> بالفعل."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"يتم استخدام أداة الاتصال الشخصي لإجراء الاتصال"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"<xliff:g id="CALL_VIA">%1$s</xliff:g> مكالمة من <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"<xliff:g id="CALL_VIA">%1$s</xliff:g> مكالمة فيديو من <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"سيؤدي الرد إلى إنهاء مكالمة <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"سيؤدي الرد إلى إنهاء مكالمات <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"سيؤدي الرد إلى إنهاء مكالمة فيديو <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"سيؤدي الرد إلى إنهاء مكالمتك الجارية"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"سيؤدي الرد إلى إنهاء مكالماتك الجارية"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"سيؤدي الرد إلى إنهاء مكالمات الفيديو"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"رد"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"رفض"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"يتعذر إجراء المكالمة نتيجة لمكالمة <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"يتعذر إجراء المكالمة نتيجة لمكالمات <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"يتعذر إجراء المكالمة نتيجة لوجود مكالمة في تطبيق آخر."</string>
 </resources>
diff --git a/res/values-az-rAZ/strings.xml b/res/values-az-rAZ/strings.xml
index 850e121..9d97681 100644
--- a/res/values-az-rAZ/strings.xml
+++ b/res/values-az-rAZ/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"Fövqəladə nömrəni blok etmək mümkün deyil."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> artıq blok edilib."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"Zəng etmək üçün şəxsi nömrə yığımı istifadə olunur"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"<xliff:g id="CALL_FROM">%2$s</xliff:g> tərəfindən <xliff:g id="CALL_VIA">%1$s</xliff:g> zəngi"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"<xliff:g id="CALL_FROM">%2$s</xliff:g> tərəfindən <xliff:g id="CALL_VIA">%1$s</xliff:g> video zəngi"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"Cavab versəniz, <xliff:g id="CALL_VIA">%1$s</xliff:g> zəngi sonlandırılacaq"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"Cavab versəniz, <xliff:g id="CALL_VIA">%1$s</xliff:g> zəngləri sonlandırılacaq"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"Cavab versəniz, davam edən <xliff:g id="CALL_VIA">%1$s</xliff:g> video zəngi sonlandırılacaq"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"Cavab versəniz, davam edən zəng sonlandırılacaq"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"Cavab versəniz, davam edən zənglər sonlandırılacaq"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"Cavab versəniz, davam edən video zəng sonlandırılacaq"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"Cavab"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"Rədd edin"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"<xliff:g id="OTHER_CALL">%1$s</xliff:g> zəngi səbəbilə çağrı edilə bilməz."</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"<xliff:g id="OTHER_CALL">%1$s</xliff:g> zəngləri səbəbilə çağrı edilə bilməz."</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"Başqa bir tətbiqdəki zəng səbəbilə çağrı edilə bilməz."</string>
 </resources>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index bbe04b8..9204790 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"Номера за спешни случаи не могат да се блокират."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> вече е блокиран."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"За извършване на обаждането се използва личната клавиатура за набиране"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"Обаждане през <xliff:g id="CALL_VIA">%1$s</xliff:g> от <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"Видеообаждане през <xliff:g id="CALL_VIA">%1$s</xliff:g> от <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"Ако отговорите, обаждането ви през <xliff:g id="CALL_VIA">%1$s</xliff:g> ще прекъсне"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"Ако отговорите, обажданията ви през <xliff:g id="CALL_VIA">%1$s</xliff:g> ще прекъснат"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"Ако отговорите, видеообаждането ви през <xliff:g id="CALL_VIA">%1$s</xliff:g> ще прекъсне"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"Ако отговорите, текущото ви обаждане ще прекъсне"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"Ако отговорите, текущите ви обаждания ще прекъснат"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"Ако отговорите, текущото ви видеообаждане ще прекъсне"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"Отговаряне"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"Отхвърляне"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"Не можете да се обадите заради обаждането си през <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"Не можете да се обадите заради обажданията си през <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"Не можете да се обадите заради обаждане в друго приложение."</string>
 </resources>
diff --git a/res/values-bn-rBD/strings.xml b/res/values-bn-rBD/strings.xml
index 088ca2a..92c7c55 100644
--- a/res/values-bn-rBD/strings.xml
+++ b/res/values-bn-rBD/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"জরুরি নম্বর অবরোধ করতে অক্ষম৷"</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> ইতিমধ্যেই অবরোধ করা রয়েছে৷"</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"কল করার জন্য ব্যক্তিগত ডায়ালার ব্যবহার করা হচ্ছে"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"<xliff:g id="CALL_FROM">%2$s</xliff:g> থেকে <xliff:g id="CALL_VIA">%1$s</xliff:g> কল"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"<xliff:g id="CALL_FROM">%2$s</xliff:g> থেকে <xliff:g id="CALL_VIA">%1$s</xliff:g> ভিডিও কল"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"উত্তর দেওয়া হলে আপনার <xliff:g id="CALL_VIA">%1$s</xliff:g> কলটি কেটে যাবে"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"উত্তর দেওয়া হলে আপনার <xliff:g id="CALL_VIA">%1$s</xliff:g> কলগুলি কেটে যাবে"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"উত্তর দেওয়া হলে আপনার <xliff:g id="CALL_VIA">%1$s</xliff:g> ভিডিও কলটি কেটে যাবে"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"উত্তর দেওয়া হলে আপনার চালু থাকা কলটি কেটে যাবে"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"উত্তর দেওয়া হলে আপনার চালু থাকা কলগুলি কেটে যাবে"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"উত্তর দেওয়া হলে আপনার চালু থাকা ভিডিও কলটি কেটে যাবে"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"উত্তর দিন"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"প্রত্যাখ্যান করুন"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"আপনার <xliff:g id="OTHER_CALL">%1$s</xliff:g> কলটির কারণে কলটি করা যাবে না।"</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"আপনার <xliff:g id="OTHER_CALL">%1$s</xliff:g> কলগুলির কারণে কলটি করা যাবে না।"</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"অন্য একটি অ্যাপের কলের কারণে কলটি করা যাবে না।"</string>
 </resources>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index 9504895..014dfc3 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"No es pot bloquejar el número d\'emergència."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> ja està bloquejat."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"S\'està utilitzant el telèfon personal per fer la trucada"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"<xliff:g id="CALL_FROM">%2$s</xliff:g> està fent una trucada mitjançant <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"<xliff:g id="CALL_FROM">%2$s</xliff:g> està fent una videotrucada mitjançant <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"En respondre, finalitzarà la trucada mitjançant <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"En respondre, finalitzaran les trucades mitjançant <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"En respondre, finalitzarà la videotrucada mitjançant <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"En respondre, finalitzarà la trucada en curs"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"En respondre, finalitzaran les trucades en curs"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"En respondre, finalitzarà la videotrucada en curs"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"Respon"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"Rebutja"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"No es pot trucar perquè ja hi ha una trucada en curs mitjançant <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"No es pot trucar perquè ja hi ha trucades en curs mitjançant <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"No es pot trucar perquè ja hi ha una trucada en curs en una altra aplicació."</string>
 </resources>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index ac77aac..3af902b 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"Číslo tísňové linky se nepodařilo zablokovat."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"Číslo <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> už je zablokováno."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"Volání se provádí pomocí osobního vytáčení"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"Hovor <xliff:g id="CALL_VIA">%1$s</xliff:g> od volajícího <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"Videohovor <xliff:g id="CALL_VIA">%1$s</xliff:g> od volajícího <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"Přijetím hovoru ukončíte hovor <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"Přijetím hovoru ukončíte hovory <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"Přijetím hovoru ukončíte videohovor <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"Přijetím hovoru ukončíte probíhající hovor"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"Přijetím hovoru ukončíte probíhající hovory"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"Přijetím hovoru ukončíte probíhající videohovor"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"Přijmout"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"Odmítnout"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"Hovor není možné provést kvůli hovoru <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"Hovor není možné provést kvůli hovorům <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"Hovor není možné provést kvůli hovoru v jiné aplikaci."</string>
 </resources>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 48fba35..99efe3d 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"Nødnummeret kan ikke blokeres."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> er allerede blokeret."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"Opkaldet foretages med det personlige opkaldsprogram"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"Opkald i <xliff:g id="CALL_VIA">%1$s</xliff:g> fra <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"Videoopkald i <xliff:g id="CALL_VIA">%1$s</xliff:g> fra <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"Hvis du besvarer, afsluttes dit opkald i <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"Hvis du besvarer, afsluttes dine opkald i <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"Hvis du besvarer, afsluttes dit videoopkald i <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"Hvis du besvarer, afsluttes dit igangværende opkald"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"Hvis du besvarer, afsluttes dine igangværende opkald"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"Hvis du besvarer, afsluttes dit igangværende videoopkald"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"Besvar"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"Afvis"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"Opkaldet kan ikke foretages på grund af dit opkald i <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"Opkaldet kan ikke foretages på grund af dine opkald i <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"Opkaldet kan ikke foretages på grund et opkald i en anden app."</string>
 </resources>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 7993f35..39ed174 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"Die Notrufnummer kann nicht blockiert werden."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> ist bereits blockiert."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"Zum Anrufen wird das eigene Telefon genutzt"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"Anruf in <xliff:g id="CALL_VIA">%1$s</xliff:g> von <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"Videoanruf in <xliff:g id="CALL_VIA">%1$s</xliff:g> von <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"Wenn du den Anruf annimmst, wird der Anruf in <xliff:g id="CALL_VIA">%1$s</xliff:g> beendet"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"Wenn du den Anruf annimmst, werden die Anrufe in <xliff:g id="CALL_VIA">%1$s</xliff:g> beendet"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"Wenn du den Anruf annimmst, wird der Videoanruf in <xliff:g id="CALL_VIA">%1$s</xliff:g> beendet"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"Wenn du den Anruf annimmst, wird der aktuelle Anruf beendet"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"Wenn du den Anruf annimmst, werden aktuelle Anrufe beendet"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"Wenn du den Anruf annimmst, wird der Videoanruf beendet"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"Annehmen"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"Ablehnen"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"Dieser Anruf kann aufgrund des Anrufs in <xliff:g id="OTHER_CALL">%1$s</xliff:g> nicht getätigt werden."</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"Dieser Anruf kann aufgrund deiner Anrufe in <xliff:g id="OTHER_CALL">%1$s</xliff:g> nicht getätigt werden."</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"Dieser Anruf kann aufgrund eines Anrufs in einer anderen App nicht getätigt werden."</string>
 </resources>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index 06ee5ab..02f43d2 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"Δεν είναι δυνατός ο αποκλεισμός του αριθμού εκτάκτου ανάγκης."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"Ο αριθμός <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> έχει ήδη αποκλειστεί."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"Χρήση του προσωπικού σας προγράμματος κλήσης για την πραγματοποίηση της κλήσης"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"Κλήση μέσω <xliff:g id="CALL_VIA">%1$s</xliff:g> από <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"Βιντεοκλήση μέσω <xliff:g id="CALL_VIA">%1$s</xliff:g> από <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"Εάν απαντήσετε, η κλήση σας μέσω <xliff:g id="CALL_VIA">%1$s</xliff:g> θα τερματιστεί"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"Εάν απαντήσετε, οι κλήσεις σας μέσω <xliff:g id="CALL_VIA">%1$s</xliff:g> θα τερματιστούν"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"Εάν απαντήσετε, η βιντεοκλήση σας μέσω <xliff:g id="CALL_VIA">%1$s</xliff:g> θα τερματιστεί"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"Εάν απαντήσετε, η τρέχουσα κλήση σας θα τερματιστεί"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"Εάν απαντήσετε, οι τρέχουσες κλήσεις σας θα τερματιστούν"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"Εάν απαντήσετε, η τρέχουσα βιντεοκλήση σας θα τερματιστεί"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"Απάντηση"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"Απόρριψη"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"Δεν είναι δυνατή η πραγματοποίηση της κλήσης, λόγω της κλήσης σας μέσω <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"Δεν είναι δυνατή η πραγματοποίηση της κλήσης, λόγω των κλήσεών σας μέσω <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"Δεν είναι δυνατή η πραγματοποίηση της κλήσης, λόγω κάποιας κλήσης μέσω άλλης εφαρμογής."</string>
 </resources>
diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
index 0d01605..86570e1 100644
--- a/res/values-en-rAU/strings.xml
+++ b/res/values-en-rAU/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"Unable to block emergency number."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> is already blocked."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"Using the personal dialler to make the call"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"<xliff:g id="CALL_VIA">%1$s</xliff:g> call from <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"<xliff:g id="CALL_VIA">%1$s</xliff:g> video call from <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"Answering will end your <xliff:g id="CALL_VIA">%1$s</xliff:g> call"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"Answering will end your <xliff:g id="CALL_VIA">%1$s</xliff:g> calls"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"Answering will end your <xliff:g id="CALL_VIA">%1$s</xliff:g> video call"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"Answering will end your ongoing call"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"Answering will end your ongoing calls"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"Answering will end your ongoing video call"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"Answer"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"Decline"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"Call cannot be placed due to your <xliff:g id="OTHER_CALL">%1$s</xliff:g> call."</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"Call cannot be placed due to your <xliff:g id="OTHER_CALL">%1$s</xliff:g> calls."</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"Call cannot be placed due to a call in another app."</string>
 </resources>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index 0d01605..86570e1 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"Unable to block emergency number."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> is already blocked."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"Using the personal dialler to make the call"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"<xliff:g id="CALL_VIA">%1$s</xliff:g> call from <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"<xliff:g id="CALL_VIA">%1$s</xliff:g> video call from <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"Answering will end your <xliff:g id="CALL_VIA">%1$s</xliff:g> call"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"Answering will end your <xliff:g id="CALL_VIA">%1$s</xliff:g> calls"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"Answering will end your <xliff:g id="CALL_VIA">%1$s</xliff:g> video call"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"Answering will end your ongoing call"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"Answering will end your ongoing calls"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"Answering will end your ongoing video call"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"Answer"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"Decline"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"Call cannot be placed due to your <xliff:g id="OTHER_CALL">%1$s</xliff:g> call."</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"Call cannot be placed due to your <xliff:g id="OTHER_CALL">%1$s</xliff:g> calls."</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"Call cannot be placed due to a call in another app."</string>
 </resources>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index 0d01605..86570e1 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"Unable to block emergency number."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> is already blocked."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"Using the personal dialler to make the call"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"<xliff:g id="CALL_VIA">%1$s</xliff:g> call from <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"<xliff:g id="CALL_VIA">%1$s</xliff:g> video call from <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"Answering will end your <xliff:g id="CALL_VIA">%1$s</xliff:g> call"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"Answering will end your <xliff:g id="CALL_VIA">%1$s</xliff:g> calls"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"Answering will end your <xliff:g id="CALL_VIA">%1$s</xliff:g> video call"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"Answering will end your ongoing call"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"Answering will end your ongoing calls"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"Answering will end your ongoing video call"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"Answer"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"Decline"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"Call cannot be placed due to your <xliff:g id="OTHER_CALL">%1$s</xliff:g> call."</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"Call cannot be placed due to your <xliff:g id="OTHER_CALL">%1$s</xliff:g> calls."</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"Call cannot be placed due to a call in another app."</string>
 </resources>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 6768c48..8f4ac36 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"No se puede bloquear el número de emergencia."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> ya está bloqueado."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"Usando el teléfono personal para realizar la llamada"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"Llamada de <xliff:g id="CALL_FROM">%2$s</xliff:g> en <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"Videollamada de <xliff:g id="CALL_FROM">%2$s</xliff:g> en <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"Si respondes, finalizará la llamada de <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"Si respondes, finalizarán tus llamadas de <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"Si respondes, finalizará la videollamada de <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"Si respondes, finalizará tu llamada en curso"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"Si respondes, finalizarán tus llamadas en curso"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"Si respondes, finalizará tu videollamada en curso"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"Responder"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"Rechazar"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"No se puede realizar la llamada porque hay una llamada en curso en <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"No se puede realizar la llamada porque hay otras llamadas en curso en <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"No se puede realizar la llamada porque hay una llamada en curso en otra app."</string>
 </resources>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index f9be28b..dfc956f 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"No se puede bloquear el número de emergencias."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"El <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> ya está bloqueado."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"Utilizando teléfono personal para llamar"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"Llamada de <xliff:g id="CALL_VIA">%1$s</xliff:g> de <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"Videollamada de <xliff:g id="CALL_VIA">%1$s</xliff:g> de <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"Al responder, finalizará tu llamada de <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"Al responder, finalizarán tus llamadas de <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"Al responder, finalizará tu videollamada de <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"Al responder, finalizará la llamada en curso"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"Al responder, finalizarán las llamadas en curso"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"Al responder, finalizará la videollamada en curso"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"Responder"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"Rechazar"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"No puedes llamar porque tienes una llamada de <xliff:g id="OTHER_CALL">%1$s</xliff:g> en curso."</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"No puedes llamar porque tienes varias llamadas de <xliff:g id="OTHER_CALL">%1$s</xliff:g> en curso."</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"No puedes llamar porque tienes una llamada en curso en otra aplicación."</string>
 </resources>
diff --git a/res/values-et-rEE/strings.xml b/res/values-et-rEE/strings.xml
index 506ba31..ccc7b9f 100644
--- a/res/values-et-rEE/strings.xml
+++ b/res/values-et-rEE/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"Hädaabinumbrit ei saa blokeerida."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"Number <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> on juba blokeeritud."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"Helistamiseks kasutatakse isiklikku helistamisprogrammi"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"Teenuse <xliff:g id="CALL_VIA">%1$s</xliff:g> kõne kontaktilt <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"Teenuse <xliff:g id="CALL_VIA">%1$s</xliff:g> videokõne kontaktilt <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"Vastamisel lõpetatakse teenuse <xliff:g id="CALL_VIA">%1$s</xliff:g> kõne"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"Vastamisel lõpetatakse teenuse <xliff:g id="CALL_VIA">%1$s</xliff:g> kõned"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"Vastamisel lõpetatakse teenuse <xliff:g id="CALL_VIA">%1$s</xliff:g> videokõne"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"Vastamisel lõpetatakse pooleliolev kõne"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"Vastamisel lõpetatakse pooleliolevad kõned"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"Vastamisel lõpetatakse pooleliolev videokõne"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"Vasta"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"Keeldu"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"Kõnet ei saa teenuse <xliff:g id="OTHER_CALL">%1$s</xliff:g> kõne tõttu teha."</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"Kõnet ei saa teenuse <xliff:g id="OTHER_CALL">%1$s</xliff:g> kõnede tõttu teha."</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"Kõnet ei saa teise rakenduse kõne tõttu teha."</string>
 </resources>
diff --git a/res/values-eu-rES/strings.xml b/res/values-eu-rES/strings.xml
index 7f2ef59..44913c3 100644
--- a/res/values-eu-rES/strings.xml
+++ b/res/values-eu-rES/strings.xml
@@ -19,7 +19,7 @@
     <string name="telecommAppLabel" product="default" msgid="382363169988504520">"Deien kudeaketa"</string>
     <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"Telefonoa"</string>
     <string name="unknown" msgid="6878797917991465859">"Ezezaguna"</string>
-    <string name="notification_missedCallTitle" msgid="7554385905572364535">"Dei galdua"</string>
+    <string name="notification_missedCallTitle" msgid="7554385905572364535">"Galdutako deia"</string>
     <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"Laneko dei bat galdu duzu"</string>
     <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Dei galduak"</string>
     <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> dei galdu"</string>
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"Ezin da blokeatu larrialdi-zenbakia."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> blokeatuta dago dagoeneko."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"Telefono pertsonala erabiltzen ari zara deia egiteko"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"<xliff:g id="CALL_VIA">%1$s</xliff:g> deia (deitzailea: <xliff:g id="CALL_FROM">%2$s</xliff:g>)"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"<xliff:g id="CALL_VIA">%1$s</xliff:g> bideo-deia (deitzailea: <xliff:g id="CALL_FROM">%2$s</xliff:g>)"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"Erantzuten baduzu, amaitu egingo da <xliff:g id="CALL_VIA">%1$s</xliff:g> deia"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"Erantzuten baduzu, amaitu egingo dira <xliff:g id="CALL_VIA">%1$s</xliff:g> deiak"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"Erantzuten baduzu, amaitu egingo da <xliff:g id="CALL_VIA">%1$s</xliff:g> bideo-deia"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"Erantzuten baduzu, amaitu egingo da uneko deia"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"Erantzuten baduzu, amaitu egingo dira uneko deiak"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"Erantzuten baduzu, amaitu egingo da uneko bideo-deia"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"Erantzun"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"Baztertu"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"Ezin da egin deia, beste dei bat abian delako <xliff:g id="OTHER_CALL">%1$s</xliff:g> zerbitzuan."</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"Ezin da egin deia, beste dei batzuk abian direlako <xliff:g id="OTHER_CALL">%1$s</xliff:g> zerbitzuan."</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"Ezin da egin deia, beste dei bat abian delako beste aplikazio batean."</string>
 </resources>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index 78acda1..e5f6b5c 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"شماره اضطراری مسدود نشد."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> قبلاً مسدود شده است."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"استفاده از شماره‌گیر شخصی برای گرفتن تماس"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"<xliff:g id="CALL_VIA">%1$s</xliff:g> تماس از <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"<xliff:g id="CALL_VIA">%1$s</xliff:g> تماس ویدیویی از <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"پاسخ‌گویی به تماس <xliff:g id="CALL_VIA">%1$s</xliff:g> پایان می‌دهد"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"پاسخ‌گویی به تماس‌های <xliff:g id="CALL_VIA">%1$s</xliff:g> شما پاسخ می‌دهد"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"پاسخ‌گویی به تماس ویدیویی <xliff:g id="CALL_VIA">%1$s</xliff:g> شما پایان می‌دهد"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"پاسخ‌گویی به تماس درحال انجامتان پایان می‌دهد"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"پاسخ‌گویی به تماس‌های درحال انجامتان پایان می‌دهد"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"پاسخ‌گویی به تماس ویدیویی درحال انجامتان پایان می‌دهد"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"پاسخ‌گویی"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"نپذیرفتن"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"به دلیل تماس <xliff:g id="OTHER_CALL">%1$s</xliff:g>، نمی‌توان تماسی برقرار کرد."</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"به دلیل تماس‌های <xliff:g id="OTHER_CALL">%1$s</xliff:g>، نمی‌توان تماسی برقرار کرد."</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"به دلیل تماسی در برنامه دیگر، نمی‌توان تماسی برقرار کرد."</string>
 </resources>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index b810ac5..3afe236 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"Hätänumeroa ei voi estää."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> on jo estetty."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"Puhelun soittaminen henkilökohtaisella numerovalitsimella"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"<xliff:g id="CALL_VIA">%1$s</xliff:g>-puhelu soittajalta <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"<xliff:g id="CALL_VIA">%1$s</xliff:g>-videopuhelu soittajalta <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"Vastaaminen päättää <xliff:g id="CALL_VIA">%1$s</xliff:g>-puhelun."</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"Vastaaminen päättää <xliff:g id="CALL_VIA">%1$s</xliff:g>-puhelut."</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"Vastaaminen päättää <xliff:g id="CALL_VIA">%1$s</xliff:g>-videopuhelun."</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"Vastaaminen päättää käynnissä olevan puhelun."</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"Vastaaminen päättää käynnissä olevat puhelut."</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"Vastaaminen päättää käynnissä olevan videopuhelun."</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"Vastaa"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"Hylkää"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"Puhelua ei voi soittaa, koska toisessa sovelluksessa (<xliff:g id="OTHER_CALL">%1$s</xliff:g>) on puhelu käynnissä."</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"Puhelua ei voi soittaa, koska toisessa sovelluksessa (<xliff:g id="OTHER_CALL">%1$s</xliff:g>) on puheluja käynnissä."</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"Puhelua ei voi soittaa, koska toisessa sovelluksessa on puhelu käynnissä."</string>
 </resources>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index d41cb2d..c87e048 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"Impossible de bloquer le numéro d\'urgence."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"Le numéro <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> a déjà été bloqué."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"Utilisation du clavier personnel pour faire l\'appel…"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"Appel <xliff:g id="CALL_VIA">%1$s</xliff:g> de <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"Appel vidéo <xliff:g id="CALL_VIA">%1$s</xliff:g> de <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"Si vous répondez, vous mettrez fin à votre appel <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"Si vous répondez, vous mettrez fin à vos appels <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"Si vous répondez, vous mettrez fin à votre appel vidéo <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"Si vous répondez, vous mettrez fin à votre appel en cours"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"Si vous répondez, vous mettrez fin à vos appels en cours"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"Si vous répondez, vous mettrez fin à l\'appel vidéo en cours"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"Répondre"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"Refuser"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"Impossible de faire l\'appel en raison de votre appel <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"Impossible de faire l\'appel en raison de vos appels <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"Impossible de faire l\'appel en raison d\'un appel dans une autre application."</string>
 </resources>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 57df3d0..a385d4c 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"Vous ne pouvez pas bloquer un numéro d\'urgence."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"Le numéro \"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g>\" est déjà bloqué."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"Utilisation du clavier personnel pour passer l\'appel…"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"Appel <xliff:g id="CALL_VIA">%1$s</xliff:g> de <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"Appel vidéo <xliff:g id="CALL_VIA">%1$s</xliff:g> de <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"Si vous répondez, vous mettrez fin à votre appel <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"Si vous répondez, vous mettrez fin à vos appels <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"Si vous répondez, vous mettrez fin à l\'appel vidéo <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"Si vous répondez, vous mettrez fin à votre appel en cours"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"Si vous répondez, vous mettrez fin à vos appels en cours"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"Si vous répondez, vous mettrez fin à l\'appel vidéo en cours"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"Répondre"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"Refuser"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"Vous ne pouvez pas passer cet appel, car vous avez une communication en cours dans <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"Vous ne pouvez pas passer cet appel, car vous avez des communications en cours dans <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"Vous ne pouvez pas passer cet appel, car vous avez une communication en cours dans une autre application."</string>
 </resources>
diff --git a/res/values-gl-rES/strings.xml b/res/values-gl-rES/strings.xml
index c6786c2..7dd4aa8 100644
--- a/res/values-gl-rES/strings.xml
+++ b/res/values-gl-rES/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"Non se pode bloquear o número de emerxencia."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"O <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> xa está bloqueado."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"Usando o marcador persoal para facer a chamada"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"Chamada de <xliff:g id="CALL_FROM">%2$s</xliff:g> a través de <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"Videochamada de <xliff:g id="CALL_FROM">%2$s</xliff:g> a través de <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"Ao responder, finalizará a túa chamada de <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"Ao responder, finalizarán as túas chamadas de <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"Ao responder, finalizará a túa videochamada de <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"Ao responder, finalizará a túa chamada en curso"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"Ao responder, finalizarán as túas chamadas en curso"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"Ao responder, finalizarán as túas videochamadas en curso"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"Responder"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"Rexeitar"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"Non se pode realizar a chamada porque hai unha chamada en curso en <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"Non se pode realizar a chamada porque hai chamadas en curso en <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"Non se pode realizar a chamada porque hai chamadas en curso noutra aplicación."</string>
 </resources>
diff --git a/res/values-gu-rIN/strings.xml b/res/values-gu-rIN/strings.xml
index afaebe4..1f0c4a1 100644
--- a/res/values-gu-rIN/strings.xml
+++ b/res/values-gu-rIN/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"કટોકટીના નંબરને અવરોધિત કરવામાં અસમર્થ."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g>, પહેલાંથી અવરોધિત કરવામાં આવ્યો છે."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"કૉલ કરવા માટે વ્યક્તિગત ડાયલરનો ઉપયોગ કરી રહ્યાં છે"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"<xliff:g id="CALL_FROM">%2$s</xliff:g> તરફથી <xliff:g id="CALL_VIA">%1$s</xliff:g> કૉલ"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"<xliff:g id="CALL_FROM">%2$s</xliff:g> તરફથી <xliff:g id="CALL_VIA">%1$s</xliff:g> વિડિઓ કૉલ"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"જવાબ આપવાથી તમારો <xliff:g id="CALL_VIA">%1$s</xliff:g> કૉલ સમાપ્ત થશે"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"જવાબ આપવાથી તમારા <xliff:g id="CALL_VIA">%1$s</xliff:g> કૉલ સમાપ્ત થશે"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"જવાબ આપવાથી તમારો <xliff:g id="CALL_VIA">%1$s</xliff:g> વિડિઓ કૉલ સમાપ્ત થશે"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"જવાબ આપવાથી તમારો ચાલુ કૉલ સમાપ્ત થશે"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"જવાબ આપવાથી તમારા ચાલુ કૉલ સમાપ્ત થશે"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"જવાબ આપવાથી તમારો ચાલુ વિડિઓ કૉલ સમાપ્ત થશે"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"જવાબ આપો"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"નકારો"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"તમારા <xliff:g id="OTHER_CALL">%1$s</xliff:g> કૉલને કારણે કૉલ કરી શકતાં નથી."</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"તમારા <xliff:g id="OTHER_CALL">%1$s</xliff:g> કૉલને કારણે કૉલ કરી શકતાં નથી."</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"અન્ય ઍપ્લિકેશનમાં કૉલને કારણે કૉલ કરી શકતાં નથી."</string>
 </resources>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index 874712d..1e660c2 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -43,7 +43,7 @@
     <string name="outgoing_call_error_no_phone_number_supplied" msgid="1940125199802007505">"कॉल करने के लिए, मान्‍य नंबर डालें."</string>
     <string name="duplicate_video_call_not_allowed" msgid="3749211605014548386">"इस समय कॉल नहीं जोड़ा जा सकता."</string>
     <string name="no_vm_number" msgid="4164780423805688336">"गुम वॉयस मेल नंबर"</string>
-    <string name="no_vm_number_msg" msgid="1300729501030053828">"सिम कार्ड पर कोई वॉयस मेल नंबर संग्रहीत नहीं है."</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"सिम कार्ड पर कोई वॉयस मेल नंबर संग्रहित नहीं है."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"नंबर जोड़ें"</string>
     <string name="change_default_dialer_dialog_title" msgid="9101655962941740507">"<xliff:g id="NEW_APP">%s</xliff:g> को अपना डिफ़ॉल्ट ऐप्लिकेशन बनाएं?"</string>
     <string name="change_default_dialer_dialog_affirmative" msgid="8606546663509166276">"डिफ़ॉल्ट सेट करें"</string>
@@ -54,7 +54,7 @@
     <string name="block_number" msgid="1101252256321306179">"एक नंबर जोड़ें"</string>
     <string name="unblock_dialog_body" msgid="1614238499771862793">"<xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g> को अनवरोधित करें?"</string>
     <string name="unblock_button" msgid="3078048901972674170">"अनवरोधित करें"</string>
-    <string name="add_blocked_dialog_body" msgid="9030243212265516828">"इसके कॉल और लेख को अवरुद्ध करें"</string>
+    <string name="add_blocked_dialog_body" msgid="9030243212265516828">"इसके कॉल और लेख अवरुद्ध करें"</string>
     <string name="add_blocked_number_hint" msgid="6847675097085433553">"फ़ोन नंबर"</string>
     <string name="block_button" msgid="8822290682524373357">"अवरुद्ध करें"</string>
     <string name="non_primary_user" msgid="5180129233352533459">"केवल डिवाइस स्वामी अवरुद्ध किए गए नंबर देख और प्रबंधित कर सकते हैं."</string>
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"आपातकालीन नंबर अवरुद्ध करने में असमर्थ."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> पहले से अवरोधित है."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"कॉल करने के लिए व्यक्तिगत डायलर का उपयोग करना"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"<xliff:g id="CALL_FROM">%2$s</xliff:g> की ओर से <xliff:g id="CALL_VIA">%1$s</xliff:g> कॉल"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"<xliff:g id="CALL_FROM">%2$s</xliff:g> की ओर से <xliff:g id="CALL_VIA">%1$s</xliff:g> वीडियो कॉल"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"उत्तर देने से आपका <xliff:g id="CALL_VIA">%1$s</xliff:g> कॉल समाप्त हो जाएगा"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"उत्तर देने से आपके <xliff:g id="CALL_VIA">%1$s</xliff:g> कॉल समाप्त हो जाएंगे"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"उत्तर देने से आपका <xliff:g id="CALL_VIA">%1$s</xliff:g> वीडियो कॉल समाप्त हो जाएगा"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"उत्तर देने से आपका जारी कॉल समाप्त हो जाएगा"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"उत्तर देने से आपके जारी कॉल समाप्त हो जाएंगे"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"उत्तर देने से आपका जारी वीडियो कॉल समाप्त हो जाएगा"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"उत्तर दें"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"अस्वीकार करें"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"आपके <xliff:g id="OTHER_CALL">%1$s</xliff:g> कॉल के कारण कॉल नहीं लगाया जा सकता."</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"आपके <xliff:g id="OTHER_CALL">%1$s</xliff:g> कॉल के कारण कॉल नहीं लगाए जा सकते."</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"किसी दूसरे ऐप्लिकेशन में कॉल के कारण कॉल नहीं लगाया जा सकता."</string>
 </resources>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index 86e06ed..45024fe 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"Broj hitne službe ne može se blokirati."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"Broj <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> već je blokiran."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"Za upućivanje poziva upotrebljava se osobni program za biranje"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"Poziv u aplikaciji <xliff:g id="CALL_VIA">%1$s</xliff:g> od korisnika <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"Videopoziv u aplikaciji <xliff:g id="CALL_VIA">%1$s</xliff:g> od korisnika <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"Ako odgovorite, prekinut ćete poziv u aplikaciji <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"Ako odgovorite, prekinut ćete pozive u aplikaciji <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"Ako odgovorite, prekinut ćete videopoziv u aplikaciji <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"Ako odgovorite, prekinut ćete poziv u tijeku"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"Ako odgovorite, prekinut ćete pozive u tijeku"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"Ako odgovorite, prekinut ćete videopoziv u tijeku"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"Odgovori"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"Odbij"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"Poziv se ne može uspostaviti zbog poziva u aplikaciji <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"Poziv se ne može uspostaviti zbog poziva u aplikaciji <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"Poziv se ne može uspostaviti zbog poziva u drugoj aplikaciji."</string>
 </resources>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index 6266e54..14e543b 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"Nem sikerült letiltani a segélyhívószámot."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"A következő szám már le van tiltva: <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g>."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"Hívás indítása a személyes tárcsázóval"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"<xliff:g id="CALL_VIA">%1$s</xliff:g>-hívás a következőtől: <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"<xliff:g id="CALL_VIA">%1$s</xliff:g>-videohívás a következőtől: <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"Ha válaszol erre a hívásra, megszakad a(z) <xliff:g id="CALL_VIA">%1$s</xliff:g>-hívás"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"Ha válaszol erre a hívásra, megszakadnak a(z) <xliff:g id="CALL_VIA">%1$s</xliff:g>-hívások"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"Ha válaszol erre a hívásra, megszakítja a(z) <xliff:g id="CALL_VIA">%1$s</xliff:g>-videohívást"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"Ha válaszol erre a hívásra, megszakítja a jelenlegi hívást"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"Ha válaszol erre a hívásra, megszakítja a meglévő hívásokat"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"Ha válaszol a hívásra, megszakítja a meglévő videohívást"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"Hívás fogadása"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"Elutasítás"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"A(z) <xliff:g id="OTHER_CALL">%1$s</xliff:g>-hívás miatt nem indítható hívás."</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"A(z) <xliff:g id="OTHER_CALL">%1$s</xliff:g>-hívások miatt nem indítható hívás."</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"Egy másik alkalmazásban folytatott hívás miatt nem indítható hívás."</string>
 </resources>
diff --git a/res/values-hy-rAM/strings.xml b/res/values-hy-rAM/strings.xml
index 7c6d12b..7d30f73 100644
--- a/res/values-hy-rAM/strings.xml
+++ b/res/values-hy-rAM/strings.xml
@@ -50,11 +50,11 @@
     <string name="change_default_dialer_dialog_negative" msgid="9078144617060173845">"Չեղարկել"</string>
     <string name="change_default_dialer_warning_message" msgid="1417671460801684999">"<xliff:g id="NEW_APP">%s</xliff:g> հավելվածը կկատարի զանգերի հետ կապված բոլոր գործառույթները: Որպես Հեռախոսի կանխադրված հավելված նշեք միայն վստահելի հավելվածներ:"</string>
     <string name="blocked_numbers" msgid="2751843139572970579">"Արգելափակված համարներ"</string>
-    <string name="blocked_numbers_msg" msgid="1045015186124965643">"Արգելափակված համարներից զանգեր կամ SMS–ներ չեք ստանա:"</string>
+    <string name="blocked_numbers_msg" msgid="1045015186124965643">"Արգելափակված համարներից զանգեր և SMS-ներ չեք ստանա:"</string>
     <string name="block_number" msgid="1101252256321306179">"Ավելացնել համար"</string>
     <string name="unblock_dialog_body" msgid="1614238499771862793">"Արգելաբացե՞լ <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g> համարը:"</string>
     <string name="unblock_button" msgid="3078048901972674170">"Արգելաբացել"</string>
-    <string name="add_blocked_dialog_body" msgid="9030243212265516828">"Արգելափակել այս համարից ստացվող զանգերն ու տեքստային հաղորդագրությունները"</string>
+    <string name="add_blocked_dialog_body" msgid="9030243212265516828">"Արգելափակել այս համարից ուղարկված զանգերն ու հաղորդագրությունները՝"</string>
     <string name="add_blocked_number_hint" msgid="6847675097085433553">"Հեռախոսահամարը"</string>
     <string name="block_button" msgid="8822290682524373357">"Արգելափակել"</string>
     <string name="non_primary_user" msgid="5180129233352533459">"Միայն սարքի սեփականատերը կարող է դիտել և կառավարել արգելափակված համարները:"</string>
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"Արտակարգ իրավիճակների հեռախոսահամարը հնարավոր չէ արգելափակել:"</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> համարն արդեն արգելափակված է:"</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"Զանգելու նպատակով անհատական համարհավաքիչի օգտագործում"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"<xliff:g id="CALL_VIA">%1$s</xliff:g>-ի զանգ՝ <xliff:g id="CALL_FROM">%2$s</xliff:g>-ից"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"<xliff:g id="CALL_VIA">%1$s</xliff:g>-ի տեսազանգ՝ <xliff:g id="CALL_FROM">%2$s</xliff:g>-ից"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"Եթե պատասխանեք այս զանգին, <xliff:g id="CALL_VIA">%1$s</xliff:g>-ի ընթացիկ զանգը կընդհատվի"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"Եթե պատասխանեք այս զանգին, <xliff:g id="CALL_VIA">%1$s</xliff:g>-ի ընթացիկ զանգերը կընդհատվեն"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"Եթե պատասխանեք այս զանգին, <xliff:g id="CALL_VIA">%1$s</xliff:g>-ի ընթացիկ տեսազանգը կընդհատվի"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"Եթե պատասխանեք այս զանգին, ընթացիկ զանգը կընդհատվի"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"Եթե պատասխանեք այս զանգին, ընթացիկ զանգերը կընդհատվեն"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"Եթե պատասխանեք այս զանգին, ընթացիկ տեսազանգը կընդհատվի"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"Պատասխանել"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"Մերժել"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"Զանգը հնարավոր չէ կատարել՝ <xliff:g id="OTHER_CALL">%1$s</xliff:g>-ի ընթացիկ զանգի պատճառով:"</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"Զանգը հնարավոր չէ կատարել՝ <xliff:g id="OTHER_CALL">%1$s</xliff:g>-ի ընթացիկ զանգերի պատճառով:"</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"Զանգը հնարավոր չէ կատարել՝ մեկ այլ հավելվածի ընթացիկ զանգի պատճառով:"</string>
 </resources>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index 780c94b..94f8332 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"Tidak dapat memblokir nomor darurat."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> sudah diblokir."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"Menggunakan telepon pribadi untuk melakukan panggilan"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"<xliff:g id="CALL_VIA">%1$s</xliff:g> panggilan dari <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"<xliff:g id="CALL_VIA">%1$s</xliff:g> video call dari <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"Menjawab panggilan akan mengakhiri panggilan <xliff:g id="CALL_VIA">%1$s</xliff:g> Anda"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"Menjawab panggilan akan mengakhiri panggilan <xliff:g id="CALL_VIA">%1$s</xliff:g> Anda"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"Menjawab panggilan akan mengakhiri video call <xliff:g id="CALL_VIA">%1$s</xliff:g> Anda"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"Menjawab panggilan akan mengakhiri panggilan yang sedang berlangsung"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"Menjawab panggilan akan mengakhiri panggilan yang sedang berlangsung"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"Menjawab panggilan akan mengakhiri video call yang sedang berlangsung"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"Jawab"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"Tolak"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"Panggilan tidak dapat dilakukan karena panggilan <xliff:g id="OTHER_CALL">%1$s</xliff:g> Anda."</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"Panggilan tidak dapat dilakukan karena panggilan <xliff:g id="OTHER_CALL">%1$s</xliff:g> Anda."</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"Panggilan tidak dapat dilakukan karena adanya panggilan di aplikasi lain."</string>
 </resources>
diff --git a/res/values-is-rIS/strings.xml b/res/values-is-rIS/strings.xml
index bc43950..9343c23 100644
--- a/res/values-is-rIS/strings.xml
+++ b/res/values-is-rIS/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"Getur ekki sett neyðarnúmer á bannlista."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> er nú þegar á bannlista."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"Notar eigin símaforrit til að hringja"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"Símtal með <xliff:g id="CALL_VIA">%1$s</xliff:g> frá <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"Myndsímtal með <xliff:g id="CALL_VIA">%1$s</xliff:g> frá <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"Ef þessu er svarað lýkur símtali <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"Ef þessu er svarað mun símtölum <xliff:g id="CALL_VIA">%1$s</xliff:g> ljúka"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"Ef þessu er svarað lýkur myndsímtali <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"Ef þessu er svarað lýkur símtalinu"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"Ef þessu er svarað lýkur símtölum"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"Ef þessu er svarað lýkur myndsímtalinu"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"Svara"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"Hafna"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"Ekki er hægt að hringja sökum símtalsins með <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"Ekki er hægt að hringja sökum símtala með <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"Ekki er hægt að hringja sökum símtals í öðru forriti."</string>
 </resources>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 716f765..771d094 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -19,10 +19,10 @@
     <string name="telecommAppLabel" product="default" msgid="382363169988504520">"Gestione chiamate"</string>
     <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"Telefono"</string>
     <string name="unknown" msgid="6878797917991465859">"Sconosciuto"</string>
-    <string name="notification_missedCallTitle" msgid="7554385905572364535">"Chiamata senza risposta"</string>
+    <string name="notification_missedCallTitle" msgid="7554385905572364535">"Chiamata persa"</string>
     <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"Chiamata di lavoro persa"</string>
-    <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Chiamate senza risposta"</string>
-    <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> chiamate senza risposta"</string>
+    <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Chiamate perse"</string>
+    <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> chiamate perse"</string>
     <string name="notification_missedCallTicker" msgid="504686252427747209">"Chiamata senza risposta da <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
     <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Richiama"</string>
     <string name="notification_missedCall_message" msgid="3049928912736917988">"Messaggio"</string>
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"Impossibile bloccare un numero di emergenza."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> è già bloccato."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"Utilizzo dell\'app Telefono personale per chiamare"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"Chiamata <xliff:g id="CALL_VIA">%1$s</xliff:g> da <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"Videochiamata <xliff:g id="CALL_VIA">%1$s</xliff:g> da <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"Se rispondi, la chiamata <xliff:g id="CALL_VIA">%1$s</xliff:g> verrà terminata"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"Se rispondi, le chiamate <xliff:g id="CALL_VIA">%1$s</xliff:g> verranno terminate"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"Se rispondi, la videochiamata <xliff:g id="CALL_VIA">%1$s</xliff:g> verrà terminata"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"Se rispondi, la chiamata in corso verrà terminata"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"Se rispondi, le chiamate in corso verranno terminate"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"Se rispondi, la videochiamata in corso verrà terminata"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"Rispondi"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"Rifiuta"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"Impossibile effettuare la chiamata a causa della chiamata <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"Impossibile effettuare la chiamata a causa delle chiamate <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"Impossibile effettuare la chiamata a causa di una chiamata in un\'altra app."</string>
 </resources>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index a730121..b255a4b 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"אי אפשר לחסום מספרי חירום."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"המספר <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> כבר חסום."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"משתמש בחייגן האישי כדי להתקשר"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"<xliff:g id="CALL_FROM">%2$s</xliff:g> מתקשר/ת אליך ב-<xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"<xliff:g id="CALL_FROM">%2$s</xliff:g> מתקשר/ת אליך בשיחת וידאו ב-<xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"מענה יסיים את השיחה ב-<xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"מענה יסיים את השיחות ב-<xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"מענה יסיים את שיחת הווידאו ב-<xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"מענה יסיים את השיחה הנוכחית"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"מענה יסיים את השיחות הנוכחיות"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"מענה יסיים את שיחת הווידאו הנוכחית"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"מענה"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"דחייה"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"אי אפשר להתקשר בגלל שיש שיחה ב-<xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"אי אפשר להתקשר בגלל שיש שיחות ב-<xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"אי אפשר להתקשר בגלל שיש שיחה באפליקציה אחרת."</string>
 </resources>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 256d926..bf32515 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"緊急通報番号はブロックできません。"</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> は既にブロックされています。"</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"個人用の電話アプリで電話する"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"<xliff:g id="CALL_FROM">%2$s</xliff:g> さんからの <xliff:g id="CALL_VIA">%1$s</xliff:g> の通話"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"<xliff:g id="CALL_FROM">%2$s</xliff:g> さんからの <xliff:g id="CALL_VIA">%1$s</xliff:g> のビデオ通話"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"応答すると、<xliff:g id="CALL_VIA">%1$s</xliff:g> の通話は終了します"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"応答すると、<xliff:g id="CALL_VIA">%1$s</xliff:g> の通話は終了します"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"応答すると、<xliff:g id="CALL_VIA">%1$s</xliff:g> のビデオ通話は終了します"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"応答すると、進行中の通話は終了します"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"応答すると、進行中の通話は終了します"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"応答すると、進行中のビデオ通話は終了します"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"応答"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"拒否"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"<xliff:g id="OTHER_CALL">%1$s</xliff:g> で通話中のため、この通話を発信することはできません。"</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"<xliff:g id="OTHER_CALL">%1$s</xliff:g> で通話中のため、この通話を発信することはできません。"</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"別のアプリで通話中のため、この通話を発信することはできません。"</string>
 </resources>
diff --git a/res/values-ka-rGE/strings.xml b/res/values-ka-rGE/strings.xml
index 1e48ae1..2710896 100644
--- a/res/values-ka-rGE/strings.xml
+++ b/res/values-ka-rGE/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"საგანგებო ნომრის დაბლოკვა შეუძლებელია."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> უკვე დაბლოკილია."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"ზარის განსახორციელებლად გამოიყენება პირადი დამრეკი"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"<xliff:g id="CALL_VIA">%1$s</xliff:g> ზარი <xliff:g id="CALL_FROM">%2$s</xliff:g>-ისგან"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"<xliff:g id="CALL_VIA">%1$s</xliff:g> ვიდეოზარი <xliff:g id="CALL_FROM">%2$s</xliff:g>-ისგან"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"პასუხის გაცემა თქვენს <xliff:g id="CALL_VIA">%1$s</xliff:g> ზარს დაასრულებს"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"პასუხის გაცემა თქვენს <xliff:g id="CALL_VIA">%1$s</xliff:g> ზარებს დაასრულებს"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"პასუხის გაცემა თქვენს <xliff:g id="CALL_VIA">%1$s</xliff:g> ვიდეოზარს დაასრულებს"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"პასუხის გაცემა თქვენს მიმდინარე ზარს დაასრულებს"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"პასუხის გაცემა თქვენს მიმდინარე ზარებს დაასრულებს"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"პასუხის გაცემა თქვენს მიმდინარე ვიდეოზარს დაასრულებს"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"პასუხი"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"უარყოფა"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"ზარი ვერ ხორციელდება <xliff:g id="OTHER_CALL">%1$s</xliff:g> ზარის გამო."</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"ზარი ვერ ხორციელდება <xliff:g id="OTHER_CALL">%1$s</xliff:g> ზარების გამო."</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"ზარი ვერ ხორციელდება ზარის გამო სხვა აპში."</string>
 </resources>
diff --git a/res/values-kk-rKZ/strings.xml b/res/values-kk-rKZ/strings.xml
index 5a49e4d..39aabd9 100644
--- a/res/values-kk-rKZ/strings.xml
+++ b/res/values-kk-rKZ/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"Жедел қызмет нөмірін бөгеу мүмкін емес."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> бұрыннан бөгелген."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"Қоңырау шалу үшін жеке нөмір тергішті пайдалану"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"<xliff:g id="CALL_VIA">%1$s</xliff:g> қоңырауы: <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"<xliff:g id="CALL_VIA">%1$s</xliff:g> бейне қоңырауы: <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"Жауап беру <xliff:g id="CALL_VIA">%1$s</xliff:g> қоңырауын тоқтатады"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"Жауап беру <xliff:g id="CALL_VIA">%1$s</xliff:g> қоңырауларын тоқтатады"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"Жауап беру <xliff:g id="CALL_VIA">%1$s</xliff:g> бейне қоңырауын тоқтатады"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"Жауап беру қазіргі қоңырауды тоқтатады"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"Жауап беру қазіргі қоңырауларды тоқтатады"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"Жауап беру қазіргі бейне қоңырауды тоқтатады"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"Жауап беру"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"Қабылдамау"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"Қоңырау шалу мүмкін емес, себебі <xliff:g id="OTHER_CALL">%1$s</xliff:g> қоңырауы белсенді."</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"Қоңырау шалу мүмкін емес, себебі <xliff:g id="OTHER_CALL">%1$s</xliff:g> қоңыраулары белсенді."</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"Қоңырау шалу мүмкін емес, себебі басқа қолданбадан қоңырау шалынуда."</string>
 </resources>
diff --git a/res/values-km-rKH/strings.xml b/res/values-km-rKH/strings.xml
index f3fa21b..1dd79d5 100644
--- a/res/values-km-rKH/strings.xml
+++ b/res/values-km-rKH/strings.xml
@@ -50,7 +50,7 @@
     <string name="change_default_dialer_dialog_negative" msgid="9078144617060173845">"បោះបង់"</string>
     <string name="change_default_dialer_warning_message" msgid="1417671460801684999">"<xliff:g id="NEW_APP">%s</xliff:g> នឹង​អាច​ដាក់ចុះ និង​ត្រួតពិនិត្យ​​ទិដ្ឋភាព​ការ​ហៅ​ទាំងអស់។ មាន​តែ​កម្មវិធី​ដែល​អ្នក​ទុកចិត្ត​ប៉ុណ្ណោះ​​អាច​​ត្រូវ​បាន​​កំណត់​ជា​កម្មវិធី​ទូរសព្ទ​លំនាំដើម។"</string>
     <string name="blocked_numbers" msgid="2751843139572970579">"លេខដែល​បានរារាំង"</string>
-    <string name="blocked_numbers_msg" msgid="1045015186124965643">"អ្នក​នឹង​មិន​ទទួល​បាន​ការ​ហៅទូរស័ព្ទ ឬ​សារ​​ពី​លេខ​ដែល​បាន​​រារាំង​ឡើយ។"</string>
+    <string name="blocked_numbers_msg" msgid="1045015186124965643">"អ្នក​នឹង​មិន​ទទួល​បាន​ការ​ហៅទូរសព្ទ ឬ​សារ​​ពី​លេខ​ដែល​បាន​​រារាំង​ឡើយ។"</string>
     <string name="block_number" msgid="1101252256321306179">"បញ្ចូល​លេខ"</string>
     <string name="unblock_dialog_body" msgid="1614238499771862793">"ឈប់រារាំង <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g> ឬ?"</string>
     <string name="unblock_button" msgid="3078048901972674170">"ឈប់រារាំង"</string>
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"មិន​អាច​​​ទប់ស្កាត់​លេខ​បន្ទាន់​បាន​ទេ។"</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> ត្រូវ​បាន​ទប់ស្កាត់​រួច​ហើយ។"</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"កំពុងប្រើកម្មវិធីហៅផ្ទាល់ខ្លួនដើម្បីធ្វើការហៅទូរស័ព្ទ"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"ការ​ហៅ <xliff:g id="CALL_VIA">%1$s</xliff:g> ពី <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"ការ​ហៅ​តាម​វីដេអូ <xliff:g id="CALL_VIA">%1$s</xliff:g> ពី <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"ការ​ឆ្លើយ​នឹង​បញ្ចប់​ការហៅ <xliff:g id="CALL_VIA">%1$s</xliff:g> របស់​អ្នក"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"ការ​ឆ្លើយ​នឹង​បញ្ចប់​ការហៅ <xliff:g id="CALL_VIA">%1$s</xliff:g> របស់​អ្នក"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"ការ​ឆ្លើយ​នឹង​បញ្ចប់​ការ​ហៅ​តាម​វីដេអូ <xliff:g id="CALL_VIA">%1$s</xliff:g> របស់​អ្នក"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"ការ​ឆ្លើយ​នឹង​បញ្ចប់​ការ​ហៅ​ដែល​កំពុង​តែ​ដំណើរការ​របស់​អ្នក"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"ការ​ឆ្លើយ​នឹង​បញ្ចប់​ការ​ហៅ​ដែល​កំពុង​តែ​ដំណើរការ​របស់​អ្នក"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"ការ​ឆ្លើយ​នឹង​បញ្ចប់​ការ​ហៅ​តាម​វីដេអូ​ដែល​កំពុង​តែ​ដំណើរការ​របស់​អ្នក"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"ឆ្លើយ"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"បដិសេធ"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"ការ​ហៅ​មិន​អាចធ្វើ​បាន​ទេ ដោយ​សារ​ការហៅ​ <xliff:g id="OTHER_CALL">%1$s</xliff:g> របស់​អ្នក។"</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"ការ​ហៅ​មិន​អាច​ធ្វើ​បាន​ទេ ដោយ​សារ​ការ​ហៅ <xliff:g id="OTHER_CALL">%1$s</xliff:g> របស់​អ្នក។"</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"ការ​ហៅ​មិន​អាច​ធ្វើ​បាន​ទេ ដោយ​សារ​មាន​ការហៅ​មួយ​នៅ​ក្នុង​កម្មវិធី​ផ្សេង។"</string>
 </resources>
diff --git a/res/values-kn-rIN/strings.xml b/res/values-kn-rIN/strings.xml
index 86834d9..d3d4acd 100644
--- a/res/values-kn-rIN/strings.xml
+++ b/res/values-kn-rIN/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"ತುರ್ತು ಸಂಖ್ಯೆಯನ್ನು ನಿರ್ಬಂಧಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> ಅನ್ನು ಈಗಾಗಲೇ ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"ಕರೆ ಮಾಡಲು ವೈಯಕ್ತಿಕ ಡಯಲರ್ ಬಳಸಲಾಗುತ್ತಿದೆ"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"<xliff:g id="CALL_FROM">%2$s</xliff:g> ನಿಂದ <xliff:g id="CALL_VIA">%1$s</xliff:g> ಕರೆ"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"<xliff:g id="CALL_FROM">%2$s</xliff:g> ನಿಂದ <xliff:g id="CALL_VIA">%1$s</xliff:g> ವೀಡಿಯೊ ಕರೆ"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"ಕರೆಗೆ ಉತ್ತರಿಸುವುದರಿಂದ ನಿಮ್ಮ <xliff:g id="CALL_VIA">%1$s</xliff:g> ಕರೆಯು ಅಂತ್ಯಗೊಳ್ಳುತ್ತದೆ"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"ಕರೆಗೆ ಉತ್ತರಿಸುವುದರಿಂದ ನಿಮ್ಮ <xliff:g id="CALL_VIA">%1$s</xliff:g> ಕರೆಗಳು ಅಂತ್ಯಗೊಳ್ಳುತ್ತವೆ"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"ಕರೆಗೆ ಉತ್ತರಿಸುವುದರಿಂದ ನಿಮ್ಮ <xliff:g id="CALL_VIA">%1$s</xliff:g> ವೀಡಿಯೊ ಕರೆಯು ಅಂತ್ಯಗೊಳ್ಳುತ್ತದೆ"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"ಕರೆಗೆ ಉತ್ತರಿಸುವುದರಿಂದ ನಿಮ್ಮ ಚಾಲ್ತಿಯಲ್ಲಿರುವ ಕರೆಯು ಅಂತ್ಯಗೊಳ್ಳುತ್ತದೆ"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"ಕರೆಗೆ ಉತ್ತರಿಸುವುದರಿಂದ ನಿಮ್ಮ ಚಾಲ್ತಿಯಲ್ಲಿರುವ ಕರೆಗಳು ಅಂತ್ಯಗೊಳ್ಳುತ್ತವೆ"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"ಕರೆಗೆ ಉತ್ತರಿಸುವುದರಿಂದ ನಿಮ್ಮ ಚಾಲ್ತಿಯಲ್ಲಿರುವ ವೀಡಿಯೊ ಕರೆಯು ಅಂತ್ಯಗೊಳ್ಳುತ್ತದೆ"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"ಉತ್ತರ"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"ನಿರಾಕರಿಸಿ"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"ನಿಮ್ಮ <xliff:g id="OTHER_CALL">%1$s</xliff:g> ಕರೆ ಇರುವ ಕಾರಣ ಕರೆ ಮಾಡಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ."</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"ನಿಮ್ಮ <xliff:g id="OTHER_CALL">%1$s</xliff:g> ಕರೆಗಳ ಕಾರಣ ಕರೆ ಮಾಡಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ."</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"ಬೇರೊಂದು ಅಪ್ಲಿಕೇಶನ್‍ನಲ್ಲಿ ಕರೆಯಲ್ಲಿರುವುದರಿಂದ ಕರೆ ಮಾಡಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ."</string>
 </resources>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 9cf688a..50bd0ff 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"긴급 전화번호를 차단할 수 없습니다."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g>번은 이미 차단되었습니다."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"전화를 걸 때 개인 다이얼러 사용"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"<xliff:g id="CALL_FROM">%2$s</xliff:g>의 <xliff:g id="CALL_VIA">%1$s</xliff:g> 통화"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"<xliff:g id="CALL_FROM">%2$s</xliff:g>의 <xliff:g id="CALL_VIA">%1$s</xliff:g> 화상 통화"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"전화를 받으면 <xliff:g id="CALL_VIA">%1$s</xliff:g> 통화가 종료됩니다."</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"전화를 받으면 <xliff:g id="CALL_VIA">%1$s</xliff:g> 통화가 종료됩니다."</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"전화를 받으면 <xliff:g id="CALL_VIA">%1$s</xliff:g> 화상 통화가 종료됩니다."</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"전화를 받으면 진행 중인 통화가 종료됩니다."</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"전화를 받으면 진행 중인 통화가 종료됩니다."</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"전화를 받으면 진행 중인 화상 통화가 종료됩니다."</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"통화"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"거부"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"<xliff:g id="OTHER_CALL">%1$s</xliff:g> 통화 중이므로 전화를 걸 수 없습니다."</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"<xliff:g id="OTHER_CALL">%1$s</xliff:g> 통화 중이므로 전화를 걸 수 없습니다."</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"다른 앱에서 통화 중이므로 전화를 걸 수 없습니다."</string>
 </resources>
diff --git a/res/values-ky-rKG/strings.xml b/res/values-ky-rKG/strings.xml
index 31d81df..e682a89 100644
--- a/res/values-ky-rKG/strings.xml
+++ b/res/values-ky-rKG/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"Өзгөчө кырдаал кызматынын номери бөгөттөлбөй жатат."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> мурунтан эле бөгөттөлгөн."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"Чалууларды аткаруу үчүн жеке тергич колдонулууда"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"<xliff:g id="CALL_FROM">%2$s</xliff:g> дегенден <xliff:g id="CALL_VIA">%1$s</xliff:g> чалуу"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"<xliff:g id="CALL_FROM">%2$s</xliff:g> дегенден <xliff:g id="CALL_VIA">%1$s</xliff:g> колдонмосу аркылуу келген видео чалуу"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"Бул чалууга жооп берсеңиз, <xliff:g id="CALL_VIA">%1$s</xliff:g> чалууңуз бүтүп калат"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"Бул чалууга жооп берсеңиз, <xliff:g id="CALL_VIA">%1$s</xliff:g> чалууларыңыз бүтүп калат"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"Чалууга жооп берсеңиз, <xliff:g id="CALL_VIA">%1$s</xliff:g> видео чалууңуз бүтүп калат"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"Бул чалууга жооп берсеңиз, учурдагы чалууңуз бүтүп калат"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"Бул чалууга жооп берсеңиз, учурдагы чалууларыңыз бүтүп калат"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"Чалууга жооп берсеңиз, учурдагы видео чалууңуз бүтүп калат"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"Жооп берүү"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"Четке кагуу"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"Учурда <xliff:g id="OTHER_CALL">%1$s</xliff:g> чалууңуздан улам, башка жерге чала албайсыз."</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"Учурда <xliff:g id="OTHER_CALL">%1$s</xliff:g> чалууларыңуздан улам, башка жерге чала албайсыз."</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"Башка колдонмодо чалып жатасыз, ошондуктан чала албайсыз."</string>
 </resources>
diff --git a/res/values-lo-rLA/strings.xml b/res/values-lo-rLA/strings.xml
index adc0d1a..aca15bb 100644
--- a/res/values-lo-rLA/strings.xml
+++ b/res/values-lo-rLA/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"ບໍ່ສາມາດບລັອກເບີໂທສຸກເສີນໄດ້."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> ຖືກບລັອກຢູ່ກ່ອນແລ້ວ."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"ໃຊ້ແປ້ນໂທສ່ວນຕົວເພື່ອໂທອອກ"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"<xliff:g id="CALL_VIA">%1$s</xliff:g> ສາຍຈາກ <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"<xliff:g id="CALL_VIA">%1$s</xliff:g> ສາຍວິດີໂອຈາກ <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"ການຮັບສາຍຈະເປັນການວາງສາຍ <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"ການຮັບສາຍຈະເປັນການວາງສາຍ <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"ການຮັບສາຍຈະເປັນການວາງສາຍວິດີໂອ <xliff:g id="CALL_VIA">%1$s</xliff:g> ຂອງທ່ານ"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"ການຮັບສາຍຈະເປັນການວາງສາຍທີ່ທ່ານກຳລັງໂທອອກ"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"ການຮັບສາຍຈະເປັນການວາງສາຍທີ່ທ່ານກຳລັງໂທອອກ"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"ການຮັບສາຍຈະເປັນການວາງສາຍວິດີໂອທີ່ທ່ານກຳລັງໂທອອກ"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"ຮັບສາຍ"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"ປະຕິເສດ"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"ບໍ່ສາມາດໂທອອກໄດ້ເນື່ອງຈາກການໂທ <xliff:g id="OTHER_CALL">%1$s</xliff:g> ຂອງທ່ານ"</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"ບໍ່ສາມາດໂທອອກໄດ້ເນື່ອງຈາກການໂທ <xliff:g id="OTHER_CALL">%1$s</xliff:g> ຂອງທ່ານ"</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"ບໍ່ສາມາດໂທອອກໄດ້ເນື່ອງຈາກສາຍໃນແອັບອື່ນ."</string>
 </resources>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index 00bc892..c0f7d5e 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"Negalima užblokuoti pagalbos numerio."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> jau užblokuotas."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"Asmeninio numerio rinkiklio naudojimas skambinant"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"„<xliff:g id="CALL_VIA">%1$s</xliff:g>“ skambutis nuo <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"„<xliff:g id="CALL_VIA">%1$s</xliff:g>“ vaizdo skambutis nuo <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"Atsakius bus užbaigtas „<xliff:g id="CALL_VIA">%1$s</xliff:g>“ skambutis"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"Atsakius bus užbaigti „<xliff:g id="CALL_VIA">%1$s</xliff:g>“ skambučiai"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"Atsakius bus užbaigtas „<xliff:g id="CALL_VIA">%1$s</xliff:g>“ vaizdo skambutis"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"Atsakius bus užbaigtas vykstantis skambutis"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"Atsakius bus užbaigti vykstantys skambučiai"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"Atsakius bus užbaigtas vykstantis vaizdo skambutis"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"Atsakyti"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"Atmesti"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"Negalima skambinti dėl „<xliff:g id="OTHER_CALL">%1$s</xliff:g>“ skambučio."</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"Negalima skambinti dėl „<xliff:g id="OTHER_CALL">%1$s</xliff:g>“ skambučių."</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"Negalima skambinti dėl skambučio kitoje programoje."</string>
 </resources>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index 2238f9d..3e79f8d 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"Ārkārtas numuru nevar bloķēt."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> jau ir bloķēts."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"Zvans tiek veikts, izmantojot personisko numura sastādītāju"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"<xliff:g id="CALL_VIA">%1$s</xliff:g> zvans no: <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"<xliff:g id="CALL_VIA">%1$s</xliff:g> videozvans no: <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"Atbildot uz zvanu, tiks beigts <xliff:g id="CALL_VIA">%1$s</xliff:g> zvans"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"Atbildot uz zvanu, tiks beigti <xliff:g id="CALL_VIA">%1$s</xliff:g> zvani"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"Atbildot uz zvanu, tiks beigts <xliff:g id="CALL_VIA">%1$s</xliff:g> videozvans"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"Atbildot uz zvanu, tiks beigts pašreizējais zvans"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"Atbildot uz zvanu, tiks beigti pašreizējie zvani"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"Atbildot uz zvanu, tiks beigts pašreizējais videozvans"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"Atbildēt"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"Noraidīt"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"Nevar veikt zvanu notiekoša <xliff:g id="OTHER_CALL">%1$s</xliff:g> zvana dēļ."</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"Nevar veikt zvanu notiekošu <xliff:g id="OTHER_CALL">%1$s</xliff:g> zvanu dēļ."</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"Nevar veikt zvanu citā lietotnē notiekoša zvana dēļ."</string>
 </resources>
diff --git a/res/values-mk-rMK/strings.xml b/res/values-mk-rMK/strings.xml
index bc47335..16e8c71 100644
--- a/res/values-mk-rMK/strings.xml
+++ b/res/values-mk-rMK/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"Бројот за итни случаи не може да се блокира."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> е веќе блокиран."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"Користење на личниот бирач за остварување повик"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"Повик на <xliff:g id="CALL_VIA">%1$s</xliff:g> од <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"Видеоповик на <xliff:g id="CALL_VIA">%1$s</xliff:g> од <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"Ако одговорите, ќе се прекине вашиот повик на <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"Ако одговорите, ќе се прекинат вашите повици на <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"Ако одговорите, ќе се прекине вашиот видеоповик на <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"Ако одговорите, ќе се прекине вашиот тековен повик"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"Ако одговорите, ќе се прекинат вашите тековни повици"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"Ако одговорите, ќе се прекине вашиот тековен видеоповик"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"Одговорете"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"Одбијте"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"Не може да се воспостави повик поради вашиот повик на <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"Не може да се воспостави повик поради вашите повици на <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"Не може да се воспостави повик поради вашиот повик на друга апликација."</string>
 </resources>
diff --git a/res/values-ml-rIN/strings.xml b/res/values-ml-rIN/strings.xml
index d16e447..c0b53b6 100644
--- a/res/values-ml-rIN/strings.xml
+++ b/res/values-ml-rIN/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"അടിയന്തര നമ്പർ ബ്ലോക്കുചെയ്യാനാകുന്നില്ല."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> മുമ്പേതന്നെ ബ്ലോക്കുചെയ്‌തതാണ്."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"കോൾ ചെയ്യുന്നതിന് സ്വകാര്യ ഡയലർ ഉപയോഗിക്കുന്നു"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"<xliff:g id="CALL_FROM">%2$s</xliff:g> എന്നയാളിൽ നിന്നുള്ള <xliff:g id="CALL_VIA">%1$s</xliff:g> കോൾ"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"<xliff:g id="CALL_FROM">%2$s</xliff:g> എന്നയാളിൽ നിന്നുള്ള <xliff:g id="CALL_VIA">%1$s</xliff:g> വീഡിയോ കോൾ"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"കോൾ സ്വീകരിക്കുന്നത് നിങ്ങളുടെ <xliff:g id="CALL_VIA">%1$s</xliff:g> കോൾ അവസാനിക്കാനിടയാക്കും"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"കോൾ സ്വീകരിക്കുന്നത് നിങ്ങളുടെ <xliff:g id="CALL_VIA">%1$s</xliff:g> കോളുകൾ അവസാനിക്കാനിടയാക്കും"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"കോൾ സ്വീകരിക്കുന്നത് നിങ്ങളുടെ <xliff:g id="CALL_VIA">%1$s</xliff:g> വീഡിയോ കോൾ അവസാനിക്കാനിടയാക്കും"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"കോൾ സ്വീകരിക്കുന്നത് നിങ്ങളുടെ നിലവിലുള്ള കോൾ അവസാനിക്കാനിടയാക്കും"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"കോൾ സ്വീകരിക്കുന്നത് നിങ്ങളുടെ നിലവിലുള്ള കോളുകൾ അവസാനിക്കാനിടയാക്കും"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"കോൾ സ്വീകരിക്കുന്നത് നിങ്ങളുടെ നിലവിലുള്ള വീഡിയോ കോൾ അവസാനിക്കാനിടയാക്കും"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"മറുപടി നൽകുക"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"നിരസിക്കുക"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"നിങ്ങളുടെ <xliff:g id="OTHER_CALL">%1$s</xliff:g> കോൾ കാരണം കോൾ ചെയ്യാനായില്ല."</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"നിങ്ങളുടെ <xliff:g id="OTHER_CALL">%1$s</xliff:g> കോളുകൾ കാരണം കോൾ ചെയ്യാനായില്ല."</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"മറ്റൊരു ആപ്പിലുള്ള കോൾ കാരണം കോൾ ചെയ്യാനായില്ല."</string>
 </resources>
diff --git a/res/values-mn-rMN/strings.xml b/res/values-mn-rMN/strings.xml
index 8e0b39b..eb495ca 100644
--- a/res/values-mn-rMN/strings.xml
+++ b/res/values-mn-rMN/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"Яаралтай дугаарыг хориглох боломжгүй."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g>-г аль хэдийн хориглосон байна."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"Дуудлага хийхийн тулд хувийн залгагчийг ашиглаж байна"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"<xliff:g id="CALL_FROM">%2$s</xliff:g>-н <xliff:g id="CALL_VIA">%1$s</xliff:g> дуудлага"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"<xliff:g id="CALL_FROM">%2$s</xliff:g>-н <xliff:g id="CALL_VIA">%1$s</xliff:g> видео дуудлага"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"Хариулбал таны <xliff:g id="CALL_VIA">%1$s</xliff:g> дуудлагыг таслах болно"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"Хариулбал таны <xliff:g id="CALL_VIA">%1$s</xliff:g> дуудлагыг таслах болно"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"Хариулбал таны <xliff:g id="CALL_VIA">%1$s</xliff:g> видео дуудлагыг таслах болно"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"Хариулбал таны одоогийн дуудлагыг таслах болно"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"Хариулбал таны одоогийн дуудлагуудыг таслах болно"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"Хариулбал таны одоогийн видео дуудлагыг таслах болно"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"Хариулах"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"Татгалзах"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"Таны <xliff:g id="OTHER_CALL">%1$s</xliff:g> дуудлагаас шалтгаалан дуудлага хийх боломжгүй байна."</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"Таны <xliff:g id="OTHER_CALL">%1$s</xliff:g> дуудлагаас шалтгаалан дуудлага хийх боломжгүй байна."</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"Өөр апп доторх дуудлагаас шалтгаалан дуудлага хийх боломжгүй байна."</string>
 </resources>
diff --git a/res/values-mr-rIN/strings.xml b/res/values-mr-rIN/strings.xml
index a4f55fb..12a2c7c 100644
--- a/res/values-mr-rIN/strings.xml
+++ b/res/values-mr-rIN/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"आणीबाणी नंबर अवरोधित करण्यात अक्षम."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> आधीपासून अवरोधित केला आहे."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"कॉल करण्यासाठी वैयक्तिक डायलर वापरणे"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"<xliff:g id="CALL_FROM">%2$s</xliff:g> कडील <xliff:g id="CALL_VIA">%1$s</xliff:g> मधील कॉल"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"<xliff:g id="CALL_FROM">%2$s</xliff:g> कडील <xliff:g id="CALL_VIA">%1$s</xliff:g> मधील व्हिडिओ कॉल"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"उत्तर देण्यामुळे आपला <xliff:g id="CALL_VIA">%1$s</xliff:g> कॉल समाप्त होईल"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"उत्तर देण्यामुळे आपले <xliff:g id="CALL_VIA">%1$s</xliff:g> कॉल समाप्त होतील"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"उत्तर देण्यामुळे आपला <xliff:g id="CALL_VIA">%1$s</xliff:g> व्हिडिओ कॉल समाप्त होईल"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"उत्तर देण्यामुळे आपला सुरु असलेला कॉल समाप्त होईल"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"उत्तर देण्यामुळे आपले सुरु असलेले कॉल समाप्त होतील"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"उत्तर देण्यामुळे आपला सुरु असलेला व्हिडिओ कॉल समाप्त होईल"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"उत्तर द्या"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"नकार द्या"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"आपल्या <xliff:g id="OTHER_CALL">%1$s</xliff:g> कॉलमुळे कॉल केला जाऊ शकत नाही."</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"आपल्या <xliff:g id="OTHER_CALL">%1$s</xliff:g> कॉलमुळे कॉल केला जाऊ शकत नाही."</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"दुसर्‍या अॅपमधील कॉलमुळे कॉल केला जाऊ शकत नाही."</string>
 </resources>
diff --git a/res/values-ms-rMY/strings.xml b/res/values-ms-rMY/strings.xml
index 208dcb1..51ec863 100644
--- a/res/values-ms-rMY/strings.xml
+++ b/res/values-ms-rMY/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"Tidak dapat menyekat nombor kecemasan."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> sudah disekat."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"Menggunakan pendail peribadi untuk membuat panggilan"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"<xliff:g id="CALL_VIA">%1$s</xliff:g> panggilan daripada <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"<xliff:g id="CALL_VIA">%1$s</xliff:g> panggilan video daripada <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"Menjawab akan menamatkan panggilan <xliff:g id="CALL_VIA">%1$s</xliff:g> anda"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"Menjawab akan menamatkan panggilan <xliff:g id="CALL_VIA">%1$s</xliff:g> anda"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"Menjawab akan menamatkan panggilan video <xliff:g id="CALL_VIA">%1$s</xliff:g> anda"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"Menjawab akan menamatkan panggilan yang sedang berlangsung"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"Menjawab akan menamatkan panggilan yang sedang berlangsung"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"Menjawab akan menamatkan panggilan video semasa anda"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"Jawab"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"Tolak"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"Panggilan tidak dapat dibuat disebabkan panggilan <xliff:g id="OTHER_CALL">%1$s</xliff:g> anda."</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"Panggilan tidak dapat dibuat disebabkan panggilan <xliff:g id="OTHER_CALL">%1$s</xliff:g> anda."</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"Panggilan tidak dapat dibuat disebabkan panggilan dalam apl lain."</string>
 </resources>
diff --git a/res/values-my-rMM/strings.xml b/res/values-my-rMM/strings.xml
index da191da..28c902d 100644
--- a/res/values-my-rMM/strings.xml
+++ b/res/values-my-rMM/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"အရေးပေါ်နံပါတ်ကို  ပိတ်ဆို့၍ မရပါ။"</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> ကို ပိတ်ဆို့ထားပြီး ဖြစ်သည်။"</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"ဖုန်းခေါ်ဆိုမှုပြုလုပ်ရန် ကိုယ်ရေးကိုယ်တာ ဖုန်းခေါ်ဆိုမှုစနစ်ကို အသုံးပြုခြင်း"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"<xliff:g id="CALL_FROM">%2$s</xliff:g> ထံမှ <xliff:g id="CALL_VIA">%1$s</xliff:g> ခေါ်ဆိုမှု"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"<xliff:g id="CALL_FROM">%2$s</xliff:g> ထံမှ <xliff:g id="CALL_VIA">%1$s</xliff:g> ဗီဒီယိုခေါ်ဆိုမှု"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"ဖြေကြားခြင်းက သင်၏ <xliff:g id="CALL_VIA">%1$s</xliff:g> ခေါ်ဆိုမှုကို ဖြတ်တောက်ပါမည်"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"ဖြေကြားခြင်းက သင်၏ <xliff:g id="CALL_VIA">%1$s</xliff:g> ခေါ်ဆိုမှုများကို ဖြတ်တောက်ပါမည်"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"ဖြေကြားခြင်းက သင်၏ <xliff:g id="CALL_VIA">%1$s</xliff:g> ဗီဒီယိုခေါ်ဆိုမှုကို ဖြတ်တောက်ပါမည်"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"ဖြေကြားခြင်းက သင်၏လက်ရှိခေါ်ဆိုမှုကို ဖြတ်တောက်ပါမည်"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"ဖြေကြားခြင်းက သင်၏လက်ရှိခေါ်ဆိုမှုများကို ဖြတ်တောက်ပါမည်"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"ဖြေကြားခြင်းက သင်၏လက်ရှိဗီဒီယိုခေါ်ဆိုမှုကို ဖြတ်တောက်ပါမည်"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"ဖြေကြားရန်"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"ငြင်းပယ်ရန်"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"သင်၏ <xliff:g id="OTHER_CALL">%1$s</xliff:g> ခေါ်ဆိုမှုကြောင့် အထွက်ခေါ်ဆိုမှုကို မပြုလုပ်နိုင်ပါ။"</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"သင်၏ <xliff:g id="OTHER_CALL">%1$s</xliff:g> ခေါ်ဆိုမှုများကြောင့် အထွက်ခေါ်ဆိုမှုကို မပြုလုပ်နိုင်ပါ။"</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"အခြားအက်ပ်ရှိ ခေါ်ဆိုမှုကြောင့် အထွက်ခေါ်ဆိုမှုကို မပြုလုပ်နိုင်ပါ။"</string>
 </resources>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 230e9c3..004ecac 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"Kan ikke blokkere nødnumre."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> er allerede blokkert."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"Ring via den personlige ringeappen"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"<xliff:g id="CALL_VIA">%1$s</xliff:g>-anrop fra <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"<xliff:g id="CALL_VIA">%1$s</xliff:g>-videoanrop fra <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"Hvis du svarer, avsluttes <xliff:g id="CALL_VIA">%1$s</xliff:g>-samtalen din"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"Hvis du svarer, avsluttes <xliff:g id="CALL_VIA">%1$s</xliff:g>-samtalene dine"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"Hvis du svarer, avsluttes <xliff:g id="CALL_VIA">%1$s</xliff:g>-videosamtalen din"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"Hvis du svarer, avsluttes samtalen du er i nå"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"Hvis du svarer, avsluttes samtalene du er i nå"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"Hvis du svarer, avsluttes videosamtalen du er i nå"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"Svar"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"Avvis"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"Kan ikke ringe ut på grunn av <xliff:g id="OTHER_CALL">%1$s</xliff:g>-samtalen din."</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"Kan ikke ringe ut på grunn av <xliff:g id="OTHER_CALL">%1$s</xliff:g>-samtalene dine."</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"Kan ikke ringe ut på grunn av en samtale i en annen app."</string>
 </resources>
diff --git a/res/values-ne-rNP/strings.xml b/res/values-ne-rNP/strings.xml
index 7ed47f4..7f5c6c0 100644
--- a/res/values-ne-rNP/strings.xml
+++ b/res/values-ne-rNP/strings.xml
@@ -62,9 +62,22 @@
     <string name="blocked_numbers_butter_bar_title" msgid="438170866438793182">"रोक लगाउने काम अस्थायी रूपमा निष्क्रिय छ"</string>
     <string name="blocked_numbers_butter_bar_body" msgid="2223244484319442431">"तपाईँले आपतकालीन नम्बरमा डायल गरेपछि वा पाठ सन्देश पठाएपछि आपतकालीन सेवाहरूले तपाईँलाई सम्पर्क गर्न सकून् भन्ने कुरा सुनिश्चित गर्न कलमाथिको अवरोध निष्क्रिय गरिन्छ।"</string>
     <string name="blocked_numbers_butter_bar_button" msgid="2197943354922010696">"अब पुन:-सक्रिय गर्नुहोस्"</string>
-    <string name="blocked_numbers_number_blocked_message" msgid="7678509606805029540">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> लाई रोकियो"</string>
+    <string name="blocked_numbers_number_blocked_message" msgid="7678509606805029540">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> माथि रोक लगाइयो"</string>
     <string name="blocked_numbers_number_unblocked_message" msgid="977894647366750418">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> माथिको रोक हटाइयो"</string>
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"आपतकालीन नम्बरमाथि रोक लगाउन सकिएन।"</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> लाई पहिले नै रोकिएको छ।"</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"कल गर्न व्यक्तिगत डायलर प्रयोग गर्दै"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"<xliff:g id="CALL_FROM">%2$s</xliff:g> ले गरेको <xliff:g id="CALL_VIA">%1$s</xliff:g> कल"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"<xliff:g id="CALL_FROM">%2$s</xliff:g> ले गरेको <xliff:g id="CALL_VIA">%1$s</xliff:g> भिडियो कल"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"जवाफ फर्काउनुले तपाईंको <xliff:g id="CALL_VIA">%1$s</xliff:g> कल समाप्त हुनेछ"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"जवाफ फर्काउनुले तपाईंका <xliff:g id="CALL_VIA">%1$s</xliff:g> कलहरू समाप्त हुनेछन्"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"जवाफ फर्काउनुले तपाईंको <xliff:g id="CALL_VIA">%1$s</xliff:g> भिडियो कल समाप्त हुनेछ"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"जवाफ फर्काउनुले तपाईंको जारी कल समाप्त हुनेछ"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"जवाफ फर्काउनुले तपाईंका जारी कलहरू समाप्त हुनेछन्"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"जवाफ फर्काउनुले तपाईंको जारी भिडियो कल समाप्त हुनेछ"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"जवाफ दिनुहोस्"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"अस्वीकार गर्नुहोस्"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"तपाईंको <xliff:g id="OTHER_CALL">%1$s</xliff:g> कलका कारण कल गर्न सकिँदैन।"</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"तपाईंका <xliff:g id="OTHER_CALL">%1$s</xliff:g> कलहरूका कारण कल गर्न सकिँदैन।"</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"अर्को अनुप्रयोगमा जारी कलका कारण कल गर्न सकिँदैन।"</string>
 </resources>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 7f8821a..ee56d8d 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"Kan alarmnummer niet blokkeren."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> is al geblokkeerd."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"De persoonlijke kiezer gebruiken om te bellen"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"<xliff:g id="CALL_VIA">%1$s</xliff:g>-oproep van <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"<xliff:g id="CALL_VIA">%1$s</xliff:g>-videogesprek van <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"Als je opneemt, wordt je <xliff:g id="CALL_VIA">%1$s</xliff:g>-oproep beëindigd"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"Als je opneemt, worden je <xliff:g id="CALL_VIA">%1$s</xliff:g>-oproepen beëindigd"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"Als je opneemt, wordt je <xliff:g id="CALL_VIA">%1$s</xliff:g>-videogesprek beëindigd"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"Als je opneemt, wordt je actieve oproep beëindigd"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"Als je opneemt, worden je actieve oproepen beëindigd"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"Als je opneemt, wordt je actieve videogesprek beëindigd"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"Beantwoorden"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"Weigeren"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"Oproep kan niet worden gestart vanwege je <xliff:g id="OTHER_CALL">%1$s</xliff:g>-oproep."</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"Oproep kan niet worden gestart vanwege je <xliff:g id="OTHER_CALL">%1$s</xliff:g>-oproepen."</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"Oproep kan niet worden gestart vanwege een oproep in een andere app."</string>
 </resources>
diff --git a/res/values-pa-rIN/strings.xml b/res/values-pa-rIN/strings.xml
index 73800d9..5c574e7 100644
--- a/res/values-pa-rIN/strings.xml
+++ b/res/values-pa-rIN/strings.xml
@@ -55,7 +55,7 @@
     <string name="unblock_dialog_body" msgid="1614238499771862793">"ਕੀ <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g> ਨੂੰ ਅਣਬਲੌਕ ਕਰਨਾ ਹੈ?"</string>
     <string name="unblock_button" msgid="3078048901972674170">"ਅਣਬਲੌਕ ਕਰੋ"</string>
     <string name="add_blocked_dialog_body" msgid="9030243212265516828">"ਇਸ ਨੰਬਰ ਤੋਂ ਕਾਲਾਂ ਅਤੇ ਲਿਖਤੀ ਸੁਨੇਹਿਆਂ ਨੂੰ ਬਲੌਕ ਕਰੋ"</string>
-    <string name="add_blocked_number_hint" msgid="6847675097085433553">"ਫੋਨ ਨੰਬਰ"</string>
+    <string name="add_blocked_number_hint" msgid="6847675097085433553">"ਫ਼ੋਨ ਨੰਬਰ"</string>
     <string name="block_button" msgid="8822290682524373357">"ਬਲੌਕ ਕਰੋ"</string>
     <string name="non_primary_user" msgid="5180129233352533459">"ਸਿਰਫ਼ ਡੀਵਾਈਸ ਮਾਲਕ ਹੀ ਬਲੌਕ ਕੀਤੇ ਗਏ ਨੰਬਰਾਂ ਨੂੰ ਵੇਖ ਅਤੇ ਪ੍ਰਬੰਧਿਤ ਕਰ ਸਕਦਾ ਹੈ।"</string>
     <string name="delete_icon_description" msgid="8903995728252556724">"ਅਨਬਲੌਕ ਕਰੋ"</string>
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"ਐਮਰਜੈਂਸੀ ਨੰਬਰ ਨੂੰ ਬਲੌਕ ਕਰਨ ਵਿੱਚ ਅਸਮਰੱਥ।"</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> ਪਹਿਲਾਂ ਤੋਂ ਹੀ ਬਲੌਕ ਕੀਤਾ ਹੋਇਆ ਹੈ।"</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"ਕਾਲ ਕਰਨ ਲਈ ਨਿੱਜੀ ਡਾਇਲਰ ਦੀ ਵਰਤੋਂ ਕਰਨੀ"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"<xliff:g id="CALL_FROM">%2$s</xliff:g> ਵੱਲੋਂ <xliff:g id="CALL_VIA">%1$s</xliff:g> ਕਾਲ"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"<xliff:g id="CALL_FROM">%2$s</xliff:g> ਵੱਲੋਂ <xliff:g id="CALL_VIA">%1$s</xliff:g> ਵੀਡੀਓ ਕਾਲ"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"ਜਵਾਬ ਦੇਣ ਨਾਲ ਤੁਹਾਡੀ <xliff:g id="CALL_VIA">%1$s</xliff:g> ਕਾਲ ਸਮਾਪਤ ਹੋ ਜਾਵੇਗੀ"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"ਜਵਾਬ ਦੇਣ ਨਾਲ ਤੁਹਾਡੀਆਂ <xliff:g id="CALL_VIA">%1$s</xliff:g> ਕਾਲਾਂ ਸਮਾਪਤ ਹੋ ਜਾਣਗੀਆਂ"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"ਜਵਾਬ ਦੇਣ ਨਾਲ ਤੁਹਾਡੀ <xliff:g id="CALL_VIA">%1$s</xliff:g> ਵੀਡੀਓ ਕਾਲ ਸਮਾਪਤ ਹੋ ਜਾਵੇਗੀ"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"ਜਵਾਬ ਦੇਣ ਨਾਲ ਤੁਹਾਡੀ ਜਾਰੀ ਕਾਲ ਸਮਾਪਤ ਹੋ ਜਾਵੇਗੀ"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"ਜਵਾਬ ਦੇਣ ਨਾਲ ਤੁਹਾਡੀਆਂ ਜਾਰੀ ਕਾਲਾਂ ਸਮਾਪਤ ਹੋ ਜਾਣਗੀਆਂ"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"ਜਵਾਬ ਦੇਣ ਨਾਲ ਤੁਹਾਡੀ ਜਾਰੀ ਵੀਡੀਓ ਕਾਲ ਸਮਾਪਤ ਹੋ ਜਾਵੇਗੀ"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"ਜਵਾਬ ਦਿਓ"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"ਅਸਵੀਕਾਰ ਕਰੋ"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"ਤੁਹਾਡੀ <xliff:g id="OTHER_CALL">%1$s</xliff:g> ਕਾਲ ਦੇ ਕਾਰਨ ਕਾਲ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕਦੀ।"</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"ਤੁਹਾਡੀਆਂ <xliff:g id="OTHER_CALL">%1$s</xliff:g> ਕਾਲਾਂ ਦੇ ਕਾਰਨ ਕਾਲ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕਦੀ।"</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"ਕਿਸੇ ਹੋਰ ਐਪ ਵਿੱਚ ਇੱਕ ਕਾਲ ਹੋਣ ਦੇ ਕਾਰਨ ਕਾਲ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕਦੀ।"</string>
 </resources>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index e460463..a0113a4 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"Nie można zablokować numeru alarmowego."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"Numer <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> jest już zablokowany."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"Wykonuję połączenie z osobistego telefonu"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"Połączenie w <xliff:g id="CALL_VIA">%1$s</xliff:g> od: <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"Połączenie wideo w <xliff:g id="CALL_VIA">%1$s</xliff:g> od: <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"Jeśli odbierzesz połączenie, zakończysz rozmowę w <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"Jeśli odbierzesz połączenie, zakończysz rozmowy w <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"Jeśli odbierzesz połączenie, zakończysz rozmowę wideo w <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"Jeśli odbierzesz połączenie, zakończysz trwającą rozmowę"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"Jeśli odbierzesz połączenie, zakończysz trwające rozmowy"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"Jeśli odbierzesz połączenie, zakończysz rozmowę wideo"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"Odbierz"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"Odrzuć"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"Nie możesz zadzwonić z powodu trwającej rozmowy w <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"Nie możesz zadzwonić z powodu trwających rozmów w <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"Nie możesz zadzwonić z powodu trwającej rozmowy w innej aplikacji."</string>
 </resources>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index b2e576e..5c347bb 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"Não é possível bloquear números de emergência."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> já está bloqueado."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"A utilizar o telefone pessoal para efetuar a chamada"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"Chamada do <xliff:g id="CALL_VIA">%1$s</xliff:g> de <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"Videochamada do <xliff:g id="CALL_VIA">%1$s</xliff:g> de <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"Ao atender, a sua chamada do <xliff:g id="CALL_VIA">%1$s</xliff:g> será terminada"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"Ao atender, as suas chamadas do <xliff:g id="CALL_VIA">%1$s</xliff:g> serão terminadas"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"Ao atender, a sua videochamada do <xliff:g id="CALL_VIA">%1$s</xliff:g> será terminada"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"Ao atender, a sua chamada em curso será terminada"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"Ao atender, as suas chamadas em curso serão terminadas"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"Ao atender, a sua videochamada em curso será terminada"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"Atender"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"Recusar"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"A chamada não pode ser efetuada devido à sua chamada do <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"A chamada não pode ser efetuada devido às suas chamadas do <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"A chamada não pode ser efetuada devido a uma chamada noutra aplicação."</string>
 </resources>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 6d4271c..9c5968e 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"Não é possível bloquear o número de emergência."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"O número <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> já está bloqueado."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"Usando o discador pessoal para fazer a chamada"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"Chamada de <xliff:g id="CALL_FROM">%2$s</xliff:g> no <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"Videochamada de <xliff:g id="CALL_FROM">%2$s</xliff:g> no <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"Se você atender, sua chamada será encerrada no <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"Se você atender, suas chamadas serão encerradas no <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"Se você atender, sua videochamada será encerrada no <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"Se você atender, a chamada em andamento será encerrada"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"Se você atender, as chamadas em andamento serão encerradas"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"Se você atender, a videochamada em andamento será encerrada"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"Atender"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"Recusar"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"Não é possível ligar com uma chamada em andamento no <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"Não é possível ligar com chamadas em andamento no <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"Não é possível ligar com uma chamada em andamento em outro aplicativo."</string>
 </resources>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index 4c204fb..76a57d4 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"Numărul de urgență nu poate fi blocat."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> este deja blocat."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"Utilizarea telefonului personal pentru a apela"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"Apel <xliff:g id="CALL_VIA">%1$s</xliff:g> de la <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"Apel video <xliff:g id="CALL_VIA">%1$s</xliff:g> de la <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"Dacă răspundeți, apelul dvs. <xliff:g id="CALL_VIA">%1$s</xliff:g> va fi încheiat."</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"Dacă răspundeți, apelurile dvs. <xliff:g id="CALL_VIA">%1$s</xliff:g> vor fi încheiate."</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"Dacă răspundeți, apelul video <xliff:g id="CALL_VIA">%1$s</xliff:g> va fi încheiat."</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"Dacă răspundeți, apelul în curs va fi încheiat."</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"Dacă răspundeți, apelurile în curs vor fi încheiate."</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"Dacă răspundeți, apelul video în curs va fi încheiat."</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"Răspundeți"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"Refuzați"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"Apelul nu poate fi inițiat din cauza apelului <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"Apelul nu poate fi inițiat din cauza apelurilor <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"Apelul nu poate fi inițiat din cauza unui apel din altă aplicație."</string>
 </resources>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index d6623cd..f4830b4 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"Невозможно заблокировать номер экстренной службы."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"Номер <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> уже заблокирован."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"Набор номера с помощью персонализированной панели"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"<xliff:g id="CALL_VIA">%1$s</xliff:g>: вызов от пользователя <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"<xliff:g id="CALL_VIA">%1$s</xliff:g>: видеовызов от пользователя <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"Если вы ответите, вызов в <xliff:g id="CALL_VIA">%1$s</xliff:g> будет завершен."</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"Если вы ответите, вызовы в <xliff:g id="CALL_VIA">%1$s</xliff:g> будут завершены."</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"Если вы ответите, видеовызов в <xliff:g id="CALL_VIA">%1$s</xliff:g> будет завершен."</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"Если вы ответите, текущий вызов будет завершен."</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"Если вы ответите, текущие вызовы будут завершены."</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"Если вы ответите, текущий видеовызов будет завершен."</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"Ответить"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"Отклонить"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"Вы не можете отправить вызов, пока не завершите другой в приложении <xliff:g id="OTHER_CALL">%1$s</xliff:g>"</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"Вы не можете отправить вызов, пока не завершите другие в приложении <xliff:g id="OTHER_CALL">%1$s</xliff:g>"</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"Вы не можете отправить новый вызов, пока не завершите текущий в другом приложении"</string>
 </resources>
diff --git a/res/values-si-rLK/strings.xml b/res/values-si-rLK/strings.xml
index 6a445bb..411775e 100644
--- a/res/values-si-rLK/strings.xml
+++ b/res/values-si-rLK/strings.xml
@@ -50,7 +50,7 @@
     <string name="change_default_dialer_dialog_negative" msgid="9078144617060173845">"අවලංගු කරන්න"</string>
     <string name="change_default_dialer_warning_message" msgid="1417671460801684999">"<xliff:g id="NEW_APP">%s</xliff:g> ඇමතුම් ලබා ගැනීමට සහ එවායේ සියලු අංග පාලනය කිරීමට හැකි වනු ඇත. ඔබ විශ්වාස කරන යෙදුම් පමණක් පෙරනිමි දුරකථන යෙදුම ලෙස සැකසිය යුතුය."</string>
     <string name="blocked_numbers" msgid="2751843139572970579">"අවහිර කළ අංක"</string>
-    <string name="blocked_numbers_msg" msgid="1045015186124965643">"ඔබට අවහිර කළ අංකයවලින් ඇමතුම් හෝ පෙළ නොලැබෙනු ඇත."</string>
+    <string name="blocked_numbers_msg" msgid="1045015186124965643">"ඔබට අවහිර කළ අංකවලින් ඇමතුම් හෝ පෙළ නොලැබෙනු ඇත."</string>
     <string name="block_number" msgid="1101252256321306179">"අංකයක් එක් කරන්න"</string>
     <string name="unblock_dialog_body" msgid="1614238499771862793">"<xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g> අවහිර නොකරන්නද?"</string>
     <string name="unblock_button" msgid="3078048901972674170">"අවහිර නොකරන්න"</string>
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"හදිසි අවස්ථා අංකය අවහිර කිරීමට නොහැකිය."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> දැනටමත් අවහිර කර ඇත."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"ඇමතුම ගැනීමට පුද්ගලික අමතනය භාවිත කරමින්"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"<xliff:g id="CALL_FROM">%2$s</xliff:g> සිට <xliff:g id="CALL_VIA">%1$s</xliff:g> ඇමතුම"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"<xliff:g id="CALL_FROM">%2$s</xliff:g> සිට <xliff:g id="CALL_VIA">%1$s</xliff:g> වීඩියෝ ඇමතුම"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"පිළිතුරු දීම ඔබේ <xliff:g id="CALL_VIA">%1$s</xliff:g> ඇමතුම අවසන් කරනු ඇත"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"පිළිතුරු දීම ඔබේ <xliff:g id="CALL_VIA">%1$s</xliff:g> ඇමතුම් අවසන් කරනු ඇත"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"පිළිතුරු දීම ඔබේ <xliff:g id="CALL_VIA">%1$s</xliff:g> වීඩියෝ අැමතුම අවසන් කරනු ඇත"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"පිළිතුරු දීම ඔබේ යන ඇමතුම අවසන් කරනු ඇත"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"පිළිතුරු දීම ඔබේ යන ඇමතුම් අවසන් කරනු ඇත"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"පිළිතුරු දීම ඔබේ යන වීඩියෝ ඇමතුම අවසන් කරනු ඇත"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"පිළිතුරු දෙන්න"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"ප්‍රතික්ෂේප කරන්න"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"ඔබේ <xliff:g id="OTHER_CALL">%1$s</xliff:g> ඇමතුම හේතුවෙන් ඇමතුම ගැනීමට නොහැකිය."</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"ඔබේ <xliff:g id="OTHER_CALL">%1$s</xliff:g> ඇමතුම් හේතුවෙන් ඇමතුම ගැනීමට නොහැකිය."</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"වෙනත් යෙදුමක ඇමතුමක් හේතුවෙන් ඇමතුම ගැනීමට නොහැකිය."</string>
 </resources>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index 9dbb232..7512053 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -62,9 +62,22 @@
     <string name="blocked_numbers_butter_bar_title" msgid="438170866438793182">"Blokovanie je dočasne vypnuté"</string>
     <string name="blocked_numbers_butter_bar_body" msgid="2223244484319442431">"Keď vytočíte číslo tiesňového volania alebo naň odošlete textovú správu, blokovanie bude vypnuté, aby vás mohli pohotovostné služby kontaktovať."</string>
     <string name="blocked_numbers_butter_bar_button" msgid="2197943354922010696">"Znova zapnúť"</string>
-    <string name="blocked_numbers_number_blocked_message" msgid="7678509606805029540">"Číslo <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> je zablokované"</string>
-    <string name="blocked_numbers_number_unblocked_message" msgid="977894647366750418">"Číslo je <xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> odblokované"</string>
+    <string name="blocked_numbers_number_blocked_message" msgid="7678509606805029540">"Číslo <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> je blokované"</string>
+    <string name="blocked_numbers_number_unblocked_message" msgid="977894647366750418">"Číslo <xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> je odblokované"</string>
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"Číslo tiesňového volania sa nedá zablokovať."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"Číslo <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> je už zablokované."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"Na volanie sa používa osobné vytáčanie"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"Hovor <xliff:g id="CALL_VIA">%1$s</xliff:g> od používateľa <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"Videohovor <xliff:g id="CALL_VIA">%1$s</xliff:g> od používateľa <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"Prijatím hovoru ukončíte hovor <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"Prijatím hovoru ukončíte hovory <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"Prijatím hovoru ukončíte videohovor <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"Prijatím hovoru ukončíte prebiehajúci hovor"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"Prijatím hovoru ukončíte prebiehajúce hovory"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"Prijatím hovoru ukončíte prebiehajúci videohovor"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"Prijať"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"Odmietnuť"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"Hovor sa nedá uskutočniť, pretože prebieha hovor <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"Hovor sa nedá uskutočniť, pretože prebiehajú hovory <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"Hovor sa nedá uskutočniť, pretože prebieha hovor v inej aplikácii."</string>
 </resources>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index b328c69..32ef2e4 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"Številke za klic v sili ni mogoče blokirati."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"Številka <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> je že blokirana."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"Uporaba osebnega klicalnika za klic"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"Klic osebe <xliff:g id="CALL_FROM">%2$s</xliff:g> prek aplikacije <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"Videoklic osebe <xliff:g id="CALL_FROM">%2$s</xliff:g> prek aplikacije <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"Če sprejmete, bo končan klic prek aplikacije <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"Če sprejmete, bodo končani klici prek aplikacije <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"Če sprejmete, bo končan videoklic prek aplikacije <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"Če sprejmete, bo končan aktivni klic"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"Če sprejmete, bodo končani aktivni klici"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"Če sprejmete, bo končan aktivni videoklic"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"Sprejmi"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"Zavrni"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"Klica ni mogoče vzpostaviti zaradi klica prek aplikacije <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"Klica ni mogoče vzpostaviti zaradi klicev prek aplikacije <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"Klica ni mogoče vzpostaviti zaradi klica prek druge aplikacije."</string>
 </resources>
diff --git a/res/values-sq-rAL/strings.xml b/res/values-sq-rAL/strings.xml
index 00660d0..0fb6476 100644
--- a/res/values-sq-rAL/strings.xml
+++ b/res/values-sq-rAL/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"Numri i urgjencës nuk mund të bllokohet."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> është i bllokuar tashmë."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"Po përdor formuesin personal të numrave për të kryer telefonatën"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"Telefonatë e <xliff:g id="CALL_VIA">%1$s</xliff:g> nga <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"Telefonatë me video e <xliff:g id="CALL_VIA">%1$s</xliff:g> nga <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"Përgjigjja do ta mbyllë telefonatën tënde të <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"Përgjigjja do t\'i mbyllë telefonatat e tua të <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"Përgjigjja do ta mbyllë telefonatën me video të <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"Përgjigjja do ta mbyllë telefonatën tënde në vazhdim"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"Përgjigjja do t\'i mbyllë telefonatat e tua në vazhdim"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"Përgjigjja do ta mbyllë telefonatën me video në vazhdim"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"Përgjigju"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"Refuzo"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"Telefonata nuk mund të kryhet për shkak të telefonatës tënde të <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"Telefonata nuk mund të kryhet për shkak të telefonatave të tua të <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"Telefonata nuk mund të kryhet për shkak të një telefonate në një aplikacion tjetër."</string>
 </resources>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index 23c2441..bdd6d01 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"Није могуће блокирати број хитне службе."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> је већ блокиран."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"Коришћење бројчаника из личног профила за упућивање позива"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"<xliff:g id="CALL_VIA">%1$s</xliff:g> позив од <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"<xliff:g id="CALL_VIA">%1$s</xliff:g> видео позив од <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"Ако одговорите, завршићете <xliff:g id="CALL_VIA">%1$s</xliff:g> позив"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"Ако одговорите, завршићете <xliff:g id="CALL_VIA">%1$s</xliff:g> позиве"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"Ако одговорите, завршићете <xliff:g id="CALL_VIA">%1$s</xliff:g> видео позив"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"Ако одговорите, завршићете позив који је у току"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"Ако одговорите, завршићете позиве који су у току"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"Ако одговорите, завршићете видео позив који је у току"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"Одговори"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"Одбиј"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"Не можете да упутите позив због <xliff:g id="OTHER_CALL">%1$s</xliff:g> позива."</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"Не можете да упутите позив због <xliff:g id="OTHER_CALL">%1$s</xliff:g> позива."</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"Не можете да упутите позив због позива у другој апликацији."</string>
 </resources>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 1ecd70d..ea651f9 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"Det går inte att blockera nödnummer."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> är redan blockerat."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"Ringer med den egna uppringningsfunktionen"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"<xliff:g id="CALL_VIA">%1$s</xliff:g> samtal från <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"<xliff:g id="CALL_VIA">%1$s</xliff:g> videosamtal från <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"Samtalet via <xliff:g id="CALL_VIA">%1$s</xliff:g> avslutas om du svarar"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"Samtalen via <xliff:g id="CALL_VIA">%1$s</xliff:g> avslutas om du svarar"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"Videosamtalet via <xliff:g id="CALL_VIA">%1$s</xliff:g> avslutas om du svarar"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"Det pågående samtalet avslutas om du svarar"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"De pågående samtalen avslutas om du svarar"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"Det pågående videosamtalet avslutas om du svarar"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"Svara"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"Avvisa"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"Det går inte att ringa på grund av samtalet via <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"Det går inte att ringa på grund av samtalen via <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"Det går inte att ringa på grund av ett samtal via en annan app."</string>
 </resources>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index ce01517..876b6fd 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"Huwezi kuzuia nambari ya dharura."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> tayari imezuiwa."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"Kupiga simu kwa kutumia kipiga simu cha binafsi"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"Simu ya <xliff:g id="CALL_VIA">%1$s</xliff:g> kutoka kwa <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"Simu ya video ya <xliff:g id="CALL_VIA">%1$s</xliff:g> kutoka kwa <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"Ukijibu utakata simu yako ya <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"Ukijibu utakata simu zako za <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"Ukijibu utakata simu yako ya video ya <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"Ukijibu utakata simu yako inayoendelea"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"Ukijibu utakata simu zako zinazoendelea"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"Ukijibu utakata simu yako ya video inayoendelea"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"Jibu"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"Kataa"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"Haiwezekani kupiga kwa sababu ya simu yako ya <xliff:g id="OTHER_CALL">%1$s</xliff:g> inayoendelea."</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"Haiwezekani kupiga kwa sababu ya simu zako za <xliff:g id="OTHER_CALL">%1$s</xliff:g> zinazoendelea."</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"Haiwezekani kwa sababu kuna simu inayoendelea kwenye programu nyingine."</string>
 </resources>
diff --git a/res/values-ta-rIN/strings.xml b/res/values-ta-rIN/strings.xml
index e39a199..78684aa 100644
--- a/res/values-ta-rIN/strings.xml
+++ b/res/values-ta-rIN/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"அவசர அழைப்பு எண்ணைத் தடுக்க முடியவில்லை."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> ஏற்கனவே தடுக்கப்பட்டது."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"தனிப்பட்ட டயலரைப் பயன்படுத்தி அழைக்கவும்"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"<xliff:g id="CALL_FROM">%2$s</xliff:g> இடமிருந்து <xliff:g id="CALL_VIA">%1$s</xliff:g> அழைப்பு"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"<xliff:g id="CALL_FROM">%2$s</xliff:g> இடமிருந்து <xliff:g id="CALL_VIA">%1$s</xliff:g> வீடியோ அழைப்பு"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"பதிலளித்தால், <xliff:g id="CALL_VIA">%1$s</xliff:g> அழைப்பு துண்டிக்கப்படும்"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"பதிலளித்தால், <xliff:g id="CALL_VIA">%1$s</xliff:g> அழைப்புகள் துண்டிக்கப்படும்"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"பதிலளித்தால், <xliff:g id="CALL_VIA">%1$s</xliff:g> வீடியோ அழைப்பு துண்டிக்கப்படும்"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"பதிலளித்தால், செயலில் உள்ள அழைப்பு துண்டிக்கப்படும்"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"பதிலளித்தால், செயலில் உள்ள அழைப்புகள் துண்டிக்கப்படும்"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"பதிலளித்தால், செயலில் உள்ள வீடியோ அழைப்பு துண்டிக்கப்படும்"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"பதிலளி"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"நிராகரி"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"<xliff:g id="OTHER_CALL">%1$s</xliff:g> அழைப்பு செயலில் உள்ளதால், புதிய அழைப்பைச் செய்ய முடியாது."</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"<xliff:g id="OTHER_CALL">%1$s</xliff:g> அழைப்புகள் செயலில் உள்ளதால், புதிய அழைப்பைச் செய்ய முடியாது."</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"மற்றொரு பயன்பாட்டில் அழைப்பு செயலில் உள்ளதால், புதிய அழைப்பைச் செய்ய முடியாது."</string>
 </resources>
diff --git a/res/values-te-rIN/strings.xml b/res/values-te-rIN/strings.xml
index 09bc4cf..e26fb3f 100644
--- a/res/values-te-rIN/strings.xml
+++ b/res/values-te-rIN/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"అత్యవసర నంబర్‌ను బ్లాక్ చేయడం సాధ్యపడలేదు."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> ఇప్పటికే బ్లాక్ చేయబడింది."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"కాల్ చేయడానికి వ్యక్తిగత డయలర్‌ను ఉపయోగిస్తోంది"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"<xliff:g id="CALL_FROM">%2$s</xliff:g> నుండి <xliff:g id="CALL_VIA">%1$s</xliff:g> కాల్"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"<xliff:g id="CALL_FROM">%2$s</xliff:g> నుండి <xliff:g id="CALL_VIA">%1$s</xliff:g> వీడియో కాల్"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"సమాధానమివ్వడం వలన మీ <xliff:g id="CALL_VIA">%1$s</xliff:g> కాల్ ముగుస్తుంది"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"సమాధానమివ్వడం వలన మీ <xliff:g id="CALL_VIA">%1$s</xliff:g> కాల్‌లు ముగుస్తాయి"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"సమాధానమివ్వడం వలన మీ <xliff:g id="CALL_VIA">%1$s</xliff:g> వీడియో కాల్ ముగుస్తుంది"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"సమాధానమివ్వడం వలన మీ కొనసాగుతున్న కాల్ ముగుస్తుంది"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"సమాధానమివ్వడం వలన మీ కొనసాగుతున్న కాల్‌లు ముగుస్తాయి"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"సమాధానమివ్వడం వలన మీ కొనసాగుతున్న వీడియో కాల్ ముగుస్తుంది"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"సమాధానమివ్వండి"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"తిరస్కరించు"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"మీ <xliff:g id="OTHER_CALL">%1$s</xliff:g> కాల్ కొనసాగుతున్నందున కాల్ చేయడం సాధ్యపడదు."</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"మీ <xliff:g id="OTHER_CALL">%1$s</xliff:g> కాల్‌లు కొనసాగుతున్నందున కాల్ చేయడం సాధ్యపడదు."</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"వేరొక అనువర్తనంలో కాల్ కొనసాగుతున్నందున కాల్ చేయడం సాధ్యపడదు."</string>
 </resources>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index 2acead3..0ac50de 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"ไม่สามารถบล็อกหมายเลขฉุกเฉินได้"</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> ถูกบล็อกอยู่แล้ว"</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"การใช้โทรศัพท์ส่วนตัวเพื่อทำการโทร"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"สายเรียกเข้าใน <xliff:g id="CALL_VIA">%1$s</xliff:g> จาก <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"แฮงเอาท์วิดีโอเรียกเข้าใน <xliff:g id="CALL_VIA">%1$s</xliff:g> จาก <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"การรับสายนี้จะวางสายใน <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"การรับสายนี้จะวางสายใน <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"การรับสายนี้จะวางสายแฮงเอาท์วิดีโอใน <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"การรับสายนี้จะวางสายที่สนทนาอยู่"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"การรับสายนี้จะวางสายที่สนทนาอยู่"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"การรับสายนี้จะวางสายแฮงเอาท์วิดีโอที่สนทนาอยู่"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"รับสาย"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"ปฏิเสธ"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"ไม่สามารถโทรออกได้เนื่องจากกำลังใช้สายอยู่ใน <xliff:g id="OTHER_CALL">%1$s</xliff:g>"</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"ไม่สามารถโทรออกได้เนื่องจากกำลังใช้สายอยู่ใน <xliff:g id="OTHER_CALL">%1$s</xliff:g>"</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"ไม่สามารถโทรออกได้เนื่องจากกำลังใช้สายอยู่ในแอปอื่น"</string>
 </resources>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index b711f07..9788d47 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"Hindi ma-block ang numerong pang-emergency."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"Naka-block na ang <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g>."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"Ginagamit ang personal na dialer upang tumawag"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"Tawag sa <xliff:g id="CALL_VIA">%1$s</xliff:g> mula kay <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"Video call sa <xliff:g id="CALL_VIA">%1$s</xliff:g> mula kay <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"Kung sasagutin, matatapos ang iyong tawag sa <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"Kung sasagutin, matatapos ang iyong mga tawag sa <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"Kung sasagutin, matatapos ang kasalukuyang video call sa <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"Kung sasagutin, matatapos ang iyong kasalukuyang tawag"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"Kung sasagutin, matatapos ang iyong mga kasalukuyang tawag"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"Kung sasagutin, matatapos ang iyong kasalukuyang video call"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"Sagutin"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"Tanggihan"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"Hindi makakatawag dahil sa iyong tawag sa <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"Hindi makakatawag dahil sa iyong mga tawag sa <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"Hindi makakatawag dahil sa isang tawag sa isa pang app."</string>
 </resources>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index 5c20656..96048a1 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"Acil durum numarası engellenemedi."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> zaten engellenmiş durumda."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"Telefon etmek için kişisel numara çeviriciyi kullanma"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"<xliff:g id="CALL_FROM">%2$s</xliff:g> adlı kullanıcıdan <xliff:g id="CALL_VIA">%1$s</xliff:g> çağrısı"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"<xliff:g id="CALL_FROM">%2$s</xliff:g> adlı kullanıcıdan <xliff:g id="CALL_VIA">%1$s</xliff:g> görüntülü görüşmesi"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"Çağrıyı cevapladığınızda <xliff:g id="CALL_VIA">%1$s</xliff:g> çağrınız sona erecek"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"Çağrıyı cevapladığınızda <xliff:g id="CALL_VIA">%1$s</xliff:g> çağrılarınız sona erecek"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"Cevapladığınızda <xliff:g id="CALL_VIA">%1$s</xliff:g> görüntülü görüşmeniz sona erecek"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"Çağrıyı cevapladığınızda, devam eden çağrı sona erecek"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"Çağrıyı cevapladığınızda, devam eden çağrılar sona erecek"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"Cevapladığınızda, devam eden görüntülü görüşme sona erecek"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"Cevapla"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"Reddet"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"Devam eden <xliff:g id="OTHER_CALL">%1$s</xliff:g> çağrınız nedeniyle telefon araması yapılamıyor."</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"Devam eden <xliff:g id="OTHER_CALL">%1$s</xliff:g> çağrılarınız nedeniyle telefon araması yapılamıyor."</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"Başka bir uygulamada devam eden çağrınız nedeniyle telefon araması yapılamıyor."</string>
 </resources>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index 036ea40..ffff8c8 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"Неможливо заблокувати номер екстреної служби."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"Номер <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> уже заблоковано."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"Для дзвінків використовується особистий додаток набору номерів"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"<xliff:g id="CALL_FROM">%2$s</xliff:g> телефонує в <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"<xliff:g id="CALL_FROM">%2$s</xliff:g> пропонує поспілкуватись у відеочаті <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"Якщо відповісти на виклик, дзвінок у <xliff:g id="CALL_VIA">%1$s</xliff:g> буде завершено"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"Якщо відповісти на виклик, дзвінки в <xliff:g id="CALL_VIA">%1$s</xliff:g> буде завершено"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"Якщо відповісти на виклик, відеодзвінок у <xliff:g id="CALL_VIA">%1$s</xliff:g> завершиться"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"Якщо відповісти на виклик, поточний дзвінок буде завершено"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"Якщо відповісти на виклик, поточні дзвінки буде завершено"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"Якщо відповісти на виклик, поточний відеодзвінок завершиться"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"Відповісти"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"Відхилити"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"Неможливо зателефонувати через поточний виклик у <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"Неможливо зателефонувати через поточні виклики в <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"Неможливо зателефонувати через поточний виклик в іншому додатку."</string>
 </resources>
diff --git a/res/values-ur-rPK/strings.xml b/res/values-ur-rPK/strings.xml
index b917066..f0b2737 100644
--- a/res/values-ur-rPK/strings.xml
+++ b/res/values-ur-rPK/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"ہنگامی نمبر مسدود کرنے سے قاصر۔"</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> پہلے ہی مسدود ہے۔"</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"کال کرنے کیلئے ذاتی ڈائلر استعمال ہو رہا ہے"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"<xliff:g id="CALL_FROM">%2$s</xliff:g> کی جانب سے <xliff:g id="CALL_VIA">%1$s</xliff:g> کال"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"<xliff:g id="CALL_FROM">%2$s</xliff:g> کی جانب سے <xliff:g id="CALL_VIA">%1$s</xliff:g> ویڈیو کال"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"جواب دینا آپ کی <xliff:g id="CALL_VIA">%1$s</xliff:g> کال کو ختم کر دے گا"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"جواب دینا آپ کی <xliff:g id="CALL_VIA">%1$s</xliff:g> کالز کو ختم کر دے گا"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"جواب دینا آپ کی <xliff:g id="CALL_VIA">%1$s</xliff:g> ویڈیو کال کو ختم کر دے گا"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"جواب دینا آپ کی جاری کال کو ختم کر دے گا"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"جواب دینا آپ کی جاری کالز کو ختم کر دے گا"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"جواب دینا آپ کی جاری ویڈیو کال کو ختم کر دے گا"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"جواب دیں"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"مسترد کریں"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"آپ کی <xliff:g id="OTHER_CALL">%1$s</xliff:g> کال کی وجہ سے کال نہیں کی جاسکتی۔"</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"آپ کی <xliff:g id="OTHER_CALL">%1$s</xliff:g> کالز کی وجہ سے کالز نہیں کی جاسکتیں۔"</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"کسی دوسری ایپ میں موجود کال کی کی وجہ سے کال نہیں کی جا سکتی۔"</string>
 </resources>
diff --git a/res/values-uz-rUZ/strings.xml b/res/values-uz-rUZ/strings.xml
index 8e8ab26..bc578e3 100644
--- a/res/values-uz-rUZ/strings.xml
+++ b/res/values-uz-rUZ/strings.xml
@@ -19,11 +19,11 @@
     <string name="telecommAppLabel" product="default" msgid="382363169988504520">"Qo‘ng‘iroqlar boshqaruvi"</string>
     <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"Telefon"</string>
     <string name="unknown" msgid="6878797917991465859">"Noma’lum"</string>
-    <string name="notification_missedCallTitle" msgid="7554385905572364535">"Javobsiz qo‘ng‘iroq"</string>
-    <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"Javobsiz ishchi qo‘ng‘irog‘i"</string>
-    <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Javobsiz qo‘ng‘iroqlar"</string>
-    <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> ta javobsiz qo‘ng‘iroq"</string>
-    <string name="notification_missedCallTicker" msgid="504686252427747209">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g> qo‘ng‘irog‘i javobsiz qoldirildi"</string>
+    <string name="notification_missedCallTitle" msgid="7554385905572364535">"Javobsiz chaqiruv"</string>
+    <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"Javobsiz chaqiruv (ish)"</string>
+    <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Javobsiz chaqiruvlar"</string>
+    <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> ta javobsiz chaqiruv"</string>
+    <string name="notification_missedCallTicker" msgid="504686252427747209">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g> chaqiruvi javobsiz qoldi"</string>
     <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Telefon"</string>
     <string name="notification_missedCall_message" msgid="3049928912736917988">"SMS"</string>
     <string name="accessibility_call_muted" msgid="2776111226185342220">"Qo‘ng‘iroq ovozi o‘chirildi."</string>
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"Favqulodda qo‘ng‘iroq raqamini bloklab bo‘lmadi."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> raqami allaqachon bloklangan."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"Qo‘ng‘iroq qilish uchun shaxsiy raqam tergichdan foydalanilmoqda"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"<xliff:g id="CALL_FROM">%2$s</xliff:g> <xliff:g id="CALL_VIA">%1$s</xliff:g> orqali chaqirmoqda"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"<xliff:g id="CALL_FROM">%2$s</xliff:g> <xliff:g id="CALL_VIA">%1$s</xliff:g> orqali video qo‘ng‘iroq qilmoqda"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"Chaqiruvga javob berilsa, <xliff:g id="CALL_VIA">%1$s</xliff:g> qo‘ng‘irog‘i tugatiladi."</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"Chaqiruvga javob berilsa, <xliff:g id="CALL_VIA">%1$s</xliff:g> qo‘ng‘iroqlari tugatiladi."</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"Chaqiruvga javob berilsa, <xliff:g id="CALL_VIA">%1$s</xliff:g> video suhbati tugatiladi."</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"Chaqiruvga javob berilsa, joriy qo‘ng‘iroq tugatiladi."</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"Chaqiruvga javob berilsa, joriy qo‘ng‘iroqlar tugatiladi."</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"Chaqiruvga javob berilsa, joriy video suhbat tugatiladi."</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"Javob berish"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"Rad etish"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"Joriy <xliff:g id="OTHER_CALL">%1$s</xliff:g> qo‘ng‘ir. tufayli boshqa raqamni chaqirib bo‘lmaydi."</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"Joriy <xliff:g id="OTHER_CALL">%1$s</xliff:g> qo‘ng‘ir-r tufayli boshqa raqamni chaqirib bo‘lmaydi."</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"Boshqa ilovadagi joriy qo‘ng‘iroq tufayli boshqa raqamni chaqirib bo‘lmaydi."</string>
 </resources>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index 2308246..2474ed5 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"Không thể chặn số khẩn cấp."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> đã bị chặn."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"Sử dụng trình quay số cá nhân để gọi điện"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"Cuộc gọi <xliff:g id="CALL_VIA">%1$s</xliff:g> từ <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"Cuộc gọi điện video <xliff:g id="CALL_VIA">%1$s</xliff:g> từ <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"Trả lời sẽ kết thúc cuộc gọi <xliff:g id="CALL_VIA">%1$s</xliff:g> của bạn"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"Trả lời sẽ kết thúc cuộc gọi <xliff:g id="CALL_VIA">%1$s</xliff:g> của bạn"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"Trả lời sẽ kết thúc cuộc gọi điện video <xliff:g id="CALL_VIA">%1$s</xliff:g> của bạn"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"Trả lời sẽ kết thúc cuộc gọi đang diễn ra của bạn"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"Trả lời sẽ kết thúc cuộc gọi đang diễn ra của bạn"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"Trả lời sẽ kết thúc cuộc gọi điện video đang diễn ra của bạn"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"Trả lời"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"Từ chối"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"Không thể thực hiện cuộc gọi do cuộc gọi <xliff:g id="OTHER_CALL">%1$s</xliff:g> của bạn."</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"Không thể thực hiện cuộc gọi do cuộc gọi <xliff:g id="OTHER_CALL">%1$s</xliff:g> của bạn."</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"Không thể thực hiện cuộc gọi do có cuộc gọi trong một ứng dụng khác."</string>
 </resources>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 8374edb..0a6de5b 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"无法屏蔽紧急服务号码。"</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> 已被屏蔽。"</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"使用个人拨号器拨打电话"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"接到来自<xliff:g id="CALL_FROM">%2$s</xliff:g>的 <xliff:g id="CALL_VIA">%1$s</xliff:g> 通话邀请"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"接到来自<xliff:g id="CALL_FROM">%2$s</xliff:g>的 <xliff:g id="CALL_VIA">%1$s</xliff:g> 视频通话邀请"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"如果接听此来电,您的 <xliff:g id="CALL_VIA">%1$s</xliff:g> 通话会中断。"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"如果接听此来电,您的 <xliff:g id="CALL_VIA">%1$s</xliff:g> 通话会中断。"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"如果接听此来电,您的 <xliff:g id="CALL_VIA">%1$s</xliff:g> 视频通话会中断"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"如果接听此来电,您当前的通话会中断。"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"如果接听此来电,您当前的通话会中断。"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"如果接听此来电,您当前的视频通话会中断。"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"接听"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"拒绝"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"由于当前正在进行 <xliff:g id="OTHER_CALL">%1$s</xliff:g> 通话,因此无法拨打电话。"</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"由于当前正在进行 <xliff:g id="OTHER_CALL">%1$s</xliff:g> 通话,因此无法拨打电话。"</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"由于当前正在通过其他应用通话,因此无法拨打电话。"</string>
 </resources>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index 0dff76b..a3c611b 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"無法封鎖緊急電話號碼。"</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"已封鎖 <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g>。"</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"使用個人撥號器撥打電話"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"來自<xliff:g id="CALL_FROM">%2$s</xliff:g>的 <xliff:g id="CALL_VIA">%1$s</xliff:g> 通話"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"來自<xliff:g id="CALL_FROM">%2$s</xliff:g>的 <xliff:g id="CALL_VIA">%1$s</xliff:g> 視像通話"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"如果接聽,您的 <xliff:g id="CALL_VIA">%1$s</xliff:g> 通話將會結束"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"如果接聽,您的 <xliff:g id="CALL_VIA">%1$s</xliff:g> 通話將會結束"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"如果接聽,您的 <xliff:g id="CALL_VIA">%1$s</xliff:g> 視像通話將會結束"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"如果接聽,您進行中的通話將會結束"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"如果接聽,您進行中的通話將會結束"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"如果接聽,您進行中的視像通話將會結束"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"接聽"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"拒絕"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"由於您已在進行 <xliff:g id="OTHER_CALL">%1$s</xliff:g> 通話,因此無法撥打電話。"</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"由於您已在進行 <xliff:g id="OTHER_CALL">%1$s</xliff:g> 通話,因此無法撥打電話。"</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"由於已在另一個應用程式中進行通話,因此無法撥打電話。"</string>
 </resources>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 7bb98a9..a467e05 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"無法封鎖緊急服務電話號碼。"</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> 已在封鎖清單中。"</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"使用個人撥號程式撥打電話"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"<xliff:g id="CALL_FROM">%2$s</xliff:g>的 <xliff:g id="CALL_VIA">%1$s</xliff:g> 來電"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"<xliff:g id="CALL_FROM">%2$s</xliff:g>的 <xliff:g id="CALL_VIA">%1$s</xliff:g> 視訊通話來電"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"接聽之後,你的 <xliff:g id="CALL_VIA">%1$s</xliff:g> 通話就會結束"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"接聽之後,你的 <xliff:g id="CALL_VIA">%1$s</xliff:g> 通話就會結束"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"接聽之後,你的 <xliff:g id="CALL_VIA">%1$s</xliff:g> 視訊通話就會結束"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"接聽之後,你正在進行的通話就會結束"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"接聽之後,你正在進行的通話就會結束"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"接聽之後,你正在進行的視訊通話就會結束"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"接聽"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"拒接"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"你正在進行 <xliff:g id="OTHER_CALL">%1$s</xliff:g> 通話,因此無法撥打電話。"</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"你正在進行 <xliff:g id="OTHER_CALL">%1$s</xliff:g> 通話,所以無法撥打電話。"</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"你正在使用其他應用程式進行通話,因此無法撥打電話。"</string>
 </resources>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index b65700c..d868b32 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -67,4 +67,17 @@
     <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"Ayikwazi ukuvimba inombolo yesimo esiphuthumayo."</string>
     <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"I-<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> isivele ivinjiwe."</string>
     <string name="toast_personal_call_msg" msgid="5115361633476779723">"Ukusebenzisa okokudayila komuntu siqu ukwenza ikholi"</string>
+    <string name="notification_incoming_call" msgid="7713197997773986670">"<xliff:g id="CALL_VIA">%1$s</xliff:g> ikholi esuka ku-<xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="notification_incoming_video_call" msgid="6638486071698373893">"<xliff:g id="CALL_VIA">%1$s</xliff:g> ikholi yevidiyo esuka ku-<xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+    <string name="answering_ends_other_call" msgid="8282145910153766401">"Ukuphendula kuzoqeda ikholi yakho ye-<xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_calls" msgid="1198589551399049197">"Ukuphendula kuzoqeda amakholi akho e-<xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_video_call" msgid="8510410917384186360">"Ukuphendula kuzoqeda ikholi yakho yevidiyo ye-<xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+    <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"Ukuphendula kuzoqeda ikholi yakho eqhubekayo"</string>
+    <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"Ukuphendula kuzoqeda amakholi akho aqhubekayo"</string>
+    <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"Ukuphendula kuzoqeda ikholi yakho yevidiyo eqhubekayo"</string>
+    <string name="answer_incoming_call" msgid="4140530013111794587">"Phendula"</string>
+    <string name="decline_incoming_call" msgid="806026168661598368">"Yenqaba"</string>
+    <string name="cant_call_due_to_ongoing_call" msgid="4952615196237854748">"Ikholi ayikwazi ukwenziwa ngenxa yekholi yakho ye-<xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+    <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"Ikholi ayikwazi ukwenziwa ngenxa yamakholi akho e-<xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+    <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"Ikholi ayikwazi ukwenziwa ngenxa yekholi kolunye uhlelo lokusebenza."</string>
 </resources>
diff --git a/res/values/colors.xml b/res/values/colors.xml
index b0bcd3c..8ff0b8e 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -25,4 +25,7 @@
     <color name="blocked_numbers_butter_bar_color">#f5f5f5</color>
     <color name="blocked_numbers_title_text_color">#ba000000</color>
     <color name="blocked_numbers_secondary_text_color">#89000000</color>
+
+    <color name="notification_action_answer">#097138</color>
+    <color name="notification_action_decline">#A52714</color>
 </resources>
diff --git a/res/values/config.xml b/res/values/config.xml
index be0f72a..7dd43f4 100644
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -39,10 +39,11 @@
     <!-- Flag indicating if the tty is enabled -->
     <bool name="tty_enabled">true</bool>
 
-    <!-- Component name for the notification handler. The presence of this value will disable
-         MissedCallNotifierImpl's presentation of missed call/voice notifications [DO NOT TRANSLATE] -->
-    <string name="notification_component" translatable="false"></string>
-
     <!-- Flag indicating whether audio should be routed to speaker when docked -->
     <bool name="use_speaker_when_docked">true</bool>
+
+    <!-- Flag indicating whether allow (silence rather than reject) the incoming call if it has a
+         different source (connection service) from the existing ringing call when reaching
+         maximum ringing calls. -->
+    <bool name="silence_incoming_when_different_service_and_maximum_ringing">false</bool>
 </resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 11b2d50..1cca867 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -175,4 +175,76 @@
     <string name="handle_restricted">RESTRICTED</string>
 
     <string name="toast_personal_call_msg">Using the personal dialer to make the call</string>
+
+    <!-- The "label" of the Notification for an incoming ringing call.
+         call_via refers to the name of the app the incoming call is coming from.
+         Example: Duo call from John Smith[CHAR LIMIT=60] -->
+    <string name="notification_incoming_call"><xliff:g id="call_via">%1$s</xliff:g> call from <xliff:g id="call_from">%2$s</xliff:g></string>
+
+    <!-- The "label" of the Notification for an incoming ringing video call.
+         call_via refers to the name of the app the incoming video call is coming from.
+         Example: Duo video call from John Smith[CHAR LIMIT=60] -->
+    <string name="notification_incoming_video_call"><xliff:g id="call_via">%1$s</xliff:g> video call from <xliff:g id="call_from">%2$s</xliff:g></string>
+
+    <!-- The "details" of a Notification for an incoming call which will cause an ongoing call to be
+         disconnected.  This message is the part of the notification that informs the user that
+         answering the current ringing call will cause a call from another app to be disconnected.
+         Example: Answering will end your Duo call [CHAR LIMIT=60] -->
+    <string name="answering_ends_other_call">Answering will end your <xliff:g id="call_via">%1$s</xliff:g> call</string>
+
+    <!-- The "details" of a Notification for an incoming call which will cause other ongoing calls
+         to be disconnected.  This message is the part of the notification that informs the user
+         answering the current ringing call will cause calls from another app to be disconnected.
+         Example: Answering will end your Duo call [CHAR LIMIT=60] -->
+    <string name="answering_ends_other_calls">Answering will end your <xliff:g id="call_via">%1$s</xliff:g> calls</string>
+
+    <!-- The "details" of a Notification for an incoming call which will cause an ongoing video call
+         to be disconnected.  This message is the part of the notification that informs the user
+         that answering the current ringing call will cause a video call from another app to be
+         disconnected.
+         Example: Answering will end your Duo video call [CHAR LIMIT=60] -->
+    <string name="answering_ends_other_video_call">Answering will end your <xliff:g id="call_via">%1$s</xliff:g> video call</string>
+
+    <!-- The "details" of a Notification for an incoming call which will cause an ongoing call
+         to be disconnected.  This message is the part of the notification that informs the user
+         that answering the current ringing call will cause an ongoing call to be disconnected.
+         Similar to answering_ends_other_call, except does not specify which app.
+         [CHAR LIMIT=60] -->
+    <string name="answering_ends_other_managed_call">Answering will end your ongoing call</string>
+
+    <!-- The "details" of a Notification for an incoming call which will cause an ongoing call
+         to be disconnected.  This message is the part of the notification that informs the user
+         that answering the current ringing call will cause an ongoing call to be disconnected.
+         Similar to answering_ends_other_call, except does not specify which app.
+         [CHAR LIMIT=60] -->
+    <string name="answering_ends_other_managed_calls">Answering will end your ongoing calls</string>
+
+    <!-- The "details" of a Notification for an incoming call which will cause an ongoing video call
+         to be disconnected.  This message is the part of the notification that informs the user
+         that answering the current ringing call will cause an ongoing video call to be
+         disconnected.
+         Similar to answering_ends_other_video_call, except does not specify which app.
+         [CHAR LIMIT=60] -->
+    <string name="answering_ends_other_managed_video_call">Answering will end your ongoing video call</string>
+
+    <!-- The "answer" button for an incoming call. [CHAR LIMIT=60] -->
+    <string name="answer_incoming_call">Answer</string>
+
+    <!-- The "decline" button for an incoming call. [CHAR LIMIT=60] -->
+    <string name="decline_incoming_call">Decline</string>
+
+    <!-- Error message shown to the user when an outgoing call cannot be placed due to an ongoing
+         phone call in a third-party app.  For example:
+         Call cannot be placed due to your Duo call. [CHAR LIMIT=none] -->
+    <string name="cant_call_due_to_ongoing_call">Call cannot be placed due to your <xliff:g id="other_call">%1$s</xliff:g> call.</string>
+
+    <!-- Error message shown to the user when an outgoing call cannot be placed due to ongoing
+         phone calls in a third-party app.  For example:
+         Call cannot be placed due to your Duo calls. [CHAR LIMIT=none] -->
+    <string name="cant_call_due_to_ongoing_calls">Call cannot be placed due to your <xliff:g id="other_call">%1$s</xliff:g> calls.</string>
+
+    <!-- Error message shown to the user when an outgoing call cannot be placed due to an ongoing
+         phone call in a third-party app.  Unlike cant_call_due_to_ongoing_call, this is used when
+         the name of the other app is not known. [CHAR LIMIT=none] -->
+    <string name="cant_call_due_to_ongoing_unknown_call">Call cannot be placed due to a call in another app.</string>
 </resources>
diff --git a/src/com/android/server/telecom/Call.java b/src/com/android/server/telecom/Call.java
index ba89682..1cc4887 100644
--- a/src/com/android/server/telecom/Call.java
+++ b/src/com/android/server/telecom/Call.java
@@ -595,12 +595,30 @@
 
     @Override
     public String getDescription() {
-        StringBuilder s = new StringBuilder("Call ");
+        StringBuilder s = new StringBuilder();
+        if (isSelfManaged()) {
+            s.append("SelfMgd Call");
+        } else if (isExternalCall()) {
+            s.append("External Call");
+        } else {
+            s.append("Call");
+        }
         s.append(getId());
         s.append(" [");
         s.append(SimpleDateFormat.getDateTimeInstance().format(new Date(getCreationTimeMillis())));
         s.append("]");
         s.append(isIncoming() ? "(MT - incoming)" : "(MO - outgoing)");
+        s.append("\n\tVia PhoneAccount: ");
+        PhoneAccountHandle targetPhoneAccountHandle = getTargetPhoneAccount();
+        if (targetPhoneAccountHandle != null) {
+            s.append(targetPhoneAccountHandle);
+            s.append(" (");
+            s.append(getTargetPhoneAccountLabel());
+            s.append(")");
+        } else {
+            s.append("not set");
+        }
+
         s.append("\n\tTo address: ");
         s.append(Log.piiHandle(getHandle()));
         s.append("\n");
@@ -857,11 +875,11 @@
         }
     }
 
-    String getCallerDisplayName() {
+    public String getCallerDisplayName() {
         return mCallerDisplayName;
     }
 
-    int getCallerDisplayNamePresentation() {
+    public int getCallerDisplayNamePresentation() {
         return mCallerDisplayNamePresentation;
     }
 
@@ -965,6 +983,20 @@
         }
     }
 
+    public CharSequence getTargetPhoneAccountLabel() {
+        if (getTargetPhoneAccount() == null) {
+            return null;
+        }
+        PhoneAccount phoneAccount = mCallsManager.getPhoneAccountRegistrar()
+                .getPhoneAccountUnchecked(getTargetPhoneAccount());
+
+        if (phoneAccount == null) {
+            return null;
+        }
+
+        return phoneAccount.getLabel();
+    }
+
     @VisibleForTesting
     public boolean isIncoming() {
         return mCallDirection == CALL_DIRECTION_INCOMING;
diff --git a/src/com/android/server/telecom/CallAudioManager.java b/src/com/android/server/telecom/CallAudioManager.java
index e50fd21..227d5f5 100644
--- a/src/com/android/server/telecom/CallAudioManager.java
+++ b/src/com/android/server/telecom/CallAudioManager.java
@@ -232,6 +232,9 @@
             }
         }
 
+        // Turn off mute when a new incoming call is answered.
+        mute(false /* shouldMute */);
+
         maybeStopRingingAndCallWaitingForAnsweredOrRejectedCall(call);
     }
 
@@ -363,7 +366,8 @@
                 CallAudioRouteStateMachine.TOGGLE_MUTE);
     }
 
-    void mute(boolean shouldMute) {
+    @VisibleForTesting
+    public void mute(boolean shouldMute) {
         Log.v(this, "mute, shouldMute: %b", shouldMute);
 
         // Don't mute if there are any emergency calls.
@@ -420,7 +424,8 @@
 
     @VisibleForTesting
     public boolean startRinging() {
-        return mRinger.startRinging(mForegroundCall);
+        return mRinger.startRinging(mForegroundCall,
+                mCallAudioRouteStateMachine.isHfpDeviceAvailable());
     }
 
     @VisibleForTesting
@@ -477,6 +482,16 @@
 
         pw.println("Foreground call:");
         pw.println(mForegroundCall);
+
+        pw.println("CallAudioModeStateMachine pending messages:");
+        pw.increaseIndent();
+        mCallAudioModeStateMachine.dumpPendingMessages(pw);
+        pw.decreaseIndent();
+
+        pw.println("CallAudioRouteStateMachine pending messages:");
+        pw.increaseIndent();
+        mCallAudioRouteStateMachine.dumpPendingMessages(pw);
+        pw.decreaseIndent();
     }
 
     @VisibleForTesting
diff --git a/src/com/android/server/telecom/CallAudioModeStateMachine.java b/src/com/android/server/telecom/CallAudioModeStateMachine.java
index 7121a53..3d778f2 100644
--- a/src/com/android/server/telecom/CallAudioModeStateMachine.java
+++ b/src/com/android/server/telecom/CallAudioModeStateMachine.java
@@ -24,6 +24,7 @@
 import android.util.SparseArray;
 
 import com.android.internal.util.IState;
+import com.android.internal.util.IndentingPrintWriter;
 import com.android.internal.util.State;
 import com.android.internal.util.StateMachine;
 
@@ -515,6 +516,10 @@
         }
     }
 
+    public void dumpPendingMessages(IndentingPrintWriter pw) {
+        getHandler().getLooper().dump(pw::println, "");
+    }
+
     @Override
     protected void onPostHandleMessage(Message msg) {
         Log.endSession();
diff --git a/src/com/android/server/telecom/CallAudioRouteStateMachine.java b/src/com/android/server/telecom/CallAudioRouteStateMachine.java
index dd69534..365ef4d 100644
--- a/src/com/android/server/telecom/CallAudioRouteStateMachine.java
+++ b/src/com/android/server/telecom/CallAudioRouteStateMachine.java
@@ -37,6 +37,7 @@
 import android.util.SparseArray;
 
 import com.android.internal.util.IState;
+import com.android.internal.util.IndentingPrintWriter;
 import com.android.internal.util.State;
 import com.android.internal.util.StateMachine;
 import com.android.server.telecom.bluetooth.BluetoothRouteManager;
@@ -1318,6 +1319,14 @@
         quitNow();
     }
 
+    public void dumpPendingMessages(IndentingPrintWriter pw) {
+        getHandler().getLooper().dump(pw::println, "");
+    }
+
+    public boolean isHfpDeviceAvailable() {
+        return mBluetoothRouteManager.isBluetoothAvailable();
+    }
+
     /**
      * Sets whether notifications should be suppressed or not.  Used when in a call to ensure the
      * device will not vibrate due to notifications.
diff --git a/src/com/android/server/telecom/CallsManager.java b/src/com/android/server/telecom/CallsManager.java
index ced282c..e89075d 100644
--- a/src/com/android/server/telecom/CallsManager.java
+++ b/src/com/android/server/telecom/CallsManager.java
@@ -66,6 +66,7 @@
 import com.android.server.telecom.callfiltering.DirectToVoicemailCallFilter;
 import com.android.server.telecom.callfiltering.IncomingCallFilter;
 import com.android.server.telecom.components.ErrorDialogActivity;
+import com.android.server.telecom.ui.IncomingCallNotifier;
 
 import java.util.ArrayList;
 import java.util.Collection;
@@ -121,6 +122,30 @@
 
     private static final String TAG = "CallsManager";
 
+    /**
+     * Call filter specifier used with
+     * {@link #getNumCallsWithState(int, Call, PhoneAccountHandle, int...)} to indicate only
+     * self-managed calls should be included.
+     */
+    private static final int CALL_FILTER_SELF_MANAGED = 1;
+
+    /**
+     * Call filter specifier used with
+     * {@link #getNumCallsWithState(int, Call, PhoneAccountHandle, int...)} to indicate only
+     * managed calls should be included.
+     */
+    private static final int CALL_FILTER_MANAGED = 2;
+
+    /**
+     * Call filter specifier used with
+     * {@link #getNumCallsWithState(int, Call, PhoneAccountHandle, int...)} to indicate both managed
+     * and self-managed calls should be included.
+     */
+    private static final int CALL_FILTER_ALL = 3;
+
+    private static final String PERMISSION_PROCESS_PHONE_ACCOUNT_REGISTRATION =
+            "android.permission.PROCESS_PHONE_ACCOUNT_REGISTRATION";
+
     private static final int HANDLER_WAIT_TIMEOUT = 10000;
     private static final int MAXIMUM_LIVE_CALLS = 1;
     private static final int MAXIMUM_HOLD_CALLS = 1;
@@ -134,10 +159,25 @@
             {CallState.CONNECTING, CallState.SELECT_PHONE_ACCOUNT, CallState.DIALING,
                     CallState.PULLING};
 
+    /**
+     * These states are used by {@link #makeRoomForOutgoingCall(Call, boolean)} to determine which
+     * call should be ended first to make room for a new outgoing call.
+     */
     private static final int[] LIVE_CALL_STATES =
             {CallState.CONNECTING, CallState.SELECT_PHONE_ACCOUNT, CallState.DIALING,
                     CallState.PULLING, CallState.ACTIVE};
 
+    /**
+     * These states determine which calls will cause {@link TelecomManager#isInCall()} or
+     * {@link TelecomManager#isInManagedCall()} to return true.
+     *
+     * See also {@link PhoneStateBroadcaster}, which considers a similar set of states as being
+     * off-hook.
+     */
+    public static final int[] ONGOING_CALL_STATES =
+            {CallState.SELECT_PHONE_ACCOUNT, CallState.DIALING, CallState.PULLING, CallState.ACTIVE,
+                    CallState.ON_HOLD, CallState.RINGING};
+
     private static final int[] ANY_CALL_STATE =
             {CallState.NEW, CallState.CONNECTING, CallState.SELECT_PHONE_ACCOUNT, CallState.DIALING,
                     CallState.RINGING, CallState.ACTIVE, CallState.ON_HOLD, CallState.DISCONNECTED,
@@ -206,6 +246,7 @@
     private final CallerInfoAsyncQueryFactory mCallerInfoAsyncQueryFactory;
     private final PhoneAccountRegistrar mPhoneAccountRegistrar;
     private final MissedCallNotifier mMissedCallNotifier;
+    private IncomingCallNotifier mIncomingCallNotifier;
     private final CallerInfoLookupHelper mCallerInfoLookupHelper;
     private final DefaultDialerCache mDefaultDialerCache;
     private final Timeouts.Adapter mTimeoutsAdapter;
@@ -223,6 +264,21 @@
     private Runnable mStopTone;
 
     /**
+     * Listener to PhoneAccountRegistrar events.
+     */
+    private PhoneAccountRegistrar.Listener mPhoneAccountListener =
+            new PhoneAccountRegistrar.Listener() {
+        public void onPhoneAccountRegistered(PhoneAccountRegistrar registrar,
+                                             PhoneAccountHandle handle) {
+            broadcastRegisterIntent(handle);
+        }
+        public void onPhoneAccountUnRegistered(PhoneAccountRegistrar registrar,
+                                               PhoneAccountHandle handle) {
+            broadcastUnregisterIntent(handle);
+        }
+    };
+
+    /**
      * Initializes the required Telecom components.
      */
     CallsManager(
@@ -250,6 +306,7 @@
         mContactsAsyncHelper = contactsAsyncHelper;
         mCallerInfoAsyncQueryFactory = callerInfoAsyncQueryFactory;
         mPhoneAccountRegistrar = phoneAccountRegistrar;
+        mPhoneAccountRegistrar.addListener(mPhoneAccountListener);
         mMissedCallNotifier = missedCallNotifier;
         StatusBarNotifier statusBarNotifier = new StatusBarNotifier(context, this);
         mWiredHeadsetManager = wiredHeadsetManager;
@@ -326,6 +383,14 @@
         }
     }
 
+    public void setIncomingCallNotifier(IncomingCallNotifier incomingCallNotifier) {
+        if (mIncomingCallNotifier != null) {
+            mListeners.remove(mIncomingCallNotifier);
+        }
+        mIncomingCallNotifier = incomingCallNotifier;
+        mListeners.add(mIncomingCallNotifier);
+    }
+
     public void setRespondViaSmsManager(RespondViaSmsManager respondViaSmsManager) {
         if (mRespondViaSmsManager != null) {
             mListeners.remove(mRespondViaSmsManager);
@@ -402,9 +467,13 @@
 
         if (result.shouldAllowCall) {
             if (hasMaximumManagedRingingCalls(incomingCall)) {
-                Log.i(this, "onCallFilteringCompleted: Call rejected! Exceeds maximum number of " +
-                        "ringing calls.");
-                rejectCallAndLog(incomingCall);
+                if (shouldSilenceInsteadOfReject(incomingCall)) {
+                    incomingCall.silence();
+                } else {
+                    Log.i(this, "onCallFilteringCompleted: Call rejected! " +
+                            "Exceeds maximum number of ringing calls.");
+                    rejectCallAndLog(incomingCall);
+                }
             } else if (hasMaximumManagedDialingCalls(incomingCall)) {
                 Log.i(this, "onCallFilteringCompleted: Call rejected! Exceeds maximum number of " +
                         "dialing calls.");
@@ -432,6 +501,37 @@
         }
     }
 
+    /**
+     * Whether allow (silence rather than reject) the incoming call if it has a different source
+     * (connection service) from the existing ringing call when reaching maximum ringing calls.
+     */
+    private boolean shouldSilenceInsteadOfReject(Call incomingCall) {
+        if (!mContext.getResources().getBoolean(
+                R.bool.silence_incoming_when_different_service_and_maximum_ringing)) {
+            return false;
+        }
+
+        Call ringingCall = null;
+
+        for (Call call : mCalls) {
+            // Only operate on top-level calls
+            if (call.getParentCall() != null) {
+                continue;
+            }
+
+            if (call.isExternalCall()) {
+                continue;
+            }
+
+            if (CallState.RINGING == call.getState() &&
+                    call.getConnectionService() == incomingCall.getConnectionService()) {
+                return false;
+            }
+        }
+
+        return true;
+    }
+
     @Override
     public void onFailedIncomingCall(Call call) {
         setCallState(call, CallState.DISCONNECTED, "failed incoming call");
@@ -719,6 +819,27 @@
                 phoneAccountHandle);
         if (phoneAccount != null) {
             call.setIsSelfManaged(phoneAccount.isSelfManaged());
+            if (call.isSelfManaged()) {
+                // Self managed calls will always be voip audio mode.
+                call.setIsVoipAudioMode(true);
+            } else {
+                // Incoming call is not self-managed, so we need to set extras on it to indicate
+                // whether answering will cause a background self-managed call to drop.
+                if (hasSelfManagedCalls()) {
+                    Bundle dropCallExtras = new Bundle();
+                    dropCallExtras.putBoolean(Connection.EXTRA_ANSWERING_DROPS_FG_CALL, true);
+
+                    // Include the name of the app which will drop the call.
+                    Call foregroundCall = getForegroundCall();
+                    if (foregroundCall != null) {
+                        CharSequence droppedApp = foregroundCall.getTargetPhoneAccountLabel();
+                        dropCallExtras.putCharSequence(
+                                Connection.EXTRA_ANSWERING_DROPS_FG_CALL_APP_NAME, droppedApp);
+                        Log.i(this, "Incoming managed call will drop %s call.", droppedApp);
+                    }
+                    call.putExtras(Call.SOURCE_CONNECTION_SERVICE, dropCallExtras);
+                }
+            }
         }
         if (extras.getBoolean(TelecomManager.EXTRA_START_CALL_WITH_RTT, false)) {
             if (phoneAccount != null &&
@@ -726,6 +847,13 @@
                 call.setRttStreams(true);
             }
         }
+        // If the extras specifies a video state, set it on the call if the PhoneAccount supports
+        // video.
+        if (extras.containsKey(TelecomManager.EXTRA_INCOMING_VIDEO_STATE) &&
+                phoneAccount != null && phoneAccount.hasCapabilities(
+                        PhoneAccount.CAPABILITY_VIDEO_CALLING)) {
+            call.setVideoState(extras.getInt(TelecomManager.EXTRA_INCOMING_VIDEO_STATE));
+        }
 
         call.initAnalytics();
         if (getForegroundCall() != null) {
@@ -854,6 +982,10 @@
             // self-managed from the moment it is created.
             if (account != null) {
                 call.setIsSelfManaged(account.isSelfManaged());
+                if (call.isSelfManaged()) {
+                    // Self-managed calls will ALWAYS use voip audio mode.
+                    call.setIsVoipAudioMode(true);
+                }
             }
 
             call.setInitiatingUser(initiatingUser);
@@ -1042,15 +1174,33 @@
 
         final boolean requireCallCapableAccountByHandle = mContext.getResources().getBoolean(
                 com.android.internal.R.bool.config_requireCallCapableAccountForHandle);
-
+        final boolean isOutgoingCallPermitted = isOutgoingCallPermitted(call,
+                call.getTargetPhoneAccount());
         if (call.getTargetPhoneAccount() != null || call.isEmergencyCall()) {
             // If the account has been set, proceed to place the outgoing call.
             // Otherwise the connection will be initiated when the account is set by the user.
-            if (call.isSelfManaged() && !isOutgoingCallPermitted(call,
-                    call.getTargetPhoneAccount())) {
-
+            if (call.isSelfManaged() && !isOutgoingCallPermitted) {
                 notifyCreateConnectionFailed(call.getTargetPhoneAccount(), call);
+            } else if (!call.isSelfManaged() && hasSelfManagedCalls() && !call.isEmergencyCall()) {
+                Call activeCall = getActiveCall();
+                CharSequence errorMessage;
+                if (activeCall == null) {
+                    // Realistically this shouldn't happen, but best to handle gracefully
+                    errorMessage = mContext.getText(R.string.cant_call_due_to_ongoing_unknown_call);
+                } else {
+                    errorMessage = mContext.getString(R.string.cant_call_due_to_ongoing_call,
+                            activeCall.getTargetPhoneAccountLabel());
+                }
+                // Call is managed and there are ongoing self-managed calls.
+                markCallAsDisconnected(call, new DisconnectCause(DisconnectCause.ERROR,
+                        errorMessage, errorMessage, "Ongoing call in another app."));
+                markCallAsRemoved(call);
             } else {
+                if (call.isEmergencyCall()) {
+                    // Disconnect all self-managed calls to make priority for emergency call.
+                    mCalls.stream().filter(c -> c.isSelfManaged()).forEach(c -> c.disconnect());
+                }
+
                 call.startCreateConnection(mPhoneAccountRegistrar);
             }
         } else if (mPhoneAccountRegistrar.getCallCapablePhoneAccounts(
@@ -1094,7 +1244,21 @@
                     (foregroundCall.isActive() ||
                      foregroundCall.getState() == CallState.DIALING ||
                      foregroundCall.getState() == CallState.PULLING)) {
-                if (0 == (foregroundCall.getConnectionCapabilities()
+                if (!foregroundCall.getTargetPhoneAccount().equals(
+                                call.getTargetPhoneAccount()) &&
+                        ((call.isSelfManaged() != foregroundCall.isSelfManaged()) ||
+                         call.isSelfManaged())) {
+                    // The foreground call is from another connection service, and either:
+                    // 1. FG call's managed state doesn't match that of the incoming call.
+                    //    E.g. Incoming is self-managed and FG is managed, or incoming is managed
+                    //    and foreground is self-managed.
+                    // 2. The incoming call is self-managed.
+                    //    E.g. The incoming call is
+                    Log.i(this, "Answering call from %s CS; disconnecting calls from %s CS.",
+                            foregroundCall.isSelfManaged() ? "selfMg" : "mg",
+                            call.isSelfManaged() ? "selfMg" : "mg");
+                    disconnectOtherCalls(call.getTargetPhoneAccount());
+                } else if (0 == (foregroundCall.getConnectionCapabilities()
                         & Connection.CAPABILITY_HOLD)) {
                     // This call does not support hold.  If it is from a different connection
                     // service, then disconnect it, otherwise allow the connection service to
@@ -1105,13 +1269,11 @@
                 } else {
                     Call heldCall = getHeldCall();
                     if (heldCall != null) {
-                        Log.v(this, "Disconnecting held call %s before holding active call.",
+                        Log.i(this, "Disconnecting held call %s before holding active call.",
                                 heldCall);
                         heldCall.disconnect();
                     }
 
-                    Log.v(this, "Holding active/dialing call %s before answering incoming call %s.",
-                            foregroundCall, call);
                     foregroundCall.hold();
                 }
                 // TODO: Wait until we get confirmation of the active call being
@@ -1255,6 +1417,19 @@
         }
     }
 
+    /**
+     * Disconnects calls for any other {@link PhoneAccountHandle} but the one specified.
+     * Note: As a protective measure, will NEVER disconnect an emergency call.  Although that
+     * situation should never arise, its a good safeguard.
+     * @param phoneAccountHandle Calls owned by {@link PhoneAccountHandle}s other than this one will
+     *                          be disconnected.
+     */
+    private void disconnectOtherCalls(PhoneAccountHandle phoneAccountHandle) {
+        mCalls.stream()
+                .filter(c -> !c.isEmergencyCall() &&
+                        !c.getTargetPhoneAccount().equals(phoneAccountHandle))
+                .forEach(c -> disconnectCall(c));
+    }
 
     /**
      * Instructs Telecom to put the specified call on hold. Intended to be invoked by the
@@ -1649,7 +1824,6 @@
         return getFirstCallWithState(CallState.RINGING);
     }
 
-    @VisibleForTesting
     public Call getActiveCall() {
         return getFirstCallWithState(CallState.ACTIVE);
     }
@@ -1802,6 +1976,14 @@
     }
 
     /**
+     * Retrieves the {@link IncomingCallNotifier}.
+     * @return The {@link IncomingCallNotifier}.
+     */
+    IncomingCallNotifier getIncomingCallNotifier() {
+        return mIncomingCallNotifier;
+    }
+
+    /**
      * Reject an incoming call and manually add it to the Call Log.
      * @param incomingCall Incoming call that has been rejected
      */
@@ -1978,16 +2160,40 @@
 
     @VisibleForTesting
     public int getNumCallsWithState(final boolean isSelfManaged, Call excludeCall,
-                                     PhoneAccountHandle phoneAccountHandle, int... states) {
+                                    PhoneAccountHandle phoneAccountHandle, int... states) {
+        return getNumCallsWithState(isSelfManaged ? CALL_FILTER_SELF_MANAGED : CALL_FILTER_MANAGED,
+                excludeCall, phoneAccountHandle, states);
+    }
+
+    /**
+     * Determines the number of calls matching the specified criteria.
+     * @param callFilter indicates whether to include just managed calls
+     *                   ({@link #CALL_FILTER_MANAGED}), self-managed calls
+     *                   ({@link #CALL_FILTER_SELF_MANAGED}), or all calls
+     *                   ({@link #CALL_FILTER_ALL}).
+     * @param excludeCall Where {@code non-null}, this call is excluded from the count.
+     * @param phoneAccountHandle Where {@code non-null}, calls for this {@link PhoneAccountHandle}
+     *                           are excluded from the count.
+     * @param states The list of {@link CallState}s to include in the count.
+     * @return Count of calls matching criteria.
+     */
+    @VisibleForTesting
+    public int getNumCallsWithState(final int callFilter, Call excludeCall,
+                                    PhoneAccountHandle phoneAccountHandle, int... states) {
 
         Set<Integer> desiredStates = IntStream.of(states).boxed().collect(Collectors.toSet());
 
         Stream<Call> callsStream = mCalls.stream()
                 .filter(call -> desiredStates.contains(call.getState()) &&
-                        call.getParentCall() == null && !call.isExternalCall() &&
-                        call.isSelfManaged() == isSelfManaged);
+                        call.getParentCall() == null && !call.isExternalCall());
 
-        // If a call to exclude was specifeid, filter it out.
+        if (callFilter == CALL_FILTER_MANAGED) {
+            callsStream = callsStream.filter(call -> !call.isSelfManaged());
+        } else if (callFilter == CALL_FILTER_SELF_MANAGED) {
+            callsStream = callsStream.filter(call -> call.isSelfManaged());
+        }
+
+        // If a call to exclude was specified, filter it out.
         if (excludeCall != null) {
             callsStream = callsStream.filter(call -> call != excludeCall);
         }
@@ -2045,10 +2251,19 @@
      * @return {@code true} if there are other calls, {@code false} otherwise.
      */
     public boolean hasCallsForOtherPhoneAccount(PhoneAccountHandle phoneAccountHandle) {
-        return mCalls.stream().filter(call ->
+        return getNumCallsForOtherPhoneAccount(phoneAccountHandle) > 0;
+    }
+
+    /**
+     * Determines the number of calls present for PhoneAccounts other than the one specified.
+     * @param phoneAccountHandle The handle of the PhoneAccount.
+     * @return Number of calls owned by other PhoneAccounts.
+     */
+    public int getNumCallsForOtherPhoneAccount(PhoneAccountHandle phoneAccountHandle) {
+        return (int) mCalls.stream().filter(call ->
                 !phoneAccountHandle.equals(call.getTargetPhoneAccount()) &&
-                call.getParentCall() == null &&
-                !call.isExternalCall()).count() > 0;
+                        call.getParentCall() == null &&
+                        !call.isExternalCall()).count();
     }
 
     /**
@@ -2061,14 +2276,47 @@
     }
 
     /**
+     * Determines if there are any self-managed calls.
+     * @return {@code true} if there are self-managed calls, {@code false} otherwise.
+     */
+    public boolean hasSelfManagedCalls() {
+        return mCalls.stream().filter(call -> call.isSelfManaged()).count() > 0;
+    }
+
+    /**
+     * Determines if there are any ongoing managed or self-managed calls.
+     * Note: The {@link #ONGOING_CALL_STATES} are
+     * @return {@code true} if there are ongoing managed or self-managed calls, {@code false}
+     *      otherwise.
+     */
+    public boolean hasOngoingCalls() {
+        return getNumCallsWithState(
+                CALL_FILTER_ALL, null /* excludeCall */,
+                null /* phoneAccountHandle */,
+                ONGOING_CALL_STATES) > 0;
+    }
+
+    /**
      * Determines if there are any ongoing managed calls.
      * @return {@code true} if there are ongoing managed calls, {@code false} otherwise.
      */
     public boolean hasOngoingManagedCalls() {
         return getNumCallsWithState(
-                false /* isSelfManaged */, null /* excludeCall */,
+                CALL_FILTER_MANAGED, null /* excludeCall */,
                 null /* phoneAccountHandle */,
-                LIVE_CALL_STATES) > 0;
+                ONGOING_CALL_STATES) > 0;
+    }
+
+    /**
+     * Determines if the system incoming call UI should be shown.
+     * The system incoming call UI will be shown if the new incoming call is self-managed, and there
+     * are ongoing calls for another PhoneAccount.
+     * @param incomingCall The incoming call.
+     * @return {@code true} if the system incoming call UI should be shown, {@code false} otherwise.
+     */
+    public boolean shouldShowSystemIncomingCallUi(Call incomingCall) {
+        return incomingCall.isIncoming() && incomingCall.isSelfManaged() &&
+                hasCallsForOtherPhoneAccount(incomingCall.getTargetPhoneAccount());
     }
 
     private boolean makeRoomForOutgoingCall(Call call, boolean isEmergency) {
@@ -2347,8 +2595,7 @@
         } else {
             return !hasEmergencyCall() &&
                     !hasMaximumSelfManagedRingingCalls(excludeCall, phoneAccountHandle) &&
-                    !hasMaximumSelfManagedCalls(excludeCall, phoneAccountHandle) &&
-                    !hasManagedCalls();
+                    !hasMaximumSelfManagedCalls(excludeCall, phoneAccountHandle);
         }
     }
 
@@ -2377,7 +2624,8 @@
             // are associated with the current PhoneAccountHandle.
             return !hasEmergencyCall() &&
                     !hasMaximumSelfManagedCalls(excludeCall, phoneAccountHandle) &&
-                    !hasCallsForOtherPhoneAccount(phoneAccountHandle);
+                    !hasCallsForOtherPhoneAccount(phoneAccountHandle) &&
+                    !hasManagedCalls();
         }
     }
 
@@ -2508,4 +2756,48 @@
             service.createConnectionFailed(call);
         }
     }
+
+    private void broadcastUnregisterIntent(PhoneAccountHandle accountHandle) {
+        Intent intent =
+                new Intent(TelecomManager.ACTION_PHONE_ACCOUNT_UNREGISTERED);
+        intent.putExtra(
+                TelecomManager.EXTRA_PHONE_ACCOUNT_HANDLE, accountHandle);
+        Log.i(this, "Sending phone-account %s unregistered intent as user", accountHandle);
+        mContext.sendBroadcastAsUser(intent, UserHandle.ALL,
+                PERMISSION_PROCESS_PHONE_ACCOUNT_REGISTRATION);
+
+        String dialerPackage = mDefaultDialerCache.getDefaultDialerApplication(
+                getCurrentUserHandle().getIdentifier());
+        if (!TextUtils.isEmpty(dialerPackage)) {
+            Intent directedIntent = new Intent(TelecomManager.ACTION_PHONE_ACCOUNT_UNREGISTERED)
+                    .setPackage(dialerPackage);
+            directedIntent.putExtra(
+                    TelecomManager.EXTRA_PHONE_ACCOUNT_HANDLE, accountHandle);
+            Log.i(this, "Sending phone-account unregistered intent to default dialer");
+            mContext.sendBroadcastAsUser(directedIntent, UserHandle.ALL, null);
+        }
+        return ;
+    }
+
+    private void broadcastRegisterIntent(PhoneAccountHandle accountHandle) {
+        Intent intent = new Intent(
+                TelecomManager.ACTION_PHONE_ACCOUNT_REGISTERED);
+        intent.putExtra(TelecomManager.EXTRA_PHONE_ACCOUNT_HANDLE,
+                accountHandle);
+        Log.i(this, "Sending phone-account %s registered intent as user", accountHandle);
+        mContext.sendBroadcastAsUser(intent, UserHandle.ALL,
+                PERMISSION_PROCESS_PHONE_ACCOUNT_REGISTRATION);
+
+        String dialerPackage = mDefaultDialerCache.getDefaultDialerApplication(
+                getCurrentUserHandle().getIdentifier());
+        if (!TextUtils.isEmpty(dialerPackage)) {
+            Intent directedIntent = new Intent(TelecomManager.ACTION_PHONE_ACCOUNT_REGISTERED)
+                    .setPackage(dialerPackage);
+            directedIntent.putExtra(
+                    TelecomManager.EXTRA_PHONE_ACCOUNT_HANDLE, accountHandle);
+            Log.i(this, "Sending phone-account registered intent to default dialer");
+            mContext.sendBroadcastAsUser(directedIntent, UserHandle.ALL, null);
+        }
+        return ;
+    }
 }
diff --git a/src/com/android/server/telecom/ConnectionServiceWrapper.java b/src/com/android/server/telecom/ConnectionServiceWrapper.java
index 7bb747e..f269cdf 100644
--- a/src/com/android/server/telecom/ConnectionServiceWrapper.java
+++ b/src/com/android/server/telecom/ConnectionServiceWrapper.java
@@ -912,20 +912,17 @@
                 Log.addEvent(call, LogUtils.Events.START_CONNECTION,
                         Log.piiHandle(call.getHandle()));
 
-                // For self-managed incoming calls, if there is another ongoing call Telecom is
-                // responsible for showing a UI to ask the user if they'd like to answer this
-                // new incoming call.
-                boolean shouldShowIncomingCallUI = call.isSelfManaged() &&
-                        !mCallsManager.hasCallsForOtherPhoneAccount(
-                                call.getTargetPhoneAccount());
-
                 ConnectionRequest connectionRequest = new ConnectionRequest.Builder()
                         .setAccountHandle(call.getTargetPhoneAccount())
                         .setAddress(call.getHandle())
                         .setExtras(extras)
                         .setVideoState(call.getVideoState())
                         .setTelecomCallId(callId)
-                        .setShouldShowIncomingCallUi(shouldShowIncomingCallUI)
+                        // For self-managed incoming calls, if there is another ongoing call Telecom
+                        // is responsible for showing a UI to ask the user if they'd like to answer
+                        // this new incoming call.
+                        .setShouldShowIncomingCallUi(
+                                !mCallsManager.shouldShowSystemIncomingCallUi(call))
                         .setRttPipeFromInCall(call.getInCallToCsRttPipeForCs())
                         .setRttPipeToInCall(call.getCsToInCallRttPipeForCs())
                         .build();
@@ -1359,12 +1356,12 @@
 
     private void logIncoming(String msg, Object... params) {
         Log.d(this, "ConnectionService -> Telecom[" + mComponentName.flattenToShortString() + "]: "
-                + msg, Log.pii(params));
+                + msg, params);
     }
 
     private void logOutgoing(String msg, Object... params) {
         Log.d(this, "Telecom -> ConnectionService[" + mComponentName.flattenToShortString() + "]: "
-                + msg, Log.pii(params));
+                + msg, params);
     }
 
     private void queryRemoteConnectionServices(final UserHandle userHandle,
diff --git a/src/com/android/server/telecom/InCallController.java b/src/com/android/server/telecom/InCallController.java
index e575097..169ebd7 100644
--- a/src/com/android/server/telecom/InCallController.java
+++ b/src/com/android/server/telecom/InCallController.java
@@ -61,17 +61,33 @@
  * can send updates to the in-call app. This class is created and owned by CallsManager and retains
  * a binding to the {@link IInCallService} (implemented by the in-call app).
  */
-public final class InCallController extends CallsManagerListenerBase {
+public class InCallController extends CallsManagerListenerBase {
 
     public class InCallServiceConnection {
+        /**
+         * Indicates that a call to {@link #connect(Call)} has succeeded and resulted in a
+         * connection to an InCallService.
+         */
+        public static final int CONNECTION_SUCCEEDED = 1;
+        /**
+         * Indicates that a call to {@link #connect(Call)} has failed because of a binding issue.
+         */
+        public static final int CONNECTION_FAILED = 2;
+        /**
+         * Indicates that a call to {@link #connect(Call)} has been skipped because the
+         * IncallService does not support the type of call..
+         */
+        public static final int CONNECTION_NOT_SUPPORTED = 3;
+
         public class Listener {
             public void onDisconnect(InCallServiceConnection conn) {}
         }
 
         protected Listener mListener;
 
-        public boolean connect(Call call) { return false; }
+        public int connect(Call call) { return CONNECTION_FAILED; }
         public void disconnect() {}
+        public boolean isConnected() { return false; }
         public void setHasEmergency(boolean hasEmergency) {}
         public void setListener(Listener l) {
             mListener = l;
@@ -190,10 +206,18 @@
         }
 
         @Override
-        public boolean connect(Call call) {
+        public int connect(Call call) {
             if (mIsConnected) {
                 Log.addEvent(call, LogUtils.Events.INFO, "Already connected, ignoring request.");
-                return true;
+                return CONNECTION_SUCCEEDED;
+            }
+
+            if (call != null && call.isSelfManaged() &&
+                    !mInCallServiceInfo.isSelfManagedCallsSupported()) {
+                Log.i(this, "Skipping binding to %s - doesn't support self-mgd calls",
+                        mInCallServiceInfo);
+                mIsConnected = false;
+                return CONNECTION_NOT_SUPPORTED;
             }
 
             Intent intent = new Intent(InCallService.SERVICE_INTERFACE);
@@ -220,7 +244,7 @@
                         mInCallServiceInfo.getType());
             }
 
-            return mIsConnected;
+            return mIsConnected ? CONNECTION_SUCCEEDED : CONNECTION_FAILED;
         }
 
         @Override
@@ -239,6 +263,11 @@
         }
 
         @Override
+        public boolean isConnected() {
+            return mIsConnected;
+        }
+
+        @Override
         public void dump(IndentingPrintWriter pw) {
             pw.append("BindingConnection [");
             pw.append(mIsConnected ? "" : "not ").append("connected, ");
@@ -304,11 +333,13 @@
         }
 
         @Override
-        public boolean connect(Call call) {
+        public int connect(Call call) {
             mIsConnected = true;
             if (mIsProxying) {
-                if (mSubConnection.connect(call)) {
-                    return true;
+                int result = mSubConnection.connect(call);
+                mIsConnected = result == CONNECTION_SUCCEEDED;
+                if (result != CONNECTION_FAILED) {
+                    return result;
                 }
                 // Could not connect to child, stop proxying.
                 mIsProxying = false;
@@ -358,7 +389,9 @@
 
         @Override
         public void dump(IndentingPrintWriter pw) {
-            pw.println("Emergency ICS Connection");
+            pw.print("Emergency ICS Connection [");
+            pw.append(mIsProxying ? "" : "not ").append("proxying, ");
+            pw.append(mIsConnected ? "" : "not ").append("connected]\n");
             pw.increaseIndent();
             pw.print("Emergency: ");
             super.dump(pw);
@@ -410,7 +443,8 @@
                 if (newConnection != mCurrentConnection) {
                     if (mIsConnected) {
                         mCurrentConnection.disconnect();
-                        newConnection.connect(null);
+                        int result = newConnection.connect(null);
+                        mIsConnected = result == CONNECTION_SUCCEEDED;
                     }
                     mCurrentConnection = newConnection;
                 }
@@ -418,18 +452,19 @@
         }
 
         @Override
-        public boolean connect(Call call) {
+        public int connect(Call call) {
             if (mIsConnected) {
                 Log.i(this, "already connected");
-                return true;
+                return CONNECTION_SUCCEEDED;
             } else {
-                if (mCurrentConnection.connect(call)) {
-                    mIsConnected = true;
-                    return true;
+                int result = mCurrentConnection.connect(call);
+                if (result != CONNECTION_FAILED) {
+                    mIsConnected = result == CONNECTION_SUCCEEDED;
+                    return result;
                 }
             }
 
-            return false;
+            return CONNECTION_FAILED;
         }
 
         @Override
@@ -443,6 +478,11 @@
         }
 
         @Override
+        public boolean isConnected() {
+            return mIsConnected;
+        }
+
+        @Override
         public void setHasEmergency(boolean hasEmergency) {
             if (mDialerConnection != null) {
                 mDialerConnection.setHasEmergency(hasEmergency);
@@ -459,7 +499,8 @@
 
         @Override
         public void dump(IndentingPrintWriter pw) {
-            pw.println("Car Swapping ICS");
+            pw.print("Car Swapping ICS [");
+            pw.append(mIsConnected ? "" : "not ").append("connected]\n");
             pw.increaseIndent();
             if (mDialerConnection != null) {
                 pw.print("Dialer: ");
@@ -489,21 +530,32 @@
         }
 
         @Override
-        public boolean connect(Call call) {
+        public int connect(Call call) {
             for (InCallServiceBindingConnection subConnection : mSubConnections) {
                 subConnection.connect(call);
             }
-            return true;
+            return CONNECTION_SUCCEEDED;
         }
 
         @Override
         public void disconnect() {
             for (InCallServiceBindingConnection subConnection : mSubConnections) {
-                subConnection.disconnect();
+                if (subConnection.isConnected()) {
+                    subConnection.disconnect();
+                }
             }
         }
 
         @Override
+        public boolean isConnected() {
+            boolean connected = false;
+            for (InCallServiceBindingConnection subConnection : mSubConnections) {
+                connected = connected || subConnection.isConnected();
+            }
+            return connected;
+        }
+
+        @Override
         public void dump(IndentingPrintWriter pw) {
             pw.println("Non-UI Connections:");
             pw.increaseIndent();
@@ -680,15 +732,21 @@
 
     @Override
     public void onCallAdded(Call call) {
-        if (!isBoundToServices()) {
+        if (!isBoundAndConnectedToServices()) {
+            Log.i(this, "onCallAdded: %s; not bound or connected.", call);
+            // We are not bound, or we're not connected.
             bindToServices(call);
         } else {
+            // We are bound, and we are connected.
             adjustServiceBindingsForEmergency();
 
             Log.i(this, "onCallAdded: %s", call);
             // Track the call if we don't already know about it.
             addCall(call);
 
+            Log.i(this, "mInCallServiceConnection isConnected=%b",
+                    mInCallServiceConnection.isConnected());
+
             List<ComponentName> componentsUpdated = new ArrayList<>();
             for (Map.Entry<InCallServiceInfo, IInCallService> entry : mInCallServices.entrySet()) {
                 InCallServiceInfo info = entry.getKey();
@@ -944,53 +1002,66 @@
      * Unbinds an existing bound connection to the in-call app.
      */
     private void unbindFromServices() {
-        if (isBoundToServices()) {
-            if (mInCallServiceConnection != null) {
-                mInCallServiceConnection.disconnect();
-                mInCallServiceConnection = null;
-            }
-            if (mNonUIInCallServiceConnections != null) {
-                mNonUIInCallServiceConnections.disconnect();
-                mNonUIInCallServiceConnections = null;
-            }
+        if (mInCallServiceConnection != null) {
+            mInCallServiceConnection.disconnect();
+            mInCallServiceConnection = null;
+        }
+        if (mNonUIInCallServiceConnections != null) {
+            mNonUIInCallServiceConnections.disconnect();
+            mNonUIInCallServiceConnections = null;
         }
     }
 
     /**
      * Binds to all the UI-providing InCallService as well as system-implemented non-UI
-     * InCallServices. Method-invoker must check {@link #isBoundToServices()} before invoking.
+     * InCallServices. Method-invoker must check {@link #isBoundAndConnectedToServices()} before invoking.
      *
      * @param call The newly added call that triggered the binding to the in-call services.
      */
     @VisibleForTesting
     public void bindToServices(Call call) {
-        InCallServiceConnection dialerInCall = null;
-        InCallServiceInfo defaultDialerComponentInfo = getDefaultDialerComponent();
-        Log.i(this, "defaultDialer: " + defaultDialerComponentInfo);
-        if (defaultDialerComponentInfo != null &&
-                !defaultDialerComponentInfo.getComponentName().equals(mSystemInCallComponentName)) {
-            dialerInCall = new InCallServiceBindingConnection(defaultDialerComponentInfo);
-        }
-        Log.i(this, "defaultDialer: " + dialerInCall);
+        if (mInCallServiceConnection == null) {
+            InCallServiceConnection dialerInCall = null;
+            InCallServiceInfo defaultDialerComponentInfo = getDefaultDialerComponent();
+            Log.i(this, "defaultDialer: " + defaultDialerComponentInfo);
+            if (defaultDialerComponentInfo != null &&
+                    !defaultDialerComponentInfo.getComponentName().equals(
+                            mSystemInCallComponentName)) {
+                dialerInCall = new InCallServiceBindingConnection(defaultDialerComponentInfo);
+            }
+            Log.i(this, "defaultDialer: " + dialerInCall);
 
-        InCallServiceInfo systemInCallInfo =  getInCallServiceComponent(mSystemInCallComponentName,
-                IN_CALL_SERVICE_TYPE_SYSTEM_UI);
-        EmergencyInCallServiceConnection systemInCall =
-                new EmergencyInCallServiceConnection(systemInCallInfo, dialerInCall);
-        systemInCall.setHasEmergency(mCallsManager.hasEmergencyCall());
+            InCallServiceInfo systemInCallInfo = getInCallServiceComponent(
+                    mSystemInCallComponentName, IN_CALL_SERVICE_TYPE_SYSTEM_UI);
+            EmergencyInCallServiceConnection systemInCall =
+                    new EmergencyInCallServiceConnection(systemInCallInfo, dialerInCall);
+            systemInCall.setHasEmergency(mCallsManager.hasEmergencyCall());
 
-        InCallServiceConnection carModeInCall = null;
-        InCallServiceInfo carModeComponentInfo = getCarModeComponent();
-        if (carModeComponentInfo != null &&
-                !carModeComponentInfo.getComponentName().equals(mSystemInCallComponentName)) {
-            carModeInCall = new InCallServiceBindingConnection(carModeComponentInfo);
+            InCallServiceConnection carModeInCall = null;
+            InCallServiceInfo carModeComponentInfo = getCarModeComponent();
+            if (carModeComponentInfo != null &&
+                    !carModeComponentInfo.getComponentName().equals(mSystemInCallComponentName)) {
+                carModeInCall = new InCallServiceBindingConnection(carModeComponentInfo);
+            }
+
+            mInCallServiceConnection =
+                    new CarSwappingInCallServiceConnection(systemInCall, carModeInCall);
         }
 
-        mInCallServiceConnection =
-            new CarSwappingInCallServiceConnection(systemInCall, carModeInCall);
         mInCallServiceConnection.setCarMode(shouldUseCarModeUI());
-        mInCallServiceConnection.connect(call);
 
+        // Actually try binding to the UI InCallService.  If the response
+        if (mInCallServiceConnection.connect(call) ==
+                InCallServiceConnection.CONNECTION_SUCCEEDED) {
+            // Only connect to the non-ui InCallServices if we actually connected to the main UI
+            // one.
+            connectToNonUiInCallServices(call);
+        } else {
+            Log.i(this, "bindToServices: current UI doesn't support call; not binding.");
+        }
+    }
+
+    private void connectToNonUiInCallServices(Call call) {
         List<InCallServiceInfo> nonUIInCallComponents =
                 getInCallServiceComponents(IN_CALL_SERVICE_TYPE_NON_UI);
         List<InCallServiceBindingConnection> nonUIInCalls = new LinkedList<>();
@@ -1075,9 +1146,14 @@
                 boolean isSelfManageCallsSupported = serviceInfo.metaData != null &&
                         serviceInfo.metaData.getBoolean(
                                 TelecomManager.METADATA_INCLUDE_SELF_MANAGED_CALLS, false);
-                if (requestedType == 0 || requestedType == getInCallServiceType(entry.serviceInfo,
-                        packageManager)) {
 
+                int currentType = getInCallServiceType(entry.serviceInfo, packageManager);
+                if (requestedType == 0 || requestedType == currentType) {
+                    if (requestedType == IN_CALL_SERVICE_TYPE_NON_UI) {
+                        // We enforce the rule that self-managed calls are not supported by non-ui
+                        // InCallServices.
+                        isSelfManageCallsSupported = false;
+                    }
                     retval.add(new InCallServiceInfo(
                             new ComponentName(serviceInfo.packageName, serviceInfo.name),
                             isExternalCallsSupported, isSelfManageCallsSupported, requestedType));
@@ -1297,8 +1373,11 @@
         }
     }
 
-    private boolean isBoundToServices() {
-        return mInCallServiceConnection != null;
+    /**
+     * @return true if we are bound to the UI InCallService and it is connected.
+     */
+    private boolean isBoundAndConnectedToServices() {
+        return mInCallServiceConnection != null && mInCallServiceConnection.isConnected();
     }
 
     /**
diff --git a/src/com/android/server/telecom/LogUtils.java b/src/com/android/server/telecom/LogUtils.java
index 6fbb058..121abcf 100644
--- a/src/com/android/server/telecom/LogUtils.java
+++ b/src/com/android/server/telecom/LogUtils.java
@@ -73,6 +73,9 @@
         public static final String STOP_DTMF = "STOP_DTMF";
         public static final String START_RINGER = "START_RINGER";
         public static final String STOP_RINGER = "STOP_RINGER";
+        public static final String START_VIBRATOR = "START_VIBRATOR";
+        public static final String STOP_VIBRATOR = "STOP_VIBRATOR";
+        public static final String SKIP_VIBRATION = "SKIP_VIBRATION";
         public static final String SKIP_RINGING = "SKIP_RINGING";
         public static final String START_CALL_WAITING_TONE = "START_CALL_WAITING_TONE";
         public static final String STOP_CALL_WAITING_TONE = "STOP_CALL_WAITING_TONE";
diff --git a/src/com/android/server/telecom/ParcelableCallUtils.java b/src/com/android/server/telecom/ParcelableCallUtils.java
index cbe3676..07be216 100644
--- a/src/com/android/server/telecom/ParcelableCallUtils.java
+++ b/src/com/android/server/telecom/ParcelableCallUtils.java
@@ -183,7 +183,8 @@
                 call.getVideoState(),
                 conferenceableCallIds,
                 call.getIntentExtras(),
-                call.getExtras());
+                call.getExtras(),
+                call.getCreationTimeMillis());
     }
 
     private static int getParcelableState(Call call, boolean supportsExternalCalls) {
diff --git a/src/com/android/server/telecom/PhoneAccountRegistrar.java b/src/com/android/server/telecom/PhoneAccountRegistrar.java
index 4fe6ed6..8cdec30 100644
--- a/src/com/android/server/telecom/PhoneAccountRegistrar.java
+++ b/src/com/android/server/telecom/PhoneAccountRegistrar.java
@@ -120,6 +120,18 @@
         public void onAccountsChanged(PhoneAccountRegistrar registrar) {}
         public void onDefaultOutgoingChanged(PhoneAccountRegistrar registrar) {}
         public void onSimCallManagerChanged(PhoneAccountRegistrar registrar) {}
+        public void onPhoneAccountRegistered(PhoneAccountRegistrar registrar,
+                                             PhoneAccountHandle handle) {}
+        public void onPhoneAccountUnRegistered(PhoneAccountRegistrar registrar,
+                                             PhoneAccountHandle handle) {}
+    }
+
+    /**
+     * Abstracts away dependency on the {@link PackageManager} required to fetch the label for an
+     * app.
+     */
+    public interface AppLabelProxy {
+        CharSequence getAppLabel(String packageName);
     }
 
     private static final String FILE_NAME = "phone-account-registrar-state.xml";
@@ -135,6 +147,7 @@
     private final UserManager mUserManager;
     private final SubscriptionManager mSubscriptionManager;
     private final DefaultDialerCache mDefaultDialerCache;
+    private final AppLabelProxy mAppLabelProxy;
     private State mState;
     private UserHandle mCurrentUserHandle;
     private interface PhoneAccountRegistrarWriteLock {}
@@ -142,21 +155,15 @@
             new PhoneAccountRegistrarWriteLock() {};
 
     @VisibleForTesting
-    public PhoneAccountRegistrar(Context context, DefaultDialerCache defaultDialerCache) {
-        this(context, FILE_NAME, defaultDialerCache);
+    public PhoneAccountRegistrar(Context context, DefaultDialerCache defaultDialerCache,
+                                 AppLabelProxy appLabelProxy) {
+        this(context, FILE_NAME, defaultDialerCache, appLabelProxy);
     }
 
     @VisibleForTesting
     public PhoneAccountRegistrar(Context context, String fileName,
-            DefaultDialerCache defaultDialerCache) {
-        // TODO: This file path is subject to change -- it is storing the phone account registry
-        // state file in the path /data/system/users/0/, which is likely not correct in a
-        // multi-user setting.
-        /** UNCOMMENT_FOR_MOVE_TO_SYSTEM_SERVICE
-        String filePath = Environment.getUserSystemDirectory(UserHandle.myUserId()).
-                getAbsolutePath();
-        mAtomicFile = new AtomicFile(new File(filePath, fileName));
-         UNCOMMENT_FOR_MOVE_TO_SYSTEM_SERVICE */
+            DefaultDialerCache defaultDialerCache, AppLabelProxy appLabelProxy) {
+
         mAtomicFile = new AtomicFile(new File(context.getFilesDir(), fileName));
 
         mState = new State();
@@ -164,6 +171,7 @@
         mUserManager = UserManager.get(context);
         mDefaultDialerCache = defaultDialerCache;
         mSubscriptionManager = SubscriptionManager.from(mContext);
+        mAppLabelProxy = appLabelProxy;
         mCurrentUserHandle = Process.myUserHandle();
         read();
     }
@@ -572,6 +580,24 @@
                 uriScheme, null, includeDisabledAccounts, userHandle);
     }
 
+    /**
+     * Retrieves a list of all phone accounts which have
+     * {@link PhoneAccount#CAPABILITY_SELF_MANAGED}.
+     * <p>
+     * Returns only the {@link PhoneAccount}s which are enabled as self-managed accounts are
+     * automatically enabled by default (see {@link #registerPhoneAccount(PhoneAccount)}).
+     *
+     * @param userHandle User handle of phone account owner.
+     * @return The phone account handles.
+     */
+    public List<PhoneAccountHandle> getSelfManagedPhoneAccounts(UserHandle userHandle) {
+        return getPhoneAccountHandles(
+                PhoneAccount.CAPABILITY_SELF_MANAGED,
+                PhoneAccount.CAPABILITY_EMERGENCY_CALLS_ONLY /* excludedCapabilities */,
+                null /* uriScheme */, null /* packageName */, false /* includeDisabledAccounts */,
+                userHandle);
+    }
+
     public List<PhoneAccountHandle> getCallCapablePhoneAccountsOfCurrentUser(
             String uriScheme, boolean includeDisabledAccounts) {
         return getCallCapablePhoneAccounts(uriScheme, includeDisabledAccounts, mCurrentUserHandle);
@@ -630,14 +656,38 @@
         // !!! IMPORTANT !!! It is important that we do not read the enabled state that the
         // source app provides or else an third party app could enable itself.
         boolean isEnabled = false;
+        boolean isNewAccount;
 
         PhoneAccount oldAccount = getPhoneAccountUnchecked(account.getAccountHandle());
         if (oldAccount != null) {
             mState.accounts.remove(oldAccount);
             isEnabled = oldAccount.isEnabled();
-            Log.i(this, getAccountDiffString(account, oldAccount));
+            Log.i(this, "Modify account: %s", getAccountDiffString(account, oldAccount));
+            isNewAccount = false;
         } else {
             Log.i(this, "New phone account registered: " + account);
+            isNewAccount = true;
+        }
+
+        // When registering a self-managed PhoneAccount we enforce the rule that the label that the
+        // app uses is also its phone account label.  Also ensure it does not attempt to declare
+        // itself as a sim acct, call manager or call provider.
+        if (account.hasCapabilities(PhoneAccount.CAPABILITY_SELF_MANAGED)) {
+            // Turn off bits we don't want to be able to set (TelecomServiceImpl protects against
+            // this but we'll also prevent it from happening here, just to be safe).
+            int newCapabilities = account.getCapabilities() &
+                    ~(PhoneAccount.CAPABILITY_CALL_PROVIDER |
+                        PhoneAccount.CAPABILITY_CONNECTION_MANAGER |
+                        PhoneAccount.CAPABILITY_SIM_SUBSCRIPTION);
+
+            // Ensure name is correct.
+            CharSequence newLabel = mAppLabelProxy.getAppLabel(
+                    account.getAccountHandle().getComponentName().getPackageName());
+
+            account = account.toBuilder()
+                    .setLabel(newLabel)
+                    .setCapabilities(newCapabilities)
+                    .build();
         }
 
         mState.accounts.add(account);
@@ -652,6 +702,9 @@
 
         write();
         fireAccountsChanged();
+        if (isNewAccount) {
+            fireAccountRegistered(account.getAccountHandle());
+        }
     }
 
     public void unregisterPhoneAccount(PhoneAccountHandle accountHandle) {
@@ -660,6 +713,7 @@
             if (mState.accounts.remove(account)) {
                 write();
                 fireAccountsChanged();
+                fireAccountUnRegistered(accountHandle);
             }
         }
     }
@@ -705,6 +759,18 @@
         }
     }
 
+    private void fireAccountRegistered(PhoneAccountHandle handle) {
+        for (Listener l : mListeners) {
+            l.onPhoneAccountRegistered(this, handle);
+        }
+    }
+
+    private void fireAccountUnRegistered(PhoneAccountHandle handle) {
+        for (Listener l : mListeners) {
+            l.onPhoneAccountUnRegistered(this, handle);
+        }
+    }
+
     private void fireAccountsChanged() {
         for (Listener l : mListeners) {
             l.onAccountsChanged(this);
@@ -728,7 +794,6 @@
                 Log.piiHandle(account2.getAddress()));
         appendDiff(sb, "cap", account1.getCapabilities(), account2.getCapabilities());
         appendDiff(sb, "hl", account1.getHighlightColor(), account2.getHighlightColor());
-        appendDiff(sb, "icon", account1.getIcon(), account2.getIcon());
         appendDiff(sb, "lbl", account1.getLabel(), account2.getLabel());
         appendDiff(sb, "desc", account1.getShortDescription(), account2.getShortDescription());
         appendDiff(sb, "subAddr", Log.piiHandle(account1.getSubscriptionAddress()),
diff --git a/src/com/android/server/telecom/RespondViaSmsManager.java b/src/com/android/server/telecom/RespondViaSmsManager.java
index 6b2a39e..a42513d 100644
--- a/src/com/android/server/telecom/RespondViaSmsManager.java
+++ b/src/com/android/server/telecom/RespondViaSmsManager.java
@@ -38,6 +38,7 @@
 import android.telephony.TelephonyManager;
 import android.text.Spannable;
 import android.text.SpannableString;
+import android.text.TextUtils;
 import android.widget.Toast;
 
 import java.util.ArrayList;
@@ -137,7 +138,7 @@
             int subId = mCallsManager.getPhoneAccountRegistrar().getSubscriptionIdForPhoneAccount(
                     call.getTargetPhoneAccount());
             rejectCallWithMessage(call.getContext(), call.getHandle().getSchemeSpecificPart(),
-                    textMessage, subId);
+                    textMessage, subId, call.getName());
         }
     }
 
@@ -176,8 +177,8 @@
      * Reject the call with the specified message. If message is null this call is ignored.
      */
     private void rejectCallWithMessage(Context context, String phoneNumber, String textMessage,
-            int subId) {
-        if (textMessage != null) {
+            int subId, String contactName) {
+        if (!TextUtils.isEmpty(textMessage)) {
             final ComponentName component =
                     SmsApplication.getDefaultRespondViaMessageApplication(context,
                             true /*updateIfNeeded*/);
@@ -191,7 +192,7 @@
                 }
 
                 SomeArgs args = SomeArgs.obtain();
-                args.arg1 = phoneNumber;
+                args.arg1 = !TextUtils.isEmpty(contactName) ? contactName : phoneNumber;
                 args.arg2 = context;
                 mHandler.obtainMessage(MSG_SHOW_SENT_TOAST, args).sendToTarget();
                 intent.setComponent(component);
diff --git a/src/com/android/server/telecom/Ringer.java b/src/com/android/server/telecom/Ringer.java
index 635d500..d955227 100644
--- a/src/com/android/server/telecom/Ringer.java
+++ b/src/com/android/server/telecom/Ringer.java
@@ -63,9 +63,11 @@
     private RingtoneFactory mRingtoneFactory;
 
     /**
-     * Call objects that are ringing or call-waiting. These are used only for logging purposes.
+     * Call objects that are ringing, vibrating or call-waiting. These are used only for logging
+     * purposes.
      */
     private Call mRingingCall;
+    private Call mVibratingCall;
     private Call mCallWaitingCall;
 
     /**
@@ -95,36 +97,44 @@
         mInCallController = inCallController;
     }
 
-    public boolean startRinging(Call foregroundCall) {
-        AudioManager audioManager =
-                (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
-        boolean isRingerAudible = audioManager.getStreamVolume(AudioManager.STREAM_RING) > 0;
-
-        if (mSystemSettingsUtil.isTheaterModeOn(mContext)) {
-            return false;
-        }
-
+    public boolean startRinging(Call foregroundCall, boolean isHfpDeviceAttached) {
         if (foregroundCall == null) {
             Log.wtf(this, "startRinging called with null foreground call.");
             return false;
         }
 
-        if (mInCallController.doesConnectedDialerSupportRinging()) {
-            Log.addEvent(foregroundCall, LogUtils.Events.SKIP_RINGING);
-            return isRingerAudible;
+        AudioManager audioManager =
+                (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
+        boolean isVolumeOverZero = audioManager.getStreamVolume(AudioManager.STREAM_RING) > 0;
+        boolean shouldRingForContact = shouldRingForContact(foregroundCall.getContactUri());
+        boolean isRingtonePresent = !(mRingtoneFactory.getRingtone(foregroundCall) == null);
+        boolean isSelfManaged = foregroundCall.isSelfManaged();
+
+        boolean isRingerAudible = isVolumeOverZero && shouldRingForContact && isRingtonePresent;
+        // Acquire audio focus under any of the following conditions:
+        // 1. Should ring for contact and there's an HFP device attached
+        // 2. Volume is over zero, we should ring for the contact, and there's a audible ringtone
+        //    present.
+        // 3. The call is self-managed.
+        boolean shouldAcquireAudioFocus =
+                isRingerAudible || (isHfpDeviceAttached && shouldRingForContact) || isSelfManaged;
+
+        // Don't do call waiting operations or vibration unless these are false.
+        boolean isTheaterModeOn = mSystemSettingsUtil.isTheaterModeOn(mContext);
+        boolean letDialerHandleRinging = mInCallController.doesConnectedDialerSupportRinging();
+        boolean endEarly = isTheaterModeOn || letDialerHandleRinging || isSelfManaged;
+
+        if (endEarly) {
+            if (letDialerHandleRinging) {
+                Log.addEvent(foregroundCall, LogUtils.Events.SKIP_RINGING);
+            }
+            Log.i(this, "Ending early -- isTheaterModeOn=%s, letDialerHandleRinging=%s, " +
+                    "isSelfManaged=%s", isTheaterModeOn, letDialerHandleRinging, isSelfManaged);
+            return shouldAcquireAudioFocus;
         }
 
         stopCallWaiting();
 
-        if (!shouldRingForContact(foregroundCall.getContactUri())) {
-            return false;
-        }
-
-        // Don't ring/acquire focus if there is no ringtone
-        if (mRingtoneFactory.getRingtone(foregroundCall) == null) {
-            isRingerAudible = false;
-        }
-
         if (isRingerAudible) {
             mRingingCall = foregroundCall;
             Log.addEvent(foregroundCall, LogUtils.Events.START_RINGER);
@@ -134,16 +144,21 @@
             // request the custom ringtone from the call and expect it to be current.
             mRingtonePlayer.play(mRingtoneFactory, foregroundCall);
         } else {
-            Log.i(this, "startRingingOrCallWaiting, skipping because volume is 0");
+            Log.i(this, "startRinging: skipping because ringer would not be audible. " +
+                    "isVolumeOverZero=%s, shouldRingForContact=%s, isRingtonePresent=%s",
+                    isVolumeOverZero, shouldRingForContact, isRingtonePresent);
         }
 
-        if (shouldVibrate(mContext) && !mIsVibrating) {
+        if (shouldVibrate(mContext, foregroundCall) && !mIsVibrating && shouldRingForContact) {
+            mVibratingCall = foregroundCall;
             mVibrator.vibrate(VIBRATION_PATTERN, VIBRATION_PATTERN_REPEAT,
                     VIBRATION_ATTRIBUTES);
             mIsVibrating = true;
+        } else if (mIsVibrating) {
+            Log.addEvent(foregroundCall, LogUtils.Events.SKIP_VIBRATION, "already vibrating");
         }
 
-        return isRingerAudible;
+        return shouldAcquireAudioFocus;
     }
 
     public void startCallWaiting(Call call) {
@@ -156,6 +171,11 @@
             return;
         }
 
+        if (call.isSelfManaged()) {
+            Log.addEvent(call, LogUtils.Events.SKIP_RINGING, "Self-managed");
+            return;
+        }
+
         Log.v(this, "Playing call-waiting tone.");
 
         stopRinging();
@@ -178,8 +198,10 @@
         mRingtonePlayer.stop();
 
         if (mIsVibrating) {
+            Log.addEvent(mVibratingCall, LogUtils.Events.STOP_VIBRATOR);
             mVibrator.cancel();
             mIsVibrating = false;
+            mVibratingCall = null;
         }
     }
 
@@ -206,14 +228,31 @@
         return manager.matchesCallFilter(extras);
     }
 
-    private boolean shouldVibrate(Context context) {
+    private boolean shouldVibrate(Context context, Call call) {
         AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
         int ringerMode = audioManager.getRingerModeInternal();
+        boolean shouldVibrate;
         if (getVibrateWhenRinging(context)) {
-            return ringerMode != AudioManager.RINGER_MODE_SILENT;
+            shouldVibrate = ringerMode != AudioManager.RINGER_MODE_SILENT;
         } else {
-            return ringerMode == AudioManager.RINGER_MODE_VIBRATE;
+            shouldVibrate = ringerMode == AudioManager.RINGER_MODE_VIBRATE;
         }
+
+        // Technically this should be in the calling method, but it seemed a little odd to pass
+        // around a whole bunch of state just for logging purposes.
+        if (shouldVibrate) {
+            Log.addEvent(call, LogUtils.Events.START_VIBRATOR,
+                    "hasVibrator=%b, userRequestsVibrate=%b, ringerMode=%d, isVibrating=%b",
+                    mVibrator.hasVibrator(), mSystemSettingsUtil.canVibrateWhenRinging(context),
+                    ringerMode, mIsVibrating);
+        } else {
+            Log.addEvent(call, LogUtils.Events.SKIP_VIBRATION,
+                    "hasVibrator=%b, userRequestsVibrate=%b, ringerMode=%d, isVibrating=%b",
+                    mVibrator.hasVibrator(), mSystemSettingsUtil.canVibrateWhenRinging(context),
+                    ringerMode, mIsVibrating);
+        }
+
+        return shouldVibrate;
     }
 
     private boolean getVibrateWhenRinging(Context context) {
diff --git a/src/com/android/server/telecom/TelecomBroadcastIntentProcessor.java b/src/com/android/server/telecom/TelecomBroadcastIntentProcessor.java
index 60bfe16..5df4451 100644
--- a/src/com/android/server/telecom/TelecomBroadcastIntentProcessor.java
+++ b/src/com/android/server/telecom/TelecomBroadcastIntentProcessor.java
@@ -34,6 +34,20 @@
     public static final String ACTION_CLEAR_MISSED_CALLS =
             "com.android.server.telecom.ACTION_CLEAR_MISSED_CALLS";
 
+    /**
+     * The action used to answer the current incoming call displayed by
+     * {@link com.android.server.telecom.ui.IncomingCallNotifier}.
+     */
+    public static final String ACTION_ANSWER_FROM_NOTIFICATION =
+            "com.android.server.telecom.ACTION_ANSWER_FROM_NOTIFICATION";
+
+    /**
+     * The action used to reject the current incoming call displayed by
+     * {@link com.android.server.telecom.ui.IncomingCallNotifier}.
+     */
+    public static final String ACTION_REJECT_FROM_NOTIFICATION =
+            "com.android.server.telecom.ACTION_REJECT_FROM_NOTIFICATION";
+
     public static final String EXTRA_USERHANDLE = "userhandle";
 
     private final Context mContext;
@@ -47,39 +61,65 @@
     public void processIntent(Intent intent) {
         String action = intent.getAction();
 
-        Log.v(this, "Action received: %s.", action);
-        UserHandle userHandle = intent.getParcelableExtra(EXTRA_USERHANDLE);
-        if (userHandle == null) {
-            Log.d(this, "user handle can't be null, not processing the broadcast");
-            return;
-        }
+        if (ACTION_SEND_SMS_FROM_NOTIFICATION.equals(action) ||
+                ACTION_CALL_BACK_FROM_NOTIFICATION.equals(action) ||
+                ACTION_CLEAR_MISSED_CALLS.equals(action)) {
+            Log.v(this, "Action received: %s.", action);
+            UserHandle userHandle = intent.getParcelableExtra(EXTRA_USERHANDLE);
+            if (userHandle == null) {
+                Log.d(this, "user handle can't be null, not processing the broadcast");
+                return;
+            }
 
-        MissedCallNotifier missedCallNotifier = mCallsManager.getMissedCallNotifier();
+            MissedCallNotifier missedCallNotifier = mCallsManager.getMissedCallNotifier();
 
-        // Send an SMS from the missed call notification.
-        if (ACTION_SEND_SMS_FROM_NOTIFICATION.equals(action)) {
-            // Close the notification shade and the notification itself.
-            closeSystemDialogs(mContext);
-            missedCallNotifier.clearMissedCalls(userHandle);
+            // Send an SMS from the missed call notification.
+            if (ACTION_SEND_SMS_FROM_NOTIFICATION.equals(action)) {
+                // Close the notification shade and the notification itself.
+                closeSystemDialogs(mContext);
+                missedCallNotifier.clearMissedCalls(userHandle);
 
-            Intent callIntent = new Intent(Intent.ACTION_SENDTO, intent.getData());
-            callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-            mContext.startActivityAsUser(callIntent, userHandle);
+                Intent callIntent = new Intent(Intent.ACTION_SENDTO, intent.getData());
+                callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+                mContext.startActivityAsUser(callIntent, userHandle);
 
-        // Call back recent caller from the missed call notification.
-        } else if (ACTION_CALL_BACK_FROM_NOTIFICATION.equals(action)) {
-            // Close the notification shade and the notification itself.
-            closeSystemDialogs(mContext);
-            missedCallNotifier.clearMissedCalls(userHandle);
+                // Call back recent caller from the missed call notification.
+            } else if (ACTION_CALL_BACK_FROM_NOTIFICATION.equals(action)) {
+                // Close the notification shade and the notification itself.
+                closeSystemDialogs(mContext);
+                missedCallNotifier.clearMissedCalls(userHandle);
 
-            Intent callIntent = new Intent(Intent.ACTION_CALL, intent.getData());
-            callIntent.setFlags(
-                    Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
-            mContext.startActivityAsUser(callIntent, userHandle);
+                Intent callIntent = new Intent(Intent.ACTION_CALL, intent.getData());
+                callIntent.setFlags(
+                        Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
+                mContext.startActivityAsUser(callIntent, userHandle);
 
-        // Clear the missed call notification and call log entries.
-        } else if (ACTION_CLEAR_MISSED_CALLS.equals(action)) {
-            missedCallNotifier.clearMissedCalls(userHandle);
+                // Clear the missed call notification and call log entries.
+            } else if (ACTION_CLEAR_MISSED_CALLS.equals(action)) {
+                missedCallNotifier.clearMissedCalls(userHandle);
+            }
+        } else if (ACTION_ANSWER_FROM_NOTIFICATION.equals(action)) {
+            Log.startSession("TBIP.aAFM");
+            try {
+                // Answer the current ringing call.
+                Call incomingCall = mCallsManager.getIncomingCallNotifier().getIncomingCall();
+                if (incomingCall != null) {
+                    mCallsManager.answerCall(incomingCall, incomingCall.getVideoState());
+                }
+            } finally {
+                Log.endSession();
+            }
+        } else if (ACTION_REJECT_FROM_NOTIFICATION.equals(action)) {
+            Log.startSession("TBIP.aRFM");
+            try {
+                // Reject the current ringing call.
+                Call incomingCall = mCallsManager.getIncomingCallNotifier().getIncomingCall();
+                if (incomingCall != null) {
+                    mCallsManager.rejectCall(incomingCall, false /* isRejectWithMessage */, null);
+                }
+            } finally {
+                Log.endSession();
+            }
         }
     }
 
diff --git a/src/com/android/server/telecom/TelecomServiceImpl.java b/src/com/android/server/telecom/TelecomServiceImpl.java
index 74eb8bc..40ba21d 100644
--- a/src/com/android/server/telecom/TelecomServiceImpl.java
+++ b/src/com/android/server/telecom/TelecomServiceImpl.java
@@ -48,6 +48,7 @@
 import android.telecom.VideoProfile;
 import android.telephony.SubscriptionManager;
 import android.telephony.TelephonyManager;
+import android.text.TextUtils;
 import android.util.EventLog;
 
 // TODO: Needed for move to system service: import com.android.internal.R;
@@ -78,8 +79,6 @@
         }
     }
 
-    private static final String PERMISSION_PROCESS_PHONE_ACCOUNT_REGISTRATION =
-            "android.permission.PROCESS_PHONE_ACCOUNT_REGISTRATION";
     private static final int DEFAULT_VIDEO_STATE = -1;
 
     private final ITelecomService.Stub mBinderImpl = new ITelecomService.Stub() {
@@ -177,6 +176,31 @@
         }
 
         @Override
+        public List<PhoneAccountHandle> getSelfManagedPhoneAccounts(String callingPackage) {
+            try {
+                Log.startSession("TSI.gSMPA");
+                if (!canReadPhoneState(callingPackage, "Requires READ_PHONE_STATE permission.")) {
+                    throw new SecurityException("Requires READ_PHONE_STATE permission.");
+                }
+                synchronized (mLock) {
+                    final UserHandle callingUserHandle = Binder.getCallingUserHandle();
+                    long token = Binder.clearCallingIdentity();
+                    try {
+                        return mPhoneAccountRegistrar.getSelfManagedPhoneAccounts(
+                                callingUserHandle);
+                    } catch (Exception e) {
+                        Log.e(this, e, "getSelfManagedPhoneAccounts");
+                        throw e;
+                    } finally {
+                        Binder.restoreCallingIdentity(token);
+                    }
+                }
+            } finally {
+                Log.endSession();
+            }
+        }
+
+        @Override
         public List<PhoneAccountHandle> getPhoneAccountsSupportingScheme(String uriScheme,
                 String callingPackage) {
             try {
@@ -363,6 +387,10 @@
                                         "cannot also be call capable, connection managers, or " +
                                         "SIM accounts.");
                             }
+
+                            // For self-managed CS, the phone account registrar will override the
+                            // label the user has set for the phone account.  This ensures the
+                            // self-managed cs implementation can't spoof their app name.
                         }
                         if (account.hasCapabilities(PhoneAccount.CAPABILITY_SIM_SUBSCRIPTION)) {
                             enforceRegisterSimSubscriptionPermission();
@@ -371,17 +399,9 @@
                             enforceRegisterMultiUser();
                         }
                         enforceUserHandleMatchesCaller(account.getAccountHandle());
-                        mPhoneAccountRegistrar.registerPhoneAccount(account);
-                        // Broadcast an intent indicating the phone account which was registered.
-                        long token = Binder.clearCallingIdentity();
+                        final long token = Binder.clearCallingIdentity();
                         try {
-                            Intent intent = new Intent(
-                                    TelecomManager.ACTION_PHONE_ACCOUNT_REGISTERED);
-                            intent.putExtra(TelecomManager.EXTRA_PHONE_ACCOUNT_HANDLE,
-                                    account.getAccountHandle());
-                            Log.i(this, "Sending phone-account registered intent as user");
-                            mContext.sendBroadcastAsUser(intent, UserHandle.ALL,
-                                    PERMISSION_PROCESS_PHONE_ACCOUNT_REGISTRATION);
+                            mPhoneAccountRegistrar.registerPhoneAccount(account);
                         } finally {
                             Binder.restoreCallingIdentity(token);
                         }
@@ -403,18 +423,9 @@
                     enforcePhoneAccountModificationForPackage(
                             accountHandle.getComponentName().getPackageName());
                     enforceUserHandleMatchesCaller(accountHandle);
-                    mPhoneAccountRegistrar.unregisterPhoneAccount(accountHandle);
-
-                    // Broadcast an intent indicating the phone account which was unregistered.
-                    long token = Binder.clearCallingIdentity();
+                    final long token = Binder.clearCallingIdentity();
                     try {
-                        Intent intent =
-                                new Intent(TelecomManager.ACTION_PHONE_ACCOUNT_UNREGISTERED);
-                        intent.putExtra(
-                                TelecomManager.EXTRA_PHONE_ACCOUNT_HANDLE, accountHandle);
-                        Log.i(this, "Sending phone-account unregistered intent as user");
-                        mContext.sendBroadcastAsUser(intent, UserHandle.ALL,
-                                PERMISSION_PROCESS_PHONE_ACCOUNT_REGISTRATION);
+                        mPhoneAccountRegistrar.unregisterPhoneAccount(accountHandle);
                     } finally {
                         Binder.restoreCallingIdentity(token);
                     }
@@ -638,9 +649,7 @@
                 }
 
                 synchronized (mLock) {
-                    final int callState = mCallsManager.getCallState();
-                    return callState == TelephonyManager.CALL_STATE_OFFHOOK
-                            || callState == TelephonyManager.CALL_STATE_RINGING;
+                    return mCallsManager.hasOngoingCalls();
                 }
             } finally {
                 Log.endSession();
diff --git a/src/com/android/server/telecom/TelecomSystem.java b/src/com/android/server/telecom/TelecomSystem.java
index 5c95fb0..52d39c9 100644
--- a/src/com/android/server/telecom/TelecomSystem.java
+++ b/src/com/android/server/telecom/TelecomSystem.java
@@ -21,6 +21,8 @@
 import com.android.server.telecom.bluetooth.BluetoothRouteManager;
 import com.android.server.telecom.components.UserCallIntentProcessor;
 import com.android.server.telecom.components.UserCallIntentProcessorFactory;
+import com.android.server.telecom.ui.IncomingCallNotifier;
+import com.android.server.telecom.ui.IncomingCallNotifier.IncomingCallNotifierFactory;
 import com.android.server.telecom.ui.MissedCallNotifierImpl.MissedCallNotifierImplFactory;
 import com.android.server.telecom.BluetoothPhoneServiceImpl.BluetoothPhoneServiceImplFactory;
 import com.android.server.telecom.CallAudioManager.AudioServiceFactory;
@@ -31,9 +33,12 @@
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
 import android.net.Uri;
 import android.os.UserHandle;
 import android.telecom.Log;
+import android.telecom.PhoneAccountHandle;
 
 import java.io.FileNotFoundException;
 import java.io.InputStream;
@@ -97,6 +102,7 @@
 
     private final SyncRoot mLock = new SyncRoot() { };
     private final MissedCallNotifier mMissedCallNotifier;
+    private final IncomingCallNotifier mIncomingCallNotifier;
     private final PhoneAccountRegistrar mPhoneAccountRegistrar;
     private final CallsManager mCallsManager;
     private final RespondViaSmsManager mRespondViaSmsManager;
@@ -183,7 +189,8 @@
             Timeouts.Adapter timeoutsAdapter,
             AsyncRingtonePlayer asyncRingtonePlayer,
             PhoneNumberUtilsAdapter phoneNumberUtilsAdapter,
-            InterruptionFilterProxy interruptionFilterProxy) {
+            InterruptionFilterProxy interruptionFilterProxy,
+            IncomingCallNotifier incomingCallNotifier) {
         mContext = context.getApplicationContext();
         LogUtils.initLogging(mContext);
         DefaultDialerManagerAdapter defaultDialerAdapter =
@@ -193,7 +200,21 @@
                 defaultDialerAdapter, mLock);
 
         Log.startSession("TS.init");
-        mPhoneAccountRegistrar = new PhoneAccountRegistrar(mContext, defaultDialerCache);
+        mPhoneAccountRegistrar = new PhoneAccountRegistrar(mContext, defaultDialerCache,
+                new PhoneAccountRegistrar.AppLabelProxy() {
+                    @Override
+                    public CharSequence getAppLabel(String packageName) {
+                        PackageManager pm = mContext.getPackageManager();
+                        try {
+                            ApplicationInfo info = pm.getApplicationInfo(packageName, 0);
+                            return pm.getApplicationLabel(info);
+                        } catch (PackageManager.NameNotFoundException nnfe) {
+                            Log.w(this, "Could not determine package name.");
+                        }
+
+                        return null;
+                    }
+                });
         mContactsAsyncHelper = new ContactsAsyncHelper(
                 new ContactsAsyncHelper.ContentResolverAdapter() {
                     @Override
@@ -232,6 +253,25 @@
                 phoneNumberUtilsAdapter,
                 interruptionFilterProxy);
 
+        mIncomingCallNotifier = incomingCallNotifier;
+        incomingCallNotifier.setCallsManagerProxy(new IncomingCallNotifier.CallsManagerProxy() {
+            @Override
+            public boolean hasCallsForOtherPhoneAccount(PhoneAccountHandle phoneAccountHandle) {
+                return mCallsManager.hasCallsForOtherPhoneAccount(phoneAccountHandle);
+            }
+
+            @Override
+            public int getNumCallsForOtherPhoneAccount(PhoneAccountHandle phoneAccountHandle) {
+                return mCallsManager.getNumCallsForOtherPhoneAccount(phoneAccountHandle);
+            }
+
+            @Override
+            public Call getActiveCall() {
+                return mCallsManager.getActiveCall();
+            }
+        });
+        mCallsManager.setIncomingCallNotifier(mIncomingCallNotifier);
+
         mRespondViaSmsManager = new RespondViaSmsManager(mCallsManager, mLock);
         mCallsManager.setRespondViaSmsManager(mRespondViaSmsManager);
 
diff --git a/src/com/android/server/telecom/TelephonyUtil.java b/src/com/android/server/telecom/TelephonyUtil.java
index 50b8901..a76821a 100644
--- a/src/com/android/server/telecom/TelephonyUtil.java
+++ b/src/com/android/server/telecom/TelephonyUtil.java
@@ -94,8 +94,8 @@
                 int subId2 = telephonyManager.getSubIdForPhoneAccount(account2);
                 if (subId1 != SubscriptionManager.INVALID_SUBSCRIPTION_ID &&
                         subId2 != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
-                    retval = (SubscriptionManager.getSlotId(subId1) <
-                            SubscriptionManager.getSlotId(subId2)) ? -1 : 1;
+                    retval = (SubscriptionManager.getSlotIndex(subId1) <
+                            SubscriptionManager.getSlotIndex(subId2)) ? -1 : 1;
                 }
 
                 // Then order by package
diff --git a/src/com/android/server/telecom/bluetooth/BluetoothRouteManager.java b/src/com/android/server/telecom/bluetooth/BluetoothRouteManager.java
index 494089b..e3d99d9 100644
--- a/src/com/android/server/telecom/bluetooth/BluetoothRouteManager.java
+++ b/src/com/android/server/telecom/bluetooth/BluetoothRouteManager.java
@@ -29,6 +29,7 @@
 
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.os.SomeArgs;
+import com.android.internal.util.IState;
 import com.android.internal.util.State;
 import com.android.internal.util.StateMachine;
 import com.android.server.telecom.BluetoothHeadsetProxy;
@@ -43,6 +44,8 @@
 import java.util.Objects;
 import java.util.Optional;
 import java.util.Set;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
 
 public class BluetoothRouteManager extends StateMachine {
     private static final String LOG_TAG = BluetoothRouteManager.class.getSimpleName();
@@ -581,8 +584,27 @@
         return mDeviceManager.getNumConnectedDevices() > 0;
     }
 
+    /**
+     * This method needs be synchronized with the local looper because getCurrentState() depends
+     * on the internal state of the state machine being consistent. Therefore, there may be a
+     * delay when calling this method.
+     * @return
+     */
     public boolean isBluetoothAudioConnectedOrPending() {
-        return getCurrentState() != mAudioOffState;
+        IState[] state = new IState[] {null};
+        CountDownLatch latch = new CountDownLatch(1);
+        Runnable r = () -> {
+            state[0] = getCurrentState();
+            latch.countDown();
+        };
+        sendMessage(RUN_RUNNABLE, r);
+        try {
+            latch.await(1000, TimeUnit.MILLISECONDS);
+        } catch (InterruptedException e) {
+            Log.w(LOG_TAG, "isBluetoothAudioConnectedOrPending -- interrupted getting state");
+            return false;
+        }
+        return (state[0] != null) && (state[0] != mAudioOffState);
     }
 
     /**
diff --git a/src/com/android/server/telecom/components/TelecomService.java b/src/com/android/server/telecom/components/TelecomService.java
index a066b6c..3d28eae 100644
--- a/src/com/android/server/telecom/components/TelecomService.java
+++ b/src/com/android/server/telecom/components/TelecomService.java
@@ -16,7 +16,6 @@
 
 package com.android.server.telecom.components;
 
-import android.app.Notification;
 import android.app.NotificationManager;
 import android.app.Service;
 import android.bluetooth.BluetoothAdapter;
@@ -28,6 +27,7 @@
 import android.os.ServiceManager;
 import android.service.notification.ZenModeConfig;
 import android.telecom.Log;
+import android.telecom.PhoneAccountHandle;
 
 import com.android.internal.telephony.CallerInfoAsyncQuery;
 import com.android.server.telecom.AsyncRingtonePlayer;
@@ -42,7 +42,6 @@
 import com.android.server.telecom.CallAudioManager;
 import com.android.server.telecom.InterruptionFilterProxy;
 import com.android.server.telecom.PhoneAccountRegistrar;
-import com.android.server.telecom.PhoneNumberUtilsAdapter;
 import com.android.server.telecom.PhoneNumberUtilsAdapterImpl;
 import com.android.server.telecom.ProximitySensorManagerFactory;
 import com.android.server.telecom.InCallWakeLockController;
@@ -50,6 +49,7 @@
 import com.android.server.telecom.TelecomSystem;
 import com.android.server.telecom.TelecomWakeLock;
 import com.android.server.telecom.Timeouts;
+import com.android.server.telecom.ui.IncomingCallNotifier;
 import com.android.server.telecom.ui.MissedCallNotifierImpl;
 
 /**
@@ -132,7 +132,7 @@
                             new InCallWakeLockControllerFactory() {
                                 @Override
                                 public InCallWakeLockController create(Context context,
-                                        CallsManager callsManager) {
+                                                                       CallsManager callsManager) {
                                     return new InCallWakeLockController(
                                             new TelecomWakeLock(context,
                                                     PowerManager.FULL_WAKE_LOCK,
@@ -180,7 +180,8 @@
                                     }
                                     return null;
                                 }
-                            }
+                            },
+                            new IncomingCallNotifier(context)
                     ));
         }
         if (BluetoothAdapter.getDefaultAdapter() != null) {
diff --git a/src/com/android/server/telecom/ui/IncomingCallNotifier.java b/src/com/android/server/telecom/ui/IncomingCallNotifier.java
new file mode 100644
index 0000000..cd34e71
--- /dev/null
+++ b/src/com/android/server/telecom/ui/IncomingCallNotifier.java
@@ -0,0 +1,293 @@
+/*
+ * Copyright (C) 2017 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.server.telecom.ui;
+
+import android.app.Notification;
+import android.app.NotificationManager;
+import android.app.PendingIntent;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.telecom.Log;
+import android.telecom.PhoneAccount;
+import android.telecom.PhoneAccountHandle;
+import android.telecom.TelecomManager;
+import android.telecom.VideoProfile;
+import android.text.Spannable;
+import android.text.SpannableString;
+import android.text.TextUtils;
+import android.text.style.ForegroundColorSpan;
+import android.util.ArraySet;
+
+import com.android.internal.annotations.VisibleForTesting;
+import com.android.internal.telephony.CallerInfo;
+import com.android.server.telecom.Call;
+import com.android.server.telecom.CallState;
+import com.android.server.telecom.CallsManagerListenerBase;
+import com.android.server.telecom.R;
+import com.android.server.telecom.TelecomBroadcastIntentProcessor;
+import com.android.server.telecom.components.TelecomBroadcastReceiver;
+
+import java.util.Optional;
+import java.util.Set;
+
+/**
+ * Manages the display of an incoming call UX when a new ringing self-managed call is added, and
+ * there is an ongoing call in another {@link android.telecom.PhoneAccount}.
+ */
+public class IncomingCallNotifier extends CallsManagerListenerBase {
+
+    public interface IncomingCallNotifierFactory {
+        IncomingCallNotifier make(Context context, CallsManagerProxy mCallsManagerProxy);
+    }
+
+    /**
+     * Eliminates strict dependency between this class and CallsManager.
+     */
+    public interface CallsManagerProxy {
+        boolean hasCallsForOtherPhoneAccount(PhoneAccountHandle phoneAccountHandle);
+        int getNumCallsForOtherPhoneAccount(PhoneAccountHandle phoneAccountHandle);
+        Call getActiveCall();
+    }
+
+    // Notification for incoming calls. This is interruptive and will show up as a HUN.
+    @VisibleForTesting
+    public static final int NOTIFICATION_INCOMING_CALL = 1;
+    private static final String NOTIFICATION_TAG = IncomingCallNotifier.class.getSimpleName();
+
+
+    public final Call.ListenerBase mCallListener = new Call.ListenerBase() {
+        @Override
+        public void onCallerInfoChanged(Call call) {
+            if (mIncomingCall != call) {
+                return;
+            }
+            showIncomingCallNotification(mIncomingCall);
+        }
+    };
+
+    private final Context mContext;
+    private final NotificationManager mNotificationManager;
+    private final Set<Call> mCalls = new ArraySet<>();
+    private CallsManagerProxy mCallsManagerProxy;
+
+    // The current incoming call we are displaying UX for.
+    private Call mIncomingCall;
+
+    public IncomingCallNotifier(Context context) {
+        mContext = context;
+        mNotificationManager =
+                (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
+    }
+
+    public void setCallsManagerProxy(CallsManagerProxy callsManagerProxy) {
+        mCallsManagerProxy = callsManagerProxy;
+    }
+
+    public Call getIncomingCall() {
+        return mIncomingCall;
+    }
+
+    @Override
+    public void onCallAdded(Call call) {
+        if (!mCalls.contains(call)) {
+            mCalls.add(call);
+        }
+
+        updateIncomingCall();
+    }
+
+    @Override
+    public void onCallRemoved(Call call) {
+        if (mCalls.contains(call)) {
+            mCalls.remove(call);
+        }
+
+        updateIncomingCall();
+    }
+
+    @Override
+    public void onCallStateChanged(Call call, int oldState, int newState) {
+        updateIncomingCall();
+    }
+
+    /**
+     * Determines which call is the active ringing call at this time and triggers the display of the
+     * UI.
+     */
+    private void updateIncomingCall() {
+        Optional<Call> incomingCallOp = mCalls.stream()
+                .filter(call -> call.isSelfManaged() && call.isIncoming() &&
+                        call.getState() == CallState.RINGING)
+                .findFirst();
+        Call incomingCall = incomingCallOp.orElse(null);
+        if (incomingCall != null && mCallsManagerProxy != null &&
+                !mCallsManagerProxy.hasCallsForOtherPhoneAccount(
+                        incomingCallOp.get().getTargetPhoneAccount())) {
+            // If there is no calls in any other ConnectionService, we can rely on the
+            // third-party app to display its own incoming call UI.
+            incomingCall = null;
+        }
+
+        Log.i(this, "updateIncomingCall: foundIncomingcall = %s", incomingCall);
+
+        boolean hadIncomingCall = mIncomingCall != null;
+        boolean hasIncomingCall = incomingCall != null;
+        if (incomingCall != mIncomingCall) {
+            Call previousIncomingCall = mIncomingCall;
+            mIncomingCall = incomingCall;
+
+            if (hasIncomingCall && !hadIncomingCall) {
+                mIncomingCall.addListener(mCallListener);
+                showIncomingCallNotification(mIncomingCall);
+            } else if (hadIncomingCall && !hasIncomingCall) {
+                previousIncomingCall.removeListener(mCallListener);
+                hideIncomingCallNotification();
+            }
+        }
+    }
+
+    private void showIncomingCallNotification(Call call) {
+        Log.i(this, "showIncomingCallNotification showCall = %s", call);
+
+        Notification.Builder builder = getNotificationBuilder(call,
+                mCallsManagerProxy.getActiveCall());
+        mNotificationManager.notify(NOTIFICATION_TAG, NOTIFICATION_INCOMING_CALL, builder.build());
+    }
+
+    private void hideIncomingCallNotification() {
+        Log.i(this, "hideIncomingCallNotification");
+        mNotificationManager.cancel(NOTIFICATION_TAG, NOTIFICATION_INCOMING_CALL);
+    }
+
+    private String getNotificationName(Call call) {
+        String name = "";
+        if (call.getCallerDisplayNamePresentation() == TelecomManager.PRESENTATION_ALLOWED) {
+            name = call.getCallerDisplayName();
+        }
+        if (TextUtils.isEmpty(name)) {
+            name = call.getName();
+        }
+
+        if (TextUtils.isEmpty(name)) {
+            name = call.getPhoneNumber();
+        }
+        return name;
+    }
+
+    private Notification.Builder getNotificationBuilder(Call incomingCall, Call ongoingCall) {
+        // Change the notification app name to "Android System" to sufficiently distinguish this
+        // from the phone app's name.
+        Bundle extras = new Bundle();
+        extras.putString(Notification.EXTRA_SUBSTITUTE_APP_NAME, mContext.getString(
+                com.android.internal.R.string.android_system_label));
+
+        Intent answerIntent = new Intent(
+                TelecomBroadcastIntentProcessor.ACTION_ANSWER_FROM_NOTIFICATION, null, mContext,
+                TelecomBroadcastReceiver.class);
+        Intent rejectIntent = new Intent(
+                TelecomBroadcastIntentProcessor.ACTION_REJECT_FROM_NOTIFICATION, null, mContext,
+                TelecomBroadcastReceiver.class);
+
+        String nameOrNumber = getNotificationName(incomingCall);
+        CharSequence viaApp = incomingCall.getTargetPhoneAccountLabel();
+        boolean isIncomingVideo = VideoProfile.isVideo(incomingCall.getVideoState());
+        boolean isOngoingVideo = ongoingCall != null ?
+                VideoProfile.isVideo(ongoingCall.getVideoState()) : false;
+        int numOtherCalls = ongoingCall != null ?
+                mCallsManagerProxy.getNumCallsForOtherPhoneAccount(
+                        incomingCall.getTargetPhoneAccount()) : 1;
+
+        // Build the "IncomingApp call from John Smith" message.
+        CharSequence incomingCallText;
+        if (isIncomingVideo) {
+            incomingCallText = mContext.getString(R.string.notification_incoming_video_call, viaApp,
+                    nameOrNumber);
+        } else {
+            incomingCallText = mContext.getString(R.string.notification_incoming_call, viaApp,
+                    nameOrNumber);
+        }
+
+        // Build the "Answering will end your OtherApp call" line.
+        CharSequence disconnectText;
+        if (ongoingCall != null && ongoingCall.isSelfManaged()) {
+            CharSequence ongoingApp = ongoingCall.getTargetPhoneAccountLabel();
+            // For an ongoing self-managed call, we use a message like:
+            // "Answering will end your OtherApp call".
+            if (numOtherCalls > 1) {
+                // Multiple ongoing calls in the other app, so don't bother specifing whether it is
+                // a video call or audio call.
+                disconnectText = mContext.getString(R.string.answering_ends_other_calls,
+                        ongoingApp);
+            } else if (isOngoingVideo) {
+                disconnectText = mContext.getString(R.string.answering_ends_other_video_call,
+                        ongoingApp);
+            } else {
+                disconnectText = mContext.getString(R.string.answering_ends_other_call, ongoingApp);
+            }
+        } else {
+            // For an ongoing managed call, we use a message like:
+            // "Answering will end your ongoing call".
+            if (numOtherCalls > 1) {
+                // Multiple ongoing manage calls, so don't bother specifing whether it is a video
+                // call or audio call.
+                disconnectText = mContext.getString(R.string.answering_ends_other_managed_calls);
+            } else if (isOngoingVideo) {
+                disconnectText = mContext.getString(
+                        R.string.answering_ends_other_managed_video_call);
+            } else {
+                disconnectText = mContext.getString(R.string.answering_ends_other_managed_call);
+            }
+        }
+
+        final Notification.Builder builder = new Notification.Builder(mContext);
+        builder.setOngoing(true);
+        builder.setExtras(extras);
+        builder.setPriority(Notification.PRIORITY_HIGH);
+        builder.setCategory(Notification.CATEGORY_CALL);
+        builder.setContentTitle(incomingCallText);
+        builder.setContentText(disconnectText);
+        builder.setSmallIcon(R.drawable.ic_phone);
+        // Ensures this is a heads up notification.  A heads-up notification is typically only shown
+        // if there is a fullscreen intent.  However since this notification doesn't have that we
+        // will use this trick to get it to show as one anyways.
+        builder.setVibrate(new long[0]);
+        builder.setColor(mContext.getResources().getColor(R.color.theme_color));
+        builder.addAction(
+                R.anim.on_going_call,
+                getActionText(R.string.answer_incoming_call, R.color.notification_action_answer),
+                PendingIntent.getBroadcast(mContext, 0, answerIntent,
+                        PendingIntent.FLAG_CANCEL_CURRENT));
+        builder.addAction(
+                R.drawable.ic_close_dk,
+                getActionText(R.string.decline_incoming_call, R.color.notification_action_decline),
+                PendingIntent.getBroadcast(mContext, 0, rejectIntent,
+                        PendingIntent.FLAG_CANCEL_CURRENT));
+        return builder;
+    }
+
+    private CharSequence getActionText(int stringRes, int colorRes) {
+        CharSequence string = mContext.getText(stringRes);
+        if (string == null) {
+            return "";
+        }
+        Spannable spannable = new SpannableString(string);
+        spannable.setSpan(
+                    new ForegroundColorSpan(mContext.getColor(colorRes)), 0, spannable.length(), 0);
+        return spannable;
+    }
+}
diff --git a/src/com/android/server/telecom/ui/MissedCallNotifierImpl.java b/src/com/android/server/telecom/ui/MissedCallNotifierImpl.java
index 863c393..a8630b0 100644
--- a/src/com/android/server/telecom/ui/MissedCallNotifierImpl.java
+++ b/src/com/android/server/telecom/ui/MissedCallNotifierImpl.java
@@ -19,7 +19,6 @@
 import static android.Manifest.permission.READ_PHONE_STATE;
 
 import android.annotation.NonNull;
-import android.content.ComponentName;
 import android.content.ContentProvider;
 import android.content.pm.PackageManager.NameNotFoundException;
 import android.telecom.Logging.Runnable;
@@ -124,12 +123,12 @@
     public static final int CALL_LOG_COLUMN_TYPE = 5;
 
     private static final int MISSED_CALL_NOTIFICATION_ID = 1;
+    private static final String NOTIFICATION_TAG = MissedCallNotifierImpl.class.getSimpleName();
 
     private final Context mContext;
     private final PhoneAccountRegistrar mPhoneAccountRegistrar;
     private final NotificationManager mNotificationManager;
     private final NotificationBuilderFactory mNotificationBuilderFactory;
-    private final ComponentName mNotificationComponent;
     private final DefaultDialerCache mDefaultDialerCache;
     private UserHandle mCurrentUserHandle;
 
@@ -152,12 +151,9 @@
         mPhoneAccountRegistrar = phoneAccountRegistrar;
         mNotificationManager =
                 (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
-        final String notificationComponent = context.getString(R.string.notification_component);
         mDefaultDialerCache = defaultDialerCache;
 
         mNotificationBuilderFactory = notificationBuilderFactory;
-        mNotificationComponent = notificationComponent != null
-                ? ComponentName.unflattenFromString(notificationComponent) : null;
         mMissedCallCounts = new ConcurrentHashMap<>();
     }
 
@@ -199,43 +195,6 @@
     }
 
     /**
-     * Broadcasts missed call notification to custom component if set.
-     * Currently the component is set in phone capable android wear device.
-     * @param userHandle The user that has the missed call(s).
-     * @return {@code true} if the broadcast was sent. {@code false} otherwise.
-     */
-    private boolean sendNotificationCustomComponent(CallInfo callInfo, UserHandle userHandle) {
-        if (mNotificationComponent != null) {
-            int count = mMissedCallCounts.get(userHandle).get();
-            Intent intent = new Intent();
-            intent.setFlags(Intent.FLAG_RECEIVER_FOREGROUND);
-            intent.setComponent(mNotificationComponent);
-            intent.setAction(TelecomManager.ACTION_SHOW_MISSED_CALLS_NOTIFICATION);
-            intent.putExtra(TelecomManager.EXTRA_NOTIFICATION_COUNT, count);
-            intent.putExtra(TelecomManager.EXTRA_NOTIFICATION_PHONE_NUMBER,
-                    callInfo == null ? null : callInfo.getPhoneNumber());
-            intent.putExtra(TelecomManager.EXTRA_CLEAR_MISSED_CALLS_INTENT,
-                    createClearMissedCallsPendingIntent(userHandle));
-
-
-            if (count == 1 && callInfo != null) {
-                String handle = callInfo.getHandleSchemeSpecificPart();
-
-                if (!TextUtils.isEmpty(handle) && !TextUtils.equals(handle,
-                        mContext.getString(R.string.handle_restricted))) {
-                    intent.putExtra(TelecomManager.EXTRA_CALL_BACK_INTENT,
-                            createCallBackPendingIntent(callInfo.getHandle(), userHandle));
-                }
-            }
-
-            mContext.sendBroadcast(intent);
-            return true;
-        }
-
-        return false;
-    }
-
-    /**
      * Returns the missed-call notification intent to send to the default dialer for the given user.
      * Note, the passed in userHandle is always the non-managed user for SIM calls (multi-user
      * calls). In this case we return the default dialer for the logged in user. This is never the
@@ -270,10 +229,24 @@
         int count = mMissedCallCounts.get(userHandle).get();
         Intent intent = getShowMissedCallIntentForDefaultDialer(userHandle)
             .setFlags(Intent.FLAG_RECEIVER_FOREGROUND)
+            .putExtra(TelecomManager.EXTRA_CLEAR_MISSED_CALLS_INTENT,
+                    createClearMissedCallsPendingIntent(userHandle))
             .putExtra(TelecomManager.EXTRA_NOTIFICATION_COUNT, count)
             .putExtra(TelecomManager.EXTRA_NOTIFICATION_PHONE_NUMBER,
                     callInfo == null ? null : callInfo.getPhoneNumber());
 
+        if (count == 1 && callInfo != null) {
+            final Uri handleUri = callInfo.getHandle();
+            String handle = handleUri == null ? null : handleUri.getSchemeSpecificPart();
+
+            if (!TextUtils.isEmpty(handle) && !TextUtils.equals(handle,
+                    mContext.getString(R.string.handle_restricted))) {
+                intent.putExtra(TelecomManager.EXTRA_CALL_BACK_INTENT,
+                        createCallBackPendingIntent(handleUri, userHandle));
+            }
+        }
+
+
         Log.w(this, "Showing missed calls through default dialer.");
         mContext.sendBroadcastAsUser(intent, userHandle, READ_PHONE_STATE);
     }
@@ -303,10 +276,6 @@
         mMissedCallCounts.putIfAbsent(userHandle, new AtomicInteger(0));
         int missCallCounts = mMissedCallCounts.get(userHandle).incrementAndGet();
 
-        if (sendNotificationCustomComponent(callInfo, userHandle)) {
-            return;
-        }
-
         if (shouldManageNotificationThroughDefaultDialer(userHandle)) {
             sendNotificationThroughDefaultDialer(callInfo, userHandle);
             return;
@@ -408,7 +377,7 @@
         long token = Binder.clearCallingIdentity();
         try {
             mNotificationManager.notifyAsUser(
-                    null /* tag */, MISSED_CALL_NOTIFICATION_ID, notification, userHandle);
+                    NOTIFICATION_TAG, MISSED_CALL_NOTIFICATION_ID, notification, userHandle);
         } finally {
             Binder.restoreCallingIdentity(token);
         }
@@ -421,10 +390,6 @@
         mMissedCallCounts.putIfAbsent(userHandle, new AtomicInteger(0));
         mMissedCallCounts.get(userHandle).set(0);
 
-        if (sendNotificationCustomComponent(null, userHandle)) {
-            return;
-        }
-
         if (shouldManageNotificationThroughDefaultDialer(userHandle)) {
             sendNotificationThroughDefaultDialer(null, userHandle);
             return;
@@ -432,7 +397,8 @@
 
         long token = Binder.clearCallingIdentity();
         try {
-            mNotificationManager.cancelAsUser(null, MISSED_CALL_NOTIFICATION_ID, userHandle);
+            mNotificationManager.cancelAsUser(NOTIFICATION_TAG, MISSED_CALL_NOTIFICATION_ID,
+                    userHandle);
         } finally {
             Binder.restoreCallingIdentity(token);
         }
diff --git a/testapps/AndroidManifest.xml b/testapps/AndroidManifest.xml
index cc6470e..ba8db53 100644
--- a/testapps/AndroidManifest.xml
+++ b/testapps/AndroidManifest.xml
@@ -66,7 +66,8 @@
             <intent-filter>
                 <action android:name="android.server.telecom.testapps.ACTION_SEND_UPDATE_REQUEST_FROM_TEST_INCALL_SERVICE"/>
                 <action android:name="android.server.telecom.testapps.ACTION_SEND_UPGRADE_RESPONSE"/>
-                <data android:scheme="int" />
+                <action android:name="android.telecom.action.PHONE_ACCOUNT_REGISTERED"/>
+                <action android:name="android.telecom.action.PHONE_ACCOUNT_UNREGISTERED"/>
             </intent-filter>
         </receiver>
 
@@ -167,9 +168,20 @@
             </intent-filter>
         </activity>
 
+        <activity android:name="com.android.server.telecom.testapps.TestUssdActivity"
+                android:label="@string/UssdUiAppLabel"
+                android:launchMode="singleInstance">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.DEFAULT" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+
         <activity android:name="com.android.server.telecom.testapps.SelfManagedCallingActivity"
                   android:label="@string/selfManagedCallingActivityLabel"
-                  android:process="com.android.server.telecom.testapps.SelfMangingCallingApp">
+                  android:process="com.android.server.telecom.testapps.SelfMangingCallingApp"
+                  android:theme="@android:style/Theme.Material.Light">
           <intent-filter>
               <action android:name="android.intent.action.MAIN" />
               <category android:name="android.intent.category.DEFAULT" />
diff --git a/testapps/res/layout/self_managed_sample_main.xml b/testapps/res/layout/self_managed_sample_main.xml
index 144d6ec..e30ef42 100644
--- a/testapps/res/layout/self_managed_sample_main.xml
+++ b/testapps/res/layout/self_managed_sample_main.xml
@@ -24,63 +24,80 @@
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text="@string/checkIfPermittedBeforeCallingButton" />
-    <TableLayout
+
+    <TextView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="This app provides two sample implementations of the self-managed ConnectionService API.  Use this UI to add simulated self-managed calls:" />
+
+    <RadioGroup
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:orientation="horizontal">
+        <RadioButton
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="Sample Source 1"
+            android:id="@+id/useAcct1Button"
+            android:background="@color/test_call_a_color"/>
+        <RadioButton
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="Sample Source 2"
+            android:id="@+id/useAcct2Button"
+            android:background="@color/test_call_b_color"/>
+    </RadioGroup>
+
+    <RadioGroup
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:orientation="horizontal">
+        <RadioButton
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="Video Call"
+            android:id="@+id/videoCallButton"/>
+        <RadioButton
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="Audio Call"
+            android:id="@+id/audioCallButton"/>
+    </RadioGroup>
+
+    <LinearLayout android:orientation="horizontal"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content">
-        <TableRow android:layout_span="2">
-            <RadioGroup>
-                <RadioButton
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:text="Acct 1"
-                    android:id="@+id/useAcct1Button"/>
-                <RadioButton
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:text="Acct 2"
-                    android:id="@+id/useAcct2Button"/>
-            </RadioGroup>
-        </TableRow>
-        <TableRow android:layout_span="2">
-            <TextView
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:text="Place call:" />
-        </TableRow>
-        <TableRow>
-            <TextView
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:text="Number:" />
-            <EditText
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:id="@+id/phoneNumber" />
-        </TableRow>
-        <TableRow>
-            <Button
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:text="Outgoing Call"
-                android:id="@+id/placeOutgoingCallButton" />
-            <Button
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:text="Incoming Call"
-                android:id="@+id/placeIncomingCallButton" />
-            <Button
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:text="Incoming Call (Delay)"
-                android:id="@+id/placeIncomingCallDelayButton" />
-        </TableRow>
-        <TableRow android:layout_span="2">
-            <ListView
-                android:id="@+id/callList"
-                android:layout_width="match_parent"
-                android:layout_height="match_parent"
-                android:listSelector="@null"
-                android:divider="@null" />
-        </TableRow>
-    </TableLayout>
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="Number:" />
+        <EditText
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:id="@+id/phoneNumber"
+            android:text="tel:555-1212"/>
+    </LinearLayout>
+
+    <LinearLayout android:orientation="horizontal"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content">
+
+        <Button
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="Outgoing Call"
+            android:id="@+id/placeOutgoingCallButton" />
+        <Button
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="Incoming Call"
+            android:id="@+id/placeIncomingCallButton" />
+    </LinearLayout>
+
+    <ListView
+        android:id="@+id/callList"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:listSelector="@null"
+        android:divider="@null" />
 </LinearLayout>
\ No newline at end of file
diff --git a/testapps/res/layout/testussd_main.xml b/testapps/res/layout/testussd_main.xml
new file mode 100644
index 0000000..b4d67b0
--- /dev/null
+++ b/testapps/res/layout/testussd_main.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2014 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical" >
+    <EditText
+        android:id="@+id/number"
+        android:inputType="number"
+        android:layout_width="200dp"
+        android:layout_height="wrap_content" />
+    <Button
+        android:id="@+id/place_ussd_button"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/placeUssdButton" />
+</LinearLayout>
diff --git a/testapps/res/values/colors.xml b/testapps/res/values/colors.xml
new file mode 100644
index 0000000..3939e78
--- /dev/null
+++ b/testapps/res/values/colors.xml
@@ -0,0 +1,20 @@
+<!--
+  ~ Copyright (C) 2017 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
+  -->
+
+<resources>
+    <color name="test_call_a_color">#f2eebf</color>
+    <color name="test_call_b_color">#afc5e6</color>
+</resources>
diff --git a/testapps/res/values/donottranslate_strings.xml b/testapps/res/values/donottranslate_strings.xml
index 9dc7cae..d4a011a 100644
--- a/testapps/res/values/donottranslate_strings.xml
+++ b/testapps/res/values/donottranslate_strings.xml
@@ -88,4 +88,7 @@
         <item>The FCC has mandated that I respond... I will do so begrudgingly</item>
         <item>😂😂😂💯</item>
     </string-array>
+
+    <string name="UssdUiAppLabel">Test Ussd UI</string>
+    <string name="placeUssdButton">Send USSD</string>
 </resources>
diff --git a/testapps/src/com/android/server/telecom/testapps/RttChatbot.java b/testapps/src/com/android/server/telecom/testapps/RttChatbot.java
index 44439ee..920414f 100644
--- a/testapps/src/com/android/server/telecom/testapps/RttChatbot.java
+++ b/testapps/src/com/android/server/telecom/testapps/RttChatbot.java
@@ -116,7 +116,12 @@
         mHandler = new ReplyHandler(ht.getLooper());
         mReceiverThread = new Thread(() -> {
             while (true) {
-                String charsReceived = mRttTextStream.read();
+                String charsReceived;
+                try {
+                    charsReceived = mRttTextStream.read();
+                } catch (IOException e) {
+                    break;
+                }
                 if (charsReceived == null) {
                     if (Thread.currentThread().isInterrupted()) {
                         Log.w(LOG_TAG, "Thread interrupted");
diff --git a/testapps/src/com/android/server/telecom/testapps/SelfManagedCallList.java b/testapps/src/com/android/server/telecom/testapps/SelfManagedCallList.java
index 1d6367e..4275079 100644
--- a/testapps/src/com/android/server/telecom/testapps/SelfManagedCallList.java
+++ b/testapps/src/com/android/server/telecom/testapps/SelfManagedCallList.java
@@ -43,6 +43,8 @@
 
     public static String SELF_MANAGED_ACCOUNT_1 = "1";
     public static String SELF_MANAGED_ACCOUNT_2 = "2";
+    public static String SELF_MANAGED_NAME_1 = "SuperCall";
+    public static String SELF_MANAGED_NAME_2 = "Mega Call";
 
     private static SelfManagedCallList sInstance;
     private static ComponentName COMPONENT_NAME = new ComponentName(
@@ -89,20 +91,23 @@
     }
 
     public void registerPhoneAccounts(Context context) {
-        registerPhoneAccount(context, SELF_MANAGED_ACCOUNT_1, SELF_MANAGED_ADDRESS_1);
-        registerPhoneAccount(context, SELF_MANAGED_ACCOUNT_2, SELF_MANAGED_ADDRESS_2);
+        registerPhoneAccount(context, SELF_MANAGED_ACCOUNT_1, SELF_MANAGED_ADDRESS_1,
+                SELF_MANAGED_NAME_1);
+        registerPhoneAccount(context, SELF_MANAGED_ACCOUNT_2, SELF_MANAGED_ADDRESS_2,
+                SELF_MANAGED_NAME_2);
     }
 
-    public void registerPhoneAccount(Context context, String id, Uri address) {
+    public void registerPhoneAccount(Context context, String id, Uri address, String name) {
         PhoneAccountHandle handle = new PhoneAccountHandle(COMPONENT_NAME, id);
         mPhoneAccounts.put(id, handle);
-        PhoneAccount.Builder builder = PhoneAccount.builder(handle, id)
+        PhoneAccount.Builder builder = PhoneAccount.builder(handle, name)
                 .addSupportedUriScheme(PhoneAccount.SCHEME_TEL)
                 .addSupportedUriScheme(PhoneAccount.SCHEME_SIP)
                 .setAddress(address)
                 .setCapabilities(PhoneAccount.CAPABILITY_SELF_MANAGED |
                         PhoneAccount.CAPABILITY_VIDEO_CALLING |
-                        PhoneAccount.CAPABILITY_SUPPORTS_VIDEO_CALLING);
+                        PhoneAccount.CAPABILITY_SUPPORTS_VIDEO_CALLING)
+                .setShortDescription(name);
 
         TelecomManager.from(context).registerPhoneAccount(builder.build());
     }
diff --git a/testapps/src/com/android/server/telecom/testapps/SelfManagedCallListAdapter.java b/testapps/src/com/android/server/telecom/testapps/SelfManagedCallListAdapter.java
index 29d3c5f..b46d5e1 100644
--- a/testapps/src/com/android/server/telecom/testapps/SelfManagedCallListAdapter.java
+++ b/testapps/src/com/android/server/telecom/testapps/SelfManagedCallListAdapter.java
@@ -26,6 +26,8 @@
 import android.widget.BaseAdapter;
 import android.widget.TextView;
 
+import com.android.server.telecom.testapps.R;
+
 import java.util.List;
 
 public class SelfManagedCallListAdapter extends BaseAdapter {
@@ -124,6 +126,12 @@
         SelfManagedConnection connection = mConnections.get(position);
         PhoneAccountHandle phoneAccountHandle = connection.getExtras().getParcelable(
                 SelfManagedConnection.EXTRA_PHONE_ACCOUNT_HANDLE);
+        if (phoneAccountHandle.getId().equals(SelfManagedCallList.SELF_MANAGED_ACCOUNT_1)) {
+            result.setBackgroundColor(result.getContext().getColor(R.color.test_call_a_color));
+        } else {
+            result.setBackgroundColor(result.getContext().getColor(R.color.test_call_b_color));
+        }
+
         CallAudioState audioState = connection.getCallAudioState();
         String audioRoute = "?";
         if (audioState != null) {
@@ -148,9 +156,9 @@
         String callType;
         if (connection.isIncomingCall()) {
             if (connection.isIncomingCallUiShowing()) {
-                callType = "Incoming - Show Incoming UX";
+                callType = "Incoming(our ux) ";
             } else {
-                callType = "Incoming - DO NOT SHOW Incoming UX";
+                callType = "Incoming(sys ux) ";
             }
         } else {
             callType = "Outgoing";
diff --git a/testapps/src/com/android/server/telecom/testapps/SelfManagedCallingActivity.java b/testapps/src/com/android/server/telecom/testapps/SelfManagedCallingActivity.java
index c8f6157..4dfa012 100644
--- a/testapps/src/com/android/server/telecom/testapps/SelfManagedCallingActivity.java
+++ b/testapps/src/com/android/server/telecom/testapps/SelfManagedCallingActivity.java
@@ -22,6 +22,7 @@
 import android.telecom.ConnectionRequest;
 import android.telecom.PhoneAccountHandle;
 import android.telecom.TelecomManager;
+import android.telecom.VideoProfile;
 import android.util.Log;
 import android.view.View;
 import android.view.WindowManager;
@@ -46,9 +47,10 @@
     private CheckBox mCheckIfPermittedBeforeCalling;
     private Button mPlaceOutgoingCallButton;
     private Button mPlaceIncomingCallButton;
-    private Button mPlaceIncomingCallDelayButton;
     private RadioButton mUseAcct1Button;
     private RadioButton mUseAcct2Button;
+    private RadioButton mVideoCallButton;
+    private RadioButton mAudioCallButton;
     private EditText mNumber;
     private ListView mListView;
     private SelfManagedCallListAdapter mListAdapter;
@@ -102,21 +104,10 @@
             }
         });
 
-        mPlaceIncomingCallDelayButton = (Button) findViewById(R.id.placeIncomingCallDelayButton);
-        mPlaceIncomingCallDelayButton.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                // Delay the incoming call so that we can turn off the screen and
-                try {
-                    Thread.sleep(5000);
-                } catch (InterruptedException e) {
-                    e.printStackTrace();
-                }
-                placeIncomingCall();
-            }
-        });
         mUseAcct1Button = (RadioButton) findViewById(R.id.useAcct1Button);
         mUseAcct2Button = (RadioButton) findViewById(R.id.useAcct2Button);
+        mVideoCallButton = (RadioButton) findViewById(R.id.videoCallButton);
+        mAudioCallButton = (RadioButton) findViewById(R.id.audioCallButton);
         mNumber = (EditText) findViewById(R.id.phoneNumber);
         mListView = (ListView) findViewById(R.id.callList);
         mCallList.setListener(mCallListListener);
@@ -150,6 +141,10 @@
         Bundle extras = new Bundle();
         extras.putParcelable(TelecomManager.EXTRA_PHONE_ACCOUNT_HANDLE,
                 getSelectedPhoneAccountHandle());
+        if (mVideoCallButton.isChecked()) {
+            extras.putInt(TelecomManager.EXTRA_START_CALL_WITH_VIDEO_STATE,
+                    VideoProfile.STATE_BIDIRECTIONAL);
+        }
         tm.placeCall(Uri.parse(mNumber.getText().toString()), extras);
     }
 
@@ -167,6 +162,10 @@
         Bundle extras = new Bundle();
         extras.putParcelable(TelecomManager.EXTRA_INCOMING_CALL_ADDRESS,
                 Uri.parse(mNumber.getText().toString()));
+        if (mVideoCallButton.isChecked()) {
+            extras.putInt(TelecomManager.EXTRA_INCOMING_VIDEO_STATE,
+                    VideoProfile.STATE_BIDIRECTIONAL);
+        }
         tm.addNewIncomingCall(getSelectedPhoneAccountHandle(), extras);
     }
 }
\ No newline at end of file
diff --git a/testapps/src/com/android/server/telecom/testapps/SelfManagedConnection.java b/testapps/src/com/android/server/telecom/testapps/SelfManagedConnection.java
index 051948b..766efa5 100644
--- a/testapps/src/com/android/server/telecom/testapps/SelfManagedConnection.java
+++ b/testapps/src/com/android/server/telecom/testapps/SelfManagedConnection.java
@@ -27,6 +27,7 @@
 import android.telecom.Connection;
 import android.telecom.ConnectionService;
 import android.telecom.DisconnectCause;
+import android.telecom.VideoProfile;
 
 import com.android.server.telecom.testapps.R;
 
@@ -129,6 +130,36 @@
         notificationManager.notify(CALL_NOTIFICATION, mCallId, builder.build());
     }
 
+    @Override
+    public void onHold() {
+        setOnHold();
+    }
+
+    @Override
+    public void onUnhold() {
+        setActive();
+    }
+
+    @Override
+    public void onAnswer(int videoState) {
+        setConnectionActive();
+    }
+
+    @Override
+    public void onAnswer() {
+        onAnswer(VideoProfile.STATE_AUDIO_ONLY);
+    }
+
+    @Override
+    public void onReject() {
+        setConnectionDisconnected(DisconnectCause.REJECTED);
+    }
+
+    @Override
+    public void onDisconnect() {
+        setConnectionDisconnected(DisconnectCause.LOCAL);
+    }
+
     public void setConnectionActive() {
         mMediaPlayer.start();
         setActive();
diff --git a/testapps/src/com/android/server/telecom/testapps/SelfManagedConnectionService.java b/testapps/src/com/android/server/telecom/testapps/SelfManagedConnectionService.java
index e1a01ba..1d52a3b 100644
--- a/testapps/src/com/android/server/telecom/testapps/SelfManagedConnectionService.java
+++ b/testapps/src/com/android/server/telecom/testapps/SelfManagedConnectionService.java
@@ -23,8 +23,10 @@
 import android.telecom.Log;
 import android.telecom.PhoneAccountHandle;
 import android.telecom.TelecomManager;
+import android.telecom.VideoProfile;
 
 import java.util.Objects;
+import java.util.Random;
 
 /**
  * Sample implementation of the self-managed {@link ConnectionService} API.
@@ -32,6 +34,8 @@
  * See {@link android.telecom} for more information on self-managed {@link ConnectionService}s.
  */
 public class SelfManagedConnectionService extends ConnectionService {
+    private static final String[] TEST_NAMES = {"Tom Smith", "Jane Appleseed", "Joseph Engleton",
+            "Claudia McPherson", "Chris P. Bacon", "Seymour Butz", "Hugh Mungus", "Anita Bath"};
     private final SelfManagedCallList mCallList = SelfManagedCallList.getInstance();
 
     @Override
@@ -60,13 +64,17 @@
         mCallList.notifyCreateOutgoingConnectionFailed(request);
     }
 
-
     private Connection createSelfManagedConnection(ConnectionRequest request, boolean isIncoming) {
         SelfManagedConnection connection = new SelfManagedConnection(mCallList,
                 getApplicationContext(), isIncoming);
         connection.setListener(mCallList.getConnectionListener());
         connection.setConnectionProperties(Connection.PROPERTY_SELF_MANAGED);
         connection.setAddress(request.getAddress(), TelecomManager.PRESENTATION_ALLOWED);
+        connection.setAudioModeIsVoip(true);
+        connection.setVideoState(request.getVideoState());
+        Random random = new Random();
+        connection.setCallerDisplayName(TEST_NAMES[random.nextInt(TEST_NAMES.length)],
+                TelecomManager.PRESENTATION_ALLOWED);
         connection.setExtras(request.getExtras());
         if (isIncoming) {
             connection.setIsIncomingCallUiShowing(request.shouldShowIncomingCallUi());
diff --git a/testapps/src/com/android/server/telecom/testapps/TestConnectionService.java b/testapps/src/com/android/server/telecom/testapps/TestConnectionService.java
index 71af9a8..ac239b9 100644
--- a/testapps/src/com/android/server/telecom/testapps/TestConnectionService.java
+++ b/testapps/src/com/android/server/telecom/testapps/TestConnectionService.java
@@ -286,7 +286,6 @@
             if (rttTextStream != null) {
                 mRttChatbot = new RttChatbot(getApplicationContext(), rttTextStream);
                 mRttChatbot.start();
-                setConnectionProperties(getConnectionProperties() | PROPERTY_IS_RTT);
                 sendRttInitiationSuccess();
             }
         }
@@ -298,7 +297,6 @@
                 Log.i(this, "Accepting RTT request.");
                 mRttChatbot = new RttChatbot(getApplicationContext(), textStream);
                 mRttChatbot.start();
-                setConnectionProperties(getConnectionProperties() | PROPERTY_IS_RTT);
                 sendRttInitiationSuccess();
             } else {
                 sendRttInitiationFailure(RttModifyStatus.SESSION_MODIFY_REQUEST_FAIL);
diff --git a/testapps/src/com/android/server/telecom/testapps/TestInCallServiceBroadcastReceiver.java b/testapps/src/com/android/server/telecom/testapps/TestInCallServiceBroadcastReceiver.java
index b6902bf..3371060 100644
--- a/testapps/src/com/android/server/telecom/testapps/TestInCallServiceBroadcastReceiver.java
+++ b/testapps/src/com/android/server/telecom/testapps/TestInCallServiceBroadcastReceiver.java
@@ -19,6 +19,7 @@
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
+import android.telecom.TelecomManager;
 import android.util.Log;
 
 /**
@@ -56,6 +57,12 @@
         } else if (ACTION_SEND_UPGRADE_RESPONSE.equals(action)) {
             final int videoState = Integer.parseInt(intent.getData().getSchemeSpecificPart());
             TestCallList.getInstance().sendUpgradeToVideoResponse(videoState);
+        } else if (TelecomManager.ACTION_PHONE_ACCOUNT_REGISTERED.equals(action)) {
+            Log.i(TAG, "onReceive: registered " + intent.getExtras().get(
+                    TelecomManager.EXTRA_PHONE_ACCOUNT_HANDLE));
+        } else if (TelecomManager.ACTION_PHONE_ACCOUNT_UNREGISTERED.equals(action)) {
+            Log.i(TAG, "onReceive: unregistered " + intent.getExtras().get(
+                    TelecomManager.EXTRA_PHONE_ACCOUNT_HANDLE));
         }
     }
 }
diff --git a/testapps/src/com/android/server/telecom/testapps/TestRttActivity.java b/testapps/src/com/android/server/telecom/testapps/TestRttActivity.java
index 9bb6977..b78a48a 100644
--- a/testapps/src/com/android/server/telecom/testapps/TestRttActivity.java
+++ b/testapps/src/com/android/server/telecom/testapps/TestRttActivity.java
@@ -93,7 +93,12 @@
                     }
                     // inner read loop
                     while (true) {
-                        String receivedText = rttCall.read();
+                        String receivedText;
+                        try {
+                            receivedText = rttCall.read();
+                        } catch (IOException e) {
+                            break;
+                        }
                         if (receivedText == null) {
                             if (Thread.currentThread().isInterrupted()) {
                                 break begin;
diff --git a/testapps/src/com/android/server/telecom/testapps/TestUssdActivity.java b/testapps/src/com/android/server/telecom/testapps/TestUssdActivity.java
new file mode 100644
index 0000000..3b1f4e9
--- /dev/null
+++ b/testapps/src/com/android/server/telecom/testapps/TestUssdActivity.java
@@ -0,0 +1,80 @@
+package com.android.server.telecom.testapps;
+
+import android.app.Activity;
+import android.content.Context;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Looper;
+import android.util.Log;
+import android.telephony.TelephonyManager;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.EditText;
+import android.widget.Toast;
+
+public class TestUssdActivity extends Activity {
+
+    private EditText mUssdNumberView;
+    private static Context context;
+    public static final String LOG_TAG = "TestUssdActivity";
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        TestUssdActivity.context = getApplicationContext();
+
+        setContentView(R.layout.testussd_main);
+        findViewById(R.id.place_ussd_button).setOnClickListener(new OnClickListener() {
+            @Override
+            public void onClick(View v) {
+
+                placeUssdRequest();
+            }
+        });
+
+        mUssdNumberView = (EditText) findViewById(R.id.number);
+    }
+
+    public static final class OnReceiveUssdResponseCallback extends
+        TelephonyManager.OnReceiveUssdResponseCallback {
+
+            OnReceiveUssdResponseCallback() {
+            }
+
+            public void onReceiveUssdResponse(String req, CharSequence message) {
+                Log.i(LOG_TAG, "USSD Success:::" + req + "," + message);
+                showToast("USSD Response Successly received for code:" + req + "," + message);
+            }
+
+            public void onReceiveUssdResponseFailed(String req, int resultCode) {
+                Log.i(LOG_TAG, "USSD Fail:::" + req + "," + resultCode);
+                showToast("USSD Response failed for code:" + req + "," + resultCode);
+            }
+    }
+
+    private void placeUssdRequest() {
+
+        String mUssdNumber = mUssdNumberView.getText().toString();
+        if (mUssdNumber.equals("") || mUssdNumber == null) {
+            mUssdNumber = "932";
+        }
+        mUssdNumber = "#" + mUssdNumber + "#";
+        final TelephonyManager telephonyManager =
+                (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
+        try {
+            Handler h = new Handler(Looper.getMainLooper());
+            OnReceiveUssdResponseCallback receiveUssdResponseCallback =
+                    new OnReceiveUssdResponseCallback();
+
+            telephonyManager.sendUssdRequest(mUssdNumber, receiveUssdResponseCallback, h);
+
+        } catch (SecurityException e) {
+            showToast("Permission check failed");
+            return;
+        }
+    }
+
+    private static void showToast(String message) {
+        Toast.makeText(TestUssdActivity.context, message, Toast.LENGTH_SHORT).show();
+    }
+}
\ No newline at end of file
diff --git a/tests/src/com/android/server/telecom/tests/BluetoothPhoneServiceTest.java b/tests/src/com/android/server/telecom/tests/BluetoothPhoneServiceTest.java
index bba7c5a..300415a 100644
--- a/tests/src/com/android/server/telecom/tests/BluetoothPhoneServiceTest.java
+++ b/tests/src/com/android/server/telecom/tests/BluetoothPhoneServiceTest.java
@@ -48,6 +48,7 @@
 import java.util.ArrayList;
 import java.util.LinkedList;
 
+import static org.mockito.ArgumentMatchers.nullable;
 import static org.mockito.Matchers.any;
 import static org.mockito.Matchers.anyBoolean;
 import static org.mockito.Matchers.anyChar;
@@ -190,7 +191,7 @@
         Call mockCall = createForegroundCall();
         PhoneAccount fakePhoneAccount = makeQuickAccount("id0", TEST_ACCOUNT_INDEX);
         when(mMockPhoneAccountRegistrar.getPhoneAccountOfCurrentUser(
-                any(PhoneAccountHandle.class))).thenReturn(fakePhoneAccount);
+                nullable(PhoneAccountHandle.class))).thenReturn(fakePhoneAccount);
 
         String networkOperator = mBluetoothPhoneService.mBinder.getNetworkOperator();
 
@@ -211,7 +212,7 @@
         Call mockCall = createForegroundCall();
         PhoneAccount fakePhoneAccount = makeQuickAccount("id0", TEST_ACCOUNT_INDEX);
         when(mMockPhoneAccountRegistrar.getPhoneAccountOfCurrentUser(
-                any(PhoneAccountHandle.class))).thenReturn(fakePhoneAccount);
+                nullable(PhoneAccountHandle.class))).thenReturn(fakePhoneAccount);
 
         String subscriberNumber = mBluetoothPhoneService.mBinder.getSubscriberNumber();
 
@@ -223,9 +224,9 @@
         Call mockCall = createForegroundCall();
         String fakeNumber = "8675309";
         when(mMockPhoneAccountRegistrar.getPhoneAccountOfCurrentUser(
-                any(PhoneAccountHandle.class))).thenReturn(null);
+                nullable(PhoneAccountHandle.class))).thenReturn(null);
         when(mMockPhoneAccountRegistrar.getPhoneAccountUnchecked(
-                any(PhoneAccountHandle.class))).thenReturn(null);
+                nullable(PhoneAccountHandle.class))).thenReturn(null);
         when(TelephonyManager.from(mContext).getLine1Number()).thenReturn(fakeNumber);
 
         String subscriberNumber = mBluetoothPhoneService.mBinder.getSubscriberNumber();
@@ -297,7 +298,7 @@
         mBluetoothPhoneService.mCallsManagerListener.onIsConferencedChanged(parentCall);
         // Make sure the call has only occurred collectively 2 times (not on the third)
         verify(mMockBluetoothHeadset, times(2)).phoneStateChanged(any(int.class),
-                any(int.class), any(int.class), any(String.class), any(int.class));
+                any(int.class), any(int.class), nullable(String.class), any(int.class));
     }
 
     @MediumTest
@@ -401,7 +402,7 @@
                 "5550000", PhoneNumberUtils.TOA_Unknown);
         verify(mMockBluetoothHeadset).clccResponse(0, 0, 0, 0, false, null, 0);
         verify(mMockBluetoothHeadset, times(2)).clccResponse(anyInt(),
-                anyInt(), anyInt(), anyInt(), anyBoolean(), anyString(), anyInt());
+                anyInt(), anyInt(), anyInt(), anyBoolean(), nullable(String.class), anyInt());
     }
 
     @MediumTest
@@ -416,7 +417,7 @@
         mBluetoothPhoneService.mBinder.listCurrentCalls();
         verify(mMockBluetoothHeadset).clccResponse(0, 0, 0, 0, false, null, 0);
         verify(mMockBluetoothHeadset, times(1)).clccResponse(anyInt(),
-                anyInt(), anyInt(), anyInt(), anyBoolean(), anyString(), anyInt());
+                anyInt(), anyInt(), anyInt(), anyBoolean(), nullable(String.class), anyInt());
     }
 
     @MediumTest
@@ -436,7 +437,7 @@
                 "5550000", PhoneNumberUtils.TOA_Unknown);
         verify(mMockBluetoothHeadset).clccResponse(0, 0, 0, 0, false, null, 0);
         verify(mMockBluetoothHeadset, times(2)).clccResponse(anyInt(),
-                anyInt(), anyInt(), anyInt(), anyBoolean(), anyString(), anyInt());
+                anyInt(), anyInt(), anyInt(), anyBoolean(), nullable(String.class), anyInt());
     }
 
     @MediumTest
@@ -490,7 +491,7 @@
                 "5550000", PhoneNumberUtils.TOA_Unknown);
         verify(mMockBluetoothHeadset).clccResponse(0, 0, 0, 0, false, null, 0);
         verify(mMockBluetoothHeadset, times(2)).clccResponse(anyInt(),
-                anyInt(), anyInt(), anyInt(), anyBoolean(), anyString(), anyInt());
+                anyInt(), anyInt(), anyInt(), anyBoolean(), nullable(String.class), anyInt());
     }
 
     @MediumTest
@@ -519,7 +520,7 @@
                 "5550001", PhoneNumberUtils.TOA_Unknown);
         verify(mMockBluetoothHeadset).clccResponse(0, 0, 0, 0, false, null, 0);
         verify(mMockBluetoothHeadset, times(3)).clccResponse(anyInt(),
-                anyInt(), anyInt(), anyInt(), anyBoolean(), anyString(), anyInt());
+                anyInt(), anyInt(), anyInt(), anyBoolean(), nullable(String.class), anyInt());
     }
 
     @MediumTest
@@ -607,7 +608,7 @@
 
         boolean didProcess = mBluetoothPhoneService.mBinder.processChld(CHLD_TYPE_RELEASEHELD);
 
-        verify(mMockCallsManager).rejectCall(eq(ringingCall), eq(false), any(String.class));
+        verify(mMockCallsManager).rejectCall(eq(ringingCall), eq(false), nullable(String.class));
         assertEquals(didProcess, true);
     }
 
diff --git a/tests/src/com/android/server/telecom/tests/BluetoothRouteManagerTest.java b/tests/src/com/android/server/telecom/tests/BluetoothRouteManagerTest.java
index e6cb7bf..9b94f63 100644
--- a/tests/src/com/android/server/telecom/tests/BluetoothRouteManagerTest.java
+++ b/tests/src/com/android/server/telecom/tests/BluetoothRouteManagerTest.java
@@ -39,9 +39,8 @@
 import java.util.List;
 import java.util.Objects;
 
-import static org.mockito.Matchers.any;
+import static org.mockito.ArgumentMatchers.nullable;
 import static org.mockito.Matchers.anyInt;
-import static org.mockito.Matchers.anyString;
 import static org.mockito.Matchers.eq;
 import static org.mockito.Mockito.doAnswer;
 import static org.mockito.Mockito.mock;
@@ -228,7 +227,7 @@
                 BluetoothRouteManager.AUDIO_OFF_STATE_NAME, null);
         setupConnectedDevices(new BluetoothDevice[]{device1}, null);
         when(mTimeoutsAdapter.getRetryBluetoothConnectAudioBackoffMillis(
-                any(ContentResolver.class))).thenReturn(0L);
+                nullable(ContentResolver.class))).thenReturn(0L);
         when(mHeadsetProxy.connectAudio()).thenReturn(false);
         executeRoutingAction(sm, BluetoothRouteManager.CONNECT_HFP, null);
         // Wait 3 times: for the first connection attempt, the retry attempt, and once more to
@@ -249,7 +248,7 @@
                 BluetoothRouteManager.AUDIO_CONNECTED_STATE_NAME_PREFIX, device1);
         setupConnectedDevices(new BluetoothDevice[]{device1, device2}, null);
         when(mTimeoutsAdapter.getRetryBluetoothConnectAudioBackoffMillis(
-                any(ContentResolver.class))).thenReturn(0L);
+                nullable(ContentResolver.class))).thenReturn(0L);
         when(mHeadsetProxy.connectAudio()).thenReturn(false);
         executeRoutingAction(sm, BluetoothRouteManager.CONNECT_HFP, device2.getAddress());
         // Wait 3 times: the first connection attempt is accounted for in executeRoutingAction,
@@ -426,7 +425,7 @@
             BluetoothDevice first = getFirstExcluding(devices,
                     (String) invocation.getArguments()[0]);
             return first == null ? null : first.getAddress();
-        }).when(mDeviceManager).getMostRecentlyConnectedDevice(anyString());
+        }).when(mDeviceManager).getMostRecentlyConnectedDevice(nullable(String.class));
     }
 
     private void executeRoutingAction(BluetoothRouteManager brm, int message, String device) {
@@ -457,9 +456,9 @@
         when(mDeviceManager.getHeadsetService()).thenReturn(mHeadsetProxy);
         when(mHeadsetProxy.connectAudio()).thenReturn(true);
         when(mTimeoutsAdapter.getRetryBluetoothConnectAudioBackoffMillis(
-                any(ContentResolver.class))).thenReturn(100000L);
+                nullable(ContentResolver.class))).thenReturn(100000L);
         when(mTimeoutsAdapter.getBluetoothPendingTimeoutMillis(
-                any(ContentResolver.class))).thenReturn(100000L);
+                nullable(ContentResolver.class))).thenReturn(100000L);
     }
 
     private static BluetoothDevice getFirstExcluding(
diff --git a/tests/src/com/android/server/telecom/tests/CallAudioManagerTest.java b/tests/src/com/android/server/telecom/tests/CallAudioManagerTest.java
index 34325f0..488ac29 100644
--- a/tests/src/com/android/server/telecom/tests/CallAudioManagerTest.java
+++ b/tests/src/com/android/server/telecom/tests/CallAudioManagerTest.java
@@ -36,10 +36,13 @@
 import org.mockito.Mock;
 
 import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.stream.Collectors;
 
 import static org.mockito.Matchers.any;
 import static org.mockito.Matchers.anyInt;
 import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.atLeastOnce;
 import static org.mockito.Mockito.doAnswer;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.times;
@@ -79,6 +82,69 @@
     }
 
     @MediumTest
+    public void testUnmuteOfSecondIncomingCall() {
+        // Start with a single incoming call.
+        Call call = createIncomingCall();
+        when(call.can(android.telecom.Call.Details.CAPABILITY_SPEED_UP_MT_AUDIO))
+                .thenReturn(false);
+        when(call.getId()).thenReturn("1");
+
+        ArgumentCaptor<CallAudioModeStateMachine.MessageArgs> captor =
+                ArgumentCaptor.forClass(CallAudioModeStateMachine.MessageArgs.class);
+        // Answer the incoming call
+        mCallAudioManager.onIncomingCallAnswered(call);
+        when(call.getState()).thenReturn(CallState.ACTIVE);
+        mCallAudioManager.onCallStateChanged(call, CallState.RINGING, CallState.ACTIVE);
+        verify(mCallAudioModeStateMachine).sendMessageWithArgs(
+                eq(CallAudioModeStateMachine.NO_MORE_RINGING_CALLS), captor.capture());
+        CallAudioModeStateMachine.MessageArgs correctArgs =
+                new CallAudioModeStateMachine.MessageArgs(
+                        true, // hasActiveOrDialingCalls
+                        false, // hasRingingCalls
+                        false, // hasHoldingCalls
+                        false, // isTonePlaying
+                        false, // foregroundCallIsVoip
+                        null // session
+                );
+        assertMessageArgEquality(correctArgs, captor.getValue());
+        verify(mCallAudioModeStateMachine).sendMessageWithArgs(
+                eq(CallAudioModeStateMachine.NEW_ACTIVE_OR_DIALING_CALL), captor.capture());
+        assertMessageArgEquality(correctArgs, captor.getValue());
+
+        // Mute the current ongoing call.
+        mCallAudioManager.mute(true);
+
+        // Create a second incoming call.
+        Call call2 = mock(Call.class);
+        when(call2.getState()).thenReturn(CallState.RINGING);
+        when(call2.can(android.telecom.Call.Details.CAPABILITY_SPEED_UP_MT_AUDIO))
+                .thenReturn(false);
+        when(call2.getId()).thenReturn("2");
+        mCallAudioManager.onCallAdded(call2);
+
+        // Answer the incoming call
+        mCallAudioManager.onIncomingCallAnswered(call);
+
+        // Capture the calls to sendMessageWithSessionInfo; we want to look for mute on and off
+        // messages and make sure that there was a mute on before the mute off.
+        ArgumentCaptor<Integer> muteCaptor = ArgumentCaptor.forClass(Integer.class);
+        verify(mCallAudioRouteStateMachine, atLeastOnce())
+                .sendMessageWithSessionInfo(muteCaptor.capture());
+        List<Integer> values = muteCaptor.getAllValues();
+        values = values.stream()
+                .filter(value -> value == CallAudioRouteStateMachine.MUTE_ON ||
+                        value == CallAudioRouteStateMachine.MUTE_OFF)
+                .collect(Collectors.toList());
+
+        // Make sure we got a mute on and a mute off.
+        assertTrue(values.contains(CallAudioRouteStateMachine.MUTE_ON));
+        assertTrue(values.contains(CallAudioRouteStateMachine.MUTE_OFF));
+        // And that the mute on happened before the off.
+        assertTrue(values.indexOf(CallAudioRouteStateMachine.MUTE_ON) < values
+                .lastIndexOf(CallAudioRouteStateMachine.MUTE_OFF));
+    }
+
+    @MediumTest
     public void testSingleIncomingCallFlowWithoutMTSpeedUp() {
         Call call = createIncomingCall();
         when(call.can(android.telecom.Call.Details.CAPABILITY_SPEED_UP_MT_AUDIO))
diff --git a/tests/src/com/android/server/telecom/tests/CallAudioRouteStateMachineTest.java b/tests/src/com/android/server/telecom/tests/CallAudioRouteStateMachineTest.java
index 14fdf05..95d6d51 100644
--- a/tests/src/com/android/server/telecom/tests/CallAudioRouteStateMachineTest.java
+++ b/tests/src/com/android/server/telecom/tests/CallAudioRouteStateMachineTest.java
@@ -20,6 +20,7 @@
 import android.content.Context;
 import android.media.AudioManager;
 import android.media.IAudioService;
+import android.os.Handler;
 import android.telecom.CallAudioState;
 import android.test.suitebuilder.annotation.LargeTest;
 import android.test.suitebuilder.annotation.MediumTest;
@@ -988,6 +989,8 @@
             verify(mMockInterruptionFilterProxy, never()).setInterruptionFilter(anyInt());
         }
 
+        Handler h = stateMachine.getHandler();
+        waitForHandlerAction(h, TEST_TIMEOUT);
         stateMachine.quitStateMachine();
 
         // Verify interactions with the speakerphone and bluetooth systems
diff --git a/tests/src/com/android/server/telecom/tests/CallScreeningServiceFilterTest.java b/tests/src/com/android/server/telecom/tests/CallScreeningServiceFilterTest.java
index 3767914..6782d52 100644
--- a/tests/src/com/android/server/telecom/tests/CallScreeningServiceFilterTest.java
+++ b/tests/src/com/android/server/telecom/tests/CallScreeningServiceFilterTest.java
@@ -48,6 +48,7 @@
 
 import java.util.Collections;
 
+import static org.mockito.ArgumentMatchers.nullable;
 import static org.mockito.Matchers.any;
 import static org.mockito.Matchers.anyBoolean;
 import static org.mockito.Matchers.anyInt;
@@ -110,11 +111,11 @@
 
         when(mDefaultDialerCache.getDefaultDialerApplication(eq(UserHandle.USER_CURRENT)))
                 .thenReturn(PKG_NAME);
-        when(mPackageManager.queryIntentServicesAsUser(any(Intent.class), anyInt(), anyInt()))
+        when(mPackageManager.queryIntentServicesAsUser(nullable(Intent.class), anyInt(), anyInt()))
                 .thenReturn(Collections.singletonList(mResolveInfo));
         when(mParcelableCallUtilsConverter.toParcelableCall(
                 eq(mCall), anyBoolean(), eq(mPhoneAccountRegistrar))).thenReturn(null);
-        when(mContext.bindServiceAsUser(any(Intent.class), any(ServiceConnection.class),
+        when(mContext.bindServiceAsUser(nullable(Intent.class), nullable(ServiceConnection.class),
                 anyInt(), eq(UserHandle.CURRENT))).thenReturn(true);
     }
 
@@ -128,7 +129,7 @@
 
     @SmallTest
     public void testNoResolveEntries() {
-        when(mPackageManager.queryIntentServicesAsUser(any(Intent.class), anyInt(), anyInt()))
+        when(mPackageManager.queryIntentServicesAsUser(nullable(Intent.class), anyInt(), anyInt()))
                 .thenReturn(Collections.emptyList());
         mFilter.startFilterLookup(mCall, mCallback);
         verify(mCallback).onCallFilteringComplete(eq(mCall), eq(PASS_RESULT));
@@ -150,7 +151,7 @@
 
     @SmallTest
     public void testContextFailToBind() {
-        when(mContext.bindServiceAsUser(any(Intent.class), any(ServiceConnection.class),
+        when(mContext.bindServiceAsUser(nullable(Intent.class), nullable(ServiceConnection.class),
                 anyInt(), eq(UserHandle.CURRENT))).thenReturn(false);
         mFilter.startFilterLookup(mCall, mCallback);
         verify(mCallback).onCallFilteringComplete(eq(mCall), eq(PASS_RESULT));
@@ -159,7 +160,7 @@
     @SmallTest
     public void testExceptionInScreeningService() throws Exception {
         doThrow(new RemoteException()).when(mCallScreeningService).screenCall(
-                any(ICallScreeningAdapter.class), any(ParcelableCall.class));
+                nullable(ICallScreeningAdapter.class), nullable(ParcelableCall.class));
         mFilter.startFilterLookup(mCall, mCallback);
         ServiceConnection serviceConnection = verifyBindingIntent();
         serviceConnection.onServiceConnected(COMPONENT_NAME, mBinder);
@@ -214,7 +215,7 @@
     private ICallScreeningAdapter getCallScreeningAdapter() throws Exception {
         ArgumentCaptor<ICallScreeningAdapter> captor =
                 ArgumentCaptor.forClass(ICallScreeningAdapter.class);
-        verify(mCallScreeningService).screenCall(captor.capture(), any(ParcelableCall.class));
+        verify(mCallScreeningService).screenCall(captor.capture(), nullable(ParcelableCall.class));
         return captor.getValue();
     }
 }
diff --git a/tests/src/com/android/server/telecom/tests/ComponentContextFixture.java b/tests/src/com/android/server/telecom/tests/ComponentContextFixture.java
index fa5b6f0..255af74 100644
--- a/tests/src/com/android/server/telecom/tests/ComponentContextFixture.java
+++ b/tests/src/com/android/server/telecom/tests/ComponentContextFixture.java
@@ -37,6 +37,7 @@
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.content.ServiceConnection;
+import android.content.pm.ApplicationInfo;
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
 import android.content.pm.ServiceInfo;
@@ -209,6 +210,11 @@
         }
 
         @Override
+        public ApplicationInfo getApplicationInfo() {
+            return mTestApplicationInfo;
+        }
+
+        @Override
         public ContentResolver getContentResolver() {
             return new ContentResolver(mApplicationContextSpy) {
                 @Override
@@ -423,6 +429,7 @@
     private final CountryDetector mCountryDetector = mock(CountryDetector.class);
     private final Map<String, IContentProvider> mIContentProviderByUri = new HashMap<>();
     private final Configuration mResourceConfiguration = new Configuration();
+    private final ApplicationInfo mTestApplicationInfo = new ApplicationInfo();
 
     private TelecomManager mTelecomManager = null;
 
diff --git a/tests/src/com/android/server/telecom/tests/CreateConnectionProcessorTest.java b/tests/src/com/android/server/telecom/tests/CreateConnectionProcessorTest.java
index 0104172..350afa3 100644
--- a/tests/src/com/android/server/telecom/tests/CreateConnectionProcessorTest.java
+++ b/tests/src/com/android/server/telecom/tests/CreateConnectionProcessorTest.java
@@ -39,6 +39,7 @@
 
 import java.util.ArrayList;
 
+import static org.mockito.ArgumentMatchers.nullable;
 import static org.mockito.Matchers.any;
 import static org.mockito.Matchers.eq;
 import static org.mockito.Mockito.mock;
@@ -242,7 +243,7 @@
         // Put in a regular phone account to be sure it doesn't call that
         PhoneAccountHandle pAHandle = getNewTargetPhoneAccountHandle("tel_acct");
         when(mMockAccountRegistrar.getOutgoingPhoneAccountForSchemeOfCurrentUser(
-                any(String.class))).thenReturn(pAHandle);
+                nullable(String.class))).thenReturn(pAHandle);
         // Include a normal Connection Manager to be sure it doesn't call that
         PhoneAccount callManagerPA = getNewConnectionManagerPhoneAccount("cm_acct", 0);
         // Include a connection Manager for the user with the capability to make calls
diff --git a/tests/src/com/android/server/telecom/tests/InCallControllerTests.java b/tests/src/com/android/server/telecom/tests/InCallControllerTests.java
index c44f92c..eb0c419 100644
--- a/tests/src/com/android/server/telecom/tests/InCallControllerTests.java
+++ b/tests/src/com/android/server/telecom/tests/InCallControllerTests.java
@@ -60,6 +60,7 @@
 import java.util.Collections;
 import java.util.LinkedList;
 
+import static org.mockito.ArgumentMatchers.nullable;
 import static org.mockito.Matchers.any;
 import static org.mockito.Matchers.anyInt;
 import static org.mockito.Matchers.anyString;
@@ -406,11 +407,11 @@
         when(mMockCall.isIncoming()).thenReturn(true);
         when(mMockCall.isExternalCall()).thenReturn(false);
         when(mDefaultDialerCache.getDefaultDialerApplication(CURRENT_USER_ID)).thenReturn(DEF_PKG);
-        when(mMockContext.bindServiceAsUser(
-                any(Intent.class), any(ServiceConnection.class), anyInt(), any(UserHandle.class)))
+        when(mMockContext.bindServiceAsUser(nullable(Intent.class),
+                nullable(ServiceConnection.class), anyInt(), nullable(UserHandle.class)))
                 .thenReturn(true);
-        when(mTimeoutsAdapter.getCallRemoveUnbindInCallServicesDelay(any(ContentResolver.class)))
-                .thenReturn(500L);
+        when(mTimeoutsAdapter.getCallRemoveUnbindInCallServicesDelay(
+                nullable(ContentResolver.class))).thenReturn(500L);
 
         when(mMockCallsManager.getCalls()).thenReturn(Collections.singletonList(mMockCall));
         setupMockPackageManager(true /* default */, true /* system */, false /* external calls */);
@@ -438,7 +439,7 @@
         when(mockBinder.queryLocalInterface(anyString())).thenReturn(mockInCallService);
 
         serviceConnection.onServiceConnected(defDialerComponentName, mockBinder);
-        verify(mockInCallService).setInCallAdapter(any(IInCallAdapter.class));
+        verify(mockInCallService).setInCallAdapter(nullable(IInCallAdapter.class));
         verify(mMockContext, never()).unbindService(serviceConnection);
         verify(mockInCallService, never()).addCall(any(ParcelableCall.class));
 
diff --git a/tests/src/com/android/server/telecom/tests/IncomingCallNotifierTest.java b/tests/src/com/android/server/telecom/tests/IncomingCallNotifierTest.java
new file mode 100644
index 0000000..c842379
--- /dev/null
+++ b/tests/src/com/android/server/telecom/tests/IncomingCallNotifierTest.java
@@ -0,0 +1,130 @@
+/*
+ * Copyright (C) 2017 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.server.telecom.tests;
+
+import android.app.Notification;
+import android.app.NotificationManager;
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.content.res.Resources;
+import android.os.Build;
+import android.telecom.VideoProfile;
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.server.telecom.Call;
+import com.android.server.telecom.CallState;
+import com.android.server.telecom.ui.IncomingCallNotifier;
+
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Matchers.isNull;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+/**
+ * Tests for the {@link com.android.server.telecom.ui.IncomingCallNotifier} class.
+ */
+public class IncomingCallNotifierTest extends TelecomTestCase {
+
+    @Mock private IncomingCallNotifier.CallsManagerProxy mCallsManagerProxy;
+    @Mock private Call mAudioCall;
+    @Mock private Call mVideoCall;
+    @Mock private Call mRingingCall;
+    private IncomingCallNotifier mIncomingCallNotifier;
+    private NotificationManager mNotificationManager;
+
+    public void setUp() throws Exception {
+        super.setUp();
+        mContext = mComponentContextFixture.getTestDouble().getApplicationContext();
+        ApplicationInfo info = new ApplicationInfo();
+        info.targetSdkVersion = Build.VERSION_CODES.N_MR1;
+        doReturn(info).when(mContext).getApplicationInfo();
+        doReturn(null).when(mContext).getTheme();
+        mNotificationManager = (NotificationManager) mContext.getSystemService(
+                Context.NOTIFICATION_SERVICE);
+        mIncomingCallNotifier = new IncomingCallNotifier(mContext);
+        mIncomingCallNotifier.setCallsManagerProxy(mCallsManagerProxy);
+
+        when(mAudioCall.getVideoState()).thenReturn(VideoProfile.STATE_AUDIO_ONLY);
+        when(mAudioCall.getTargetPhoneAccountLabel()).thenReturn("Bar");
+        when(mVideoCall.getVideoState()).thenReturn(VideoProfile.STATE_BIDIRECTIONAL);
+        when(mVideoCall.getTargetPhoneAccountLabel()).thenReturn("Bar");
+        when(mRingingCall.isSelfManaged()).thenReturn(true);
+        when(mRingingCall.isIncoming()).thenReturn(true);
+        when(mRingingCall.getState()).thenReturn(CallState.RINGING);
+        when(mRingingCall.getVideoState()).thenReturn(VideoProfile.STATE_AUDIO_ONLY);
+        when(mRingingCall.getTargetPhoneAccountLabel()).thenReturn("Foo");
+    }
+
+    /**
+     * Add a call that isn't ringing.
+     */
+    @SmallTest
+    public void testSingleCall() {
+        mIncomingCallNotifier.onCallAdded(mAudioCall);
+        verify(mNotificationManager, never()).notify(
+                eq(IncomingCallNotifier.NOTIFICATION_INCOMING_CALL), any());
+    }
+
+    /**
+     * Add a ringing call when there is no other ongoing call.
+     */
+    @SmallTest
+    public void testIncomingDuringOngoingCall() {
+        when(mCallsManagerProxy.hasCallsForOtherPhoneAccount(any())).thenReturn(false);
+        mIncomingCallNotifier.onCallAdded(mRingingCall);
+        verify(mNotificationManager, never()).notify(
+                eq(IncomingCallNotifier.NOTIFICATION_INCOMING_CALL), any());
+    }
+
+    /**
+     * Add a ringing call with another call ongoing, not from a different phone account.
+     */
+    @SmallTest
+    public void testIncomingDuringOngoingCall2() {
+        when(mCallsManagerProxy.hasCallsForOtherPhoneAccount(any())).thenReturn(false);
+        when(mCallsManagerProxy.getNumCallsForOtherPhoneAccount(any())).thenReturn(0);
+        when(mCallsManagerProxy.getActiveCall()).thenReturn(mAudioCall);
+
+        mIncomingCallNotifier.onCallAdded(mAudioCall);
+        mIncomingCallNotifier.onCallAdded(mRingingCall);
+        verify(mNotificationManager, never()).notify(
+                eq(IncomingCallNotifier.NOTIFICATION_INCOMING_CALL), any());;
+    }
+
+    /**
+     * Remove ringing call with another call ongoing.
+     */
+    @SmallTest
+    public void testCallRemoved() {
+        when(mCallsManagerProxy.hasCallsForOtherPhoneAccount(any())).thenReturn(true);
+        when(mCallsManagerProxy.getNumCallsForOtherPhoneAccount(any())).thenReturn(1);
+        when(mCallsManagerProxy.getActiveCall()).thenReturn(mAudioCall);
+
+        mIncomingCallNotifier.onCallAdded(mAudioCall);
+        mIncomingCallNotifier.onCallAdded(mRingingCall);
+        verify(mNotificationManager).notify(
+                eq(IncomingCallNotifier.NOTIFICATION_INCOMING_CALL), any());
+        mIncomingCallNotifier.onCallRemoved(mRingingCall);
+        verify(mNotificationManager).cancel(eq(IncomingCallNotifier.NOTIFICATION_INCOMING_CALL));
+    }
+}
diff --git a/tests/src/com/android/server/telecom/tests/MissedCallNotifierImplTest.java b/tests/src/com/android/server/telecom/tests/MissedCallNotifierImplTest.java
index 13a85af..0baad91 100644
--- a/tests/src/com/android/server/telecom/tests/MissedCallNotifierImplTest.java
+++ b/tests/src/com/android/server/telecom/tests/MissedCallNotifierImplTest.java
@@ -60,6 +60,7 @@
 import java.util.LinkedList;
 import java.util.List;
 
+import static org.mockito.ArgumentMatchers.nullable;
 import static org.mockito.Matchers.any;
 import static org.mockito.Matchers.anyString;
 import static org.mockito.Matchers.eq;
@@ -207,9 +208,9 @@
         ArgumentCaptor<Integer> requestIdCaptor = ArgumentCaptor.forClass(
                 Integer.class);
         verify(mNotificationManager, times(2)).notifyAsUser(isNull(String.class),
-                requestIdCaptor.capture(), any(Notification.class), eq(userHandle));
-        verify(mNotificationManager).cancelAsUser(any(String.class), eq(requestIdCaptor.getValue()),
-                eq(userHandle));
+                requestIdCaptor.capture(), nullable(Notification.class), eq(userHandle));
+        verify(mNotificationManager).cancelAsUser(nullable(String.class),
+                eq(requestIdCaptor.getValue()), eq(userHandle));
 
         // Verify that the second call to showMissedCallNotification behaves like it were the first.
         verify(builder2).setContentText(CALLER_NAME);
@@ -423,15 +424,15 @@
                         CallLog.Calls.PRESENTATION_ALLOWED, CALL_TIMESTAMP)
                 .build();
 
-        when(cp.query(anyString(), eq(queryUri), any(String[].class), anyString(), any
-                (String[].class), anyString(), any(ICancellationSignal.class)))
+        when(cp.query(anyString(), eq(queryUri), nullable(String[].class), nullable(String.class),
+                nullable(String[].class), nullable(String.class), any(ICancellationSignal.class)))
                 .thenReturn(mockMissedCallsCursor);
 
         PhoneAccount phoneAccount = makePhoneAccount(PRIMARY_USER, NO_CAPABILITY);
         MissedCallNotifier.CallInfo fakeCallInfo = makeFakeCallInfo(TEL_CALL_HANDLE,
                 CALLER_NAME, CALL_TIMESTAMP, phoneAccount.getAccountHandle());
-        when(mockCallInfoFactory.makeCallInfo(any(CallerInfo.class),
-                any(PhoneAccountHandle.class), any(Uri.class), eq(CALL_TIMESTAMP)))
+        when(mockCallInfoFactory.makeCallInfo(nullable(CallerInfo.class),
+                nullable(PhoneAccountHandle.class), nullable(Uri.class), eq(CALL_TIMESTAMP)))
                 .thenReturn(fakeCallInfo);
 
         Notification.Builder builder1 = makeNotificationBuilder("builder1");
@@ -491,15 +492,15 @@
                 PRIMARY_USER.getIdentifier());
         IContentProvider cp = getContentProviderForUser(PRIMARY_USER.getIdentifier());
 
-        when(cp.query(anyString(), eq(queryUri), any(String[].class), anyString(), any
-                (String[].class), anyString(), any(ICancellationSignal.class)))
+        when(cp.query(anyString(), eq(queryUri), nullable(String[].class), nullable(String.class),
+                nullable(String[].class), nullable(String.class), any(ICancellationSignal.class)))
                 .thenReturn(mockMissedCallsCursor);
 
         PhoneAccount phoneAccount = makePhoneAccount(PRIMARY_USER, NO_CAPABILITY);
         MissedCallNotifier.CallInfo fakeCallInfo = makeFakeCallInfo(TEL_CALL_HANDLE,
                 CALLER_NAME, CALL_TIMESTAMP, phoneAccount.getAccountHandle());
-        when(mockCallInfoFactory.makeCallInfo(any(CallerInfo.class),
-                any(PhoneAccountHandle.class), any(Uri.class), eq(CALL_TIMESTAMP)))
+        when(mockCallInfoFactory.makeCallInfo(nullable(CallerInfo.class),
+                nullable(PhoneAccountHandle.class), nullable(Uri.class), eq(CALL_TIMESTAMP)))
                 .thenReturn(fakeCallInfo);
 
         Notification.Builder builder1 = makeNotificationBuilder("builder1");
@@ -534,7 +535,7 @@
 
         // Verify that two notifications were generated, both with the same id.
         verify(mNotificationManager, times(2)).notifyAsUser(isNull(String.class), eq(1),
-                any(Notification.class), eq(PRIMARY_USER));
+                nullable(Notification.class), eq(PRIMARY_USER));
     }
 
     private Notification.Builder makeNotificationBuilder(String label) {
diff --git a/tests/src/com/android/server/telecom/tests/NewOutgoingCallIntentBroadcasterTest.java b/tests/src/com/android/server/telecom/tests/NewOutgoingCallIntentBroadcasterTest.java
index 9b7dc37..b23664d 100644
--- a/tests/src/com/android/server/telecom/tests/NewOutgoingCallIntentBroadcasterTest.java
+++ b/tests/src/com/android/server/telecom/tests/NewOutgoingCallIntentBroadcasterTest.java
@@ -43,6 +43,7 @@
 import org.mockito.ArgumentCaptor;
 import org.mockito.Mock;
 
+import static org.mockito.ArgumentMatchers.nullable;
 import static org.mockito.Matchers.any;
 import static org.mockito.Matchers.anyBoolean;
 import static org.mockito.Matchers.anyInt;
@@ -100,7 +101,7 @@
 
         assertEquals(DisconnectCause.NOT_DISCONNECTED, result);
         verify(mCallsManager).placeOutgoingCall(eq(mCall), eq(Uri.parse(voicemailNumber)),
-                any(GatewayInfo.class), eq(true), eq(VideoProfile.STATE_AUDIO_ONLY));
+                nullable(GatewayInfo.class), eq(true), eq(VideoProfile.STATE_AUDIO_ONLY));
     }
 
     @SmallTest
diff --git a/tests/src/com/android/server/telecom/tests/PhoneAccountRegistrarTest.java b/tests/src/com/android/server/telecom/tests/PhoneAccountRegistrarTest.java
index f2faf90..2898457 100644
--- a/tests/src/com/android/server/telecom/tests/PhoneAccountRegistrarTest.java
+++ b/tests/src/com/android/server/telecom/tests/PhoneAccountRegistrarTest.java
@@ -54,15 +54,18 @@
 import java.util.Set;
 
 import static org.mockito.Matchers.anyInt;
+import static org.mockito.Matchers.anyString;
 import static org.mockito.Mockito.when;
 
 public class PhoneAccountRegistrarTest extends TelecomTestCase {
 
     private static final int MAX_VERSION = Integer.MAX_VALUE;
     private static final String FILE_NAME = "phone-account-registrar-test-1223.xml";
+    private static final String TEST_LABEL = "right";
     private PhoneAccountRegistrar mRegistrar;
     @Mock private TelecomManager mTelecomManager;
     @Mock private DefaultDialerCache mDefaultDialerCache;
+    @Mock private PhoneAccountRegistrar.AppLabelProxy mAppLabelProxy;
 
     @Override
     public void setUp() throws Exception {
@@ -75,9 +78,11 @@
                 .delete();
         when(mDefaultDialerCache.getDefaultDialerApplication(anyInt()))
                 .thenReturn("com.android.dialer");
+        when(mAppLabelProxy.getAppLabel(anyString()))
+                .thenReturn(TEST_LABEL);
         mRegistrar = new PhoneAccountRegistrar(
                 mComponentContextFixture.getTestDouble().getApplicationContext(),
-                FILE_NAME, mDefaultDialerCache);
+                FILE_NAME, mDefaultDialerCache, mAppLabelProxy);
     }
 
     @Override
@@ -523,6 +528,55 @@
                         .build());
     }
 
+    /**
+     * Tests ability to register a self-managed PhoneAccount; verifies that the user defined label
+     * is overridden.
+     * @throws Exception
+     */
+    @MediumTest
+    public void testSelfManagedPhoneAccount() throws Exception {
+        mComponentContextFixture.addConnectionService(makeQuickConnectionServiceComponentName(),
+                Mockito.mock(IConnectionService.class));
+
+        PhoneAccountHandle selfManagedHandle =  makeQuickAccountHandle(
+                new ComponentName("self", "managed"), "selfie1");
+
+        PhoneAccount selfManagedAccount = new PhoneAccount.Builder(selfManagedHandle, "Wrong")
+                .setCapabilities(PhoneAccount.CAPABILITY_SELF_MANAGED)
+                .build();
+
+        mRegistrar.registerPhoneAccount(selfManagedAccount);
+
+        PhoneAccount registeredAccount = mRegistrar.getPhoneAccountUnchecked(selfManagedHandle);
+        assertEquals(TEST_LABEL, registeredAccount.getLabel());
+    }
+
+    /**
+     * Tests to ensure that when registering a self-managed PhoneAccount, it cannot also be defined
+     * as a call provider, connection manager, or sim subscription.
+     * @throws Exception
+     */
+    @MediumTest
+    public void testSelfManagedCapabilityOverride() throws Exception {
+        mComponentContextFixture.addConnectionService(makeQuickConnectionServiceComponentName(),
+                Mockito.mock(IConnectionService.class));
+
+        PhoneAccountHandle selfManagedHandle =  makeQuickAccountHandle(
+                new ComponentName("self", "managed"), "selfie1");
+
+        PhoneAccount selfManagedAccount = new PhoneAccount.Builder(selfManagedHandle, TEST_LABEL)
+                .setCapabilities(PhoneAccount.CAPABILITY_SELF_MANAGED |
+                        PhoneAccount.CAPABILITY_CALL_PROVIDER |
+                        PhoneAccount.CAPABILITY_CONNECTION_MANAGER |
+                        PhoneAccount.CAPABILITY_SIM_SUBSCRIPTION)
+                .build();
+
+        mRegistrar.registerPhoneAccount(selfManagedAccount);
+
+        PhoneAccount registeredAccount = mRegistrar.getPhoneAccountUnchecked(selfManagedHandle);
+        assertEquals(PhoneAccount.CAPABILITY_SELF_MANAGED, registeredAccount.getCapabilities());
+    }
+
     private static ComponentName makeQuickConnectionServiceComponentName() {
         return new ComponentName(
                 "com.android.server.telecom.tests",
diff --git a/tests/src/com/android/server/telecom/tests/RingerTest.java b/tests/src/com/android/server/telecom/tests/RingerTest.java
new file mode 100644
index 0000000..8b269a9
--- /dev/null
+++ b/tests/src/com/android/server/telecom/tests/RingerTest.java
@@ -0,0 +1,224 @@
+/*
+ * Copyright (C) 2017 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.server.telecom.tests;
+
+import android.app.NotificationManager;
+import android.content.Context;
+import android.media.AudioAttributes;
+import android.media.AudioManager;
+import android.media.Ringtone;
+import android.os.Bundle;
+import android.os.Vibrator;
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.server.telecom.AsyncRingtonePlayer;
+import com.android.server.telecom.Call;
+import com.android.server.telecom.InCallController;
+import com.android.server.telecom.InCallTonePlayer;
+import com.android.server.telecom.Ringer;
+import com.android.server.telecom.RingtoneFactory;
+import com.android.server.telecom.SystemSettingsUtil;
+
+import org.mockito.Mock;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+public class RingerTest extends TelecomTestCase {
+    @Mock InCallTonePlayer.Factory mockPlayerFactory;
+    @Mock SystemSettingsUtil mockSystemSettingsUtil;
+    @Mock AsyncRingtonePlayer mockRingtonePlayer;
+    @Mock RingtoneFactory mockRingtoneFactory;
+    @Mock Vibrator mockVibrator;
+    @Mock InCallController mockInCallController;
+
+    @Mock InCallTonePlayer mockTonePlayer;
+    @Mock Call mockCall1;
+    @Mock Call mockCall2;
+
+    Ringer mRingerUnderTest;
+    AudioManager mockAudioManager;
+    public void setUp() throws Exception {
+        super.setUp();
+        mContext = mComponentContextFixture.getTestDouble().getApplicationContext();
+        mRingerUnderTest = new Ringer(mockPlayerFactory, mContext, mockSystemSettingsUtil,
+                mockRingtonePlayer, mockRingtoneFactory, mockVibrator, mockInCallController);
+        when(mockPlayerFactory.createPlayer(anyInt())).thenReturn(mockTonePlayer);
+        mockAudioManager =
+                (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
+        when(mockAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_NORMAL);
+        NotificationManager notificationManager =
+                (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
+        when(notificationManager.matchesCallFilter(any(Bundle.class))).thenReturn(true);
+    }
+
+    @SmallTest
+    public void testNoActionInTheaterMode() {
+        // Start call waiting to make sure that it doesn't stop when we start ringing
+        mRingerUnderTest.startCallWaiting(mockCall1);
+        when(mockSystemSettingsUtil.isTheaterModeOn(any(Context.class))).thenReturn(true);
+        assertFalse(mRingerUnderTest.startRinging(mockCall2, false));
+        verify(mockTonePlayer, never()).stopTone();
+        verify(mockRingtonePlayer, never()).play(any(RingtoneFactory.class), any(Call.class));
+        verify(mockVibrator, never()).vibrate(
+                any(long[].class), anyInt(), any(AudioAttributes.class));
+    }
+
+    @SmallTest
+    public void testNoActionWhenDialerRings() {
+        // Start call waiting to make sure that it doesn't stop when we start ringing
+        mRingerUnderTest.startCallWaiting(mockCall1);
+        when(mockInCallController.doesConnectedDialerSupportRinging()).thenReturn(true);
+        assertFalse(mRingerUnderTest.startRinging(mockCall2, false));
+        verify(mockTonePlayer, never()).stopTone();
+        verify(mockRingtonePlayer, never()).play(any(RingtoneFactory.class), any(Call.class));
+        verify(mockVibrator, never()).vibrate(
+                any(long[].class), anyInt(), any(AudioAttributes.class));
+    }
+
+    @SmallTest
+    public void testAudioFocusStillAcquiredWhenDialerRings() {
+        // Start call waiting to make sure that it doesn't stop when we start ringing
+        mRingerUnderTest.startCallWaiting(mockCall1);
+        when(mockInCallController.doesConnectedDialerSupportRinging()).thenReturn(true);
+        ensureRingerIsAudible();
+        assertTrue(mRingerUnderTest.startRinging(mockCall2, false));
+        verify(mockTonePlayer, never()).stopTone();
+        verify(mockRingtonePlayer, never()).play(any(RingtoneFactory.class), any(Call.class));
+        verify(mockVibrator, never()).vibrate(
+                any(long[].class), anyInt(), any(AudioAttributes.class));
+    }
+
+    @SmallTest
+    public void testNoActionWhenCallIsSelfManaged() {
+        // Start call waiting to make sure that it doesn't stop when we start ringing
+        mRingerUnderTest.startCallWaiting(mockCall1);
+        when(mockCall2.isSelfManaged()).thenReturn(true);
+        // We do want to acquire audio focus when self-managed
+        assertTrue(mRingerUnderTest.startRinging(mockCall2, true));
+        verify(mockTonePlayer, never()).stopTone();
+        verify(mockRingtonePlayer, never()).play(any(RingtoneFactory.class), any(Call.class));
+        verify(mockVibrator, never()).vibrate(
+                any(long[].class), anyInt(), any(AudioAttributes.class));
+    }
+
+    @SmallTest
+    public void testCallWaitingButNoRingForSpecificContacts() {
+        NotificationManager notificationManager =
+                (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
+        when(notificationManager.matchesCallFilter(any(Bundle.class))).thenReturn(false);
+        // Start call waiting to make sure that it does stop when we start ringing
+        mRingerUnderTest.startCallWaiting(mockCall1);
+        verify(mockTonePlayer).startTone();
+
+        assertFalse(mRingerUnderTest.startRinging(mockCall2, false));
+        verify(mockTonePlayer).stopTone();
+        verify(mockRingtonePlayer, never()).play(any(RingtoneFactory.class), any(Call.class));
+        verify(mockVibrator, never()).vibrate(
+                any(long[].class), anyInt(), any(AudioAttributes.class));
+    }
+
+    @SmallTest
+    public void testVibrateButNoRingForNullRingtone() {
+        mRingerUnderTest.startCallWaiting(mockCall1);
+        when(mockRingtoneFactory.getRingtone(any(Call.class))).thenReturn(null);
+        when(mockAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_NORMAL);
+        enableVibrationWhenRinging();
+        assertFalse(mRingerUnderTest.startRinging(mockCall2, false));
+        verify(mockTonePlayer).stopTone();
+        verify(mockRingtonePlayer, never()).play(any(RingtoneFactory.class), any(Call.class));
+        verify(mockVibrator).vibrate(
+                any(long[].class), anyInt(), any(AudioAttributes.class));
+    }
+
+    @SmallTest
+    public void testVibrateButNoRingForSilentRingtone() {
+        mRingerUnderTest.startCallWaiting(mockCall1);
+        Ringtone mockRingtone = mock(Ringtone.class);
+        when(mockRingtoneFactory.getRingtone(any(Call.class))).thenReturn(mockRingtone);
+        when(mockAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_NORMAL);
+        when(mockAudioManager.getStreamVolume(AudioManager.STREAM_RING)).thenReturn(0);
+        enableVibrationWhenRinging();
+        assertFalse(mRingerUnderTest.startRinging(mockCall2, false));
+        verify(mockTonePlayer).stopTone();
+        verify(mockRingtonePlayer, never()).play(any(RingtoneFactory.class), any(Call.class));
+        verify(mockVibrator).vibrate(
+                any(long[].class), anyInt(), any(AudioAttributes.class));
+    }
+
+    @SmallTest
+    public void testRingAndNoVibrate() {
+        mRingerUnderTest.startCallWaiting(mockCall1);
+        ensureRingerIsAudible();
+        enableVibrationOnlyWhenNotRinging();
+        assertTrue(mRingerUnderTest.startRinging(mockCall2, false));
+        verify(mockTonePlayer).stopTone();
+        verify(mockRingtonePlayer).play(any(RingtoneFactory.class), any(Call.class));
+        verify(mockVibrator, never()).vibrate(
+                any(long[].class), anyInt(), any(AudioAttributes.class));
+    }
+
+    @SmallTest
+    public void testSilentRingWithHfpStillAcquiresFocus1() {
+        mRingerUnderTest.startCallWaiting(mockCall1);
+        Ringtone mockRingtone = mock(Ringtone.class);
+        when(mockRingtoneFactory.getRingtone(any(Call.class))).thenReturn(mockRingtone);
+        when(mockAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_NORMAL);
+        when(mockAudioManager.getStreamVolume(AudioManager.STREAM_RING)).thenReturn(0);
+        enableVibrationOnlyWhenNotRinging();
+        assertTrue(mRingerUnderTest.startRinging(mockCall2, true));
+        verify(mockTonePlayer).stopTone();
+        verify(mockRingtonePlayer, never()).play(any(RingtoneFactory.class), any(Call.class));
+        verify(mockVibrator, never()).vibrate(
+                any(long[].class), anyInt(), any(AudioAttributes.class));
+    }
+
+    @SmallTest
+    public void testSilentRingWithHfpStillAcquiresFocus2() {
+        mRingerUnderTest.startCallWaiting(mockCall1);
+        when(mockRingtoneFactory.getRingtone(any(Call.class))).thenReturn(null);
+        when(mockAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_NORMAL);
+        when(mockAudioManager.getStreamVolume(AudioManager.STREAM_RING)).thenReturn(0);
+        enableVibrationOnlyWhenNotRinging();
+        assertTrue(mRingerUnderTest.startRinging(mockCall2, true));
+        verify(mockTonePlayer).stopTone();
+        verify(mockRingtonePlayer, never()).play(any(RingtoneFactory.class), any(Call.class));
+        verify(mockVibrator, never()).vibrate(
+                any(long[].class), anyInt(), any(AudioAttributes.class));
+    }
+
+    private void ensureRingerIsAudible() {
+        Ringtone mockRingtone = mock(Ringtone.class);
+        when(mockRingtoneFactory.getRingtone(any(Call.class))).thenReturn(mockRingtone);
+        when(mockAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_NORMAL);
+        when(mockAudioManager.getStreamVolume(AudioManager.STREAM_RING)).thenReturn(100);
+    }
+
+    private void enableVibrationWhenRinging() {
+        when(mockVibrator.hasVibrator()).thenReturn(true);
+        when(mockSystemSettingsUtil.canVibrateWhenRinging(any(Context.class))).thenReturn(true);
+    }
+
+    private void enableVibrationOnlyWhenNotRinging() {
+        when(mockVibrator.hasVibrator()).thenReturn(true);
+        when(mockSystemSettingsUtil.canVibrateWhenRinging(any(Context.class))).thenReturn(false);
+    }
+}
diff --git a/tests/src/com/android/server/telecom/tests/TelecomServiceImplTest.java b/tests/src/com/android/server/telecom/tests/TelecomServiceImplTest.java
index 3d2a52e..bbfc11e 100644
--- a/tests/src/com/android/server/telecom/tests/TelecomServiceImplTest.java
+++ b/tests/src/com/android/server/telecom/tests/TelecomServiceImplTest.java
@@ -64,6 +64,7 @@
 
 import static android.Manifest.permission.REGISTER_SIM_SUBSCRIPTION;
 import static android.Manifest.permission.WRITE_SECURE_SETTINGS;
+import static org.mockito.ArgumentMatchers.nullable;
 import static org.mockito.Matchers.any;
 import static org.mockito.Matchers.anyBoolean;
 import static org.mockito.Matchers.anyInt;
@@ -253,7 +254,7 @@
     @SmallTest
     public void testSetUserSelectedOutgoingPhoneAccountFailure() throws RemoteException {
         doThrow(new SecurityException()).when(mContext).enforceCallingOrSelfPermission(
-                anyString(), anyString());
+                anyString(), nullable(String.class));
         try {
             mTSIBinder.setUserSelectedOutgoingPhoneAccount(TEL_PA_HANDLE_16);
         } catch (SecurityException e) {
@@ -276,12 +277,12 @@
         }};
         // Returns all phone accounts when getCallCapablePhoneAccounts is called.
         when(mFakePhoneAccountRegistrar
-                .getCallCapablePhoneAccounts(anyString(), eq(true), any(UserHandle.class)))
-                .thenReturn(fullPHList);
+                .getCallCapablePhoneAccounts(nullable(String.class), eq(true),
+                        nullable(UserHandle.class))).thenReturn(fullPHList);
         // Returns only enabled phone accounts when getCallCapablePhoneAccounts is called.
         when(mFakePhoneAccountRegistrar
-                .getCallCapablePhoneAccounts(anyString(), eq(false), any(UserHandle.class)))
-                .thenReturn(smallPHList);
+                .getCallCapablePhoneAccounts(nullable(String.class), eq(false),
+                        nullable(UserHandle.class))).thenReturn(smallPHList);
         makeAccountsVisibleToAllUsers(TEL_PA_HANDLE_16, SIP_PA_HANDLE_17);
 
         assertEquals(fullPHList,
@@ -428,7 +429,8 @@
                 .when(mContext).checkCallingOrSelfPermission(MODIFY_PHONE_STATE);
         doThrow(new SecurityException())
                 .when(mContext)
-                .enforceCallingOrSelfPermission(eq(REGISTER_SIM_SUBSCRIPTION), anyString());
+                .enforceCallingOrSelfPermission(eq(REGISTER_SIM_SUBSCRIPTION),
+                        nullable(String.class));
 
         registerPhoneAccountTestHelper(phoneAccount, false);
     }
@@ -464,22 +466,10 @@
         if (shouldSucceed) {
             assertFalse(didExceptionOccur);
             verify(mFakePhoneAccountRegistrar).registerPhoneAccount(testPhoneAccount);
-            verify(mContext).sendBroadcastAsUser(intentCaptor.capture(), eq(UserHandle.ALL),
-                    anyString());
-
-            Intent capturedIntent = intentCaptor.getValue();
-            assertEquals(TelecomManager.ACTION_PHONE_ACCOUNT_REGISTERED,
-                    capturedIntent.getAction());
-            Bundle intentExtras = capturedIntent.getExtras();
-            assertEquals(1, intentExtras.size());
-            assertEquals(testPhoneAccount.getAccountHandle(),
-                    intentExtras.get(TelecomManager.EXTRA_PHONE_ACCOUNT_HANDLE));
         } else {
             assertTrue(didExceptionOccur);
             verify(mFakePhoneAccountRegistrar, never())
                     .registerPhoneAccount(any(PhoneAccount.class));
-            verify(mContext, never())
-                    .sendBroadcastAsUser(any(Intent.class), any(UserHandle.class), anyString());
         }
     }
 
@@ -495,14 +485,6 @@
 
         mTSIBinder.unregisterPhoneAccount(phHandle);
         verify(mFakePhoneAccountRegistrar).unregisterPhoneAccount(phHandle);
-        verify(mContext).sendBroadcastAsUser(intentCaptor.capture(), eq(UserHandle.ALL),
-                anyString());
-        Intent capturedIntent = intentCaptor.getValue();
-        assertEquals(TelecomManager.ACTION_PHONE_ACCOUNT_UNREGISTERED,
-                capturedIntent.getAction());
-        Bundle intentExtras = capturedIntent.getExtras();
-        assertEquals(1, intentExtras.size());
-        assertEquals(phHandle, intentExtras.get(TelecomManager.EXTRA_PHONE_ACCOUNT_HANDLE));
     }
 
     @SmallTest
@@ -722,14 +704,14 @@
     @SmallTest
     public void testSetDefaultDialerNoModifyPhoneStatePermission() throws Exception {
         doThrow(new SecurityException()).when(mContext).enforceCallingOrSelfPermission(
-                eq(MODIFY_PHONE_STATE), anyString());
+                eq(MODIFY_PHONE_STATE), nullable(String.class));
         setDefaultDialerFailureTestHelper();
     }
 
     @SmallTest
     public void testSetDefaultDialerNoWriteSecureSettingsPermission() throws Exception {
         doThrow(new SecurityException()).when(mContext).enforceCallingOrSelfPermission(
-                eq(WRITE_SECURE_SETTINGS), anyString());
+                eq(WRITE_SECURE_SETTINGS), nullable(String.class));
         setDefaultDialerFailureTestHelper();
     }
 
@@ -854,21 +836,19 @@
     @SmallTest
     public void testAcceptRingingCall() throws Exception {
         Call call = mock(Call.class);
-        when(mFakeCallsManager.getFirstCallWithState(any(int[].class)))
-                .thenReturn(call);
+        when(mFakeCallsManager.getFirstCallWithState(anyInt())).thenReturn(call);
         // Not intended to be a real video state. Here to ensure that the call will be answered
         // with whatever video state it's currently in.
         int fakeVideoState = 29578215;
         when(call.getVideoState()).thenReturn(fakeVideoState);
         mTSIBinder.acceptRingingCall();
-        verify(call).answer(fakeVideoState);
+        verify(call).answer(eq(fakeVideoState));
     }
 
     @SmallTest
     public void testAcceptRingingCallWithValidVideoState() throws Exception {
         Call call = mock(Call.class);
-        when(mFakeCallsManager.getFirstCallWithState(any(int[].class)))
-                .thenReturn(call);
+        when(mFakeCallsManager.getFirstCallWithState(anyInt())).thenReturn(call);
         // Not intended to be a real video state. Here to ensure that the call will be answered
         // with the video state passed in to acceptRingingCallWithVideoState
         int fakeVideoState = 29578215;
@@ -878,6 +858,56 @@
         verify(call).answer(realVideoState);
     }
 
+    @SmallTest
+    public void testIsInCall() throws Exception {
+        when(mFakeCallsManager.hasOngoingCalls()).thenReturn(true);
+        assertTrue(mTSIBinder.isInCall(DEFAULT_DIALER_PACKAGE));
+    }
+
+    @SmallTest
+    public void testNotIsInCall() throws Exception {
+        when(mFakeCallsManager.hasOngoingCalls()).thenReturn(false);
+        assertFalse(mTSIBinder.isInCall(DEFAULT_DIALER_PACKAGE));
+    }
+
+    @SmallTest
+    public void testIsInCallFail() throws Exception {
+        doThrow(new SecurityException()).when(mContext).enforceCallingOrSelfPermission(
+                anyString(), any());
+        try {
+            mTSIBinder.isInCall("blah");
+            fail();
+        } catch (SecurityException e) {
+            // desired result
+        }
+        verify(mFakeCallsManager, never()).hasOngoingCalls();
+    }
+
+    @SmallTest
+    public void testIsInManagedCall() throws Exception {
+        when(mFakeCallsManager.hasOngoingManagedCalls()).thenReturn(true);
+        assertTrue(mTSIBinder.isInManagedCall(DEFAULT_DIALER_PACKAGE));
+    }
+
+    @SmallTest
+    public void testNotIsInManagedCall() throws Exception {
+        when(mFakeCallsManager.hasOngoingManagedCalls()).thenReturn(false);
+        assertFalse(mTSIBinder.isInManagedCall(DEFAULT_DIALER_PACKAGE));
+    }
+
+    @SmallTest
+    public void testIsInManagedCallFail() throws Exception {
+        doThrow(new SecurityException()).when(mContext).enforceCallingOrSelfPermission(
+                anyString(), any());
+        try {
+            mTSIBinder.isInManagedCall("blah");
+            fail();
+        } catch (SecurityException e) {
+            // desired result
+        }
+        verify(mFakeCallsManager, never()).hasOngoingCalls();
+    }
+
     /**
      * Register phone accounts for the supplied PhoneAccountHandles to make them
      * visible to all users (via the isVisibleToCaller method in TelecomServiceImpl.
@@ -888,10 +918,10 @@
             when(mFakePhoneAccountRegistrar.getPhoneAccountUnchecked(eq(ph))).thenReturn(
                     makeMultiUserPhoneAccount(ph).build());
             when(mFakePhoneAccountRegistrar
-                    .getPhoneAccount(eq(ph), any(UserHandle.class), anyBoolean()))
+                    .getPhoneAccount(eq(ph), nullable(UserHandle.class), anyBoolean()))
                     .thenReturn(makeMultiUserPhoneAccount(ph).build());
             when(mFakePhoneAccountRegistrar
-                    .getPhoneAccount(eq(ph), any(UserHandle.class)))
+                    .getPhoneAccount(eq(ph), nullable(UserHandle.class)))
                     .thenReturn(makeMultiUserPhoneAccount(ph).build());
         }
     }
diff --git a/tests/src/com/android/server/telecom/tests/TelecomSystemTest.java b/tests/src/com/android/server/telecom/tests/TelecomSystemTest.java
index 78d0fec..1c81fec 100644
--- a/tests/src/com/android/server/telecom/tests/TelecomSystemTest.java
+++ b/tests/src/com/android/server/telecom/tests/TelecomSystemTest.java
@@ -17,6 +17,7 @@
 package com.android.server.telecom.tests;
 
 
+import static org.mockito.ArgumentMatchers.nullable;
 import static org.mockito.Matchers.any;
 import static org.mockito.Matchers.anyBoolean;
 import static org.mockito.Matchers.anyInt;
@@ -24,6 +25,7 @@
 import static org.mockito.Matchers.eq;
 import static org.mockito.Matchers.isNull;
 import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.doNothing;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.reset;
@@ -83,6 +85,7 @@
 import com.android.server.telecom.Timeouts;
 import com.android.server.telecom.callfiltering.AsyncBlockCheckFilter;
 import com.android.server.telecom.components.UserCallIntentProcessor;
+import com.android.server.telecom.ui.IncomingCallNotifier;
 import com.android.server.telecom.ui.MissedCallNotifierImpl.MissedCallNotifierImplFactory;
 
 import com.google.common.base.Predicate;
@@ -193,6 +196,7 @@
     @Mock BluetoothPhoneServiceImpl mBluetoothPhoneServiceImpl;
     @Mock AsyncRingtonePlayer mAsyncRingtonePlayer;
     @Mock InterruptionFilterProxy mInterruptionFilterProxy;
+    @Mock IncomingCallNotifier mIncomingCallNotifier;
 
     final ComponentName mInCallServiceComponentNameX =
             new ComponentName(
@@ -308,6 +312,7 @@
         super.setUp();
         mSpyContext = mComponentContextFixture.getTestDouble().getApplicationContext();
         doReturn(mSpyContext).when(mSpyContext).getApplicationContext();
+        doNothing().when(mSpyContext).sendBroadcastAsUser(any(), any(), any());
 
         mNumOutgoingCallsMade = 0;
 
@@ -377,6 +382,7 @@
         mTimeoutsAdapter = mock(Timeouts.Adapter.class);
         when(mTimeoutsAdapter.getCallScreeningTimeoutMillis(any(ContentResolver.class)))
                 .thenReturn(TEST_TIMEOUT / 5L);
+        mIncomingCallNotifier = mock(IncomingCallNotifier.class);
 
         mTelecomSystem = new TelecomSystem(
                 mComponentContextFixture.getTestDouble(),
@@ -409,7 +415,8 @@
                 mTimeoutsAdapter,
                 mAsyncRingtonePlayer,
                 mPhoneNumberUtilsAdapter,
-                mInterruptionFilterProxy);
+                mInterruptionFilterProxy,
+                mIncomingCallNotifier);
 
         mComponentContextFixture.setTelecomManager(new TelecomManager(
                 mComponentContextFixture.getTestDouble(),
@@ -658,10 +665,10 @@
                         anyString(),
                         anyInt(),
                         newOutgoingCallReceiver.capture(),
-                        any(Handler.class),
+                        nullable(Handler.class),
                         anyInt(),
                         anyString(),
-                        any(Bundle.class));
+                        nullable(Bundle.class));
 
         // Pass on the new outgoing call Intent
         // Set a dummy PendingResult so the BroadcastReceiver agrees to accept onReceive()
diff --git a/tests/src/com/android/server/telecom/tests/VideoProviderTest.java b/tests/src/com/android/server/telecom/tests/VideoProviderTest.java
index f6734c7..3234c1f 100644
--- a/tests/src/com/android/server/telecom/tests/VideoProviderTest.java
+++ b/tests/src/com/android/server/telecom/tests/VideoProviderTest.java
@@ -173,6 +173,8 @@
         doThrow(new SecurityException()).when(mContext)
                 .enforcePermission(anyString(), anyInt(), anyInt(), anyString());
 
+        // Set the target SDK version to to > N-MR1.
+        mVideoCallImpl.setTargetSdkVersion(Build.VERSION_CODES.CUR_DEVELOPMENT);
         // Make a request to change the camera
         mVideoCall.setCamera(MockVideoProvider.CAMERA_FRONT);
         mVerificationLock.await(TEST_TIMEOUT, TimeUnit.MILLISECONDS);
@@ -199,6 +201,8 @@
         doReturn(AppOpsManager.MODE_ERRORED).when(mAppOpsManager).noteOp(anyInt(), anyInt(),
                 anyString());
 
+        // Set the target SDK version to > N-MR1.
+        mVideoCallImpl.setTargetSdkVersion(Build.VERSION_CODES.CUR_DEVELOPMENT);
         // Make a request to change the camera
         mVideoCall.setCamera(MockVideoProvider.CAMERA_FRONT);
         mVerificationLock.await(TEST_TIMEOUT, TimeUnit.MILLISECONDS);
@@ -213,6 +217,36 @@
     }
 
     /**
+     * Tests the caller app ops check in {@link VideoCall#setCamera(String)} to ensure a camera
+     * change from a non-permitted caller is ignored. For < N-MR1, throw a CAMERA_FAILURE instead
+     * of a CAMERA_PERMISSION_ERROR.
+     */
+    @MediumTest
+    public void testCameraChangeAppOpsBelowNMR1Fail() throws Exception {
+        // Wait until the callback has been received before performing verification.
+        doAnswer(mVerification).when(mVideoCallCallback).onCallSessionEvent(anyInt());
+
+        // ensure app ops check fails.
+        doReturn(AppOpsManager.MODE_ERRORED).when(mAppOpsManager).noteOp(anyInt(), anyInt(),
+                anyString());
+
+        // Set the target SDK version to below N-MR1
+        mVideoCallImpl.setTargetSdkVersion(Build.VERSION_CODES.N);
+
+        // Make a request to change the camera
+        mVideoCall.setCamera(MockVideoProvider.CAMERA_FRONT);
+        mVerificationLock.await(TEST_TIMEOUT, TimeUnit.MILLISECONDS);
+
+        // Capture the session event reported via the callback.
+        ArgumentCaptor<Integer> sessionEventCaptor = ArgumentCaptor.forClass(Integer.class);
+        verify(mVideoCallCallback, timeout(TEST_TIMEOUT)).onCallSessionEvent(
+                sessionEventCaptor.capture());
+
+        assertEquals(VideoProvider.SESSION_EVENT_CAMERA_FAILURE,
+                sessionEventCaptor.getValue().intValue());
+    }
+
+    /**
      * Tests the caller user handle check in {@link VideoCall#setCamera(String)} to ensure a camera
      * change from a background user is not permitted.
      */
@@ -224,6 +258,8 @@
         // Set a fake user to be the current foreground user.
         mTelecomSystem.getCallsManager().onUserSwitch(new UserHandle(1000));
 
+        // Set the target SDK version to > N-MR1
+        mVideoCallImpl.setTargetSdkVersion(Build.VERSION_CODES.CUR_DEVELOPMENT);
         // Make a request to change the camera
         mVideoCall.setCamera(MockVideoProvider.CAMERA_FRONT);
         mVerificationLock.await(TEST_TIMEOUT, TimeUnit.MILLISECONDS);