Merge "Do not set PROPERTY_IS_RTT in testapps"
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..9eb8aea 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.
@@ -477,6 +481,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..7dfd78c 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,10 @@
quitNow();
}
+ public void dumpPendingMessages(IndentingPrintWriter pw) {
+ getHandler().getLooper().dump(pw::println, "");
+ }
+
/**
* 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..fc22127 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;
@@ -206,6 +207,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;
@@ -326,6 +328,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 +412,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 +446,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 +764,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 +792,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 +927,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 +1119,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 +1189,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 +1214,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 +1362,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 +1769,6 @@
return getFirstCallWithState(CallState.RINGING);
}
- @VisibleForTesting
public Call getActiveCall() {
return getFirstCallWithState(CallState.ACTIVE);
}
@@ -1802,6 +1921,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
*/
@@ -2045,10 +2172,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,6 +2197,14 @@
}
/**
+ * 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 calls.
* @return {@code true} if there are ongoing managed calls, {@code false} otherwise.
*/
@@ -2071,6 +2215,18 @@
LIVE_CALL_STATES) > 0;
}
+ /**
+ * Deteremines 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) {
if (hasMaximumManagedLiveCalls(call)) {
// NOTE: If the amount of live calls changes beyond 1, this logic will probably
@@ -2347,8 +2503,7 @@
} else {
return !hasEmergencyCall() &&
!hasMaximumSelfManagedRingingCalls(excludeCall, phoneAccountHandle) &&
- !hasMaximumSelfManagedCalls(excludeCall, phoneAccountHandle) &&
- !hasManagedCalls();
+ !hasMaximumSelfManagedCalls(excludeCall, phoneAccountHandle);
}
}
@@ -2377,7 +2532,8 @@
// are associated with the current PhoneAccountHandle.
return !hasEmergencyCall() &&
!hasMaximumSelfManagedCalls(excludeCall, phoneAccountHandle) &&
- !hasCallsForOtherPhoneAccount(phoneAccountHandle);
+ !hasCallsForOtherPhoneAccount(phoneAccountHandle) &&
+ !hasManagedCalls();
}
}
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..1c75c50 100644
--- a/src/com/android/server/telecom/InCallController.java
+++ b/src/com/android/server/telecom/InCallController.java
@@ -64,14 +64,30 @@
public final 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,17 @@
}
@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.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 +243,7 @@
mInCallServiceInfo.getType());
}
- return mIsConnected;
+ return mIsConnected ? CONNECTION_SUCCEEDED : CONNECTION_FAILED;
}
@Override
@@ -239,6 +262,11 @@
}
@Override
+ public boolean isConnected() {
+ return mIsConnected;
+ }
+
+ @Override
public void dump(IndentingPrintWriter pw) {
pw.append("BindingConnection [");
pw.append(mIsConnected ? "" : "not ").append("connected, ");
@@ -304,11 +332,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 +388,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 +442,8 @@
if (newConnection != mCurrentConnection) {
if (mIsConnected) {
mCurrentConnection.disconnect();
- newConnection.connect(null);
+ int result = newConnection.connect(null);
+ mIsConnected = result == CONNECTION_SUCCEEDED;
}
mCurrentConnection = newConnection;
}
@@ -418,18 +451,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 +477,11 @@
}
@Override
+ public boolean isConnected() {
+ return mIsConnected;
+ }
+
+ @Override
public void setHasEmergency(boolean hasEmergency) {
if (mDialerConnection != null) {
mDialerConnection.setHasEmergency(hasEmergency);
@@ -459,7 +498,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 +529,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 +731,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 +1001,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 +1145,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 +1372,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..ea82d52 100644
--- a/src/com/android/server/telecom/PhoneAccountRegistrar.java
+++ b/src/com/android/server/telecom/PhoneAccountRegistrar.java
@@ -122,6 +122,14 @@
public void onSimCallManagerChanged(PhoneAccountRegistrar registrar) {}
}
+ /**
+ * 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";
@VisibleForTesting
public static final int EXPECTED_STATE_VERSION = 9;
@@ -135,6 +143,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 +151,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 +167,7 @@
mUserManager = UserManager.get(context);
mDefaultDialerCache = defaultDialerCache;
mSubscriptionManager = SubscriptionManager.from(mContext);
+ mAppLabelProxy = appLabelProxy;
mCurrentUserHandle = Process.myUserHandle();
read();
}
@@ -640,6 +644,27 @@
Log.i(this, "New phone account registered: " + account);
}
+ // 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);
// Set defaults and replace based on the group Id.
maybeReplaceOldAccount(account);
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..c6056fa 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;
/**
@@ -137,10 +139,13 @@
Log.i(this, "startRingingOrCallWaiting, skipping because volume is 0");
}
- if (shouldVibrate(mContext) && !mIsVibrating) {
+ if (shouldVibrate(mContext, foregroundCall) && !mIsVibrating) {
+ 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;
@@ -178,8 +183,10 @@
mRingtonePlayer.stop();
if (mIsVibrating) {
+ Log.addEvent(mVibratingCall, LogUtils.Events.STOP_VIBRATOR);
mVibrator.cancel();
mIsVibrating = false;
+ mVibratingCall = null;
}
}
@@ -206,14 +213,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..1ea0f38 100644
--- a/src/com/android/server/telecom/TelecomServiceImpl.java
+++ b/src/com/android/server/telecom/TelecomServiceImpl.java
@@ -363,6 +363,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();
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/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..ec49696 100644
--- a/testapps/AndroidManifest.xml
+++ b/testapps/AndroidManifest.xml
@@ -169,7 +169,8 @@
<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/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/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/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/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/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/TelecomSystemTest.java b/tests/src/com/android/server/telecom/tests/TelecomSystemTest.java
index 78d0fec..11e0dc5 100644
--- a/tests/src/com/android/server/telecom/tests/TelecomSystemTest.java
+++ b/tests/src/com/android/server/telecom/tests/TelecomSystemTest.java
@@ -83,6 +83,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 +194,7 @@
@Mock BluetoothPhoneServiceImpl mBluetoothPhoneServiceImpl;
@Mock AsyncRingtonePlayer mAsyncRingtonePlayer;
@Mock InterruptionFilterProxy mInterruptionFilterProxy;
+ @Mock IncomingCallNotifier mIncomingCallNotifier;
final ComponentName mInCallServiceComponentNameX =
new ComponentName(
@@ -377,6 +379,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 +412,8 @@
mTimeoutsAdapter,
mAsyncRingtonePlayer,
mPhoneNumberUtilsAdapter,
- mInterruptionFilterProxy);
+ mInterruptionFilterProxy,
+ mIncomingCallNotifier);
mComponentContextFixture.setTelecomManager(new TelecomManager(
mComponentContextFixture.getTestDouble(),