[automerger skipped] Fix sorting issue during emergency call attempt. am: 084e020f9b -s ours
am skip reason: skipped by user tgunn
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/services/Telecomm/+/16458618
Change-Id: I1097b8a5cc896d6f3992d7a6eaa2035dc0eb7114
diff --git a/Android.bp b/Android.bp
new file mode 100644
index 0000000..629c95c
--- /dev/null
+++ b/Android.bp
@@ -0,0 +1,77 @@
+// Build the Telecom service.
+android_app {
+ name: "Telecom",
+ libs: ["telephony-common"],
+ srcs: [
+ "src/**/*.java",
+ "proto/**/*.proto",
+ ],
+ resource_dirs: ["res"],
+ proto: {
+ type: "nano",
+ local_include_dirs: ["proto/"],
+ output_params: ["optional_field_style=accessors"],
+ },
+ platform_apis: true,
+ certificate: "platform",
+ privileged: true,
+ optimize: {
+ proguard_flags_files: ["proguard.flags"],
+ },
+ defaults: ["SettingsLibDefaults"],
+}
+
+android_test {
+ name: "TelecomUnitTests",
+ static_libs: [
+ "android-ex-camera2",
+ "guava",
+ "mockito-target-inline",
+ "androidx.test.rules",
+ "platform-test-annotations",
+ "androidx.legacy_legacy-support-core-ui",
+ "androidx.legacy_legacy-support-core-utils",
+ "androidx.core_core",
+ "androidx.fragment_fragment",
+ ],
+ srcs: [
+ "tests/src/**/*.java",
+ "src/**/*.java",
+ "proto/**/*.proto",
+ ],
+ proto: {
+ type: "nano",
+ local_include_dirs: ["proto/"],
+ output_params: ["optional_field_style=accessors"],
+ },
+ resource_dirs: [
+ "tests/res",
+ "res",
+ ],
+ libs: [
+ "android.test.mock",
+ "android.test.base",
+ "android.test.runner",
+ "telephony-common",
+ ],
+
+ jni_libs: ["libdexmakerjvmtiagent"],
+
+ aaptflags: [
+ "--auto-add-overlay",
+ "--extra-packages",
+ "com.android.server.telecom",
+ ],
+ manifest: "tests/AndroidManifest.xml",
+ optimize: {
+ enabled: false,
+ },
+ platform_apis: true,
+ certificate: "platform",
+ jacoco: {
+ include_filter: ["com.android.server.telecom.*"],
+ exclude_filter: ["com.android.server.telecom.tests.*"],
+ },
+ test_suites: ["device-tests"],
+ defaults: ["SettingsLibDefaults"],
+}
diff --git a/Android.mk b/Android.mk
deleted file mode 100644
index 4e5eeff..0000000
--- a/Android.mk
+++ /dev/null
@@ -1,29 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-# Build the Telecom service.
-include $(CLEAR_VARS)
-
-LOCAL_JAVA_LIBRARIES := telephony-common
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-proto-files-under, proto)
-LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
-LOCAL_USE_AAPT2 := true
-
-LOCAL_PROTOC_OPTIMIZE_TYPE := nano
-LOCAL_PROTOC_FLAGS := --proto_path=$(LOCAL_PATH)/proto/
-LOCAL_PROTO_JAVA_OUTPUT_PARAMS := optional_field_style=accessors
-
-LOCAL_PACKAGE_NAME := Telecom
-LOCAL_PRIVATE_PLATFORM_APIS := true
-
-LOCAL_CERTIFICATE := platform
-LOCAL_PRIVILEGED_MODULE := true
-
-LOCAL_PROGUARD_FLAG_FILES := proguard.flags
-
-include frameworks/base/packages/SettingsLib/common.mk
-
-include $(BUILD_PACKAGE)
-
-# Build the test package.
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 588e5c3..07ee6fa 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -21,6 +21,8 @@
android:sharedUserId="android.uid.system">
<protected-broadcast android:name="android.intent.action.SHOW_MISSED_CALLS_NOTIFICATION" />
+ <protected-broadcast android:name="com.android.server.telecom.MESSAGE_SENT" />
+
<!-- Prevents the activity manager from delaying any activity-start
requests by this package, including requests immediately after
@@ -32,15 +34,19 @@
<uses-permission android:name="android.permission.BROADCAST_CALLLOG_INFO" />
<uses-permission android:name="android.permission.BROADCAST_PHONE_ACCOUNT_REGISTRATION" />
<uses-permission android:name="android.permission.CALL_PRIVILEGED" />
+ <uses-permission android:name="android.permission.HANDLE_CALL_INTENT" />
<uses-permission android:name="android.permission.INTERACT_ACROSS_USERS" />
<uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" />
<uses-permission android:name="android.permission.MANAGE_USERS" />
+ <uses-permission android:name="android.permission.MANAGE_ROLE_HOLDERS" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<!-- Required to determine source of ongoing audio recordings. -->
<uses-permission android:name="android.permission.MODIFY_AUDIO_ROUTING" />
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_CALL_LOG" />
+ <uses-permission android:name="android.permission.READ_DEVICE_CONFIG" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
+ <uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.STOP_APP_SWITCHES" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.WRITE_CALL_LOG" />
@@ -69,6 +75,11 @@
android:label="Process phone account registration"
android:protectionLevel="signature|system"/>
+ <permission
+ android:name="android.permission.HANDLE_CALL_INTENT"
+ android:label="Protects handling the call intent via the TelecomManager API."
+ android:protectionLevel="signature|system"/>
+
<application android:label="@string/telecommAppLabel"
android:icon="@mipmap/ic_launcher_phone"
android:allowBackup="false"
@@ -227,10 +238,12 @@
<action android:name="com.android.server.telecom.ACTION_REJECT_FROM_NOTIFICATION" />
<action android:name="com.android.server.telecom.PROCEED_WITH_CALL" />
<action android:name="com.android.server.telecom.CANCEL_CALL" />
+ <action android:name="com.android.server.telecom.PROCEED_WITH_REDIRECTED_CALL" />
+ <action android:name="com.android.server.telecom.CANCEL_REDIRECTED_CALL" />
</intent-filter>
</receiver>
- <receiver android:name=".components.PhoneAccountBroadcastReceiver"
+ <receiver android:name=".components.AppUninstallBroadcastReceiver"
android:process="system">
<intent-filter>
<action android:name="android.intent.action.PACKAGE_FULLY_REMOVED" />
@@ -277,23 +290,26 @@
android:process=":ui">
</activity>
- <activity android:name=".components.ChangeDefaultDialerDialog"
- android:label="@string/change_default_dialer_dialog_title"
+ <activity android:name=".ui.CallRedirectionConfirmDialogActivity"
+ android:configChanges="orientation|screenSize|keyboardHidden"
android:excludeFromRecents="true"
- android:theme="@*android:style/Theme.Material.Light.Dialog.Alert"
- android:priority="1000"
- android:process=":ui" >
- <intent-filter>
- <action android:name="android.telecom.action.CHANGE_DEFAULT_DIALER" />
- <category android:name="android.intent.category.DEFAULT" />
- </intent-filter>
+ android:launchMode="singleInstance"
+ android:theme="@style/Theme.Telecomm.Transparent"
+ android:process=":ui">
</activity>
- <receiver android:name=".components.PrimaryCallReceiver"
- android:exported="true"
- android:permission="android.permission.MODIFY_PHONE_STATE"
- android:process="system">
- </receiver>
+ <activity android:name=".ui.CallRedirectionTimeoutDialogActivity"
+ android:configChanges="orientation|screenSize|keyboardHidden"
+ android:excludeFromRecents="true"
+ android:launchMode="singleInstance"
+ android:theme="@style/Theme.Telecomm.Transparent"
+ android:process=":ui">
+ </activity>
+
+ <activity android:name=".ui.TelecomDeveloperMenu"
+ android:label="@string/developer_title"
+ android:exported="false"
+ android:process=":ui" />
<service android:name=".components.BluetoothPhoneService"
android:singleUser="true"
diff --git a/OWNERS b/OWNERS
index 2f0bcec..94409ef 100644
--- a/OWNERS
+++ b/OWNERS
@@ -1,3 +1,4 @@
breadley@google.com
hallliu@google.com
tgunn@google.com
+paulye@google.com
diff --git a/proguard.flags b/proguard.flags
index 7ecfc3f..635eba6 100644
--- a/proguard.flags
+++ b/proguard.flags
@@ -13,10 +13,6 @@
# Keep classes, annotations and members used by Lifecycle. Remove this once aapt2 is enabled
-keepattributes *Annotation*
--keepclassmembers enum android.arch.lifecycle.Lifecycle$Event {
- <fields>;
-}
-
-keep class * implements android.arch.lifecycle.LifecycleObserver {
}
diff --git a/res/drawable/call_redirection_button_ripple_effect.xml b/res/drawable/call_redirection_button_ripple_effect.xml
new file mode 100644
index 0000000..7fa7e70
--- /dev/null
+++ b/res/drawable/call_redirection_button_ripple_effect.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2019 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
+ -->
+<ripple xmlns:android="http://schemas.android.com/apk/res/android"
+ android:color="?android:attr/colorControlHighlight">
+ <item android:id="@android:id/mask">
+ <shape>
+ <solid android:color="@android:color/white"/>
+ </shape>
+ </item>
+</ripple>
\ No newline at end of file
diff --git a/res/drawable/call_redirection_dialog_background.xml b/res/drawable/call_redirection_dialog_background.xml
new file mode 100644
index 0000000..71277fd
--- /dev/null
+++ b/res/drawable/call_redirection_dialog_background.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2019 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License
+ -->
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+ <solid android:color="@android:color/white"/>
+ <corners android:radius="15dp" />
+</shape>
\ No newline at end of file
diff --git a/res/layout/call_redirection_confirm_dialog.xml b/res/layout/call_redirection_confirm_dialog.xml
new file mode 100644
index 0000000..98d78c8
--- /dev/null
+++ b/res/layout/call_redirection_confirm_dialog.xml
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2019 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License
+ -->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:paddingTop="0dp"
+ android:paddingBottom="0dp"
+ android:background="@drawable/call_redirection_dialog_background"
+ android:orientation="vertical">
+
+ <ImageView
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_gravity="center"
+ android:paddingTop="@dimen/call_redirection_dialog_image_upper_margin"
+ android:paddingBottom="@dimen/call_redirection_dialog_image_bottom_margin"
+ android:tint="@color/call_redirection_dialog_icon_tint_color"
+ android:src="@drawable/ic_phone"/>
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:paddingBottom="@dimen/call_redirection_dialog_title_bottom_margin"
+ android:text="@string/alert_redirect_outgoing_call_or_not"
+ android:textColor="@color/call_redirection_dialog_text_color"
+ android:textSize="@dimen/call_redirection_dialog_title_font_size"
+ android:textStyle="bold"/>
+
+ <View
+ android:layout_width="fill_parent"
+ android:layout_height="1dp"
+ android:background="@color/call_redirection_dialog_view_divider_color"/>
+
+ <Button
+ android:id="@+id/buttonFirstLine"
+ android:text="@string/alert_place_unredirect_outgoing_call"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:gravity="left"
+ android:background="@drawable/call_redirection_button_ripple_effect"
+ android:paddingTop="@dimen/call_redirection_dialog_button_text_upper_bottom_margin"
+ android:paddingBottom="@dimen/call_redirection_dialog_button_text_upper_bottom_margin"
+ android:paddingLeft="@dimen/call_redirection_dialog_button_text_left_margin"
+ android:paddingRight="@dimen/call_redirection_dialog_button_text_left_margin"
+ android:textColor="@color/call_redirection_dialog_text_color"
+ android:textSize="@dimen/call_redirection_dialog_button_font_size"
+ android:textAllCaps="false"/>
+
+ <View
+ android:layout_width="fill_parent"
+ android:layout_height="1dp"
+ android:background="@color/call_redirection_dialog_view_divider_color"/>
+
+ <Button
+ android:id="@+id/buttonSecondLine"
+ android:text="@string/alert_place_outgoing_call_with_redirection"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:gravity="left"
+ android:background="@drawable/call_redirection_button_ripple_effect"
+ android:paddingTop="@dimen/call_redirection_dialog_button_text_upper_bottom_margin"
+ android:paddingBottom="@dimen/call_redirection_dialog_button_text_upper_bottom_margin"
+ android:paddingLeft="@dimen/call_redirection_dialog_button_text_left_margin"
+ android:textColor="@color/call_redirection_dialog_text_color"
+ android:textSize="@dimen/call_redirection_dialog_button_font_size"
+ android:textAllCaps="false"/>
+
+ <View
+ android:layout_width="fill_parent"
+ android:layout_height="1dp"
+ android:background="@color/call_redirection_dialog_view_divider_color"/>
+
+ <Button
+ android:id="@+id/buttonThirdLine"
+ android:text="@string/cancel"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:gravity="left"
+ android:background="@drawable/call_redirection_button_ripple_effect"
+ android:paddingTop="@dimen/call_redirection_dialog_button_text_upper_bottom_margin"
+ android:paddingBottom="@dimen/call_redirection_dialog_button_text_upper_bottom_margin"
+ android:paddingLeft="@dimen/call_redirection_dialog_button_text_left_margin"
+ android:paddingRight="@dimen/call_redirection_dialog_button_text_left_margin"
+ android:textColor="@color/call_redirection_dialog_text_color"
+ android:textSize="@dimen/call_redirection_dialog_button_font_size"
+ android:textAllCaps="false"/>
+
+</LinearLayout>
\ No newline at end of file
diff --git a/res/layout/telecom_developer_menu.xml b/res/layout/telecom_developer_menu.xml
new file mode 100644
index 0000000..0df0cdd
--- /dev/null
+++ b/res/layout/telecom_developer_menu.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2018 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License
+ -->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical"
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent">
+
+ <Switch
+ android:id="@+id/switchEnhancedCallBlocking"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:text="@string/developer_enhanced_call_blocking"/>
+</LinearLayout>
\ No newline at end of file
diff --git a/res/raw/endcall.ogg b/res/raw/endcall.ogg
new file mode 100644
index 0000000..1af440b
--- /dev/null
+++ b/res/raw/endcall.ogg
Binary files differ
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index 8b488c2..fe0253d 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"Oproepbestuur"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"Bel"</string>
- <string name="unknown" msgid="6878797917991465859">"Onbekend"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"Gemiste oproep"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"Gemiste werkoproep"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Gemiste oproepe"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> gemiste oproepe"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"Gemiste oproep van <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Bel terug"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"Boodskap"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"Oproep stilgemaak."</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"Luidsprekerfoon geaktiveer."</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"Kan nie nou praat nie. Hoe\'s dit?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"Ek bel jou nou-nou terug."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Ek bel jou later."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Kan nie nou praat nie. Bel my later?"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Vinnige antwoorde"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Redigeer vinnige antwoorde"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"Vinnige antwoord"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"Boodskap gestuur na <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"Oproeprekeninge"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"Net noodoproepe word toegelaat."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"Hierdie program kan nie uitgaande oproepe maak sonder die foon se toestemming nie."</string>
- <string name="outgoing_call_error_no_phone_number_supplied" msgid="1940125199802007505">"Voer \'n geldige nommer in om \'n oproep te maak."</string>
- <string name="duplicate_video_call_not_allowed" msgid="3749211605014548386">"Oproep kan nie op die oomblik bygevoeg word nie."</string>
- <string name="no_vm_number" msgid="4164780423805688336">"Vermiste stemboodskapnommer"</string>
- <string name="no_vm_number_msg" msgid="1300729501030053828">"Geen stemboodskapnommer is op die SIM-kaart gestoor nie."</string>
- <string name="add_vm_number_str" msgid="4676479471644687453">"Voeg nommer by"</string>
- <string name="change_default_dialer_dialog_title" msgid="9101655962941740507">"Maak <xliff:g id="NEW_APP">%s</xliff:g> jou verstek-Foon-program?"</string>
- <string name="change_default_dialer_dialog_affirmative" msgid="8606546663509166276">"Stel verstek"</string>
- <string name="change_default_dialer_dialog_negative" msgid="9078144617060173845">"Kanselleer"</string>
- <string name="change_default_dialer_warning_message" msgid="1417671460801684999">"<xliff:g id="NEW_APP">%s</xliff:g> sal oproepe kan maak en alle aspekte daarvan beheer. Net programme wat jy vertrou, moet as die verstek-Foon-program gestel word."</string>
- <string name="blocked_numbers" msgid="2751843139572970579">"Geblokkeerde nommers"</string>
- <string name="blocked_numbers_msg" msgid="1045015186124965643">"Jy sal nie oproepe of boodskappe vanaf geblokkeerde nommers ontvang nie."</string>
- <string name="block_number" msgid="1101252256321306179">"Voeg \'n nommer by"</string>
- <string name="unblock_dialog_body" msgid="1614238499771862793">"Deblokkeer <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
- <string name="unblock_button" msgid="3078048901972674170">"Deblokkeer"</string>
- <string name="add_blocked_dialog_body" msgid="9030243212265516828">"Blokkeer oproepe en SMS\'e vanaf"</string>
- <string name="add_blocked_number_hint" msgid="6847675097085433553">"Foonnommer"</string>
- <string name="block_button" msgid="8822290682524373357">"Blokkeer"</string>
- <string name="non_primary_user" msgid="5180129233352533459">"Net die toesteleienaar kan geblokkeerde nommers bekyk en bestuur."</string>
- <string name="delete_icon_description" msgid="8903995728252556724">"Deblokkeer"</string>
- <string name="blocked_numbers_butter_bar_title" msgid="438170866438793182">"Blokkering is tydelik af"</string>
- <string name="blocked_numbers_butter_bar_body" msgid="2223244484319442431">"Nadat jy \'n noodnommer gebel het of \'n boodskap daarheen gestuur het, sal blokkering afgeskakel word sodat nooddienste jou kan kontak."</string>
- <string name="blocked_numbers_butter_bar_button" msgid="2197943354922010696">"Heraktiveer nou"</string>
- <string name="blocked_numbers_number_blocked_message" msgid="7678509606805029540">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> geblokkeer"</string>
- <string name="blocked_numbers_number_unblocked_message" msgid="977894647366750418">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> is gedeblokkeer"</string>
- <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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"Inkomende oproepe"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"Gemiste oproepe"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"Oproepblokkering"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"As jy hierdie oproep maak, sal dit jou <xliff:g id="OTHER_APP">%1$s</xliff:g>-oproep beëindig."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"Oproepblokkering"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"Nommers nie in Kontakte nie"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"Blokkeer nommers wat nie in jou Kontakte gelys is nie"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"Privaat"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"Blokkeer bellers wat nie hulle nommer bekendmaak nie"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"Telefoonhokkies"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"Blokkeer oproepe vanaf telefoonhokkies"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"Onbekend"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"Blokkeer oproepe vanaf onbekende bellers"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"Oproepblokkering"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"Oproepblokkering is gedeaktiveer"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"Noodoproep gemaak"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"Oproepblokkering is gedeaktiveer sodat noodeenhede jou kan kontak."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"Oproepbestuur"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"Bel"</string>
+ <string name="unknown" msgid="6993977514360123431">"Onbekend"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"Gemiste oproep"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"Gemiste werkoproep"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"Gemiste oproepe"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> gemiste oproepe"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"Gemiste oproep van <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"Bel terug"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"Boodskap"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"Oproep stilgemaak."</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Luidsprekerfoon geaktiveer."</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Kan nie nou praat nie. Hoe\'s dit?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"Ek bel jou nou-nou terug."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"Ek bel jou later."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"Kan nie nou praat nie. Bel my later?"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"Vinnige antwoorde"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"Redigeer vinnige antwoorde"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"Vinnige antwoord"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"Boodskap gestuur na <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"Kon nie boodskap aan <xliff:g id="PHONE_NUMBER">%s</xliff:g> stuur nie."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"Oproeprekeninge"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"Net noodoproepe word toegelaat."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"Hierdie program kan nie uitgaande oproepe maak sonder die foon se toestemming nie."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"Voer \'n geldige nommer in om \'n oproep te maak."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"Oproep kan nie op die oomblik bygevoeg word nie."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"Vermiste stemboodskapnommer"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"Geen stemboodskapnommer is op die SIM-kaart gestoor nie."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"Voeg nommer by"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"Maak <xliff:g id="NEW_APP">%s</xliff:g> jou verstek-Foon-program?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"Stel verstek"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"Kanselleer"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> sal oproepe kan maak en alle aspekte daarvan beheer. Net programme wat jy vertrou, moet as die verstek-Foon-program gestel word."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"Maak <xliff:g id="NEW_APP">%s</xliff:g> jou verstek-oproepsiftingsprogram?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> sal nie meer oproepe kan sif nie."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> sal inligting oor bellers kan sien wat nie in jou kontakte is nie en hulle sal hierdie oproepe kan blokkeer. Net programme wat jy vertrou, moet as die verstek-oproepsiftingsprogram gestel word."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"Stel verstek"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"Kanselleer"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"Geblokkeerde nommers"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"Jy sal nie oproepe of boodskappe vanaf geblokkeerde nommers ontvang nie."</string>
+ <string name="block_number" msgid="3784343046852802722">"Voeg \'n nommer by"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"Deblokkeer <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"Deblokkeer"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"Blokkeer oproepe en SMS\'e vanaf"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"Foonnommer"</string>
+ <string name="block_button" msgid="485080149164258770">"Blokkeer"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"Net die toesteleienaar kan geblokkeerde nommers bekyk en bestuur."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"Deblokkeer"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"Blokkering is tydelik af"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"Nadat jy \'n noodnommer gebel het of \'n boodskap daarheen gestuur het, sal blokkering afgeskakel word sodat nooddienste jou kan kontak."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"Heraktiveer nou"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> geblokkeer"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> is gedeblokkeer"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"Kan nie noodgevalnommer blokkeer nie."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> is reeds geblokkeer."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"Gebruik tans die persoonlike beller om die oproep te maak"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"<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="5795968314037063900">"<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="8653544281903986641">"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="3702302838456922535">"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="8572022039304239958">"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="4031778317409881805">"As jy antwoord, sal dit jou huidige oproep beëindig"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"As jy antwoord, sal dit jou huidige oproepe beëindig"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"As jy antwoord, sal dit jou huidige video-oproep beëindig"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"Antwoord"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"Wys af"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"Oproep kan nie geplaas word nie, want daar is geen oproeprekeninge wat hierdie tipe oproepe ondersteun nie."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"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="6379163795277824868">"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="8243532328969433172">"Oproep kan nie gemaak word nie weens \'n oproep in \'n ander program."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"Inkomende oproepe"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"Gemiste oproepe"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"Oproepblokkering"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"As jy hierdie oproep maak, sal dit jou <xliff:g id="OTHER_APP">%1$s</xliff:g>-oproep beëindig."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Kies hoe om hierdie oproep te maak"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Herlei oproep deur <xliff:g id="OTHER_APP">%1$s</xliff:g> te gebruik"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"Bel deur my foonnommer te gebruik"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"Oproep kan nie deur <xliff:g id="OTHER_APP">%1$s</xliff:g> geplaas word nie. Probeer om \'n ander oproepherlei-toepassing te gebruik of die ontwikkelaar vir hulp te kontak."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"Oproepblokkering"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"Nommers nie in Kontakte nie"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"Blokkeer nommers wat nie in jou Kontakte gelys is nie"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"Privaat"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"Blokkeer bellers wat nie hulle nommer bekendmaak nie"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"Telefoonhokkies"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"Blokkeer oproepe vanaf telefoonhokkies"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"Onbekend"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"Blokkeer oproepe vanaf onbekende bellers"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"Oproepblokkering"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"Oproepblokkering is gedeaktiveer"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"Noodoproep gemaak"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"Oproepblokkering is gedeaktiveer sodat noodeenhede jou kan kontak."</string>
+ <string name="developer_title" msgid="9146088855661672353">"Telecom-ontwikkelaarkieslys"</string>
</resources>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index 6331a39..b712188 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"የጥሪ አስተዳደር"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"ስልክ"</string>
- <string name="unknown" msgid="6878797917991465859">"ያልታወቀ"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"ያመለጠጥሪ"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"ያመለጠ የሥራ ጥሪ"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"ያመለጡ ጥሪዎች"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> ያመለጡ ጥሪዎች"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"ከ<xliff:g id="MISSED_CALL_FROM">%s</xliff:g> ያመለጠ ጥሪ"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"መልሰህ ደውል"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"መልዕክት"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"ጥሪ ፀጥ ብሏል"</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"የስልክ ድምፅ ማጉያ ነቅቷል።"</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"አሁን ማውራት አልችልም። ሰላም ነው?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"ወዲያው መልሼ እደውላለሁ።"</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"ኋላ እደውላለሁ።"</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"አሁን ማውራት አልችልም። ትንሽ ቆይተው ይደውሉ?"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"ፈጣን ምላሾች"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"ፈጣን ምላሾች አርትዕ"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"ፈጣን ምላሽ"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"ለ <xliff:g id="PHONE_NUMBER">%s</xliff:g> የተላከ መልዕክት"</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"የመደወያ መለያዎች"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"የድንገተኛ አደጋ ጥሪዎች ብቻ ናቸው የሚፈቀዱት።"</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"ይህ መተግበሪያ ያለስልኩ ፈቃድ ወጪ ጥሪዎችን ማድረግ አይችልም።"</string>
- <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">"በSIM ካርዱ ላይምንም የድምፅመልዕክት ቁጥር አልከተቀመጠም።"</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>
- <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="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_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>
- <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_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_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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"ገቢ ጥሪዎች"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"ያመለጡ ጥሪዎች"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"ጥሪን ማገድ"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"ይህን ጥሪ ማድረግ የ<xliff:g id="OTHER_APP">%1$s</xliff:g> ጥሪዎን ያቋርጣል።"</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"ጥሪን ማገድ"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"ቁጥሮች በእውቂያዎች ውስጥ የሉም"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"በእውቂያዎችዎ ውስጥ ያልተዘረዘሩ ቁጥሮችን አግድ"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"የግል"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"ቁጥራቸውን የማይገልጹ ደዋዮችን አግድ"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"የክፍያ ስልክ"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"የክፍያ ስልኮች የሚመጡ ጥሪዎችን አግድ"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"ያልታወቀ"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"ካልታወቁ ደዋዮች የሚመጡ ጥሪዎችን አግድ"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"ጥሪን ማገድ"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"ጥሪ ማገድ ተሰናክሏል"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"የአደጋ ጊዜ ጥሪ ተደርጓል"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"የአደጋ ጊዜ ምላሽ ሰጪዎች እርስዎን ለማግኘት እንዲችሉ ጥሪ ማገድ ተሰናክሏል።"</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"የጥሪ አስተዳደር"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"ስልክ"</string>
+ <string name="unknown" msgid="6993977514360123431">"ያልታወቀ"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"ያመለጠጥሪ"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"ያመለጠ የሥራ ጥሪ"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"ያመለጡ ጥሪዎች"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> ያመለጡ ጥሪዎች"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"ከ<xliff:g id="MISSED_CALL_FROM">%s</xliff:g> ያመለጠ ጥሪ"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"መልሰህ ደውል"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"መልዕክት"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"ጥሪ ፀጥ ብሏል"</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"የስልክ ድምፅ ማጉያ ነቅቷል።"</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"አሁን ማውራት አልችልም። ሰላም ነው?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"ወዲያው መልሼ እደውላለሁ።"</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"ኋላ እደውላለሁ።"</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"አሁን ማውራት አልችልም። ትንሽ ቆይተው ይደውሉ?"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"ፈጣን ምላሾች"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"ፈጣን ምላሾች አርትዕ"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"ፈጣን ምላሽ"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"ለ <xliff:g id="PHONE_NUMBER">%s</xliff:g> የተላከ መልዕክት"</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"መልዕክት ወደ <xliff:g id="PHONE_NUMBER">%s</xliff:g> መላክ አልተሳካም።"</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"የመደወያ መለያዎች"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"የድንገተኛ አደጋ ጥሪዎች ብቻ ናቸው የሚፈቀዱት።"</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"ይህ መተግበሪያ ያለስልኩ ፈቃድ ወጪ ጥሪዎችን ማድረግ አይችልም።"</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"አንድ ጥሪ ለማድረግ የሚሰራ ቁጥር ያስገቡ።"</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"ጥሪ በዚህ ጊዜ ላይ ሊታከል አይችልም።"</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"የድምፅመልዕክት ቁጥርአመለጠ"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"በSIM ካርዱ ላይምንም የድምፅመልዕክት ቁጥር አልከተቀመጠም።"</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"ቁጥር አክል"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"<xliff:g id="NEW_APP">%s</xliff:g> የስልክዎ ነባሪ መተግበሪያ ይደረግ?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"ነባሪ አዘጋጅ"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"ይቅር"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> ጥሪዎች ማድረግ እና ሁሉንም የጥሪ ገጽታዎች መቆጣጠር ይችላል። ነባሪ መተግበሪያ መደረግ ያለባቸው እርስዎ የሚያምኗቸው መተግበሪያዎች ብቻ መሆን አለባቸው።"</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"<xliff:g id="NEW_APP">%s</xliff:g>ን የእርስዎ ነባሪ የጥሪ ማጣሪያ መተግበሪያ ይደረግ?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> ከእንግዲህ ወዲያ ጥሪዎችን ማጣራት አይችልም።"</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> በእርስዎ እውቂያዎች ውስጥ ስለ ደዋዮች መረጃዎችን ማየት እና እነዚህን ጥሪዎች ማገድ ይችላል። እርስዎ የሚያምኗቸው መተግበሪያዎች ብቻ እንደ ነባሪ የጥሪ ማጣሪያ መተግበሪያ መዘጋጀት አለባቸው።"</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"ነባሪ ያዘጋጁ"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"ይቅር"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"የታገዱ ቁጥሮች"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"ከታገዱ ቁጥሮች ጥሪዎች ወይም ጽሑፎች አይቀበሉም።"</string>
+ <string name="block_number" msgid="3784343046852802722">"ቁጥር ያክሉ"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"የ<xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g> እገዳ ይነሳ?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"እገዳውን አንሳ"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"ከሚከተለው የሚመጡ ጥሪዎችን እና ጽሑፎችን አግድ፦"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"የስልክ ቁጥር"</string>
+ <string name="block_button" msgid="485080149164258770">"አግድ"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"የመሣሪያው ባለቤት ብቻ ነው የታገዱ ቁጥሮችን ማየት እና ማስተዳደር የሚችለው።"</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"እገዳውን አንሳ"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"ማገድ ለጊዜው ጠፍቷል"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"የድንገተኛ አደጋ ቁጥር ከደወሉ ወይ ከጻፉ በኋላ፣ የድንገተኛ አደጋ አገልግሎቶች እርስዎን መገናኘት እንዲሚችል ለማረጋገጥ ማገጃ ጠፍቷል።"</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"አሁን እንደገና-ያንቁ"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> ታግዷል"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> እገዳው ተነስቷል"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"አስቸኳይ ጊዜ ቁጥር ማገድ አልቻለም።"</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> ቀድሞውኑ ታግዷል።"</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"ጥሪውን ለማድረግ የግል መደወያውን መጠቀም"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"<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="5795968314037063900">"<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="8653544281903986641">"መመለስ የ<xliff:g id="CALL_VIA">%1$s</xliff:g> ጥሪዎን ይጨርሳል"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"መመለስ የ<xliff:g id="CALL_VIA">%1$s</xliff:g> ጥሪዎችዎን ይጨርሳል"</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"መመለስ የ<xliff:g id="CALL_VIA">%1$s</xliff:g> የቪዲዮ ጥሪዎን ይጨርሳል"</string>
+ <string name="answering_ends_other_managed_call" msgid="4031778317409881805">"መመለስ በመካሄድ ላይ ያለ ጥሪዎን ይጨርሳል"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"መመለስ እየተካሄዱ ያሉ ጥሪዎችዎን ይጨርሳል"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"መመለስ እየተካሄደ ያለ የቪዲዮ ጥሪዎን ይጨርሳል"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"ይመልሱ"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"አትቀበል"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"የዚህን አይነት ጥሪዎች የሚደግፉ መደወያ መለያዎች ስለሌሉ ጥሪ መደረግ አይችልም።"</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"በ<xliff:g id="OTHER_CALL">%1$s</xliff:g> ጥሪዎ ምክንያት ጥሪ መደረግ አይችልም።"</string>
+ <string name="cant_call_due_to_ongoing_calls" msgid="6379163795277824868">"በ<xliff:g id="OTHER_CALL">%1$s</xliff:g> ጥሪዎችዎ ምክንያት ጥሪዎች መደረግ አይችሉም።"</string>
+ <string name="cant_call_due_to_ongoing_unknown_call" msgid="8243532328969433172">"በሌላ መተግበሪያ ውስጥ ባለ ጥሪ ምክንያት ጥሪ መደረግ አይችልም።"</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"ገቢ ጥሪዎች"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"ያመለጡ ጥሪዎች"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"ጥሪን ማገድ"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"ይህን ጥሪ ማድረግ የ<xliff:g id="OTHER_APP">%1$s</xliff:g> ጥሪዎን ያቋርጣል።"</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"ይህን ጥሪ እንዴት እንደሚያደርጉ ይምረጡ"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"<xliff:g id="OTHER_APP">%1$s</xliff:g>ን በመጠቀም አዘዋውር"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"የእኔን ስልክ ቁጥር በመጠቀም ደውል"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"ጥሪ በ <xliff:g id="OTHER_APP">%1$s</xliff:g> መደረግ አይችልም። ሌላ የጥሪ አቅጣጫ ማስቀየሪያ መተግበሪያ ለመጠቀም ወይም አልሚውን እገዛ ለመጠየቅ ይሞክሩ።"</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"ጥሪን ማገድ"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"ቁጥሮች በእውቂያዎች ውስጥ የሉም"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"በእውቂያዎችዎ ውስጥ ያልተዘረዘሩ ቁጥሮችን አግድ"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"የግል"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"ቁጥራቸውን የማይገልጹ ደዋዮችን አግድ"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"የክፍያ ስልክ"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"የክፍያ ስልኮች የሚመጡ ጥሪዎችን አግድ"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"ያልታወቀ"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"ካልታወቁ ደዋዮች የሚመጡ ጥሪዎችን አግድ"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"ጥሪን ማገድ"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"ጥሪ ማገድ ተሰናክሏል"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"የአደጋ ጊዜ ጥሪ ተደርጓል"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"የአደጋ ጊዜ ምላሽ ሰጪዎች እርስዎን ለማግኘት እንዲችሉ ጥሪ ማገድ ተሰናክሏል።"</string>
+ <string name="developer_title" msgid="9146088855661672353">"የቴሌኮም ገንቢ ምናሌ"</string>
</resources>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 16321c2..b0d4b70 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"إدارة المكالمات"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"الهاتف"</string>
- <string name="unknown" msgid="6878797917991465859">"غير معروف"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"مكالمة فائتة"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"مكالمة عمل فائتة"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"المكالمات الفائتة"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> من المكالمات الفائتة"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"مكالمة فائتة من <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"معاودة الاتصال"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"رسالة"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"تم كتم صوت المكالمة."</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"تم تفعيل مكبر صوت الهاتف."</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"لا يمكنني التحدث الآن. ما الأمر؟"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"سأعاود الاتصال بك."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"سأتصل بك لاحقًا."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"لا يمكنني التحدث الآن. اتصل لاحقًا."</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"الردود السريعة"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"تعديل الردود السريعة"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"رد سريع"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"تم إرسال الرسالة إلى <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"حسابات الاتصال"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"مسموح بمكالمات الطوارئ فقط."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"يتعذر على هذا التطبيق إجراء مكالمات صادرة بدون إذن من الهاتف."</string>
- <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">"لم يتم تخزين رقم بريد صوتي على شريحة SIM."</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>
- <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="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_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>
- <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_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_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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"المكالمات الواردة"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"المكالمات الفائتة"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"حظر المكالمات"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"يؤدي إجراء هذه المكالمة إلى إنهاء مكالمة <xliff:g id="OTHER_APP">%1$s</xliff:g>."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"حظر المكالمات"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"الأرقام غير المسردة في \"جهات الاتصال\""</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"حظر المكالمات عير المسردة في \"جهات الاتصال\""</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"خاص"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"حظر المتصلين الذين لا يكشفون رقمهم"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"هاتف مدفوع"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"حظر المكالمات من الهواتف المدفوعة"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"غير معروف"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"حظر المكالمات من المتّصلين مجهولي الهوية"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"حظر المكالمات"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"تم إيقاف حظر المكالمات"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"تم إجراء مكالمة طوارئ"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"تم إيقاف حظر المكالمات للسماح لمسؤولي استجابة الطوارئ بالاتصال بك."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"إدارة المكالمات"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"الهاتف"</string>
+ <string name="unknown" msgid="6993977514360123431">"غير معروف"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"مكالمة فائتة"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"مكالمة عمل فائتة"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"المكالمات الفائتة"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> من المكالمات الفائتة"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"مكالمة فائتة من <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"معاودة الاتصال"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"رسالة"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"تم كتم صوت المكالمة."</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"تم تفعيل مكبر صوت الهاتف."</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"لا يمكنني التحدث الآن. ما الأمر؟"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"سأعاود الاتصال بك."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"سأتصل بك لاحقًا."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"لا يمكنني التحدث الآن. اتصل لاحقًا."</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"الردود السريعة"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"تعديل الردود السريعة"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"رد سريع"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"تم إرسال الرسالة إلى <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"تعذَّر إرسال الرسالة إلى <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"حسابات الاتصال"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"مسموح بمكالمات الطوارئ فقط."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"يتعذر على هذا التطبيق إجراء مكالمات صادرة بدون إذن من الهاتف."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"لإجراء مكالمة، أدخل رقمًا صالحًا."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"لا يمكن إضافة مكالمة في الوقت الحالي."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"رقم البريد الصوتي مفقود"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"لم يتم تخزين رقم بريد صوتي على شريحة SIM."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"إضافة رقم"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"هل تريد تعيين <xliff:g id="NEW_APP">%s</xliff:g> كتطبيق الهاتف التلقائي؟"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"التحديد كتطبيق تلقائي"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"إلغاء"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"سيتمكن <xliff:g id="NEW_APP">%s</xliff:g> من إجراء المكالمات والتحكم في كل جوانبها. يمكن فقط تعيين التطبيقات التي تثق بها كتطبيق الهاتف التلقائي."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"هل تريد جعل <xliff:g id="NEW_APP">%s</xliff:g> تطبيق رَصْد المكالمات التلقائي في جهازك؟"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"لن يتمكَّن <xliff:g id="OLD_APP">%s</xliff:g> من رَصْد المُكالمات بعد ذلك."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"سيتمكَّن <xliff:g id="NEW_APP">%s</xliff:g> من الاطّلاع على معلومات عن المتصّلين الذين ليسوا ضمن جهات اتصالك وحظر المُكالمات الواردة منهم. يمكن فقط تحديد التطبيقات التي تثق بها كتطبيقات تلقائية لرَصْد المُكالمات."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"التحديد كتطبيق تلقائي"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"إلغاء"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"الأرقام المحظورة"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"لن تتلقّى أي مكالمات أو مراسلات نصية من الأرقام المحظورة."</string>
+ <string name="block_number" msgid="3784343046852802722">"إضافة رقم"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"هل تريد إلغاء حظر <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>؟"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"إلغاء الحظر"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"حظر المكالمات والرسائل النصية من"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"رقم الهاتف"</string>
+ <string name="block_button" msgid="485080149164258770">"حظر"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"يمكن لمالك الجهاز فقط الاطّلاع على الأرقام المحظورة وإدارتها."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"إلغاء الحظر"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"تم إيقاف الحظر مؤقتًا"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"بعد الاتصال الهاتفي أو إرسال رسالة نصية إلى رقم طوارئ، يتم إيقاف تشغيل الحظر لضمان تمكن خدمات الطوارئ من الاتصال بك."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"إعادة تفعيل الآن"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"تم حظر <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g>"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"تم إلغاء حظر <xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g>"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"غير قادر على حظر رقم الطوارئ."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"تم حظر <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> بالفعل."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"يتم استخدام أداة الاتصال الشخصي لإجراء الاتصال"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"<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="5795968314037063900">"<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="8653544281903986641">"سيؤدي الرد إلى إنهاء مكالمة <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"سيؤدي الرد إلى إنهاء مكالمات <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"سيؤدي الرد إلى إنهاء مكالمة فيديو <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+ <string name="answering_ends_other_managed_call" msgid="4031778317409881805">"سيؤدي الرد إلى إنهاء مكالمتك الجارية"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"سيؤدي الرد إلى إنهاء مكالماتك الجارية"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"سيؤدي الرد إلى إنهاء مكالمات الفيديو"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"رد"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"رفض"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"يتعذَّر إجراء المكالمة بسبب عدم وجود حسابات اتصال يمكن استخدامها مع المكالمات من هذا النوع."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"يتعذر إجراء المكالمة نتيجة لمكالمة <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+ <string name="cant_call_due_to_ongoing_calls" msgid="6379163795277824868">"يتعذر إجراء المكالمة نتيجة لمكالمات <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+ <string name="cant_call_due_to_ongoing_unknown_call" msgid="8243532328969433172">"يتعذر إجراء المكالمة نتيجة لوجود مكالمة في تطبيق آخر."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"المكالمات الواردة"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"المكالمات الفائتة"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"حظر المكالمات"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"يؤدي إجراء هذه المكالمة إلى إنهاء مكالمة <xliff:g id="OTHER_APP">%1$s</xliff:g>."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"اختيار كيفية إجراء هذه المكالمة"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"إعادة توجيه المكالمة باستخدام <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"الاتصال باستخدام رقم هاتفي"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"لا يمكن إجراء المكالمة بواسطة <xliff:g id="OTHER_APP">%1$s</xliff:g>. يمكنك تجربة استخدام تطبيق آخر لإعادة توجيه المكالمة أو الاتصال بمطور البرنامج للحصول على مساعدة."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"حظر المكالمات"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"الأرقام غير المسردة في \"جهات الاتصال\""</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"حظر المكالمات عير المسردة في \"جهات الاتصال\""</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"خاص"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"حظر المتصلين الذين لا يكشفون رقمهم"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"هاتف مدفوع"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"حظر المكالمات من الهواتف المدفوعة"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"غير معروف"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"حظر المكالمات من المتّصلين مجهولي الهوية"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"حظر المكالمات"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"تم إيقاف حظر المكالمات"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"تم إجراء مكالمة طوارئ"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"تم إيقاف حظر المكالمات للسماح لمسؤولي استجابة الطوارئ بالاتصال بك."</string>
+ <string name="developer_title" msgid="9146088855661672353">"قائمة مطوّر برامج الاتصالات"</string>
</resources>
diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml
index a8a1b2e..f2dc5e5 100644
--- a/res/values-as/strings.xml
+++ b/res/values-as/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"কল পৰিচালনা"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"ফ’ন"</string>
- <string name="unknown" msgid="6878797917991465859">"অজ্ঞাত"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"মিছ্ড কল"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"মিছ কৰা কৰ্মস্থানৰ কল"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"মিছ্ড কল"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g>টা মিছ্ড কল"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g>ৰ পৰা মিছ্ড কল"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"কলবেক কৰক"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"বাৰ্তা"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"কল মিউট কৰা হৈছে।"</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"স্পীকাৰফ\'ন সক্ষম কৰা হৈছে।"</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"এতিয়া কথা পাতিব নোৱাৰোঁ। কি খবৰ?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"মই আপোনাক লগে লগে কলবেক কৰি আছোঁ।"</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"মই আপোনাক পিছত কল কৰিম।"</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"এতিয়া কথা পাতিব নোৱাৰোঁ। মোক পিছত কল কৰিবনে?"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"ক্ষীপ্ৰ উত্তৰসমূহ"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"ক্ষীপ্ৰ উত্তৰসমূহ সম্পাদনা কৰক"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"তাৎক্ষণিক উত্তৰ"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"<xliff:g id="PHONE_NUMBER">%s</xliff:g>লৈ বাৰ্তা পঠিওৱা হ’ল।"</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"কলিং একাউণ্ট"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"কেৱল জৰুৰীকালীন কল কৰাৰ হে অনুমতি আছে।"</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"ফ\'ন অনুমতিটোৰ অবিহনে এই এপ্লিকেশ্বনটোৱে কোনো বহিৰ্গামী কল কৰিব নোৱাৰে।"</string>
- <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="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>
- <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="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_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>
- <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_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_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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"অন্তৰ্গামী কল"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"মিছ্ড কল"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"কল অৱৰোধ"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"এই কলটো কৰিলে আপোনাৰ <xliff:g id="OTHER_APP">%1$s</xliff:g> কলটোৰ অন্ত পৰিব।"</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"কল অৱৰোধ"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"আপোনাৰ সর্ম্পকসূচীত নথকা"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"আপোনাৰ সর্ম্পকসূচীত নথকা নম্বৰ অৱৰোধ কৰক"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"ব্য়ক্তিগত"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"যিসকল কল কৰোঁতাই তেওঁলোকৰ নম্বৰ প্ৰকাশ নকৰে তেওঁলোকক অৱৰোধ কৰক"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"পে\'ফ\'ন"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"পে\'ফ\'নৰ পৰা অহা কল অৱৰোধ কৰক"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"অজ্ঞাত"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"অচিনাক্ত কল কৰোঁতাৰ পৰা অহা কল অৱৰোধ কৰক"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"কল অৱৰোধ"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"কল অৱৰোধ সুবিধাটো অক্ষম কৰি থোৱা আছে"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"জৰুৰীকালীন কল ম\'ড"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"আপোনাক যাতে জৰুৰীকালীন সেৱা প্ৰদানকাৰীসকলে যোগাযোগ কৰিব পাৰে তাৰ বাবে কল অৱৰোধ সুবিধাটো অক্ষম কৰি থোৱা হৈছে।"</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"কল পৰিচালনা"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"ফ’ন"</string>
+ <string name="unknown" msgid="6993977514360123431">"অজ্ঞাত"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"মিছ্ড কল"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"মিছ কৰা কৰ্মস্থানৰ কল"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"মিছ্ড কল"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g>টা মিছ্ড কল"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g>ৰ পৰা মিছ্ড কল"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"কলবেক কৰক"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"বাৰ্তা"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"কল মিউট কৰা হৈছে।"</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"স্পীকাৰফ\'ন সক্ষম কৰা হৈছে।"</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"এতিয়া কথা পাতিব নোৱাৰোঁ। কি খবৰ?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"মই আপোনাক লগে লগে কলবেক কৰি আছোঁ।"</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"মই আপোনাক পিছত কল কৰিম।"</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"এতিয়া কথা পাতিব নোৱাৰোঁ। মোক পিছত কল কৰিবনে?"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"ক্ষীপ্ৰ উত্তৰসমূহ"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"ক্ষীপ্ৰ উত্তৰসমূহ সম্পাদনা কৰক"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"তাৎক্ষণিক উত্তৰ"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"<xliff:g id="PHONE_NUMBER">%s</xliff:g>লৈ বাৰ্তা পঠিওৱা হ’ল।"</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"<xliff:g id="PHONE_NUMBER">%s</xliff:g>লৈ বাৰ্তা পঠিয়াব পৰা নগ’ল।"</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"কলিং একাউণ্ট"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"কেৱল জৰুৰীকালীন কল কৰাৰ হে অনুমতি আছে।"</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"ফ\'ন অনুমতিটোৰ অবিহনে এই এপ্লিকেশ্বনটোৱে কোনো বহিৰ্গামী কল কৰিব নোৱাৰে।"</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"কল কৰিবৰ কাৰণে এটা মান্য নম্বৰ দিয়ক।"</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"এই মুহূৰ্তত কল যোগ কৰিব নোৱাৰি।"</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"ভইচমেইল নম্বৰ নাই"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"ছিম কাৰ্ডত কোনো ভইচমেইল নম্বৰ সঞ্চিত কৰি থোৱা হোৱা নাই।"</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"নম্বৰ যোগ কৰক"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"<xliff:g id="NEW_APP">%s</xliff:g>ক আপোনাৰ ডিফ\'ল্ট ফ\'ন এপ্ হিচাপে চিহ্নিত কৰেনে?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"ডিফ\'ল্ট ছেট কৰক"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"বাতিল কৰক"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g>এ কল কৰা লগতে কলৰ সকলো দিশ নিয়ন্ত্ৰণ কৰিবলৈ সক্ষম হ\'ব। কেৱল আপুনি সম্পূৰ্ণৰূপে বিশ্বাস কৰা এপক হে আপোনাৰ ডিফ\'ল্ট ফ\'ন এপ্ হিচাপে চিহ্নিত কৰা উচিত।"</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"<xliff:g id="NEW_APP">%s</xliff:g>ক আপোনাৰ ডিফ\'ল্ট কল স্ক্ৰীণ কৰা এপ্ হিচাপে ছেট কৰিবনে?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g>য়ে আৰু কল স্ক্ৰীণ কৰিব নোৱাৰিব।"</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g>য়ে আপোনাৰ সম্পৰ্কসূচীত নথকা কল কৰোঁতাৰ বিষয়ে তথ্য চাব আৰু এই কলবোৰ অৱৰোধ কৰিব পাৰিব। আপুনি বিশ্বাস কৰা এপবোৰহে ডিফ\'ল্ট কল স্ক্ৰীণ কৰা এপ্ হিচাপে ছেট কৰা উচিত।"</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"ডিফ\'ল্ট ছেট কৰক"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"বাতিল কৰক"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"অৱৰোধ কৰা নম্বৰসমূহ"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"আপুনি অৱৰোধ কৰা নম্বৰসমূহৰ পৰা আৰু কল বা বাৰ্তা লাভ নকৰে।"</string>
+ <string name="block_number" msgid="3784343046852802722">"নম্বৰ যোগ কৰক"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"<xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>ক অৱৰোধৰ পৰা আঁতৰাইনে?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"অৱৰোধৰ পৰা আঁতৰাওক"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"এই নম্বৰৰ পৰা কল আৰু পাঠ বাৰ্তা অৱৰোধ কৰক"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"ফ\'ন নম্বৰ"</string>
+ <string name="block_button" msgid="485080149164258770">"অৱৰোধ কৰক"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"কেৱল ডিভাইচটোৰ গৰাকীয়েহে অৱৰোধ কৰা নম্বৰসমূহ চাব আৰু পৰিচালনা কৰিব পাৰে।"</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"অৱৰোধৰ পৰা আঁতৰাওক"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"সাময়িকভাৱে অৱৰোধৰ সুবিধা বন্ধ কৰি থোৱা হৈছে"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"আপুনি জৰুৰীকালীন নম্বৰ এটা ডায়েল কৰাৰ পিছত বা সেই নম্বৰটোলৈ পাঠ বাৰ্তা পঠিওৱাৰ পিছত নম্বৰটো অৱৰোধৰ পৰা আঁতৰোৱা হয় যাতে জৰুৰীকালীন সেৱাসমূহে আপোনাৰ সৈতে যোগাযোগ কৰিব পাৰে।"</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"এতিয়াই পুনঃসক্ষম কৰক"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> অৱৰোধ কৰা হৈছে"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> অৱৰোধৰ পৰা আঁতৰ কৰা হৈছে"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"জৰুৰীকালীন নম্বৰ অৱৰোধ কৰিব পৰা নাই।"</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g>ক ইতিমধ্যে অৱৰোধ কৰা হৈছে।"</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"কলটো কৰিবলৈ ব্যক্তিগত ডায়েলাৰৰ ব্যৱহাৰ কৰা হৈছে"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"<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="5795968314037063900">"<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="8653544281903986641">"উত্তৰ দিলে <xliff:g id="CALL_VIA">%1$s</xliff:g> কলটোৰ অন্ত পৰিব"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"উত্তৰ দিলে <xliff:g id="CALL_VIA">%1$s</xliff:g> কলকেইটাৰ অন্ত পৰিব"</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"উত্তৰ দিলে আপোনাৰ বৰ্তমান চলি থকা <xliff:g id="CALL_VIA">%1$s</xliff:g> ভিডিঅ\' কলটোৰ অন্ত পৰিব"</string>
+ <string name="answering_ends_other_managed_call" msgid="4031778317409881805">"উত্তৰ দিলে আপোনাৰ বৰ্তমান চলি থকা কলটোৰ অন্ত পৰিব"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"উত্তৰ দিলে আপোনাৰ বৰ্তমান চলি থকা কলসমূহৰ অন্ত পৰিব"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"উত্তৰ দিলে আপোনাৰ বৰ্তমান চলি থকা ভিডিঅ\' কলটোৰ অন্ত পৰিব"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"উত্তৰ"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"প্ৰত্যাখ্যান কৰক"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"এইধৰণৰ কল কৰিব পৰা কলিং একাউণ্ট নোহোৱাৰ কাৰণে কল কৰিব নোৱাৰি।"</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"আপোনাৰ <xliff:g id="OTHER_CALL">%1$s</xliff:g> কল চলি থকাৰ কাৰণে বেলেগ কল কৰিব নোৱাৰি।"</string>
+ <string name="cant_call_due_to_ongoing_calls" msgid="6379163795277824868">"আপোনাৰ <xliff:g id="OTHER_CALL">%1$s</xliff:g> কলকেইটা চলি থকাৰ কাৰণে বেলেগ কল কৰিব নোৱাৰি।"</string>
+ <string name="cant_call_due_to_ongoing_unknown_call" msgid="8243532328969433172">"অইন এটা এপত কল চলি থকাৰ কাৰণে বেলেগ কল কৰিব নোৱাৰি।"</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"অন্তৰ্গামী কল"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"মিছ্ড কল"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"কল অৱৰোধ"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"এই কলটো কৰিলে আপোনাৰ <xliff:g id="OTHER_APP">%1$s</xliff:g> কলটোৰ অন্ত পৰিব।"</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"এই কলটো কেনেকৈ কৰা হ’ব সেয়া বাছনি কৰক"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"<xliff:g id="OTHER_APP">%1$s</xliff:g> ব্যৱহাৰ কৰি কল ৰিডাইৰেক্ট কৰক"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"মোৰ ফ’ন নম্বৰ ব্যৱহাৰ কৰি কল কৰক"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"<xliff:g id="OTHER_APP">%1$s</xliff:g>এ কলটো কৰিব পৰা নাই। বেলেগ এটা কল ৰিডাইৰেক্ট কৰা এপ্ ব্যৱহাৰ কৰি চাওক বা বিকাশকৰ্তাৰ সৈতে যোগাযোগ কৰক।"</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"কল অৱৰোধ"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"আপোনাৰ সর্ম্পকসূচীত নথকা"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"আপোনাৰ সর্ম্পকসূচীত নথকা নম্বৰ অৱৰোধ কৰক"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"ব্য়ক্তিগত"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"যিসকল কল কৰোঁতাই তেওঁলোকৰ নম্বৰ প্ৰকাশ নকৰে তেওঁলোকক অৱৰোধ কৰক"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"পে\'ফ\'ন"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"পে\'ফ\'নৰ পৰা অহা কল অৱৰোধ কৰক"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"অজ্ঞাত"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"অচিনাক্ত কল কৰোঁতাৰ পৰা অহা কল অৱৰোধ কৰক"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"কল অৱৰোধ"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"কল অৱৰোধ সুবিধাটো অক্ষম কৰি থোৱা আছে"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"জৰুৰীকালীন কল ম\'ড"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"আপোনাক যাতে জৰুৰীকালীন সেৱা প্ৰদানকাৰীসকলে যোগাযোগ কৰিব পাৰে তাৰ বাবে কল অৱৰোধ সুবিধাটো অক্ষম কৰি থোৱা হৈছে।"</string>
+ <string name="developer_title" msgid="9146088855661672353">"দূৰ-সংযোগ সম্পৰ্কীয় বিকাশকৰ্তাৰ মেনু"</string>
</resources>
diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml
index fd42626..e7124e0 100644
--- a/res/values-az/strings.xml
+++ b/res/values-az/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"Zənglərin İdarə Olunması"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"Telefon"</string>
- <string name="unknown" msgid="6878797917991465859">"Naməlum"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"Buraxılmış zəng"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"Buraxılmış iş çağrısı"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Buraxılmış zənglər"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> buraxılmış zənglər"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g> tərəfindən zəng buraxılıb"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Geriyə zəng"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"Mesaj"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"Səssiz zəng edin."</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"Spikerfon aktivdir."</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"İndi danışmaq olmur. Nə olub?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"Özüm zəng edəcəm."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Özüm sonra zəng edəcəm."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Danışa bilmirəm. Sonra zəngləşərik."</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Tez cavablar"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Hazır cavablara düzəliş edin"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"Tez cavab"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"Mesaj <xliff:g id="PHONE_NUMBER">%s</xliff:g> nömrəsinə göndərildi."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"Hesabların çağırılması"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"Yalnız təcili zənglərə icazə verilir."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"Bu proqram Telefon icazəsi olmadan zəng edə bilməz."</string>
- <string name="outgoing_call_error_no_phone_number_supplied" msgid="1940125199802007505">"Zəngi yerləşdirmək üçün düzgün nömrə daxil edin."</string>
- <string name="duplicate_video_call_not_allowed" msgid="3749211605014548386">"Hazırda çağrı edilə bilməz."</string>
- <string name="no_vm_number" msgid="4164780423805688336">"Səsli poçt nömrəsi çatışmır"</string>
- <string name="no_vm_number_msg" msgid="1300729501030053828">"SIM kartda heç bir səsli poçt nömrəsi yoxdur."</string>
- <string name="add_vm_number_str" msgid="4676479471644687453">"Nömrə əlavə edin"</string>
- <string name="change_default_dialer_dialog_title" msgid="9101655962941740507">"<xliff:g id="NEW_APP">%s</xliff:g> tətbiüi defolt Phone tətbiqi təyin edilsin?"</string>
- <string name="change_default_dialer_dialog_affirmative" msgid="8606546663509166276">"Defolt ayarlayın"</string>
- <string name="change_default_dialer_dialog_negative" msgid="9078144617060173845">"Ləğv edin"</string>
- <string name="change_default_dialer_warning_message" msgid="1417671460801684999">"<xliff:g id="NEW_APP">%s</xliff:g> bütün zəngləri edə və nəzarətdə saxlaya biləcək. Yalnız güvəndiyiniz tətbiqləri Telefon tətbiqi kimi ayarlaya bilərsiniz."</string>
- <string name="blocked_numbers" msgid="2751843139572970579">"Bloklanmış nömrələr"</string>
- <string name="blocked_numbers_msg" msgid="1045015186124965643">"Blok edilmiş nömrədən zənglər və ya mesajlar almayacaqsınız."</string>
- <string name="block_number" msgid="1101252256321306179">"Nömrə əlavə edin"</string>
- <string name="unblock_dialog_body" msgid="1614238499771862793">"<xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g> nömrəsi blokdan çıxarılsın?"</string>
- <string name="unblock_button" msgid="3078048901972674170">"Blokdan çıxar"</string>
- <string name="add_blocked_dialog_body" msgid="9030243212265516828">"Bu nömrədən olan zəngləri və mətnləri bloklayın"</string>
- <string name="add_blocked_number_hint" msgid="6847675097085433553">"Telefon nömrəsi"</string>
- <string name="block_button" msgid="8822290682524373357">"Blok edin"</string>
- <string name="non_primary_user" msgid="5180129233352533459">"Yalnız cihaz sahibi blok edilmiş nömrələrə baxa və idarə edə bilər."</string>
- <string name="delete_icon_description" msgid="8903995728252556724">"Blokdan çıxarın"</string>
- <string name="blocked_numbers_butter_bar_title" msgid="438170866438793182">"Bloklama müvəqqəti olaraq deaktiv edildi"</string>
- <string name="blocked_numbers_butter_bar_body" msgid="2223244484319442431">"Fövqəladə nömrəyə zəng etdikdən və ya mesaj yazdıqdan sonra, fövqəladə xidmətlərin Sizinlə əlaqə yarada biləcəyinə əmin olmaq üçün bloklama deaktiv edildi."</string>
- <string name="blocked_numbers_butter_bar_button" msgid="2197943354922010696">"İndi yenidən aktiv edin"</string>
- <string name="blocked_numbers_number_blocked_message" msgid="7678509606805029540">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> blok edildi"</string>
- <string name="blocked_numbers_number_unblocked_message" msgid="977894647366750418">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> blokdan çıxarıldı"</string>
- <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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"Gələn zənglər"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"Buraxılmış zənglər"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"Zəngi Bloklama"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"Bu zəngin yerləşdirilməsi <xliff:g id="OTHER_APP">%1$s</xliff:g> zəngini sonlandıracaq."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"Zəngi Bloklama"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"Kontaktda olmayan nömrələr"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"Kontaktda göstərilməyən nömrələri blok edin"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"Şəxsi"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"Nömrələrini bildirməyən şəxslərin zənglərini blok edin"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"Telefon ödənişi"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"Ödənişli telefon zənglərini blok edin"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"Naməlum"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"Naməlum şəxslərdən gələn zəngləri blok edin"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"Zəngi Bloklama"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"Zəngi Bloklama deaktivdir"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"Təcili zəng edildi"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"Təcili zənglərə cavab verənlərin Sizinlə əlaqə saxlamalarına icazə vermək üçün Zəngi Bloklama deaktiv edilib."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"Zənglərin İdarə Olunması"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"Telefon"</string>
+ <string name="unknown" msgid="6993977514360123431">"Naməlum"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"Buraxılmış zəng"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"Buraxılmış iş çağrısı"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"Buraxılmış zənglər"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> buraxılmış zənglər"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g> tərəfindən zəng buraxılıb"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"Geriyə zəng"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"Mesaj"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"Səssiz zəng edin."</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Spikerfon aktivdir."</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"İndi danışmaq olmur. Nə olub?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"Özüm zəng edəcəm."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"Özüm sonra zəng edəcəm."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"Danışa bilmirəm. Sonra zəngləşərik."</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"Tez cavablar"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"Hazır cavablara düzəliş edin"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"Tez cavab"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"Mesaj <xliff:g id="PHONE_NUMBER">%s</xliff:g> nömrəsinə göndərildi."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"<xliff:g id="PHONE_NUMBER">%s</xliff:g> nömrəsinə mesaj göndərmək alınmadı."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"Hesabların çağırılması"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"Yalnız təcili zənglərə icazə verilir."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"Bu proqram Telefon icazəsi olmadan zəng edə bilməz."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"Zəngi yerləşdirmək üçün düzgün nömrə daxil edin."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"Hazırda çağrı edilə bilməz."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"Səsli poçt nömrəsi çatışmır"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"SIM kartda heç bir səsli poçt nömrəsi yoxdur."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"Nömrə əlavə edin"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"<xliff:g id="NEW_APP">%s</xliff:g> tətbiüi defolt Phone tətbiqi təyin edilsin?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"Defolt ayarlayın"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"Ləğv edin"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> bütün zəngləri edə və nəzarətdə saxlaya biləcək. Yalnız güvəndiyiniz tətbiqləri Telefon tətbiqi kimi ayarlaya bilərsiniz."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"<xliff:g id="NEW_APP">%s</xliff:g> defolt ekran zəngi tətbiqi edilsin?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> artıq zəngləri görüntüləyə bilməyəcək."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> kontaktınızda olmayan zəng edənlər haqqında məlumatı görə və bu zəngləri blok edə biləcək. Yalnız etibar etdiyiniz tətbiqlər defolt ekran zəngi tətbiqi olaraq ayarlanmalıdır."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"Defolt ayarlayın"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"Ləğv edin"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"Bloklanmış nömrələr"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"Blok edilmiş nömrədən zənglər və ya mesajlar almayacaqsınız."</string>
+ <string name="block_number" msgid="3784343046852802722">"Nömrə əlavə edin"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"<xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g> nömrəsi blokdan çıxarılsın?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"Blokdan çıxar"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"Bu nömrədən olan zəngləri və mətnləri bloklayın"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"Telefon nömrəsi"</string>
+ <string name="block_button" msgid="485080149164258770">"Blok edin"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"Yalnız cihaz sahibi blok edilmiş nömrələrə baxa və idarə edə bilər."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"Blokdan çıxarın"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"Bloklama müvəqqəti olaraq deaktiv edildi"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"Fövqəladə nömrəyə zəng etdikdən və ya mesaj yazdıqdan sonra, fövqəladə xidmətlərin Sizinlə əlaqə yarada biləcəyinə əmin olmaq üçün bloklama deaktiv edildi."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"İndi yenidən aktiv edin"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> blok edildi"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> blokdan çıxarıldı"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"Fövqəladə nömrəni blok etmək mümkün deyil."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> artıq blok edilib."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"Zəng etmək üçün şəxsi nömrə yığımı istifadə olunur"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"<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="5795968314037063900">"<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="8653544281903986641">"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="3702302838456922535">"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="8572022039304239958">"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="4031778317409881805">"Cavab versəniz, davam edən zəng sonlandırılacaq"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"Cavab versəniz, davam edən zənglər sonlandırılacaq"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"Cavab versəniz, davam edən video zəng sonlandırılacaq"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"Cavab"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"Rədd edin"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"Bu növ zəngləri dəstəkləyən hesablar olmadığına görə zəng etmək mümkün deyil."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"<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="6379163795277824868">"<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="8243532328969433172">"Başqa bir tətbiqdəki zəng səbəbilə çağrı edilə bilməz."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"Gələn zənglər"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"Buraxılmış zənglər"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"Zəngi Bloklama"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"Bu zəngin yerləşdirilməsi <xliff:g id="OTHER_APP">%1$s</xliff:g> zəngini sonlandıracaq."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Bu zəngi necə etməyi seçin"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"<xliff:g id="OTHER_APP">%1$s</xliff:g> istifadə edərək zəngi yönləndirin"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"Telefon nömrəmdən istifadə edərək zəng edin"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"<xliff:g id="OTHER_APP">%1$s</xliff:g> ilə zəng etmək mümkün deyil. Başqa zəng yönləndirmə tətbiqindən istifadə edin və ya yardım üçün developerlə əlaqə saxlayın."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"Zəngi Bloklama"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"Kontaktda olmayan nömrələr"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"Kontaktda göstərilməyən nömrələri blok edin"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"Şəxsi"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"Nömrələrini bildirməyən şəxslərin zənglərini blok edin"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"Telefon ödənişi"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"Ödənişli telefon zənglərini blok edin"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"Naməlum"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"Naməlum şəxslərdən gələn zəngləri blok edin"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"Zəngi Bloklama"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"Zəngi Bloklama deaktivdir"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"Təcili zəng edildi"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"Təcili zənglərə cavab verənlərin Sizinlə əlaqə saxlamalarına icazə vermək üçün Zəngi Bloklama deaktiv edilib."</string>
+ <string name="developer_title" msgid="9146088855661672353">"Telecom Tərtibatçı Menyusu"</string>
</resources>
diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml
index 0730093..2aae672 100644
--- a/res/values-b+sr+Latn/strings.xml
+++ b/res/values-b+sr+Latn/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"Upravljanje pozivima"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"Telefon"</string>
- <string name="unknown" msgid="6878797917991465859">"Nepoznato"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"Propušten poziv"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"Propušten poziv za Work"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Propušteni pozivi"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"Broj propuštenih poziva: <xliff:g id="NUM_MISSED_CALLS">%s</xliff:g>"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"Propušten poziv od: <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Uzvrati poziv"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"Poruka"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"Zvuk poziva je isključen."</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"Spikerfon je omogućen."</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"U gužvi sam. O čemu se radi?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"Pozvaću te uskoro."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Pozvaću te kasnije."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"U gužvi sam. Zoveš me kasnije?"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Brzi odgovori"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Izmena brzih odgovora"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"Brzi odgovor"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"Poruka je poslata na broj <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"Nalozi za pozivanje"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"Dozvoljeni su samo hitni pozivi."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"Ova aplikacija ne može da poziva bez dozvole za telefoniranje."</string>
- <string name="outgoing_call_error_no_phone_number_supplied" msgid="1940125199802007505">"Da biste uputili poziv, unesite važeći broj."</string>
- <string name="duplicate_video_call_not_allowed" msgid="3749211605014548386">"Trenutno nije moguće dodati poziv."</string>
- <string name="no_vm_number" msgid="4164780423805688336">"Nedostaje broj za govornu poštu"</string>
- <string name="no_vm_number_msg" msgid="1300729501030053828">"Nije uskladišten nijedan broj govorne pošte na SIM kartici."</string>
- <string name="add_vm_number_str" msgid="4676479471644687453">"Dodaj broj"</string>
- <string name="change_default_dialer_dialog_title" msgid="9101655962941740507">"Želite li da <xliff:g id="NEW_APP">%s</xliff:g> postane podrazumevana aplikacija Telefon?"</string>
- <string name="change_default_dialer_dialog_affirmative" msgid="8606546663509166276">"Postavi kao podrazumevano"</string>
- <string name="change_default_dialer_dialog_negative" msgid="9078144617060173845">"Otkaži"</string>
- <string name="change_default_dialer_warning_message" msgid="1417671460801684999">"<xliff:g id="NEW_APP">%s</xliff:g> će moći da upućuje pozive i kontroliše sve njihove aspekte. Aplikaciju podesite kao podrazumevanu za telefoniranje samo ako je smatrate pouzdanom."</string>
- <string name="blocked_numbers" msgid="2751843139572970579">"Blokirani brojevi"</string>
- <string name="blocked_numbers_msg" msgid="1045015186124965643">"Nećete primati pozive ni SMS-ove sa blokiranih brojeva."</string>
- <string name="block_number" msgid="1101252256321306179">"Dodajte broj"</string>
- <string name="unblock_dialog_body" msgid="1614238499771862793">"Želite li da deblokirate <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
- <string name="unblock_button" msgid="3078048901972674170">"Deblokiraj"</string>
- <string name="add_blocked_dialog_body" msgid="9030243212265516828">"Blokirajte pozive i SMS-ove od"</string>
- <string name="add_blocked_number_hint" msgid="6847675097085433553">"Broj telefona"</string>
- <string name="block_button" msgid="8822290682524373357">"Blokiraj"</string>
- <string name="non_primary_user" msgid="5180129233352533459">"Samo vlasnik uređaja može da pregleda blokirane brojeve i upravlja njima."</string>
- <string name="delete_icon_description" msgid="8903995728252556724">"Deblokirajte"</string>
- <string name="blocked_numbers_butter_bar_title" msgid="438170866438793182">"Blokiranje je privremeno isključeno"</string>
- <string name="blocked_numbers_butter_bar_body" msgid="2223244484319442431">"Kad pozovete broj hitne službe ili na taj broj pošaljete SMS, blokiranje se isključuje da bi hitne službe mogle da vas kontaktiraju."</string>
- <string name="blocked_numbers_butter_bar_button" msgid="2197943354922010696">"Ponovo omogući"</string>
- <string name="blocked_numbers_number_blocked_message" msgid="7678509606805029540">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> je blokiran"</string>
- <string name="blocked_numbers_number_unblocked_message" msgid="977894647366750418">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> je deblokiran"</string>
- <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"Nije moguće blokirati broj hitne službe."</string>
- <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> je već blokiran."</string>
- <string name="toast_personal_call_msg" msgid="5115361633476779723">"Korišćenje brojčanika iz ličnog profila za upućivanje poziva"</string>
- <string name="notification_incoming_call" msgid="7713197997773986670">"<xliff:g id="CALL_VIA">%1$s</xliff:g> poziv od <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 poziv od <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
- <string name="answering_ends_other_call" msgid="8282145910153766401">"Ako odgovorite, završićete <xliff:g id="CALL_VIA">%1$s</xliff:g> poziv"</string>
- <string name="answering_ends_other_calls" msgid="1198589551399049197">"Ako odgovorite, završićete <xliff:g id="CALL_VIA">%1$s</xliff:g> pozive"</string>
- <string name="answering_ends_other_video_call" msgid="8510410917384186360">"Ako odgovorite, završićete <xliff:g id="CALL_VIA">%1$s</xliff:g> video poziv"</string>
- <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"Ako odgovorite, završićete poziv koji je u toku"</string>
- <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"Ako odgovorite, završićete pozive koji su u toku"</string>
- <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"Ako odgovorite, završićete video poziv koji je u toku"</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">"Ne možete da uputite poziv zbog <xliff:g id="OTHER_CALL">%1$s</xliff:g> poziva."</string>
- <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"Ne možete da uputite poziv zbog <xliff:g id="OTHER_CALL">%1$s</xliff:g> poziva."</string>
- <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"Ne možete da uputite poziv zbog poziva u drugoj aplikaciji."</string>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"Dolazni pozivi"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"Propušteni pozivi"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"Blokiranje poziva"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"Ako uputite ovaj poziv, završićete <xliff:g id="OTHER_APP">%1$s</xliff:g> poziv."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"Blokiranje poziva"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"Brojevi koji nisu u kontaktima"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"Blokirajte brojeve koji vam nisu u kontaktima"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"Skriveni brojevi"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"Blokirajte pozivaoce koji skrivaju broj"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"Telefonska govornica"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"Blokirajte pozive sa telefonskih govornica"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"Nepoznati brojevi"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"Blokirajte pozive neidentifikovanih pozivalaca"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"Blokiranje poziva"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"Blokiranje poziva je onemogućeno"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"Upućen je hitni poziv"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"Blokiranje poziva je onemogućeno da bi hitne službe mogle da vas kontaktiraju."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"Upravljanje pozivima"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"Telefon"</string>
+ <string name="unknown" msgid="6993977514360123431">"Nepoznato"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"Propušten poziv"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"Propušten poziv za Work"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"Propušteni pozivi"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"Broj propuštenih poziva: <xliff:g id="NUM_MISSED_CALLS">%s</xliff:g>"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"Propušten poziv od: <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"Uzvrati poziv"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"Poruka"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"Zvuk poziva je isključen."</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Spikerfon je omogućen."</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"U gužvi sam. O čemu se radi?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"Pozvaću te uskoro."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"Pozvaću te kasnije."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"U gužvi sam. Zoveš me kasnije?"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"Brzi odgovori"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"Izmena brzih odgovora"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"Brzi odgovor"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"Poruka je poslata na broj <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"Slanje poruke na <xliff:g id="PHONE_NUMBER">%s</xliff:g> nije uspelo."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"Nalozi za pozivanje"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"Dozvoljeni su samo hitni pozivi."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"Ova aplikacija ne može da poziva bez dozvole za telefoniranje."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"Da biste uputili poziv, unesite važeći broj."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"Trenutno nije moguće dodati poziv."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"Nedostaje broj za govornu poštu"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"Nije uskladišten nijedan broj govorne pošte na SIM kartici."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"Dodaj broj"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"Želite li da <xliff:g id="NEW_APP">%s</xliff:g> postane podrazumevana aplikacija Telefon?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"Postavi kao podrazumevano"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"Otkaži"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> će moći da upućuje pozive i kontroliše sve njihove aspekte. Aplikaciju podesite kao podrazumevanu za telefoniranje samo ako je smatrate pouzdanom."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"Podesiti <xliff:g id="NEW_APP">%s</xliff:g> kao podraz. aplikaciju za upravljanje pozivima?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> više neće moći da upravlja dolaznim pozivima."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> će moći da vidi informacije o pozivaocima koji vam nisu u kontaktima i da blokira njihove pozive. Aplikaciju podesite kao podrazumevanu za upravljanje dolaznim pozivima samo ako je smatrate pouzdanom."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"Podesi kao podrazumevanu"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"Otkaži"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"Blokirani brojevi"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"Nećete primati pozive ni SMS-ove sa blokiranih brojeva."</string>
+ <string name="block_number" msgid="3784343046852802722">"Dodajte broj"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"Želite li da deblokirate <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"Deblokiraj"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"Blokirajte pozive i SMS-ove od"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"Broj telefona"</string>
+ <string name="block_button" msgid="485080149164258770">"Blokiraj"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"Samo vlasnik uređaja može da pregleda blokirane brojeve i upravlja njima."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"Deblokirajte"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"Blokiranje je privremeno isključeno"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"Kad pozovete broj hitne službe ili na taj broj pošaljete SMS, blokiranje se isključuje da bi hitne službe mogle da vas kontaktiraju."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"Ponovo omogući"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> je blokiran"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> je deblokiran"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"Nije moguće blokirati broj hitne službe."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> je već blokiran."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"Korišćenje brojčanika iz ličnog profila za upućivanje poziva"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"<xliff:g id="CALL_VIA">%1$s</xliff:g> poziv od <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+ <string name="notification_incoming_video_call" msgid="5795968314037063900">"<xliff:g id="CALL_VIA">%1$s</xliff:g> video poziv od <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+ <string name="answering_ends_other_call" msgid="8653544281903986641">"Ako odgovorite, završićete <xliff:g id="CALL_VIA">%1$s</xliff:g> poziv"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"Ako odgovorite, završićete <xliff:g id="CALL_VIA">%1$s</xliff:g> pozive"</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"Ako odgovorite, završićete <xliff:g id="CALL_VIA">%1$s</xliff:g> video poziv"</string>
+ <string name="answering_ends_other_managed_call" msgid="4031778317409881805">"Ako odgovorite, završićete poziv koji je u toku"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"Ako odgovorite, završićete pozive koji su u toku"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"Ako odgovorite, završićete video poziv koji je u toku"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"Odgovori"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"Odbij"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"Upućivanje poziva nije moguće jer nemate nijedan nalog za pozivanje koji podržava pozive ovog tipa."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"Ne možete da uputite poziv zbog <xliff:g id="OTHER_CALL">%1$s</xliff:g> poziva."</string>
+ <string name="cant_call_due_to_ongoing_calls" msgid="6379163795277824868">"Ne možete da uputite poziv zbog <xliff:g id="OTHER_CALL">%1$s</xliff:g> poziva."</string>
+ <string name="cant_call_due_to_ongoing_unknown_call" msgid="8243532328969433172">"Ne možete da uputite poziv zbog poziva u drugoj aplikaciji."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"Dolazni pozivi"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"Propušteni pozivi"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"Blokiranje poziva"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"Ako uputite ovaj poziv, završićete <xliff:g id="OTHER_APP">%1$s</xliff:g> poziv."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Izaberite kako želite da uputite ovaj poziv"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Preusmeri poziv pomoću: <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"Pozovi pomoću mog broja telefona"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"<xliff:g id="OTHER_APP">%1$s</xliff:g> ne može da uputi poziv. Probajte pomoću druge aplikacije za preusmeravanje poziva ili zatražite pomoć od programera."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"Blokiranje poziva"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"Brojevi koji nisu u kontaktima"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"Blokirajte brojeve koji vam nisu u kontaktima"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"Skriveni brojevi"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"Blokirajte pozivaoce koji skrivaju broj"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"Telefonska govornica"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"Blokirajte pozive sa telefonskih govornica"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"Nepoznati brojevi"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"Blokirajte pozive neidentifikovanih pozivalaca"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"Blokiranje poziva"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"Blokiranje poziva je onemogućeno"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"Upućen je hitni poziv"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"Blokiranje poziva je onemogućeno da bi hitne službe mogle da vas kontaktiraju."</string>
+ <string name="developer_title" msgid="9146088855661672353">"Meni za programere Telecom-a"</string>
</resources>
diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml
index 0cfa989..9e8c736 100644
--- a/res/values-be/strings.xml
+++ b/res/values-be/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"Кіраванне выклікамі"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"Тэлефон"</string>
- <string name="unknown" msgid="6878797917991465859">"Невядомы"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"Прапушчаны выклік"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"Прапушчаны выклік па працы"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Прапушчаныя выклікі"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"Прапушчаных выклікаў: <xliff:g id="NUM_MISSED_CALLS">%s</xliff:g>"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"Прапушчаны выклік ад <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Адказаць"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"Паведамленне"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"Выклік сцішаны."</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"Уключаная гучная сувязь."</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"Не магу гаварыць. У чым справа?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"Зараз перазваню."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Я патэлефаную пазней."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Не магу гаварыць. Патэлефануеце пазней?"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Хуткія адказы"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Рэдагаваць хуткія адказы"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"Хуткі адказ"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"Паведамленне адпраўлена на нумар <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"Уліковыя запісы для выклікаў"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"Дазволены толькі экстранныя выклікі."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"Гэта праграма не можа рабіць выходныя выклікі без дазволу тэлефона."</string>
- <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">"На SIM-карце няма нумару галасавой пошты."</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>
- <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="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">"Разблакiраваць"</string>
- <string name="add_blocked_dialog_body" msgid="9030243212265516828">"Блакіраваць выклікі і SMS ад"</string>
- <string name="add_blocked_number_hint" msgid="6847675097085433553">"Нумар тэлефона"</string>
- <string name="block_button" msgid="8822290682524373357">"Заблакiраваць"</string>
- <string name="non_primary_user" msgid="5180129233352533459">"Толькі ўладальнік прылады можа праглядаць блакіраваныя нумары і кіраваць імі."</string>
- <string name="delete_icon_description" msgid="8903995728252556724">"Разблакiраваць"</string>
- <string name="blocked_numbers_butter_bar_title" msgid="438170866438793182">"Блакіроўка часова адключана"</string>
- <string name="blocked_numbers_butter_bar_body" msgid="2223244484319442431">"Пасля тэлефанавання або адпраўкі SMS на экстранны нумар блакіроўка адключаецца, каб аварыйныя службы маглі звязацца з вамі."</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_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_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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"Уваходныя выклікі"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"Прапушчаныя выклікі"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"Блакіраванне выклікаў"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"Калі зрабіць гэты выклік, ваш выклік праз праграму <xliff:g id="OTHER_APP">%1$s</xliff:g> скончыцца."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"Блакіраванне выклікаў"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"Нумары не ў спісе кантактаў"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"Блакіраваць нумары, якіх няма ў спісе вашых кантактаў"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"Схаваныя нумары"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"Блакіраваць абанентаў, якія не раскрываюць свой нумар"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"Таксафон"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"Блакіраваць выклікі з таксафонаў"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"Невядомыя нумары"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"Блакіраваць выклікі ад неапазнаных абанентаў"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"Блакіраванне выклікаў"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"Блакіраванне выклікаў адключана"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"Зроблены экстранны выклік"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"Блакіраванне выклікаў было адключана, каб дазволіць аварыйнай брыгадзе звязацца з вамі."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"Кіраванне выклікамі"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"Тэлефон"</string>
+ <string name="unknown" msgid="6993977514360123431">"Невядомы"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"Прапушчаны выклік"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"Прапушчаны выклік па працы"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"Прапушчаныя выклікі"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"Прапушчаных выклікаў: <xliff:g id="NUM_MISSED_CALLS">%s</xliff:g>"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"Прапушчаны выклік ад <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"Адказаць"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"Паведамленне"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"Выклік сцішаны."</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Уключаная гучная сувязь."</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Не магу гаварыць. У чым справа?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"Я выклікаю цябе праз момант."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"Я выклікаю цябе пазней."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"Не магу адказаць. Пагаворым пазней?"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"Хуткія адказы"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"Рэдагаваць хуткія адказы"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"Хуткі адказ"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"Паведамленне адпраўлена на нумар <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"Не ўдалося адправіць паведамленне на <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"Уліковыя запісы для выклікаў"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"Дазволены толькі экстранныя выклікі."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"Гэта праграма не можа рабіць выходныя выклікі без дазволу тэлефона."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"Каб зрабіць выклік, увядзіце сапраўдны нумар."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"Зараз немагчыма дадаць выклік."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"Адсутнічае нумар галасавой пошты"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"На SIM-карце няма нумару галасавой пошты."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"Дадаць нумар"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"Зрабіць <xliff:g id="NEW_APP">%s</xliff:g> вашай стандартнай тэлефоннай праграмай?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"Задаць як стандартную"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"Скасаваць"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> зможа вызначаць і кантраляваць усе аспекты выклікаў. Стандартнымі тэлефоннымі праграмамі павінны прызначацца толькі праграмы, якім вы давяраеце."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"Зрабіць <xliff:g id="NEW_APP">%s</xliff:g> стандартнай праграмай фільтравання выклікаў?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"Праграма <xliff:g id="OLD_APP">%s</xliff:g> больш не зможа фільтраваць выклікі."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"Праграма <xliff:g id="NEW_APP">%s</xliff:g> зможа бачыць інфармацыю аб абанентах, якія не ўключаны ў спіс вашых кантактаў, і блакіраваць іх выклікі. Прызначайце ў якасці стандартных тэлефонных праграмам толькі тыя, якім вы давяраеце."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"Задаць як стандартную"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"Скасаваць"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"Заблакіраваныя нумары"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"Вы не будзеце атрымліваць выклікі ці SMS з заблакіраваных нумароў."</string>
+ <string name="block_number" msgid="3784343046852802722">"Дадаць нумар"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"Разблакіраваць <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"Разблакiраваць"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"Блакіраваць выклікі і SMS ад"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"Нумар тэлефона"</string>
+ <string name="block_button" msgid="485080149164258770">"Заблакiраваць"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"Толькі ўладальнік прылады можа праглядаць блакіраваныя нумары і кіраваць імі."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"Разблакiраваць"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"Блакіроўка часова адключана"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"Пасля тэлефанавання або адпраўкі SMS на экстранны нумар блакіроўка адключаецца, каб аварыйныя службы маглі звязацца з вамі."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"Паўторна ўключыць зараз"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> заблакіраваны"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> разблакіраваны"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"Немагчыма заблакіраваць нумар экстранай службы."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> ужо заблакіраваны."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"Выкарыстанне асабістага набіральніка нумара для выканання выкліку"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"Выклік <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="5795968314037063900">"Відэавыклік <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="8653544281903986641">"Адказ на гэты выклік завершыць ваш выклік <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"Адказ на гэты выклік завершыць вашы выклікі <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"Адказ на гэты выклік завершыць ваш бягучы відэавыклік <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+ <string name="answering_ends_other_managed_call" msgid="4031778317409881805">"Адказ на гэты выклік завершыць ваш бягучы выклік"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"Адказ на гэты выклік завершыць вашы бягучыя выклікі"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"Адказ на гэты выклік завершыць ваш бягучы відэавыклік"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"Адказаць"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"Адхіліць"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"Не ўдалося зрабіць выклік, бо на прыладзе няма ўліковых запісаў для гэтага тыпу выклікаў."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"Выклік немагчыма выканаць, бо ідзе выклік <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+ <string name="cant_call_due_to_ongoing_calls" msgid="6379163795277824868">"Выклік немагчыма выканаць, бо ідуць выклікі <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+ <string name="cant_call_due_to_ongoing_unknown_call" msgid="8243532328969433172">"Выклік немагчыма выканаць, бо ідзе выклік у іншай праграме."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"Уваходныя выклікі"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"Прапушчаныя выклікі"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"Блакіраванне выклікаў"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"Калі зрабіць гэты выклік, ваш выклік праз праграму <xliff:g id="OTHER_APP">%1$s</xliff:g> скончыцца."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Выберыце, праз які нумар зрабіць выклік"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Перанакіраваць выклік, выкарыстоўваючы нумар \"<xliff:g id="OTHER_APP">%1$s</xliff:g>\""</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"Зрабіць выклік, выкарыстоўваючы мой нумар тэлефона"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"Не ўдалося зрабіць выклік праз праграму \"<xliff:g id="OTHER_APP">%1$s</xliff:g>\". Скарыстайце іншую праграму для перанакіравання выклікаў або звярніцеся да распрацоўшчыка па дапамогу."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"Блакіраванне выклікаў"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"Нумары не ў спісе кантактаў"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"Блакіраваць нумары, якіх няма ў спісе вашых кантактаў"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"Схаваныя нумары"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"Блакіраваць абанентаў, якія не раскрываюць свой нумар"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"Таксафон"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"Блакіраваць выклікі з таксафонаў"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"Невядомыя нумары"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"Блакіраваць выклікі ад неапазнаных абанентаў"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"Блакіраванне выклікаў"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"Блакіраванне выклікаў адключана"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"Зроблены экстранны выклік"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"Блакіраванне выклікаў было адключана, каб дазволіць аварыйнай брыгадзе звязацца з вамі."</string>
+ <string name="developer_title" msgid="9146088855661672353">"Меню распрацоўшчыка Telecom"</string>
</resources>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index 102fb6f..d579297 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"Управление на обажданията"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"Телефон"</string>
- <string name="unknown" msgid="6878797917991465859">"Неизвестен номер"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"Пропуснато обаждане"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"Пропуснато служебно обаждане"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Пропуснати обаждания"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> пропуснати обаждания"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"Пропуснато обаждане от <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Обратно обаждане"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"Съобщение"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"Обаждането бе спряно."</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"Високоговорителят бе активиран."</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"Сега не мога да говоря. Какво има?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"Ще ви се обадя веднага обратно."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Ще ви се обадя по-късно."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Сега не мога да говоря. По-късно?"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Бързи отговори"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Редакт. на бързи отговори"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"Бърз отговор"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"До <xliff:g id="PHONE_NUMBER">%s</xliff:g> бе изпратено съобщение."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"Профили за обаждане"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"Разрешени са само спешни обаждания."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"Това приложение не може да извършва изходящи обаждания без разрешението за телефон."</string>
- <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">"На SIM картата няма съхранен номер за гласова поща."</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>
- <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="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_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>
- <string name="blocked_numbers_butter_bar_title" msgid="438170866438793182">"Блокирането временно е изключено"</string>
- <string name="blocked_numbers_butter_bar_body" msgid="2223244484319442431">"След като наберете или изпратите SMS до номер за спешни повиквания, блокирането се изключва, за да могат спешните служби да се свържат с вас."</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_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_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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"Входящи обаждания"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"Пропуснати обаждания"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"Блокиране на обажданията"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"Ако извършите това обаждане, обаждането ви през <xliff:g id="OTHER_APP">%1$s</xliff:g> ще прекъсне."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"Блокиране на обажданията"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"Номера, които не са в контактите"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"Блокиране на номерата, които не са в контактите ви"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"Скрити"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"Блокиране на обаждащите се, които крият номера си"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"Импулсни телефони"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"Блокиране на обаждания от импулсни телефони"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"Неизвестни"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"Блокиране на обажданията от неидентифицирани обаждащи се"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"Блокиране на обажданията"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"Блокирането на обажданията е деактивирано"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"Извършено бе спешно обаждане"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"Блокирането на обажданията е деактивирано, за да могат службите за спешни случаи да се свържат с вас."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"Управление на обажданията"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"Телефон"</string>
+ <string name="unknown" msgid="6993977514360123431">"Неизвестен номер"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"Пропуснато обаждане"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"Пропуснато служебно обаждане"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"Пропуснати обаждания"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> пропуснати обаждания"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"Пропуснато обаждане от <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"Обратно обаждане"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"Съобщение"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"Обаждането бе спряно."</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Високоговорителят бе активиран."</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Сега не мога да говоря. Какво има?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"Ще се обадя веднага обратно."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"Ще се обадя по-късно."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"Сега не мога да говоря. По-късно?"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"Бързи отговори"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"Редакт. на бързи отговори"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"Бърз отговор"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"До <xliff:g id="PHONE_NUMBER">%s</xliff:g> бе изпратено съобщение."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"Неуспешно изпращане на съобщението до <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"Профили за обаждане"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"Разрешени са само спешни обаждания."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"Това приложение не може да извършва изходящи обаждания без разрешението за телефон."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"За да извършите обаждане, въведете валиден номер."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"Понастоящем обаждането не може да бъде добавено."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"Липсващ номер на гласова поща"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"На SIM картата няма съхранен номер за гласова поща."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"Добавяне на номер"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"<xliff:g id="NEW_APP">%s</xliff:g> да бъде ли стандартното ви приложение за телефон?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"Задаване като стандартно"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"Отказ"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> ще може да извършва обаждания и да контролира всички аспекти на обажданията. Като стандартно приложение за телефон задавайте само приложения, на които имате доверие."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"<xliff:g id="NEW_APP">%s</xliff:g> да се ползва ли стандартно за преглед на повикванията?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> повече няма да може да преглежда повикванията."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> ще може да вижда информация за обаждащи се, които не са в списъка ви с контакти, и ще може да блокира тези обаждания. Като стандартно приложение за преглед на повикванията задайте само такова, на което имате доверие."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"Задаване като стандартно"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"Отказ"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"Блокирани номера"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"Няма да получавате обаждания или SMS от блокираните номера."</string>
+ <string name="block_number" msgid="3784343046852802722">"Добавяне на номер"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"Искате ли да отблокирате <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"Отблокиране"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"Блокиране на обажданията и текстовите съобщения от"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"Телефонен номер"</string>
+ <string name="block_button" msgid="485080149164258770">"Блокиране"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"Само собственикът на устройството може да преглежда и управлява блокираните номера."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"Отблокиране"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"Блокирането временно е изключено"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"След като наберете или изпратите SMS до номер за спешни повиквания, блокирането се изключва, за да могат спешните служби да се свържат с вас."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"Повторно активиране сега"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> е блокиран"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> е отблокиран"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"Номера за спешни случаи не могат да се блокират."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> вече е блокиран."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"За извършване на обаждането се използва личната клавиатура за набиране"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"Обаждане през <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="5795968314037063900">"Видеообаждане през <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="8653544281903986641">"Ако отговорите, обаждането ви през <xliff:g id="CALL_VIA">%1$s</xliff:g> ще прекъсне"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"Ако отговорите, обажданията ви през <xliff:g id="CALL_VIA">%1$s</xliff:g> ще прекъснат"</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"Ако отговорите, видеообаждането ви през <xliff:g id="CALL_VIA">%1$s</xliff:g> ще прекъсне"</string>
+ <string name="answering_ends_other_managed_call" msgid="4031778317409881805">"Ако отговорите, текущото ви обаждане ще прекъсне"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"Ако отговорите, текущите ви обаждания ще прекъснат"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"Ако отговорите, текущото ви видеообаждане ще прекъсне"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"Отговаряне"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"Отхвърляне"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"Обаждането не може да бъде извършено, защото няма профили за обаждане, които поддържат обаждания от този тип."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"Не можете да се обадите заради обаждането си през <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+ <string name="cant_call_due_to_ongoing_calls" msgid="6379163795277824868">"Не можете да се обадите заради обажданията си през <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+ <string name="cant_call_due_to_ongoing_unknown_call" msgid="8243532328969433172">"Не можете да се обадите заради обаждане в друго приложение."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"Входящи обаждания"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"Пропуснати обаждания"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"Блокиране на обажданията"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"Ако извършите това обаждане, обаждането ви през <xliff:g id="OTHER_APP">%1$s</xliff:g> ще прекъсне."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Изберете как да се извърши обаждането"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Пренасочване на обаждането през <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"Обаждане през телефонния ми номер"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"Не може да се извърши от <xliff:g id="OTHER_APP">%1$s</xliff:g>. Опитайте да използвате друго приложение за пренасочване на обаждания или се обърнете за помощ към програмиста."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"Блокиране на обажданията"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"Номера, които не са в контактите"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"Блокиране на номерата, които не са в контактите ви"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"Скрити"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"Блокиране на обаждащите се, които крият номера си"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"Импулсни телефони"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"Блокиране на обаждания от импулсни телефони"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"Неизвестни"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"Блокиране на обажданията от неидентифицирани обаждащи се"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"Блокиране на обажданията"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"Блокирането на обажданията е деактивирано"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"Извършено бе спешно обаждане"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"Блокирането на обажданията е деактивирано, за да могат службите за спешни случаи да се свържат с вас."</string>
+ <string name="developer_title" msgid="9146088855661672353">"Меню за програмисти на Telecom"</string>
</resources>
diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml
index 5f5a8bb..adde38b 100644
--- a/res/values-bn/strings.xml
+++ b/res/values-bn/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"কল ব্যবস্থাপনা"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"ফোন"</string>
- <string name="unknown" msgid="6878797917991465859">"অজানা"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"মিসড কল"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"কাজের কল মিস করেছেন"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"মিসড কলগুলি"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g>টি মিসড কল"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g> এর থেকে মিসড কল"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"কল ব্যাক করুন"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"মেসেজ"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"কল মিউট করা আছে৷"</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"স্পীকারফোন সক্ষম করা আছে৷"</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"এখন কথা বলতে পারছি না৷ কি খবর?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"আমি আপনাকে কিছুক্ষণ পরেই কল করছি৷"</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"আমি পরে আপনাকে কল করে নেব৷"</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"এখন কথা বলতে পারছি না৷ আমাকে একটু পরে কল করবেন?"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"দ্রুত প্রতিক্রিয়াগুলি"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"দ্রুত প্রতিক্রিয়াগুলির সম্পাদনা করুন"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"দ্রুত প্রতিক্রিয়া"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"<xliff:g id="PHONE_NUMBER">%s</xliff:g> এ বার্তা পাঠানো হয়েছে৷"</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"কলিং অ্যাকাউন্টগুলি"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"শুধুমাত্র জরুরি কলগুলিকে অনুমোদিত।"</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"এই অ্যাপ্লিকেশানটি ফোনের অনুমতি ছাড়া আউটগোয়িং কলগুলি করতে পারবে না।"</string>
- <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="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>
- <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="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_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>
- <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_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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"ইনকামিং কল"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"মিস করা কল"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"কল ব্লক করা"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"এই কলটির উত্তর দেওয়া হলে তা আপনার <xliff:g id="OTHER_APP">%1$s</xliff:g> কলটি কেটে যাবে৷"</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"কল ব্লক করা"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"পরিচিতিতে নেই এমন নম্বর"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"আপনার পরিচিতিতে নেই এমন নম্বর ব্লক করুন"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"ব্যক্তিগত"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"কলার আইডিতে নম্বর দেখা যায়না এমন কল ব্লক করুন"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"পাবলিক ফোন"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"পাবলিক ফোন থেকে করা কল ব্লক করুন"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"অজানা"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"অচেনা নম্বর থেকে করা কল ব্লক করুন"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"কল ব্লক করা"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"কল ব্লক করার বৈশিষ্ট্য বন্ধ করা হয়েছে"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"জরুরি অবস্থার কল করা হয়েছে"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"কল ব্লক করার বৈশিষ্ট্য বন্ধ করা হয়েছে যাতে জরুরি অবস্থার সাহায্যকারী ব্যক্তি আপনার সাথে যোগাযোগ করতে পারেন।"</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"কল ব্যবস্থাপনা"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"ফোন"</string>
+ <string name="unknown" msgid="6993977514360123431">"অজানা"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"মিসড কল"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"কাজের কল মিস করেছেন"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"মিসড কলগুলি"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g>টি মিসড কল"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g> এর থেকে মিসড কল"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"কল ব্যাক করুন"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"মেসেজ"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"কল মিউট করা আছে৷"</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"স্পীকারফোন সক্ষম করা আছে৷"</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"এখন কথা বলতে পারছি না৷ কি খবর?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"আমি আপনাকে কিছুক্ষণ পরেই কল করছি৷"</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"আমি পরে আপনাকে কল করে নেব৷"</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"এখন কথা বলতে পারছি না৷ আমাকে একটু পরে কল করবেন?"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"দ্রুত প্রতিক্রিয়াগুলি"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"দ্রুত প্রতিক্রিয়াগুলির সম্পাদনা করুন"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"দ্রুত প্রতিক্রিয়া"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"<xliff:g id="PHONE_NUMBER">%s</xliff:g> এ বার্তা পাঠানো হয়েছে৷"</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"<xliff:g id="PHONE_NUMBER">%s</xliff:g>-এ মেসেজ পাঠানো যায়নি।"</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"কলিং অ্যাকাউন্টগুলি"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"শুধুমাত্র জরুরি কলগুলিকে অনুমোদিত।"</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"এই অ্যাপ্লিকেশানটি ফোনের অনুমতি ছাড়া আউটগোয়িং কলগুলি করতে পারবে না।"</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"কোনো কল স্থাপন করতে, একটি বৈধ নম্বর লিখুন৷"</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"এই মুহূর্তে কল যোগ করা যাবে না৷"</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"ভয়েসমেল নম্বর অনুপস্থিত"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"সিম কার্ডটিতে কোনো ভয়েসমেল নম্বর সংরক্ষিত নেই৷"</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"একটি নম্বর যোগ করুন"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"<xliff:g id="NEW_APP">%s</xliff:g> কে আপনার ডিফল্ট ফোন অ্যাপ বানাতে চান?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"ডিফল্ট হিসাবে সেট করুন"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"বাতিল করুন"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> কল করতে এবং কলের সমগ্র বৈশিষ্ট্য নিয়ন্ত্রণ করতে সক্ষম হবে৷ শুধুমাত্র আপনি যে অ্যাপ্সকে বিশ্বাস করেন সেগুলিকেই ডিফল্ট ফোন অ্যাপ হিসাবে সেট করা উচিৎ৷"</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"<xliff:g id="NEW_APP">%s</xliff:g> ডিফল্ট কল স্ক্রিনিং অ্যাপ হিসেবে ব্যবহার করবেন?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> আর কল স্ক্রিন করতে পারবে না।"</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> আপনার পরিচিতিতে নেই এমন কলারের তথ্যও দেখতে পাবে এবং তাদের কল ব্লক করতে পারবে। শুধুমাত্র যে অ্যাপগুলিকে বিশ্বস্ত বলে মনে করেন সেগুলি ডিফল্ট কল স্ক্রিনিং অ্যাপ হিসেবে সেট করতে হবে।"</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"ডিফল্ট হিসাবে সেট করুন"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"বাতিল করুন"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"ব্লক করা নম্বরগুলি"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"ব্লক করা নম্বরগুলি থেকে আপনি কল বা এসএমএস পাবেন না।"</string>
+ <string name="block_number" msgid="3784343046852802722">"একটি নম্বর যোগ করুন"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"<xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g> আনব্লক করবেন?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"অবরোধ মুক্ত করুন"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"এর থেকে কল এবং এসএমএস ব্লক করুন"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"ফোন নম্বর"</string>
+ <string name="block_button" msgid="485080149164258770">"ব্লক করুন"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"শুধুমাত্র ডিভাইসের মালিক এই অবরুদ্ধ নম্বরগুলিকে দেখতে এবং পরিচালনা করতে পারেন৷"</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"অবরোধ মুক্ত করুন"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"অবরুদ্ধ করা সাময়িকভাবে বন্ধ আছে"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"আপনি কোনো জরুরি নম্বরে ডায়াল করার বা এসএমএস পাঠানোর পরে, জরুরি পরিষেবাগুলি যাতে আপনাকে কল করতে পারে সেই বিষয়টি নিশ্চিত করতে অবরুদ্ধ করার ব্যবস্থাটিকে বন্ধ করা হয়৷"</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"এখনই পুনরায় সক্ষম করুন"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> অবরোধ করা হয়েছে"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> আনব্লক করা হয়েছে"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"জরুরি নম্বর অবরোধ করতে অক্ষম৷"</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> ইতিমধ্যেই অবরোধ করা রয়েছে৷"</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"কল করার জন্য ব্যক্তিগত ডায়ালার ব্যবহার করা হচ্ছে"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"<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="5795968314037063900">"<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="8653544281903986641">"উত্তর দেওয়া হলে আপনার <xliff:g id="CALL_VIA">%1$s</xliff:g> কলটি কেটে যাবে"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"উত্তর দেওয়া হলে আপনার <xliff:g id="CALL_VIA">%1$s</xliff:g> কলগুলি কেটে যাবে"</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"উত্তর দেওয়া হলে আপনার <xliff:g id="CALL_VIA">%1$s</xliff:g> ভিডিও কলটি কেটে যাবে"</string>
+ <string name="answering_ends_other_managed_call" msgid="4031778317409881805">"উত্তর দেওয়া হলে আপনার চালু থাকা কলটি কেটে যাবে"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"উত্তর দেওয়া হলে আপনার চালু থাকা কলগুলি কেটে যাবে"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"উত্তর দেওয়া হলে আপনার চালু থাকা ভিডিও কলটি কেটে যাবে"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"উত্তর দিন"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"প্রত্যাখ্যান করুন"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"এই ধরনের কল করার জন্য যে কলিং অ্যাকাউন্টের প্রয়োজন সেটি না থাকার জন্য এই কলটি করা যাবে না।"</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"আপনার <xliff:g id="OTHER_CALL">%1$s</xliff:g> কলটির কারণে কলটি করা যাবে না।"</string>
+ <string name="cant_call_due_to_ongoing_calls" msgid="6379163795277824868">"আপনার <xliff:g id="OTHER_CALL">%1$s</xliff:g> কলগুলির কারণে কলটি করা যাবে না।"</string>
+ <string name="cant_call_due_to_ongoing_unknown_call" msgid="8243532328969433172">"অন্য একটি অ্যাপের কলের কারণে কলটি করা যাবে না।"</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"ইনকামিং কল"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"মিস করা কল"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"কল ব্লক করা"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"এই কলটির উত্তর দেওয়া হলে তা আপনার <xliff:g id="OTHER_APP">%1$s</xliff:g> কলটি কেটে যাবে৷"</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"এই কলটি কীভাবে করবেন বেছে নিন"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"<xliff:g id="OTHER_APP">%1$s</xliff:g> ব্যবহার করে কল রিডাইরেক্ট করুন"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"আমার ফোন নম্বর দিয়ে কল করুন"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"<xliff:g id="OTHER_APP">%1$s</xliff:g>-এর মাধ্যমে কল করা যায়নি। অন্য একটি কল রিডাইরেক্ট করার অ্যাপ ব্যবহার করে দেখুন অথবা সহয়তার জন্য ডেভেলপারের সাথে যোগাযোগ করুন।"</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"কল ব্লক করা"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"পরিচিতিতে নেই এমন নম্বর"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"আপনার পরিচিতিতে নেই এমন নম্বর ব্লক করুন"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"ব্যক্তিগত"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"কলার আইডিতে নম্বর দেখা যায়না এমন কল ব্লক করুন"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"পাবলিক ফোন"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"পাবলিক ফোন থেকে করা কল ব্লক করুন"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"অজানা"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"অচেনা নম্বর থেকে করা কল ব্লক করুন"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"কল ব্লক করা"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"কল ব্লক করার বৈশিষ্ট্য বন্ধ করা হয়েছে"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"জরুরি অবস্থার কল করা হয়েছে"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"কল ব্লক করার বৈশিষ্ট্য বন্ধ করা হয়েছে যাতে জরুরি অবস্থার সাহায্যকারী ব্যক্তি আপনার সাথে যোগাযোগ করতে পারেন।"</string>
+ <string name="developer_title" msgid="9146088855661672353">"টেলিকম ডেভেলপার মেনু"</string>
</resources>
diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml
index 44ee8e4..4a707bc 100644
--- a/res/values-bs/strings.xml
+++ b/res/values-bs/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"Upravljanje pozivima"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"Telefon"</string>
- <string name="unknown" msgid="6878797917991465859">"Nepoznato"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"Propušteni poziv"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"Propušteni poslovni poziv"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Propušteni pozivi"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"Propušteni pozivi: <xliff:g id="NUM_MISSED_CALLS">%s</xliff:g>"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"Propušteni poziv od kontakta <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Povr. poziv"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"Poruka"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"Zvuk poziva je isključen."</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"Zvučnik je omogućen."</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"Ne mogu sada pričati. O čemu se radi?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"Nazvat ću te uskoro."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Nazvat ću te kasnije."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Ne mogu sada pričati. Nazovi me kasnije."</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Brzi odgovori"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Uredi brze odgovore"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"Brzi odgovor"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"Poruka poslana na <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"Računi za pozivanje"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"Dozvoljeni su samo hitni pozivi."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"Ova aplikacija ne može upućivati odlazne pozive bez odobrenja za Telefon."</string>
- <string name="outgoing_call_error_no_phone_number_supplied" msgid="1940125199802007505">"Da uputite poziv, upišite važeći broj."</string>
- <string name="duplicate_video_call_not_allowed" msgid="3749211605014548386">"Trenutno nije moguće dodati poziv."</string>
- <string name="no_vm_number" msgid="4164780423805688336">"Nedostaje broj govorne pošte"</string>
- <string name="no_vm_number_msg" msgid="1300729501030053828">"Broj govorne pošte nije pohranjen na SIM kartici."</string>
- <string name="add_vm_number_str" msgid="4676479471644687453">"Dodaj broj"</string>
- <string name="change_default_dialer_dialog_title" msgid="9101655962941740507">"Postaviti aplikaciju <xliff:g id="NEW_APP">%s</xliff:g> kao zadanu aplikaciju za telefon?"</string>
- <string name="change_default_dialer_dialog_affirmative" msgid="8606546663509166276">"Postavi zadano"</string>
- <string name="change_default_dialer_dialog_negative" msgid="9078144617060173845">"Otkaži"</string>
- <string name="change_default_dialer_warning_message" msgid="1417671460801684999">"<xliff:g id="NEW_APP">%s</xliff:g> će moći upućivati pozive i kontrolirati sve vezano za njih. Zadana aplikacija treba biti samo aplikacija koju smatrate pouzdanom."</string>
- <string name="blocked_numbers" msgid="2751843139572970579">"Blokirani brojevi"</string>
- <string name="blocked_numbers_msg" msgid="1045015186124965643">"Nećete primati pozive i poruke od blokiranih brojeva."</string>
- <string name="block_number" msgid="1101252256321306179">"Dodaj broj"</string>
- <string name="unblock_dialog_body" msgid="1614238499771862793">"Deblokirati <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
- <string name="unblock_button" msgid="3078048901972674170">"Deblokiraj"</string>
- <string name="add_blocked_dialog_body" msgid="9030243212265516828">"Blokirajte pozive i SMS-ove od"</string>
- <string name="add_blocked_number_hint" msgid="6847675097085433553">"Broj telefona"</string>
- <string name="block_button" msgid="8822290682524373357">"Blokiraj"</string>
- <string name="non_primary_user" msgid="5180129233352533459">"Samo vlasnik uređaja može pregledati i upravljati blokiranim brojevima."</string>
- <string name="delete_icon_description" msgid="8903995728252556724">"Deblokiraj"</string>
- <string name="blocked_numbers_butter_bar_title" msgid="438170866438793182">"Blokiranje je privremeno isključeno"</string>
- <string name="blocked_numbers_butter_bar_body" msgid="2223244484319442431">"Nakon što pozovete ili pošaljete poruku na broj za hitne slučajeve, blokiranje se isključuje da bi vas hitne službe mogle kontaktirati."</string>
- <string name="blocked_numbers_butter_bar_button" msgid="2197943354922010696">"Ponovo omogući sada"</string>
- <string name="blocked_numbers_number_blocked_message" msgid="7678509606805029540">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> je blokiran"</string>
- <string name="blocked_numbers_number_unblocked_message" msgid="977894647366750418">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> je deblokiran"</string>
- <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"Nije moguće blokirati broj za hitne slučajeve."</string>
- <string name="blocked_numbers_number_already_blocked_message" msgid="4392247814500811798">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> je već blokiran."</string>
- <string name="toast_personal_call_msg" msgid="5115361633476779723">"Za upućivanje poziva koristi se lična brojčana tastatura"</string>
- <string name="notification_incoming_call" msgid="7713197997773986670">"<xliff:g id="CALL_VIA">%1$s</xliff:g> poziv od osobe <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 poziv od osobe <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
- <string name="answering_ends_other_call" msgid="8282145910153766401">"Odgovaranje će prekinuti poziv: <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
- <string name="answering_ends_other_calls" msgid="1198589551399049197">"Odgovaranje će prekinuti pozive: <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
- <string name="answering_ends_other_video_call" msgid="8510410917384186360">"Odgovaranje će prekinuti video poziv: <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
- <string name="answering_ends_other_managed_call" msgid="5186137550267947785">"Odgovaranje će prekinuti poziv koji je u toku"</string>
- <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"Odgovaranje će prekinuti pozive koji su u toku"</string>
- <string name="answering_ends_other_managed_video_call" msgid="1585423762458248435">"Odgovaranje će prekinuti video poziv koji je u toku"</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">"Pozivanje nije moguće zbog poziva: <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
- <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"Pozivanje nije moguće zbog poziva: <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
- <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"Pozivanje nije moguće zbog poziva u drugoj aplikaciji."</string>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"Dolazni pozivi"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"Propušteni pozivi"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"Blokiranje poziva"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"Upućivanje ovog poziva će prekinuti poziv: <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"Blokiranje poziva"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"Brojevi koji nisu u Kontaktima"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"Blokirajte brojeve koji se ne nalaze u vašim Kontaktima"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"Privatan"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"Blokirajte pozivaoce koji ne otkrivaju svoj broj"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"Telefonska govornica"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"Blokirajte pozive s telefonskih govornica"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"Nepoznato"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"Blokirajte pozive neidentificiranih pozivalaca"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"Blokiranje poziva"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"Blokiranje poziva je onemogućeno"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"Upućen je hitni poziv"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"Blokiranje poziva je onemogućeno kako bi se omogućilo osobama koje reagiraju u hitnim slučajevima da vas kontaktiraju."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"Upravljanje pozivima"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"Telefon"</string>
+ <string name="unknown" msgid="6993977514360123431">"Nepoznato"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"Propušteni poziv"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"Propušteni poslovni poziv"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"Propušteni pozivi"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"Propušteni pozivi: <xliff:g id="NUM_MISSED_CALLS">%s</xliff:g>"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"Propušteni poziv od kontakta <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"Povr. poziv"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"Poruka"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"Zvuk poziva je isključen."</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Zvučnik je omogućen."</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Ne mogu sada pričati. O čemu se radi?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"Nazvat ću te uskoro."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"Nazvat ću te kasnije."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"Ne mogu sada pričati. Nazovi me kasnije."</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"Brzi odgovori"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"Uredi brze odgovore"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"Brzi odgovor"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"Poruka poslana na <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"Slanje poruke na broj <xliff:g id="PHONE_NUMBER">%s</xliff:g> nije uspjelo."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"Računi za pozivanje"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"Dozvoljeni su samo hitni pozivi."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"Ova aplikacija ne može upućivati odlazne pozive bez odobrenja za Telefon."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"Da uputite poziv, upišite važeći broj."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"Trenutno nije moguće dodati poziv."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"Nedostaje broj govorne pošte"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"Broj govorne pošte nije pohranjen na SIM kartici."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"Dodaj broj"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"Postaviti aplikaciju <xliff:g id="NEW_APP">%s</xliff:g> kao zadanu aplikaciju za telefon?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"Postavi zadano"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"Otkaži"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> će moći upućivati pozive i kontrolirati sve vezano za njih. Zadana aplikacija treba biti samo aplikacija koju smatrate pouzdanom."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"Postaviti aplikaciju <xliff:g id="NEW_APP">%s</xliff:g> kao zadanu aplikaciju za filtriranje poziva?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> više neće moći filtrirati pozive."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> će moći vidjeti informacije o pozivaocima koji nisu u vašim kontaktima i moći će blokirati ove pozive. Zadana aplikacija za filtriranje poziva treba biti samo aplikacija koju smatrate pouzdanom."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"Postavi zadano"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"Otkaži"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"Blokirani brojevi"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"Nećete primati pozive i poruke od blokiranih brojeva."</string>
+ <string name="block_number" msgid="3784343046852802722">"Dodaj broj"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"Deblokirati <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"Deblokiraj"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"Blokirajte pozive i SMS-ove od"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"Broj telefona"</string>
+ <string name="block_button" msgid="485080149164258770">"Blokiraj"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"Samo vlasnik uređaja može pregledati i upravljati blokiranim brojevima."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"Deblokiraj"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"Blokiranje je privremeno isključeno"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"Nakon što pozovete ili pošaljete poruku na broj za hitne slučajeve, blokiranje se isključuje da bi vas hitne službe mogle kontaktirati."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"Ponovo omogući sada"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> je blokiran"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> je deblokiran"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"Nije moguće blokirati broj za hitne slučajeve."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> je već blokiran."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"Za upućivanje poziva koristi se lična brojčana tastatura"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"<xliff:g id="CALL_VIA">%1$s</xliff:g> poziv od osobe <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+ <string name="notification_incoming_video_call" msgid="5795968314037063900">"<xliff:g id="CALL_VIA">%1$s</xliff:g> video poziv od osobe <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+ <string name="answering_ends_other_call" msgid="8653544281903986641">"Odgovaranje će prekinuti poziv: <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"Odgovaranje će prekinuti pozive: <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"Odgovaranje će prekinuti video poziv: <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+ <string name="answering_ends_other_managed_call" msgid="4031778317409881805">"Odgovaranje će prekinuti poziv koji je u toku"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"Odgovaranje će prekinuti pozive koji su u toku"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"Odgovaranje će prekinuti video poziv koji je u toku"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"Odgovori"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"Odbij"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"Ne može se uputiti poziv zato što ne postoji nijedan račun za pozivanje koji podržava ovu vrstu poziva."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"Pozivanje nije moguće zbog poziva: <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+ <string name="cant_call_due_to_ongoing_calls" msgid="6379163795277824868">"Pozivanje nije moguće zbog poziva: <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+ <string name="cant_call_due_to_ongoing_unknown_call" msgid="8243532328969433172">"Pozivanje nije moguće zbog poziva u drugoj aplikaciji."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"Dolazni pozivi"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"Propušteni pozivi"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"Blokiranje poziva"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"Upućivanje ovog poziva će prekinuti poziv: <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Odaberite kako želite uputiti ovaj poziv"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Preusmjeri poziv pomoću aplikacije <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"Pozovi putem mobilnog telefona"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"Nije moguće uspostaviti poziv putem aplikacije <xliff:g id="OTHER_APP">%1$s</xliff:g>. Isprobajte drugu aplikaciju za preusmjeravanje poziva ili kontaktirajte programera za pomoć."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"Blokiranje poziva"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"Brojevi koji nisu u Kontaktima"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"Blokirajte brojeve koji se ne nalaze u vašim Kontaktima"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"Privatan"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"Blokirajte pozivaoce koji ne otkrivaju svoj broj"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"Telefonska govornica"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"Blokirajte pozive s telefonskih govornica"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"Nepoznato"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"Blokirajte pozive neidentificiranih pozivalaca"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"Blokiranje poziva"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"Blokiranje poziva je onemogućeno"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"Upućen je hitni poziv"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"Blokiranje poziva je onemogućeno kako bi se omogućilo osobama koje reagiraju u hitnim slučajevima da vas kontaktiraju."</string>
+ <string name="developer_title" msgid="9146088855661672353">"Meni za programere iz telekoma"</string>
</resources>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index 2673eb1..585536c 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"Gestió de trucades"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"Telèfon"</string>
- <string name="unknown" msgid="6878797917991465859">"Desconegut"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"Trucada perduda"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"Trucada perduda de feina"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Trucades perdudes"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> trucades perdudes"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"Trucada perduda de <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Torna la trucada"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"Missatge"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"Trucada silenciada."</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"Altaveu activat."</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"Ara no puc parlar. Què passa?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"Et truco de seguida."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Et truco més tard."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"No puc parlar. Em truques després?"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Respostes ràpides"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Edita les respostes ràpides"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"Resposta ràpida"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"Missatge enviat a <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"Comptes de trucades"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"Només es permeten les trucades d\'emergència."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"Aquesta aplicació no pot fer trucades sortints sense el permís del telèfon."</string>
- <string name="outgoing_call_error_no_phone_number_supplied" msgid="1940125199802007505">"Per realitzar una trucada, introdueix un número vàlid."</string>
- <string name="duplicate_video_call_not_allowed" msgid="3749211605014548386">"En aquest moment no es pot afegir la trucada."</string>
- <string name="no_vm_number" msgid="4164780423805688336">"Falta el número de la bústia de veu"</string>
- <string name="no_vm_number_msg" msgid="1300729501030053828">"No hi ha cap número de bústia de veu emmagatzemat a la targeta SIM."</string>
- <string name="add_vm_number_str" msgid="4676479471644687453">"Afegeix número"</string>
- <string name="change_default_dialer_dialog_title" msgid="9101655962941740507">"Vols que <xliff:g id="NEW_APP">%s</xliff:g> sigui l\'aplicació per a mòbils predetermin.?"</string>
- <string name="change_default_dialer_dialog_affirmative" msgid="8606546663509166276">"Defineix com a predeterminat"</string>
- <string name="change_default_dialer_dialog_negative" msgid="9078144617060173845">"Cancel·la"</string>
- <string name="change_default_dialer_warning_message" msgid="1417671460801684999">"<xliff:g id="NEW_APP">%s</xliff:g> podrà fer les teves trucades i controlar-ne tots els aspectes. Només les aplicacions de confiança s\'han de definir com a l\'aplicació per a mòbils predeterminada."</string>
- <string name="blocked_numbers" msgid="2751843139572970579">"Números bloquejats"</string>
- <string name="blocked_numbers_msg" msgid="1045015186124965643">"No rebràs trucades ni missatges de text dels números bloquejats."</string>
- <string name="block_number" msgid="1101252256321306179">"Afegeix un número"</string>
- <string name="unblock_dialog_body" msgid="1614238499771862793">"Vols desbloquejar el número <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
- <string name="unblock_button" msgid="3078048901972674170">"Desbloqueja"</string>
- <string name="add_blocked_dialog_body" msgid="9030243212265516828">"Bloqueja trucades i missatges de text de"</string>
- <string name="add_blocked_number_hint" msgid="6847675097085433553">"Número de telèfon"</string>
- <string name="block_button" msgid="8822290682524373357">"Bloqueja"</string>
- <string name="non_primary_user" msgid="5180129233352533459">"Només el propietari del dispositiu pot consultar i gestionar els números bloquejats."</string>
- <string name="delete_icon_description" msgid="8903995728252556724">"Desbloqueja"</string>
- <string name="blocked_numbers_butter_bar_title" msgid="438170866438793182">"El bloqueig està desactivat temporalment"</string>
- <string name="blocked_numbers_butter_bar_body" msgid="2223244484319442431">"Quan marques un número d\'emergència o hi envies un missatge de text, el bloqueig es desactiva per garantir que els serveis d\'emergència puguin contactar amb tu."</string>
- <string name="blocked_numbers_butter_bar_button" msgid="2197943354922010696">"Torna a activar ara"</string>
- <string name="blocked_numbers_number_blocked_message" msgid="7678509606805029540">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> bloquejat"</string>
- <string name="blocked_numbers_number_unblocked_message" msgid="977894647366750418">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> desbloquejat"</string>
- <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> et truca a <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> et sol·licita una videotrucada a <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
- <string name="answering_ends_other_call" msgid="8282145910153766401">"En respondre, finalitzarà la trucada a <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
- <string name="answering_ends_other_calls" msgid="1198589551399049197">"En respondre, finalitzaran les trucades a <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
- <string name="answering_ends_other_video_call" msgid="8510410917384186360">"En respondre, finalitzarà la videotrucada a <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 a <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 a <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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"Trucades entrants"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"Trucades perdudes"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"Bloqueig de trucades"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"En fer aquesta trucada, finalitzarà la de l\'aplicació <xliff:g id="OTHER_APP">%1$s</xliff:g>."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"Bloqueig de trucades"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"Números que no surten a Contactes"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"Bloqueja els números que no surten a Contactes"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"Privades"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"Bloqueja les trucades que tinguin el número ocult"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"Telèfons públics"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"Bloqueja les trucades de telèfons públics"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"Desconeguts"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"Bloqueja les trucades de números no identificats"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"Bloqueig de trucades"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"El bloqueig de trucades s\'ha desactivat"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"S\'ha fet una trucada d\'emergència"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"El bloqueig de trucades s\'ha desactivat perquè els serveis d\'emergència puguin contactar amb tu."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"Gestió de trucades"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"Telèfon"</string>
+ <string name="unknown" msgid="6993977514360123431">"Desconegut"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"Trucada perduda"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"Trucada perduda de feina"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"Trucades perdudes"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> trucades perdudes"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"Trucada perduda de <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"Torna la trucada"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"Missatge"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"Trucada silenciada."</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Altaveu activat."</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Ara no puc parlar. Què passa?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"Et truco de seguida."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"Et truco més tard."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"No puc parlar. Em truques després?"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"Respostes ràpides"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"Edita les respostes ràpides"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"Resposta ràpida"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"Missatge enviat a <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"No s\'ha pogut enviar el missatge a <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"Comptes de trucades"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"Només es permeten les trucades d\'emergència."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"Aquesta aplicació no pot fer trucades sortints sense el permís del telèfon."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"Per realitzar una trucada, introdueix un número vàlid."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"En aquest moment no es pot afegir la trucada."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"Falta el número de la bústia de veu"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"No hi ha cap número de bústia de veu emmagatzemat a la targeta SIM."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"Afegeix número"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"Vols que <xliff:g id="NEW_APP">%s</xliff:g> sigui l\'aplicació per a mòbils predetermin.?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"Defineix com a predeterminat"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"Cancel·la"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> podrà fer les teves trucades i controlar-ne tots els aspectes. Només les aplicacions de confiança s\'han de definir com a l\'aplicació per a mòbils predeterminada."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"Vols que <xliff:g id="NEW_APP">%s</xliff:g> sigui l\'aplic. de filtre de trucades predet.?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> ja no podrà filtrar les trucades."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> podrà veure informació sobre els usuaris que et truquin, encara que no figurin entre els teus contactes, i bloquejar les trucades que facin. Assegura\'t que l\'aplicació que defineixis com a aplicació de filtre de trucades predeterminada sigui de confiança."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"Defineix com a predeterminada"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"Cancel·la"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"Números bloquejats"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"No rebràs trucades ni missatges de text dels números bloquejats."</string>
+ <string name="block_number" msgid="3784343046852802722">"Afegeix un número"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"Vols desbloquejar el número <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"Desbloqueja"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"Bloqueja trucades i missatges de text de"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"Número de telèfon"</string>
+ <string name="block_button" msgid="485080149164258770">"Bloqueja"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"Només el propietari del dispositiu pot consultar i gestionar els números bloquejats."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"Desbloqueja"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"El bloqueig està desactivat temporalment"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"Quan marques un número d\'emergència o hi envies un missatge de text, el bloqueig es desactiva per garantir que els serveis d\'emergència puguin contactar amb tu."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"Torna a activar ara"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> bloquejat"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> desbloquejat"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"No es pot bloquejar el número d\'emergència."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> ja està bloquejat."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"S\'està utilitzant el telèfon personal per fer la trucada"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"<xliff:g id="CALL_FROM">%2$s</xliff:g> et truca a <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+ <string name="notification_incoming_video_call" msgid="5795968314037063900">"<xliff:g id="CALL_FROM">%2$s</xliff:g> et sol·licita una videotrucada a <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+ <string name="answering_ends_other_call" msgid="8653544281903986641">"En respondre, finalitzarà la trucada a <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"En respondre, finalitzaran les trucades a <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"En respondre, finalitzarà la videotrucada a <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+ <string name="answering_ends_other_managed_call" msgid="4031778317409881805">"En respondre, finalitzarà la trucada en curs"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"En respondre, finalitzaran les trucades en curs"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"En respondre, finalitzarà la videotrucada en curs"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"Respon"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"Rebutja"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"No es pot trucar perquè, en aquest moment, no hi ha cap compte de trucades compatible amb les trucades d\'aquest tipus."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"No es pot trucar perquè ja hi ha una trucada en curs a <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+ <string name="cant_call_due_to_ongoing_calls" msgid="6379163795277824868">"No es pot trucar perquè ja hi ha trucades en curs a <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+ <string name="cant_call_due_to_ongoing_unknown_call" msgid="8243532328969433172">"No es pot trucar perquè ja hi ha una trucada en curs en una altra aplicació."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"Trucades entrants"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"Trucades perdudes"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"Bloqueig de trucades"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"En fer aquesta trucada, finalitzarà la de l\'aplicació <xliff:g id="OTHER_APP">%1$s</xliff:g>."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Tria com vols fer aquesta trucada"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Desvia la trucada amb <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"Truca amb el meu número de telèfon"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"<xliff:g id="OTHER_APP">%1$s</xliff:g> no pot fer la trucada. Prova d\'utilitzar una altra aplicació de redirecció de trucades o bé contacta amb el desenvolupador per obtenir ajuda."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"Bloqueig de trucades"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"Números que no surten a Contactes"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"Bloqueja els números que no surten a Contactes"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"Privades"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"Bloqueja les trucades que tinguin el número ocult"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"Telèfons públics"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"Bloqueja les trucades de telèfons públics"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"Desconeguts"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"Bloqueja les trucades de números no identificats"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"Bloqueig de trucades"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"El bloqueig de trucades s\'ha desactivat"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"S\'ha fet una trucada d\'emergència"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"El bloqueig de trucades s\'ha desactivat perquè els serveis d\'emergència puguin contactar amb tu."</string>
+ <string name="developer_title" msgid="9146088855661672353">"Menú per a desenvolupadors de telecomunicacions"</string>
</resources>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 76c40e6..7451067 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"Správa hovorů"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"Telefon"</string>
- <string name="unknown" msgid="6878797917991465859">"Neznámý volající"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"Zmeškaný hovor"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"Zmeškaný pracovní hovor"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Zmeškané hovory"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"Zmeškané hovory: <xliff:g id="NUM_MISSED_CALLS">%s</xliff:g>."</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"Zmeškaný hovor od volajícího <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>."</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Zavolat zpět"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"Zpráva"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"Hovor ztlumen."</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"Reproduktor je zapnutý."</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"Teď nemůžu telefonovat, o co jde?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"Zavolám zpátky."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Zavolám později."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Nemůžu telefonovat. Zavoláte později?"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Rychlé odpovědi"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Upravit rychlé odpovědi"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"Rychlá odpověď"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"Zpráva byla odeslána na číslo <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"Účty pro volání"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"Jsou povolena pouze tísňová volání."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"Tato aplikace nemůže provádět odchozí hovory bez oprávnění k použití telefonu."</string>
- <string name="outgoing_call_error_no_phone_number_supplied" msgid="1940125199802007505">"Chcete-li uskutečnit hovor, zadejte platné telefonní číslo."</string>
- <string name="duplicate_video_call_not_allowed" msgid="3749211605014548386">"Hovor aktuálně nelze přidat."</string>
- <string name="no_vm_number" msgid="4164780423805688336">"Chybí číslo hlasové schránky"</string>
- <string name="no_vm_number_msg" msgid="1300729501030053828">"Na SIM kartě není uloženo žádné číslo hlasové schránky."</string>
- <string name="add_vm_number_str" msgid="4676479471644687453">"Přidat číslo"</string>
- <string name="change_default_dialer_dialog_title" msgid="9101655962941740507">"Nastavit <xliff:g id="NEW_APP">%s</xliff:g> jako výchozí aplikaci na telefonování?"</string>
- <string name="change_default_dialer_dialog_affirmative" msgid="8606546663509166276">"Nastavit jako výchozí"</string>
- <string name="change_default_dialer_dialog_negative" msgid="9078144617060173845">"Zrušit"</string>
- <string name="change_default_dialer_warning_message" msgid="1417671460801684999">"Aplikace <xliff:g id="NEW_APP">%s</xliff:g> bude moci uskutečňovat hovory a spravovat všechny jejich aspekty. Jako výchozí aplikaci na telefonování byste měli nastavit jen aplikaci, které věříte."</string>
- <string name="blocked_numbers" msgid="2751843139572970579">"Blokovaná čísla"</string>
- <string name="blocked_numbers_msg" msgid="1045015186124965643">"Ze zablokovaných čísel už nebudete přijímat hovory ani zprávy SMS."</string>
- <string name="block_number" msgid="1101252256321306179">"Přidat číslo"</string>
- <string name="unblock_dialog_body" msgid="1614238499771862793">"Odblokovat číslo <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
- <string name="unblock_button" msgid="3078048901972674170">"Odblokovat"</string>
- <string name="add_blocked_dialog_body" msgid="9030243212265516828">"Blokovat hovory a SMS od odesílatele"</string>
- <string name="add_blocked_number_hint" msgid="6847675097085433553">"Telefonní číslo"</string>
- <string name="block_button" msgid="8822290682524373357">"Blokovat"</string>
- <string name="non_primary_user" msgid="5180129233352533459">"Prohlížet a spravovat blokovaná čísla může pouze vlastník zařízení."</string>
- <string name="delete_icon_description" msgid="8903995728252556724">"Odblokovat"</string>
- <string name="blocked_numbers_butter_bar_title" msgid="438170866438793182">"Blokování je dočasně vypnuto"</string>
- <string name="blocked_numbers_butter_bar_body" msgid="2223244484319442431">"Když vytočíte nebo pošlete zprávu na číslo tísňové linky, blokování je vypnuto, aby vás pohotovostní služby mohly kontaktovat."</string>
- <string name="blocked_numbers_butter_bar_button" msgid="2197943354922010696">"Znovu zapnout"</string>
- <string name="blocked_numbers_number_blocked_message" msgid="7678509606805029540">"Číslo <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> bylo zablokováno"</string>
- <string name="blocked_numbers_number_unblocked_message" msgid="977894647366750418">"Číslo <xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> bylo odblokováno"</string>
- <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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"Příchozí hovory"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"Zmeškané hovory"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"Blokování hovorů"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"Uskutečněním tohoto hovoru ukončíte hovor <xliff:g id="OTHER_APP">%1$s</xliff:g>."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"Blokování hovorů"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"Čísla, která nejsou v kontaktech"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"Blokovat čísla, která nemáte v kontaktech"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"Ze skrytých čísel"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"Blokovat volající, kteří skrývají své číslo"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"Z veřejných telefonů"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"Blokovat hovory z veřejných telefonů"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"Z nerozpoznaných čísel"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"Blokovat hovory od nerozpoznaných volajících"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"Blokování hovorů"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"Blokování hovorů bylo vypnuto"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"Uskutečněno tísňové volání"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"Blokování hovorů bylo vypnuto, aby vás mohli kontaktovat pracovníci tísňových služeb."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"Správa hovorů"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"Telefon"</string>
+ <string name="unknown" msgid="6993977514360123431">"Neznámý volající"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"Zmeškaný hovor"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"Zmeškaný pracovní hovor"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"Zmeškané hovory"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"Zmeškané hovory: <xliff:g id="NUM_MISSED_CALLS">%s</xliff:g>."</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"Zmeškaný hovor od volajícího <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>."</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"Zavolat zpět"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"Zpráva"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"Hovor ztlumen."</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Reproduktor je zapnutý."</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Teď nemůžu mluvit, o co jde?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"Zavolám zpátky."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"Zavolám později."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"Nemůžu telefonovat. Zavoláš později?"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"Rychlé odpovědi"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"Upravit rychlé odpovědi"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"Rychlá odpověď"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"Zpráva byla odeslána na číslo <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"Zprávu se nepodařilo odeslat na číslo <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"Účty pro volání"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"Jsou povolena pouze tísňová volání."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"Tato aplikace nemůže provádět odchozí hovory bez oprávnění k použití telefonu."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"Chcete-li uskutečnit hovor, zadejte platné telefonní číslo."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"Hovor aktuálně nelze přidat."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"Chybí číslo hlasové schránky"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"Na SIM kartě není uloženo žádné číslo hlasové schránky."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"Přidat číslo"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"Nastavit <xliff:g id="NEW_APP">%s</xliff:g> jako výchozí aplikaci na telefonování?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"Nastavit jako výchozí"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"Zrušit"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"Aplikace <xliff:g id="NEW_APP">%s</xliff:g> bude moci uskutečňovat hovory a spravovat všechny jejich aspekty. Jako výchozí aplikaci na telefonování byste měli nastavit jen aplikaci, které věříte."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"Nastavit <xliff:g id="NEW_APP">%s</xliff:g> jako výchozí aplikaci na prověřování hovorů?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"Aplikace <xliff:g id="OLD_APP">%s</xliff:g> už nebude moct prověřovat hovory."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"Aplikace <xliff:g id="NEW_APP">%s</xliff:g> bude moct zobrazit informace o volajících, které nemáte v kontaktech, a bude tyto hovory moct zablokovat. Jako výchozí aplikaci na prověřování hovorů byste měli nastavit jen aplikaci, které věříte."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"Nastavit jako výchozí"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"Zrušit"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"Blokovaná čísla"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"Ze zablokovaných čísel už nebudete přijímat hovory ani zprávy SMS."</string>
+ <string name="block_number" msgid="3784343046852802722">"Přidat číslo"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"Odblokovat číslo <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"Odblokovat"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"Blokovat hovory a SMS od odesílatele"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"Telefonní číslo"</string>
+ <string name="block_button" msgid="485080149164258770">"Blokovat"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"Prohlížet a spravovat blokovaná čísla může pouze vlastník zařízení."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"Odblokovat"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"Blokování je dočasně vypnuto"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"Když vytočíte nebo pošlete zprávu na číslo tísňové linky, blokování je vypnuto, aby vás pohotovostní služby mohly kontaktovat."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"Znovu zapnout"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"Číslo <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> bylo zablokováno"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"Číslo <xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> bylo odblokováno"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"Číslo tísňové linky se nepodařilo zablokovat."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"Číslo <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> už je zablokováno."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"Volání se provádí pomocí osobního vytáčení"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"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="5795968314037063900">"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="8653544281903986641">"Přijetím hovoru ukončíte hovor <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"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="8572022039304239958">"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="4031778317409881805">"Přijetím hovoru ukončíte probíhající hovor"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"Přijetím hovoru ukončíte probíhající hovory"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"Přijetím hovoru ukončíte probíhající videohovor"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"Přijmout"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"Odmítnout"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"Hovor není možné provést, protože není k dispozici žádný účet, který by tento typ hovoru podporoval."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"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="6379163795277824868">"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="8243532328969433172">"Hovor není možné provést kvůli hovoru v jiné aplikaci."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"Příchozí hovory"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"Zmeškané hovory"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"Blokování hovorů"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"Uskutečněním tohoto hovoru ukončíte hovor <xliff:g id="OTHER_APP">%1$s</xliff:g>."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Vyberte, jak chcete tento hovor provést"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Přesměrovat hovor přes aplikaci <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"Zavolat prostřednictvím mého telefonního čísla"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"Aplikace <xliff:g id="OTHER_APP">%1$s</xliff:g> nemůže hovor provést. Zkuste jinou aplikaci na přesměrování hovorů nebo požádejte o pomoc vývojáře."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"Blokování hovorů"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"Čísla, která nejsou v kontaktech"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"Blokovat čísla, která nemáte v kontaktech"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"Ze skrytých čísel"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"Blokovat volající, kteří skrývají své číslo"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"Z veřejných telefonů"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"Blokovat hovory z veřejných telefonů"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"Z nerozpoznaných čísel"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"Blokovat hovory od nerozpoznaných volajících"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"Blokování hovorů"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"Blokování hovorů bylo vypnuto"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"Uskutečněno tísňové volání"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"Blokování hovorů bylo vypnuto, aby vás mohli kontaktovat pracovníci tísňových služeb."</string>
+ <string name="developer_title" msgid="9146088855661672353">"Nabídka pro vývojáře Telecomu"</string>
</resources>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 1ba9a08..5b1137c 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"Opkaldsstyring"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"Opkald"</string>
- <string name="unknown" msgid="6878797917991465859">"Ukendt"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"Ubesvarede opkald"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"Ubesvaret arbejdsopkald"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Ubesvarede opkald"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> ubesvarede opkald"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"Ubesvarede opkald fra <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Ring tilbage"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"Besked"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"Lyd slået fra opkald."</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"Højttalertelefon aktiveret."</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"Kan ikke tale nu. Hvad sker der?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"Jeg ringer tilbage lige om lidt."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Jeg ringer til dig senere."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Kan ikke tale nu. Ringer du senere?"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Hurtige svar"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Rediger hurtige svar"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"Hurtigt svar"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"Beskeden er sendt til <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"Opkaldskonti"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"Kun nødopkald er tilladt."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"Denne app kan ikke foretage udgående opkald uden opkaldstilladelse."</string>
- <string name="outgoing_call_error_no_phone_number_supplied" msgid="1940125199802007505">"Angiv et gyldigt nummer for at foretage et opkald."</string>
- <string name="duplicate_video_call_not_allowed" msgid="3749211605014548386">"Opkaldet kan ikke tilføjes på nuværende tidspunkt."</string>
- <string name="no_vm_number" msgid="4164780423805688336">"Telefonsvarernummer mangler"</string>
- <string name="no_vm_number_msg" msgid="1300729501030053828">"Der er ikke gemt noget telefonsvarernummer på SIM-kortet."</string>
- <string name="add_vm_number_str" msgid="4676479471644687453">"Tilføj nummer"</string>
- <string name="change_default_dialer_dialog_title" msgid="9101655962941740507">"Vil du gøre <xliff:g id="NEW_APP">%s</xliff:g> til din standardapp til opkald?"</string>
- <string name="change_default_dialer_dialog_affirmative" msgid="8606546663509166276">"Indstil standard"</string>
- <string name="change_default_dialer_dialog_negative" msgid="9078144617060173845">"Annuller"</string>
- <string name="change_default_dialer_warning_message" msgid="1417671460801684999">"<xliff:g id="NEW_APP">%s</xliff:g> kan foretage og administrere alle aspekter af opkald. Du bør kun indstille en app til din standardapp til opkald, hvis du har tillid til den."</string>
- <string name="blocked_numbers" msgid="2751843139572970579">"Blokerede telefonnumre"</string>
- <string name="blocked_numbers_msg" msgid="1045015186124965643">"Du modtager ikke opkald og sms-beskeder fra blokerede numre."</string>
- <string name="block_number" msgid="1101252256321306179">"Tilføj et nummer"</string>
- <string name="unblock_dialog_body" msgid="1614238499771862793">"Vil du fjerne blokeringen af <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
- <string name="unblock_button" msgid="3078048901972674170">"Fjern blokeringen"</string>
- <string name="add_blocked_dialog_body" msgid="9030243212265516828">"Bloker opkald og sms-beskeder fra"</string>
- <string name="add_blocked_number_hint" msgid="6847675097085433553">"Telefonnummer"</string>
- <string name="block_button" msgid="8822290682524373357">"Bloker"</string>
- <string name="non_primary_user" msgid="5180129233352533459">"Det er kun ejeren af en enhed, der kan se og administrere blokerede numre."</string>
- <string name="delete_icon_description" msgid="8903995728252556724">"Fjern blokering"</string>
- <string name="blocked_numbers_butter_bar_title" msgid="438170866438793182">"Blokering er midlertidigt slået fra"</string>
- <string name="blocked_numbers_butter_bar_body" msgid="2223244484319442431">"Når du har ringet eller sendt en sms-besked til alarmcentralen, bliver blokering slået fra for at sikre, at alarmcentralen kan komme i kontakt med dig."</string>
- <string name="blocked_numbers_butter_bar_button" msgid="2197943354922010696">"Genaktiver nu"</string>
- <string name="blocked_numbers_number_blocked_message" msgid="7678509606805029540">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> blev blokeret"</string>
- <string name="blocked_numbers_number_unblocked_message" msgid="977894647366750418">"Blokeringen af <xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> blev ophævet"</string>
- <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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"Indgående opkald"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"Ubesvarede opkald"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"Opkaldsblokering"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"Hvis du foretager dette opkald, afsluttes dit opkald i <xliff:g id="OTHER_APP">%1$s</xliff:g>."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"Opkaldsblokering"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"Numre er ikke i Kontakter"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"Bloker numre, som ikke er i dine kontakter"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"Privat"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"Bloker opkald fra personer, der ringer fra hemmeligt nummer"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"Mønttelefon"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"Bloker opkald fra mønttelefoner"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"Ukendt"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"Bloker opkald fra numre uden opkalds-id"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"Opkaldsblokering"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"Opkaldsblokering er deaktiveret"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"Foretagne nødopkald"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"Opkaldsblokering er blevet deaktiveret for at give nødnumre mulighed for at kontakte dig."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"Opkaldsstyring"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"Opkald"</string>
+ <string name="unknown" msgid="6993977514360123431">"Ukendt"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"Ubesvarede opkald"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"Ubesvaret arbejdsopkald"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"Ubesvarede opkald"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> ubesvarede opkald"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"Ubesvarede opkald fra <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"Ring tilbage"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"Besked"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"Lyd slået fra opkald."</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Højttalertelefon aktiveret."</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Kan ikke tale nu. Hvad sker der?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"Jeg ringer tilbage lige om lidt."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"Jeg ringer til dig senere."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"Kan ikke tale nu. Ringer du senere?"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"Hurtige svar"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"Rediger hurtige svar"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"Hurtigt svar"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"Beskeden er sendt til <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"Beskeden kunne ikke sendes til <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"Opkaldskonti"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"Kun nødopkald er tilladt."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"Denne app kan ikke foretage udgående opkald uden opkaldstilladelse."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"Angiv et gyldigt nummer for at foretage et opkald."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"Opkaldet kan ikke tilføjes på nuværende tidspunkt."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"Telefonsvarernummer mangler"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"Der er ikke gemt noget telefonsvarernummer på SIM-kortet."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"Tilføj nummer"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"Vil du gøre <xliff:g id="NEW_APP">%s</xliff:g> til din standardapp til opkald?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"Indstil standard"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"Annuller"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> kan foretage og administrere alle aspekter af opkald. Du bør kun indstille en app til din standardapp til opkald, hvis du har tillid til den."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"Vil du gøre <xliff:g id="NEW_APP">%s</xliff:g> til din standardapp til screening?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> kan ikke længere screene opkald."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> kan se oplysninger om opringere, når de ikke er i dine kontakter, og kan blokere disse opkald. Du bør kun angive en app som din standardapp til screening, hvis du har tillid til den."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"Angiv som standard"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"Annuller"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"Blokerede telefonnumre"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"Du modtager ikke opkald og sms-beskeder fra blokerede numre."</string>
+ <string name="block_number" msgid="3784343046852802722">"Tilføj et nummer"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"Vil du fjerne blokeringen af <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"Fjern blokeringen"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"Bloker opkald og sms-beskeder fra"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"Telefonnummer"</string>
+ <string name="block_button" msgid="485080149164258770">"Bloker"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"Det er kun ejeren af en enhed, der kan se og administrere blokerede numre."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"Fjern blokering"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"Blokering er midlertidigt slået fra"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"Når du har ringet eller sendt en sms-besked til alarmcentralen, bliver blokering slået fra for at sikre, at alarmcentralen kan komme i kontakt med dig."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"Genaktiver nu"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> blev blokeret"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"Blokeringen af <xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> blev ophævet"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"Nødnummeret kan ikke blokeres."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> er allerede blokeret."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"Opkaldet foretages med det personlige opkaldsprogram"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"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="5795968314037063900">"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="8653544281903986641">"Hvis du besvarer, afsluttes dit opkald i <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"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="8572022039304239958">"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="4031778317409881805">"Hvis du besvarer, afsluttes dit igangværende opkald"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"Hvis du besvarer, afsluttes dine igangværende opkald"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"Hvis du besvarer, afsluttes dit igangværende videoopkald"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"Besvar"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"Afvis"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"Opkaldet kan ikke foretages, fordi der ikke er nogen opkaldskonti, der understøtter opkald af denne type."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"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="6379163795277824868">"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="8243532328969433172">"Opkaldet kan ikke foretages på grund et opkald i en anden app."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"Indgående opkald"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"Ubesvarede opkald"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"Opkaldsblokering"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"Hvis du foretager dette opkald, afsluttes dit opkald i <xliff:g id="OTHER_APP">%1$s</xliff:g>."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Vælg, hvordan du vil foretage dette opkald"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Omdiriger opkaldet ved hjælp af <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"Ring via mit telefonnummer"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"<xliff:g id="OTHER_APP">%1$s</xliff:g> kan ikke foretage opkaldet. Prøv at bruge en anden app til omdirigering af opkald eller kontakte udvikleren for at få hjælp."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"Opkaldsblokering"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"Numre er ikke i Kontakter"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"Bloker numre, som ikke er i dine kontakter"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"Privat"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"Bloker opkald fra personer, der ringer fra hemmeligt nummer"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"Mønttelefon"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"Bloker opkald fra mønttelefoner"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"Ukendt"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"Bloker opkald fra numre uden opkalds-id"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"Opkaldsblokering"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"Opkaldsblokering er deaktiveret"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"Foretagne nødopkald"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"Opkaldsblokering er blevet deaktiveret for at give nødnumre mulighed for at kontakte dig."</string>
+ <string name="developer_title" msgid="9146088855661672353">"Udviklermenu for Telecom"</string>
</resources>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index d34d905..c369d3a 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"Anrufverwaltung"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"Telefon"</string>
- <string name="unknown" msgid="6878797917991465859">"Unbekannt"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"Entgangener Anruf"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"Verpasster geschäftlicher Anruf"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Entgangene Anrufe"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> entgangene Anrufe"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"Entgangener Anruf von <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Zurückrufen"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"Nachricht"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"Anruf stummgeschaltet"</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"Freisprechfunktion aktiviert"</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"Kann jetzt nicht sprechen. Was gibt\'s?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"Ich rufe gleich zurück."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Ich rufe später zurück."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Kann jetzt nicht sprechen. Später?"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Kurzantworten"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Kurzantworten bearbeiten"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"Kurzantwort"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"Nachricht an <xliff:g id="PHONE_NUMBER">%s</xliff:g> gesendet"</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"Anrufkonten"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"Es sind nur Notrufe erlaubt."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"Diese App darf ohne die Berechtigung \"Standard-App für Telefonie\" keine ausgehenden Anrufe tätigen."</string>
- <string name="outgoing_call_error_no_phone_number_supplied" msgid="1940125199802007505">"Gib eine gültige Nummer ein."</string>
- <string name="duplicate_video_call_not_allowed" msgid="3749211605014548386">"Der Anruf kann momentan nicht hinzugefügt werden."</string>
- <string name="no_vm_number" msgid="4164780423805688336">"Fehlende Mailbox-Nummer"</string>
- <string name="no_vm_number_msg" msgid="1300729501030053828">"Auf der SIM-Karte ist keine Mailbox-Nummer gespeichert."</string>
- <string name="add_vm_number_str" msgid="4676479471644687453">"Nummer hinzufügen"</string>
- <string name="change_default_dialer_dialog_title" msgid="9101655962941740507">"<xliff:g id="NEW_APP">%s</xliff:g> als Standard-Telefon-App festlegen?"</string>
- <string name="change_default_dialer_dialog_affirmative" msgid="8606546663509166276">"Als Standard festlegen"</string>
- <string name="change_default_dialer_dialog_negative" msgid="9078144617060173845">"Abbrechen"</string>
- <string name="change_default_dialer_warning_message" msgid="1417671460801684999">"<xliff:g id="NEW_APP">%s</xliff:g> wird alle Anruffunktionen steuern. Nur vertrauenswürdige Apps sollten als Standard-Telefon-App festgelegt werden."</string>
- <string name="blocked_numbers" msgid="2751843139572970579">"Blockierte Nummern"</string>
- <string name="blocked_numbers_msg" msgid="1045015186124965643">"Du erhältst keine Anrufe oder SMS von blockierten Nummern."</string>
- <string name="block_number" msgid="1101252256321306179">"Nummer hinzufügen"</string>
- <string name="unblock_dialog_body" msgid="1614238499771862793">"Blockierung von <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g> aufheben?"</string>
- <string name="unblock_button" msgid="3078048901972674170">"Blockierung aufheben"</string>
- <string name="add_blocked_dialog_body" msgid="9030243212265516828">"Anrufe und SMS blockieren von"</string>
- <string name="add_blocked_number_hint" msgid="6847675097085433553">"Telefonnummer"</string>
- <string name="block_button" msgid="8822290682524373357">"Blockieren"</string>
- <string name="non_primary_user" msgid="5180129233352533459">"Nur der Geräteeigentümer kann blockierte Nummern sehen und verwalten."</string>
- <string name="delete_icon_description" msgid="8903995728252556724">"Blockierung aufheben"</string>
- <string name="blocked_numbers_butter_bar_title" msgid="438170866438793182">"Blockierung vorübergehend aus"</string>
- <string name="blocked_numbers_butter_bar_body" msgid="2223244484319442431">"Nachdem du eine Notrufnummer gewählt oder per SMS gesendet hast, wird die Blockierung aufgehoben, damit dich die Notfalldienste erreichen können."</string>
- <string name="blocked_numbers_butter_bar_button" msgid="2197943354922010696">"Jetzt neu aktivieren"</string>
- <string name="blocked_numbers_number_blocked_message" msgid="7678509606805029540">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> blockiert"</string>
- <string name="blocked_numbers_number_unblocked_message" msgid="977894647366750418">"Blockierung von <xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> aufgehoben"</string>
- <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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"Eingehende Anrufe"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"Entgangene Anrufe"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"Anrufblockierung"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"Durch diesen Anruf wird der Anruf in <xliff:g id="OTHER_APP">%1$s</xliff:g> beendet."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"Anrufblockierung"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"Nicht in den Kontakten gespeicherte Telefonnummern"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"Telefonnummern, die nicht in den Kontakten gespeichert sind, werden blockiert"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"Privat"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"Anrufer mit unterdrückter Nummer werden blockiert"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"Öffentliche Telefone"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"Anrufe von öffentlichen Telefonen blockieren"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"Unbekannt"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"Anrufe von nicht identifizierten Anrufern blockieren"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"Anrufblockierung"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"Anrufblockierung deaktiviert"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"Notruf abgesetzt"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"Die Anrufblockierung wurde deaktiviert, damit Ersthelfer und Rettungskräfte dich kontaktieren können."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"Anrufverwaltung"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"Telefon"</string>
+ <string name="unknown" msgid="6993977514360123431">"Unbekannt"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"Entgangener Anruf"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"Verpasster geschäftlicher Anruf"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"Entgangene Anrufe"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> entgangene Anrufe"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"Entgangener Anruf von <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"Zurückrufen"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"Nachricht"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"Anruf stummgeschaltet"</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Freisprechfunktion aktiviert"</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Kann jetzt nicht sprechen. Was gibt\'s?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"Ich rufe gleich zurück."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"Ich rufe später zurück."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"Kann jetzt nicht. Später nochmal?"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"Kurzantworten"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"Kurzantworten bearbeiten"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"Kurzantwort"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"Nachricht an <xliff:g id="PHONE_NUMBER">%s</xliff:g> gesendet"</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"Fehler beim Senden der Nachricht an <xliff:g id="PHONE_NUMBER">%s</xliff:g>"</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"Anrufkonten"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"Es sind nur Notrufe erlaubt."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"Diese App darf ohne die Berechtigung \"Standard-App für Telefonie\" keine ausgehenden Anrufe tätigen."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"Gib eine gültige Nummer ein."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"Der Anruf kann momentan nicht hinzugefügt werden."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"Fehlende Mailbox-Nummer"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"Auf der SIM-Karte ist keine Mailbox-Nummer gespeichert."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"Nummer hinzufügen"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"<xliff:g id="NEW_APP">%s</xliff:g> als Standard-Telefon-App festlegen?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"Als Standard festlegen"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"Abbrechen"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> wird alle Anruffunktionen steuern. Nur vertrauenswürdige Apps sollten als Standard-Telefon-App festgelegt werden."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"<xliff:g id="NEW_APP">%s</xliff:g> als Standard-App für Call Screening festlegen?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"Das Call Screening mit <xliff:g id="OLD_APP">%s</xliff:g> ist nicht mehr möglich."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> kann Informationen zu Anrufern, die nicht in deinen Kontakten gespeichert sind, erkennen und die Anrufe blockieren. Du solltest nur Apps, denen du vertraust, als Standard-App für das Call Screening festlegen."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"Als Standard festlegen"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"Abbrechen"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"Blockierte Nummern"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"Du erhältst keine Anrufe oder SMS von blockierten Nummern."</string>
+ <string name="block_number" msgid="3784343046852802722">"Nummer hinzufügen"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"Blockierung von <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g> aufheben?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"Blockierung aufheben"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"Anrufe und SMS blockieren von"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"Telefonnummer"</string>
+ <string name="block_button" msgid="485080149164258770">"Blockieren"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"Nur der Geräteeigentümer kann blockierte Nummern sehen und verwalten."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"Blockierung aufheben"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"Blockierung vorübergehend aus"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"Nachdem du eine Notrufnummer gewählt oder per SMS gesendet hast, wird die Blockierung aufgehoben, damit dich die Notfalldienste erreichen können."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"Jetzt neu aktivieren"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> blockiert"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"Blockierung von <xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> aufgehoben"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"Die Notrufnummer kann nicht blockiert werden."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> ist bereits blockiert."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"Zum Anrufen wird das eigene Telefon genutzt"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"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="5795968314037063900">"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="8653544281903986641">"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="3702302838456922535">"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="8572022039304239958">"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="4031778317409881805">"Wenn du den Anruf annimmst, wird der aktuelle Anruf beendet"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"Wenn du den Anruf annimmst, werden aktuelle Anrufe beendet"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"Wenn du den Anruf annimmst, wird der Videoanruf beendet"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"Annehmen"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"Ablehnen"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"Der Anruf kann nicht ausgehen, da es keine Anrufkonten gibt, die Anrufe dieses Typs unterstützen."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"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="6379163795277824868">"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="8243532328969433172">"Dieser Anruf kann aufgrund eines Anrufs in einer anderen App nicht getätigt werden."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"Eingehende Anrufe"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"Entgangene Anrufe"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"Anrufblockierung"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"Durch diesen Anruf wird der Anruf in <xliff:g id="OTHER_APP">%1$s</xliff:g> beendet."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Wie möchtest du anrufen?"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Mit <xliff:g id="OTHER_APP">%1$s</xliff:g> weiterleiten"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"Mit meiner Telefonnummer anrufen"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"Anruf kann nicht mit <xliff:g id="OTHER_APP">%1$s</xliff:g> getätigt werden. Bitte verwende eine andere App zur Anrufweiterleitung oder wende dich an den Entwickler, um Hilfe zu erhalten."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"Anrufblockierung"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"Nicht in den Kontakten gespeicherte Telefonnummern"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"Telefonnummern, die nicht in den Kontakten gespeichert sind, werden blockiert"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"Privat"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"Anrufer mit unterdrückter Nummer werden blockiert"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"Öffentliche Telefone"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"Anrufe von öffentlichen Telefonen blockieren"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"Unbekannt"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"Anrufe von nicht identifizierten Anrufern blockieren"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"Anrufblockierung"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"Anrufblockierung deaktiviert"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"Notruf abgesetzt"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"Die Anrufblockierung wurde deaktiviert, damit Ersthelfer und Rettungskräfte dich kontaktieren können."</string>
+ <string name="developer_title" msgid="9146088855661672353">"Telecom-Entwicklermenü"</string>
</resources>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index cb21b12..d0568a4 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"Διαχείριση κλήσεων"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"Τηλέφωνο"</string>
- <string name="unknown" msgid="6878797917991465859">"Άγνωστος"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"Αναπάντητη κλήση"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"Αναπάντητη κλήση εργασίας"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Αναπάντητες κλήσεις"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> αναπάντητες κλήσεις"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"Αναπάντητη κλήση από <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Επανάκληση"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"Μήνυμα"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"Η κλήση τέθηκε σε σίγαση."</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"Η ανοικτή συνομιλία ενεργοποιήθηκε."</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"Δεν μπορώ τώρα. Συμβαίνει κάτι;"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"Θα σου τηλεφωνήσω αμέσως."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Θα σου τηλεφωνήσω αργότερα."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Δεν μπορώ τώρα. Πάρε με αργότερα."</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Γρήγορες απαντήσεις"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Επεξεργασία"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"Γρήγορη απάντηση"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"Το μήνυμα εστάλη στο <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"Λογαριασμοί κλήσης"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"Επιτρέπονται μόνο κλήσεις έκτακτης ανάγκης."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"Αυτή η εφαρμογή δεν μπορεί να πραγματοποιήσει εξερχόμενες κλήσεις χωρίς την άδεια \"Τηλέφωνο\"."</string>
- <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">"Δεν έχει αποθηκευτεί αριθμός για τον αυτόματο τηλεφωνητή στην κάρτα SIM."</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>
- <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="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_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>
- <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_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_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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"Εισερχόμενες κλήσεις"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"Αναπάντητες κλήσεις"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"Φραγή κλήσεων"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"Εάν πραγματοποιήσετε αυτήν την κλήση, η κλήση σας μέσω <xliff:g id="OTHER_APP">%1$s</xliff:g> θα τερματιστεί."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"Φραγή κλήσεων"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"Αριθμοί που δεν βρίσκονται στις Επαφές"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"Αποκλεισμός αριθμών που δεν περιλαμβάνονται στις επαφές σας"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"Με απόκρυψη"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"Αποκλεισμός καλούντων που δεν αποκαλύπτουν τον αριθμό τους"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"Καρτοτηλέφωνο"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"Αποκλεισμός κλήσεων από καρτοτηλέφωνα"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"Άγνωστος"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"Αποκλεισμός κλήσεων από αγνώστους"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"Φραγή κλήσεων"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"Φραγή κλήσεων απενεργοποιημένη"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"Πραγματοποιήθηκε κλήση έκτακτης ανάγκης"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"Η φραγή κλήσεων έχει απενεργοποιηθεί, ώστε να επιτρέπεται σε άτομα που ανταποκρίνονται σε έκτακτες ανάγκες να επικοινωνούν μαζί σας."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"Διαχείριση κλήσεων"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"Τηλέφωνο"</string>
+ <string name="unknown" msgid="6993977514360123431">"Άγνωστος"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"Αναπάντητη κλήση"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"Αναπάντητη κλήση εργασίας"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"Αναπάντητες κλήσεις"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> αναπάντητες κλήσεις"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"Αναπάντητη κλήση από <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"Επανάκληση"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"Μήνυμα"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"Η κλήση τέθηκε σε σίγαση."</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Η ανοικτή συνομιλία ενεργοποιήθηκε."</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Δεν μπορώ τώρα. Συμβαίνει κάτι;"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"Θα σου τηλεφωνήσω αμέσως."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"Θα σου τηλεφωνήσω αργότερα."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"Δεν μπορώ τώρα. Πάρε με αργότερα."</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"Γρήγορες απαντήσεις"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"Επεξεργασία"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"Γρήγορη απάντηση"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"Το μήνυμα εστάλη στο <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"Η αποστολή του μηνύματος στο <xliff:g id="PHONE_NUMBER">%s</xliff:g> απέτυχε."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"Λογαριασμοί κλήσης"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"Επιτρέπονται μόνο κλήσεις έκτακτης ανάγκης."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"Αυτή η εφαρμογή δεν μπορεί να πραγματοποιήσει εξερχόμενες κλήσεις χωρίς την άδεια \"Τηλέφωνο\"."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"Για να πραγματοποιήσετε μια κλήση, εισαγάγετε έναν έγκυρο αριθμό."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"Δεν είναι δυνατή η προσθήκη κλήσης αυτήν τη στιγμή."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"Λείπει ο αριθμός αυτόματου τηλεφωνητή"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"Δεν έχει αποθηκευτεί αριθμός για τον αυτόματο τηλεφωνητή στην κάρτα SIM."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"Προσθήκη αριθμού"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"Ορισμός <xliff:g id="NEW_APP">%s</xliff:g> ως προεπιλεγμένης εφαρμογής τηλεφώνου;"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"Ορισμός ως προεπιλογή"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"Ακύρωση"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"Το <xliff:g id="NEW_APP">%s</xliff:g> θα έχει τη δυνατότητα πραγματοποίησης κλήσεων, καθώς και ελέγχου κάθε πτυχής τους. Μόνον κάποια αξιόπιστη εφαρμογή θα πρέπει να ορίζεται ως προεπιλεγμένη."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"Ορισμός <xliff:g id="NEW_APP">%s</xliff:g> ως προεπιλεγμένης εφαρμογής διαλογής κλήσεων;"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"Η εφαρμογή <xliff:g id="OLD_APP">%s</xliff:g> δεν θα χρησιμοποιείται πλέον για διαλογή κλήσεων."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"Το <xliff:g id="NEW_APP">%s</xliff:g> θα έχει τη δυνατότητα πρόσβασης σε πληροφορίες για καλούντες που δεν ανήκουν στις επαφές σας και θα είναι σε θέση να αποκλείει τέτοιες κλήσεις. Μόνον κάποια αξιόπιστη εφαρμογή θα πρέπει να ορίζεται ως προεπιλεγμένη εφαρμογή διαλογής κλήσεων."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"Ορισμός ως προεπιλογή"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"Ακύρωση"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"Αποκλεισμένοι αριθμοί"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"Δεν θα λαμβάνετε κλήσεις ή μηνύματα κειμένου από αποκλεισμένους αριθμούς."</string>
+ <string name="block_number" msgid="3784343046852802722">"Προσθήκη αριθμού"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"Να καταργηθεί ο αποκλεισμός του αριθμού <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>;"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"Κατάργηση αποκλεισμού"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"Αποκλεισμός κλήσεων/μηνυμάτων από"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"Αριθμός τηλεφώνου"</string>
+ <string name="block_button" msgid="485080149164258770">"Αποκλεισμός"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"Μόνο ο κάτοχος της συσκευής μπορεί να προβάλλει και να διαχειρίζεται αποκλεισμένους αριθμούς."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"Κατάργηση αποκλεισμού"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"Αποκλεισμός προσωρινά απενεργοποιημένος"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"Αφού καλέσετε ή στείλετε μήνυμα κειμένου προς έναν αριθμό έκτακτης ανάγκης, ο αποκλεισμός απενεργοποιείται, προκειμένου να διασφαλιστεί ότι είναι δυνατή η επικοινωνία μαζί σας από τις υπηρεσίες έκτακτης ανάγκης."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"Επανενεργοποίηση τώρα"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"Ο αριθμός <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> έχει αποκλειστεί"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"Καταργήθηκε ο αποκλεισμός του αριθμού <xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g>"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"Δεν είναι δυνατός ο αποκλεισμός του αριθμού εκτάκτου ανάγκης."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"Ο αριθμός <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> έχει ήδη αποκλειστεί."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"Χρήση του προσωπικού σας προγράμματος κλήσης για την πραγματοποίηση της κλήσης"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"Κλήση μέσω <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="5795968314037063900">"Βιντεοκλήση μέσω <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="8653544281903986641">"Εάν απαντήσετε, η κλήση σας μέσω <xliff:g id="CALL_VIA">%1$s</xliff:g> θα τερματιστεί"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"Εάν απαντήσετε, οι κλήσεις σας μέσω <xliff:g id="CALL_VIA">%1$s</xliff:g> θα τερματιστούν"</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"Εάν απαντήσετε, η βιντεοκλήση σας μέσω <xliff:g id="CALL_VIA">%1$s</xliff:g> θα τερματιστεί"</string>
+ <string name="answering_ends_other_managed_call" msgid="4031778317409881805">"Εάν απαντήσετε, η τρέχουσα κλήση σας θα τερματιστεί"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"Εάν απαντήσετε, οι τρέχουσες κλήσεις σας θα τερματιστούν"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"Εάν απαντήσετε, η τρέχουσα βιντεοκλήση σας θα τερματιστεί"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"Απάντηση"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"Απόρριψη"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"Δεν είναι δυνατή η πραγματοποίηση της κλήσης, επειδή δεν υπάρχουν λογαριασμοί κλήσεων που υποστηρίζουν κλήσεις αυτού του τύπου."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"Δεν είναι δυνατή η πραγματοποίηση της κλήσης, λόγω της κλήσης σας μέσω <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+ <string name="cant_call_due_to_ongoing_calls" msgid="6379163795277824868">"Δεν είναι δυνατή η πραγματοποίηση της κλήσης, λόγω των κλήσεών σας μέσω <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+ <string name="cant_call_due_to_ongoing_unknown_call" msgid="8243532328969433172">"Δεν είναι δυνατή η πραγματοποίηση της κλήσης, λόγω κάποιας κλήσης μέσω άλλης εφαρμογής."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"Εισερχόμενες κλήσεις"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"Αναπάντητες κλήσεις"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"Φραγή κλήσεων"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"Εάν πραγματοποιήσετε αυτήν την κλήση, η κλήση σας μέσω <xliff:g id="OTHER_APP">%1$s</xliff:g> θα τερματιστεί."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Επιλέξτε πώς θα πραγματοποιήσετε την κλήση"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Ανακατεύθυνση της κλήσης μέσω <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"Κλήση μέσω του αριθμού τηλεφώνου μου"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"Δεν είναι δυνατή η πραγματοποίηση κλήσης από την εφαρμογή <xliff:g id="OTHER_APP">%1$s</xliff:g>. Δοκιμάστε να χρησιμοποιήσετε μια άλλη εφαρμογή ανακατεύθυνσης κλήσεων ή να επικοινωνήσετε με τον προγραμματιστή της εφαρμογής για βοήθεια."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"Φραγή κλήσεων"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"Αριθμοί που δεν βρίσκονται στις Επαφές"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"Αποκλεισμός αριθμών που δεν περιλαμβάνονται στις επαφές σας"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"Με απόκρυψη"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"Αποκλεισμός καλούντων που δεν αποκαλύπτουν τον αριθμό τους"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"Καρτοτηλέφωνο"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"Αποκλεισμός κλήσεων από καρτοτηλέφωνα"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"Άγνωστος"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"Αποκλεισμός κλήσεων από αγνώστους"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"Φραγή κλήσεων"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"Φραγή κλήσεων απενεργοποιημένη"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"Πραγματοποιήθηκε κλήση έκτακτης ανάγκης"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"Η φραγή κλήσεων έχει απενεργοποιηθεί, ώστε να επιτρέπεται σε άτομα που ανταποκρίνονται σε έκτακτες ανάγκες να επικοινωνούν μαζί σας."</string>
+ <string name="developer_title" msgid="9146088855661672353">"Μενού προγραμματιστών τηλεπικοινωνιών"</string>
</resources>
diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
index d62ac55..8bf839b 100644
--- a/res/values-en-rAU/strings.xml
+++ b/res/values-en-rAU/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"Call Management"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"Phone"</string>
- <string name="unknown" msgid="6878797917991465859">"Unknown"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"Missed call"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"Missed work call"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Missed calls"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> missed calls"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"Missed call from <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Call back"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"Message"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"Call muted."</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"Speakerphone enabled."</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"Can\'t talk now. What\'s up?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"I\'ll call you right back."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"I\'ll call you later."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Can\'t talk now. Call me later?"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Quick responses"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Edit quick responses"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"Quick response"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"Message sent to <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"Calling accounts"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"Only emergency calls are allowed."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"This application cannot make outgoing calls without Phone permission."</string>
- <string name="outgoing_call_error_no_phone_number_supplied" msgid="1940125199802007505">"To place a call, enter a valid number."</string>
- <string name="duplicate_video_call_not_allowed" msgid="3749211605014548386">"Call cannot be added at this time."</string>
- <string name="no_vm_number" msgid="4164780423805688336">"Missing voicemail number"</string>
- <string name="no_vm_number_msg" msgid="1300729501030053828">"No voicemail number is stored on the SIM card."</string>
- <string name="add_vm_number_str" msgid="4676479471644687453">"Add number"</string>
- <string name="change_default_dialer_dialog_title" msgid="9101655962941740507">"Make <xliff:g id="NEW_APP">%s</xliff:g> your default Phone app?"</string>
- <string name="change_default_dialer_dialog_affirmative" msgid="8606546663509166276">"Set Default"</string>
- <string name="change_default_dialer_dialog_negative" msgid="9078144617060173845">"Cancel"</string>
- <string name="change_default_dialer_warning_message" msgid="1417671460801684999">"<xliff:g id="NEW_APP">%s</xliff:g> will be able to place and control all aspects of calls. Only apps that you trust should be set as the default Phone app."</string>
- <string name="blocked_numbers" msgid="2751843139572970579">"Blocked numbers"</string>
- <string name="blocked_numbers_msg" msgid="1045015186124965643">"You won\'t receive calls or texts from blocked numbers."</string>
- <string name="block_number" msgid="1101252256321306179">"Add a number"</string>
- <string name="unblock_dialog_body" msgid="1614238499771862793">"Unblock <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
- <string name="unblock_button" msgid="3078048901972674170">"Unblock"</string>
- <string name="add_blocked_dialog_body" msgid="9030243212265516828">"Block calls and texts from"</string>
- <string name="add_blocked_number_hint" msgid="6847675097085433553">"Phone number"</string>
- <string name="block_button" msgid="8822290682524373357">"Block"</string>
- <string name="non_primary_user" msgid="5180129233352533459">"Only the device owner can view and manage blocked numbers."</string>
- <string name="delete_icon_description" msgid="8903995728252556724">"Unblock"</string>
- <string name="blocked_numbers_butter_bar_title" msgid="438170866438793182">"Blocking temporarily off"</string>
- <string name="blocked_numbers_butter_bar_body" msgid="2223244484319442431">"When you dial or text an emergency number, blocking is turned off to ensure that emergency services can contact you."</string>
- <string name="blocked_numbers_butter_bar_button" msgid="2197943354922010696">"Re-enable now"</string>
- <string name="blocked_numbers_number_blocked_message" msgid="7678509606805029540">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> blocked"</string>
- <string name="blocked_numbers_number_unblocked_message" msgid="977894647366750418">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> unblocked"</string>
- <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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"Incoming calls"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"Missed calls"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"Call Blocking"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"Placing this call will end your <xliff:g id="OTHER_APP">%1$s</xliff:g> call."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"Call Blocking"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"Numbers not in Contacts"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"Block numbers that are not listed in your Contacts"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"Private"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"Block callers who do not disclose their number"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"Phonebox"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"Block calls from pay phones"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"Unknown"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"Block calls from unidentified callers"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"Call Blocking"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"Call Blocking disabled"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"Emergency call made"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"Call Blocking has been disabled to allow emergency responders to contact you."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"Call Management"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"Phone"</string>
+ <string name="unknown" msgid="6993977514360123431">"Unknown"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"Missed call"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"Missed work call"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"Missed calls"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> missed calls"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"Missed call from <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"Call back"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"Message"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"Call muted."</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Speakerphone enabled."</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Can\'t talk now. What\'s going on?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"I\'ll call you back."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"I\'ll call you later."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"Can\'t talk now. Call me later?"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"Quick responses"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"Edit quick responses"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"Quick response"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"Message sent to <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"Message failed to send to <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"Calling accounts"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"Only emergency calls are allowed."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"This application cannot make outgoing calls without Phone permission."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"To place a call, enter a valid number."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"Call cannot be added at this time."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"Missing voicemail number"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"No voicemail number is stored on the SIM card."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"Add number"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"Make <xliff:g id="NEW_APP">%s</xliff:g> your default Phone app?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"Set Default"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"Cancel"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> will be able to place and control all aspects of calls. Only apps that you trust should be set as the default Phone app."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"Make <xliff:g id="NEW_APP">%s</xliff:g> your default call screening app?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> will no longer be able to screen calls."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> will be able to see information about callers not in your contacts and will be able to block these calls. Only apps that you trust should be set as the default call screening app."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"Set Default"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"Cancel"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"Blocked numbers"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"You won\'t receive calls or texts from blocked numbers."</string>
+ <string name="block_number" msgid="3784343046852802722">"Add a number"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"Unblock <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"Unblock"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"Block calls and texts from"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"Phone number"</string>
+ <string name="block_button" msgid="485080149164258770">"Block"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"Only the device owner can view and manage blocked numbers."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"Unblock"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"Blocking temporarily off"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"When you dial or text an emergency number, blocking is turned off to ensure that emergency services can contact you."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"Re-enable now"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> blocked"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> unblocked"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"Unable to block emergency number."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> is already blocked."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"Using the personal dialler to make the call"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"<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="5795968314037063900">"<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="8653544281903986641">"Answering will end your <xliff:g id="CALL_VIA">%1$s</xliff:g> call"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"Answering will end your <xliff:g id="CALL_VIA">%1$s</xliff:g> calls"</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"Answering will end your <xliff:g id="CALL_VIA">%1$s</xliff:g> video call"</string>
+ <string name="answering_ends_other_managed_call" msgid="4031778317409881805">"Answering will end your ongoing call"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"Answering will end your ongoing calls"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"Answering will end your ongoing video call"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"Answer"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"Decline"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"Call cannot be placed because there are no calling accounts that support calls of this type."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"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="6379163795277824868">"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="8243532328969433172">"Call cannot be placed due to a call in another app."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"Incoming calls"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"Missed calls"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"Call Blocking"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"Placing this call will end your <xliff:g id="OTHER_APP">%1$s</xliff:g> call."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Choose how to make this call"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Redirect call using <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"Call using my phone number"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"Call can\'t be placed by <xliff:g id="OTHER_APP">%1$s</xliff:g>. Try using a different call redirecting app or contacting the developer for help."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"Call Blocking"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"Numbers not in Contacts"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"Block numbers that are not listed in your Contacts"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"Private"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"Block callers who do not disclose their number"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"Phonebox"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"Block calls from pay phones"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"Unknown"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"Block calls from unidentified callers"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"Call Blocking"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"Call Blocking disabled"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"Emergency call made"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"Call Blocking has been disabled to allow emergency responders to contact you."</string>
+ <string name="developer_title" msgid="9146088855661672353">"Telecom Developer Menu"</string>
</resources>
diff --git a/res/values-en-rCA/strings.xml b/res/values-en-rCA/strings.xml
index d62ac55..8bf839b 100644
--- a/res/values-en-rCA/strings.xml
+++ b/res/values-en-rCA/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"Call Management"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"Phone"</string>
- <string name="unknown" msgid="6878797917991465859">"Unknown"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"Missed call"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"Missed work call"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Missed calls"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> missed calls"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"Missed call from <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Call back"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"Message"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"Call muted."</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"Speakerphone enabled."</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"Can\'t talk now. What\'s up?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"I\'ll call you right back."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"I\'ll call you later."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Can\'t talk now. Call me later?"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Quick responses"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Edit quick responses"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"Quick response"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"Message sent to <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"Calling accounts"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"Only emergency calls are allowed."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"This application cannot make outgoing calls without Phone permission."</string>
- <string name="outgoing_call_error_no_phone_number_supplied" msgid="1940125199802007505">"To place a call, enter a valid number."</string>
- <string name="duplicate_video_call_not_allowed" msgid="3749211605014548386">"Call cannot be added at this time."</string>
- <string name="no_vm_number" msgid="4164780423805688336">"Missing voicemail number"</string>
- <string name="no_vm_number_msg" msgid="1300729501030053828">"No voicemail number is stored on the SIM card."</string>
- <string name="add_vm_number_str" msgid="4676479471644687453">"Add number"</string>
- <string name="change_default_dialer_dialog_title" msgid="9101655962941740507">"Make <xliff:g id="NEW_APP">%s</xliff:g> your default Phone app?"</string>
- <string name="change_default_dialer_dialog_affirmative" msgid="8606546663509166276">"Set Default"</string>
- <string name="change_default_dialer_dialog_negative" msgid="9078144617060173845">"Cancel"</string>
- <string name="change_default_dialer_warning_message" msgid="1417671460801684999">"<xliff:g id="NEW_APP">%s</xliff:g> will be able to place and control all aspects of calls. Only apps that you trust should be set as the default Phone app."</string>
- <string name="blocked_numbers" msgid="2751843139572970579">"Blocked numbers"</string>
- <string name="blocked_numbers_msg" msgid="1045015186124965643">"You won\'t receive calls or texts from blocked numbers."</string>
- <string name="block_number" msgid="1101252256321306179">"Add a number"</string>
- <string name="unblock_dialog_body" msgid="1614238499771862793">"Unblock <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
- <string name="unblock_button" msgid="3078048901972674170">"Unblock"</string>
- <string name="add_blocked_dialog_body" msgid="9030243212265516828">"Block calls and texts from"</string>
- <string name="add_blocked_number_hint" msgid="6847675097085433553">"Phone number"</string>
- <string name="block_button" msgid="8822290682524373357">"Block"</string>
- <string name="non_primary_user" msgid="5180129233352533459">"Only the device owner can view and manage blocked numbers."</string>
- <string name="delete_icon_description" msgid="8903995728252556724">"Unblock"</string>
- <string name="blocked_numbers_butter_bar_title" msgid="438170866438793182">"Blocking temporarily off"</string>
- <string name="blocked_numbers_butter_bar_body" msgid="2223244484319442431">"When you dial or text an emergency number, blocking is turned off to ensure that emergency services can contact you."</string>
- <string name="blocked_numbers_butter_bar_button" msgid="2197943354922010696">"Re-enable now"</string>
- <string name="blocked_numbers_number_blocked_message" msgid="7678509606805029540">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> blocked"</string>
- <string name="blocked_numbers_number_unblocked_message" msgid="977894647366750418">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> unblocked"</string>
- <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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"Incoming calls"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"Missed calls"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"Call Blocking"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"Placing this call will end your <xliff:g id="OTHER_APP">%1$s</xliff:g> call."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"Call Blocking"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"Numbers not in Contacts"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"Block numbers that are not listed in your Contacts"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"Private"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"Block callers who do not disclose their number"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"Phonebox"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"Block calls from pay phones"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"Unknown"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"Block calls from unidentified callers"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"Call Blocking"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"Call Blocking disabled"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"Emergency call made"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"Call Blocking has been disabled to allow emergency responders to contact you."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"Call Management"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"Phone"</string>
+ <string name="unknown" msgid="6993977514360123431">"Unknown"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"Missed call"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"Missed work call"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"Missed calls"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> missed calls"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"Missed call from <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"Call back"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"Message"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"Call muted."</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Speakerphone enabled."</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Can\'t talk now. What\'s going on?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"I\'ll call you back."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"I\'ll call you later."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"Can\'t talk now. Call me later?"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"Quick responses"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"Edit quick responses"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"Quick response"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"Message sent to <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"Message failed to send to <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"Calling accounts"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"Only emergency calls are allowed."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"This application cannot make outgoing calls without Phone permission."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"To place a call, enter a valid number."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"Call cannot be added at this time."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"Missing voicemail number"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"No voicemail number is stored on the SIM card."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"Add number"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"Make <xliff:g id="NEW_APP">%s</xliff:g> your default Phone app?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"Set Default"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"Cancel"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> will be able to place and control all aspects of calls. Only apps that you trust should be set as the default Phone app."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"Make <xliff:g id="NEW_APP">%s</xliff:g> your default call screening app?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> will no longer be able to screen calls."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> will be able to see information about callers not in your contacts and will be able to block these calls. Only apps that you trust should be set as the default call screening app."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"Set Default"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"Cancel"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"Blocked numbers"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"You won\'t receive calls or texts from blocked numbers."</string>
+ <string name="block_number" msgid="3784343046852802722">"Add a number"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"Unblock <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"Unblock"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"Block calls and texts from"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"Phone number"</string>
+ <string name="block_button" msgid="485080149164258770">"Block"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"Only the device owner can view and manage blocked numbers."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"Unblock"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"Blocking temporarily off"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"When you dial or text an emergency number, blocking is turned off to ensure that emergency services can contact you."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"Re-enable now"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> blocked"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> unblocked"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"Unable to block emergency number."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> is already blocked."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"Using the personal dialler to make the call"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"<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="5795968314037063900">"<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="8653544281903986641">"Answering will end your <xliff:g id="CALL_VIA">%1$s</xliff:g> call"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"Answering will end your <xliff:g id="CALL_VIA">%1$s</xliff:g> calls"</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"Answering will end your <xliff:g id="CALL_VIA">%1$s</xliff:g> video call"</string>
+ <string name="answering_ends_other_managed_call" msgid="4031778317409881805">"Answering will end your ongoing call"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"Answering will end your ongoing calls"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"Answering will end your ongoing video call"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"Answer"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"Decline"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"Call cannot be placed because there are no calling accounts that support calls of this type."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"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="6379163795277824868">"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="8243532328969433172">"Call cannot be placed due to a call in another app."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"Incoming calls"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"Missed calls"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"Call Blocking"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"Placing this call will end your <xliff:g id="OTHER_APP">%1$s</xliff:g> call."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Choose how to make this call"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Redirect call using <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"Call using my phone number"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"Call can\'t be placed by <xliff:g id="OTHER_APP">%1$s</xliff:g>. Try using a different call redirecting app or contacting the developer for help."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"Call Blocking"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"Numbers not in Contacts"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"Block numbers that are not listed in your Contacts"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"Private"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"Block callers who do not disclose their number"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"Phonebox"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"Block calls from pay phones"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"Unknown"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"Block calls from unidentified callers"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"Call Blocking"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"Call Blocking disabled"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"Emergency call made"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"Call Blocking has been disabled to allow emergency responders to contact you."</string>
+ <string name="developer_title" msgid="9146088855661672353">"Telecom Developer Menu"</string>
</resources>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index d62ac55..8bf839b 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"Call Management"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"Phone"</string>
- <string name="unknown" msgid="6878797917991465859">"Unknown"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"Missed call"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"Missed work call"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Missed calls"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> missed calls"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"Missed call from <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Call back"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"Message"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"Call muted."</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"Speakerphone enabled."</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"Can\'t talk now. What\'s up?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"I\'ll call you right back."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"I\'ll call you later."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Can\'t talk now. Call me later?"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Quick responses"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Edit quick responses"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"Quick response"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"Message sent to <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"Calling accounts"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"Only emergency calls are allowed."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"This application cannot make outgoing calls without Phone permission."</string>
- <string name="outgoing_call_error_no_phone_number_supplied" msgid="1940125199802007505">"To place a call, enter a valid number."</string>
- <string name="duplicate_video_call_not_allowed" msgid="3749211605014548386">"Call cannot be added at this time."</string>
- <string name="no_vm_number" msgid="4164780423805688336">"Missing voicemail number"</string>
- <string name="no_vm_number_msg" msgid="1300729501030053828">"No voicemail number is stored on the SIM card."</string>
- <string name="add_vm_number_str" msgid="4676479471644687453">"Add number"</string>
- <string name="change_default_dialer_dialog_title" msgid="9101655962941740507">"Make <xliff:g id="NEW_APP">%s</xliff:g> your default Phone app?"</string>
- <string name="change_default_dialer_dialog_affirmative" msgid="8606546663509166276">"Set Default"</string>
- <string name="change_default_dialer_dialog_negative" msgid="9078144617060173845">"Cancel"</string>
- <string name="change_default_dialer_warning_message" msgid="1417671460801684999">"<xliff:g id="NEW_APP">%s</xliff:g> will be able to place and control all aspects of calls. Only apps that you trust should be set as the default Phone app."</string>
- <string name="blocked_numbers" msgid="2751843139572970579">"Blocked numbers"</string>
- <string name="blocked_numbers_msg" msgid="1045015186124965643">"You won\'t receive calls or texts from blocked numbers."</string>
- <string name="block_number" msgid="1101252256321306179">"Add a number"</string>
- <string name="unblock_dialog_body" msgid="1614238499771862793">"Unblock <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
- <string name="unblock_button" msgid="3078048901972674170">"Unblock"</string>
- <string name="add_blocked_dialog_body" msgid="9030243212265516828">"Block calls and texts from"</string>
- <string name="add_blocked_number_hint" msgid="6847675097085433553">"Phone number"</string>
- <string name="block_button" msgid="8822290682524373357">"Block"</string>
- <string name="non_primary_user" msgid="5180129233352533459">"Only the device owner can view and manage blocked numbers."</string>
- <string name="delete_icon_description" msgid="8903995728252556724">"Unblock"</string>
- <string name="blocked_numbers_butter_bar_title" msgid="438170866438793182">"Blocking temporarily off"</string>
- <string name="blocked_numbers_butter_bar_body" msgid="2223244484319442431">"When you dial or text an emergency number, blocking is turned off to ensure that emergency services can contact you."</string>
- <string name="blocked_numbers_butter_bar_button" msgid="2197943354922010696">"Re-enable now"</string>
- <string name="blocked_numbers_number_blocked_message" msgid="7678509606805029540">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> blocked"</string>
- <string name="blocked_numbers_number_unblocked_message" msgid="977894647366750418">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> unblocked"</string>
- <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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"Incoming calls"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"Missed calls"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"Call Blocking"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"Placing this call will end your <xliff:g id="OTHER_APP">%1$s</xliff:g> call."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"Call Blocking"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"Numbers not in Contacts"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"Block numbers that are not listed in your Contacts"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"Private"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"Block callers who do not disclose their number"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"Phonebox"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"Block calls from pay phones"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"Unknown"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"Block calls from unidentified callers"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"Call Blocking"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"Call Blocking disabled"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"Emergency call made"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"Call Blocking has been disabled to allow emergency responders to contact you."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"Call Management"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"Phone"</string>
+ <string name="unknown" msgid="6993977514360123431">"Unknown"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"Missed call"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"Missed work call"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"Missed calls"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> missed calls"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"Missed call from <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"Call back"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"Message"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"Call muted."</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Speakerphone enabled."</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Can\'t talk now. What\'s going on?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"I\'ll call you back."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"I\'ll call you later."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"Can\'t talk now. Call me later?"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"Quick responses"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"Edit quick responses"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"Quick response"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"Message sent to <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"Message failed to send to <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"Calling accounts"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"Only emergency calls are allowed."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"This application cannot make outgoing calls without Phone permission."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"To place a call, enter a valid number."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"Call cannot be added at this time."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"Missing voicemail number"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"No voicemail number is stored on the SIM card."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"Add number"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"Make <xliff:g id="NEW_APP">%s</xliff:g> your default Phone app?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"Set Default"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"Cancel"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> will be able to place and control all aspects of calls. Only apps that you trust should be set as the default Phone app."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"Make <xliff:g id="NEW_APP">%s</xliff:g> your default call screening app?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> will no longer be able to screen calls."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> will be able to see information about callers not in your contacts and will be able to block these calls. Only apps that you trust should be set as the default call screening app."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"Set Default"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"Cancel"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"Blocked numbers"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"You won\'t receive calls or texts from blocked numbers."</string>
+ <string name="block_number" msgid="3784343046852802722">"Add a number"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"Unblock <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"Unblock"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"Block calls and texts from"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"Phone number"</string>
+ <string name="block_button" msgid="485080149164258770">"Block"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"Only the device owner can view and manage blocked numbers."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"Unblock"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"Blocking temporarily off"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"When you dial or text an emergency number, blocking is turned off to ensure that emergency services can contact you."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"Re-enable now"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> blocked"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> unblocked"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"Unable to block emergency number."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> is already blocked."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"Using the personal dialler to make the call"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"<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="5795968314037063900">"<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="8653544281903986641">"Answering will end your <xliff:g id="CALL_VIA">%1$s</xliff:g> call"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"Answering will end your <xliff:g id="CALL_VIA">%1$s</xliff:g> calls"</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"Answering will end your <xliff:g id="CALL_VIA">%1$s</xliff:g> video call"</string>
+ <string name="answering_ends_other_managed_call" msgid="4031778317409881805">"Answering will end your ongoing call"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"Answering will end your ongoing calls"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"Answering will end your ongoing video call"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"Answer"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"Decline"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"Call cannot be placed because there are no calling accounts that support calls of this type."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"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="6379163795277824868">"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="8243532328969433172">"Call cannot be placed due to a call in another app."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"Incoming calls"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"Missed calls"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"Call Blocking"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"Placing this call will end your <xliff:g id="OTHER_APP">%1$s</xliff:g> call."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Choose how to make this call"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Redirect call using <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"Call using my phone number"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"Call can\'t be placed by <xliff:g id="OTHER_APP">%1$s</xliff:g>. Try using a different call redirecting app or contacting the developer for help."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"Call Blocking"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"Numbers not in Contacts"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"Block numbers that are not listed in your Contacts"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"Private"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"Block callers who do not disclose their number"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"Phonebox"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"Block calls from pay phones"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"Unknown"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"Block calls from unidentified callers"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"Call Blocking"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"Call Blocking disabled"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"Emergency call made"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"Call Blocking has been disabled to allow emergency responders to contact you."</string>
+ <string name="developer_title" msgid="9146088855661672353">"Telecom Developer Menu"</string>
</resources>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index d62ac55..8bf839b 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"Call Management"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"Phone"</string>
- <string name="unknown" msgid="6878797917991465859">"Unknown"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"Missed call"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"Missed work call"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Missed calls"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> missed calls"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"Missed call from <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Call back"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"Message"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"Call muted."</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"Speakerphone enabled."</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"Can\'t talk now. What\'s up?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"I\'ll call you right back."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"I\'ll call you later."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Can\'t talk now. Call me later?"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Quick responses"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Edit quick responses"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"Quick response"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"Message sent to <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"Calling accounts"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"Only emergency calls are allowed."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"This application cannot make outgoing calls without Phone permission."</string>
- <string name="outgoing_call_error_no_phone_number_supplied" msgid="1940125199802007505">"To place a call, enter a valid number."</string>
- <string name="duplicate_video_call_not_allowed" msgid="3749211605014548386">"Call cannot be added at this time."</string>
- <string name="no_vm_number" msgid="4164780423805688336">"Missing voicemail number"</string>
- <string name="no_vm_number_msg" msgid="1300729501030053828">"No voicemail number is stored on the SIM card."</string>
- <string name="add_vm_number_str" msgid="4676479471644687453">"Add number"</string>
- <string name="change_default_dialer_dialog_title" msgid="9101655962941740507">"Make <xliff:g id="NEW_APP">%s</xliff:g> your default Phone app?"</string>
- <string name="change_default_dialer_dialog_affirmative" msgid="8606546663509166276">"Set Default"</string>
- <string name="change_default_dialer_dialog_negative" msgid="9078144617060173845">"Cancel"</string>
- <string name="change_default_dialer_warning_message" msgid="1417671460801684999">"<xliff:g id="NEW_APP">%s</xliff:g> will be able to place and control all aspects of calls. Only apps that you trust should be set as the default Phone app."</string>
- <string name="blocked_numbers" msgid="2751843139572970579">"Blocked numbers"</string>
- <string name="blocked_numbers_msg" msgid="1045015186124965643">"You won\'t receive calls or texts from blocked numbers."</string>
- <string name="block_number" msgid="1101252256321306179">"Add a number"</string>
- <string name="unblock_dialog_body" msgid="1614238499771862793">"Unblock <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
- <string name="unblock_button" msgid="3078048901972674170">"Unblock"</string>
- <string name="add_blocked_dialog_body" msgid="9030243212265516828">"Block calls and texts from"</string>
- <string name="add_blocked_number_hint" msgid="6847675097085433553">"Phone number"</string>
- <string name="block_button" msgid="8822290682524373357">"Block"</string>
- <string name="non_primary_user" msgid="5180129233352533459">"Only the device owner can view and manage blocked numbers."</string>
- <string name="delete_icon_description" msgid="8903995728252556724">"Unblock"</string>
- <string name="blocked_numbers_butter_bar_title" msgid="438170866438793182">"Blocking temporarily off"</string>
- <string name="blocked_numbers_butter_bar_body" msgid="2223244484319442431">"When you dial or text an emergency number, blocking is turned off to ensure that emergency services can contact you."</string>
- <string name="blocked_numbers_butter_bar_button" msgid="2197943354922010696">"Re-enable now"</string>
- <string name="blocked_numbers_number_blocked_message" msgid="7678509606805029540">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> blocked"</string>
- <string name="blocked_numbers_number_unblocked_message" msgid="977894647366750418">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> unblocked"</string>
- <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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"Incoming calls"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"Missed calls"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"Call Blocking"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"Placing this call will end your <xliff:g id="OTHER_APP">%1$s</xliff:g> call."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"Call Blocking"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"Numbers not in Contacts"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"Block numbers that are not listed in your Contacts"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"Private"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"Block callers who do not disclose their number"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"Phonebox"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"Block calls from pay phones"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"Unknown"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"Block calls from unidentified callers"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"Call Blocking"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"Call Blocking disabled"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"Emergency call made"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"Call Blocking has been disabled to allow emergency responders to contact you."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"Call Management"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"Phone"</string>
+ <string name="unknown" msgid="6993977514360123431">"Unknown"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"Missed call"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"Missed work call"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"Missed calls"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> missed calls"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"Missed call from <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"Call back"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"Message"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"Call muted."</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Speakerphone enabled."</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Can\'t talk now. What\'s going on?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"I\'ll call you back."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"I\'ll call you later."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"Can\'t talk now. Call me later?"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"Quick responses"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"Edit quick responses"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"Quick response"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"Message sent to <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"Message failed to send to <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"Calling accounts"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"Only emergency calls are allowed."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"This application cannot make outgoing calls without Phone permission."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"To place a call, enter a valid number."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"Call cannot be added at this time."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"Missing voicemail number"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"No voicemail number is stored on the SIM card."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"Add number"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"Make <xliff:g id="NEW_APP">%s</xliff:g> your default Phone app?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"Set Default"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"Cancel"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> will be able to place and control all aspects of calls. Only apps that you trust should be set as the default Phone app."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"Make <xliff:g id="NEW_APP">%s</xliff:g> your default call screening app?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> will no longer be able to screen calls."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> will be able to see information about callers not in your contacts and will be able to block these calls. Only apps that you trust should be set as the default call screening app."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"Set Default"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"Cancel"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"Blocked numbers"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"You won\'t receive calls or texts from blocked numbers."</string>
+ <string name="block_number" msgid="3784343046852802722">"Add a number"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"Unblock <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"Unblock"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"Block calls and texts from"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"Phone number"</string>
+ <string name="block_button" msgid="485080149164258770">"Block"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"Only the device owner can view and manage blocked numbers."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"Unblock"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"Blocking temporarily off"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"When you dial or text an emergency number, blocking is turned off to ensure that emergency services can contact you."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"Re-enable now"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> blocked"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> unblocked"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"Unable to block emergency number."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> is already blocked."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"Using the personal dialler to make the call"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"<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="5795968314037063900">"<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="8653544281903986641">"Answering will end your <xliff:g id="CALL_VIA">%1$s</xliff:g> call"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"Answering will end your <xliff:g id="CALL_VIA">%1$s</xliff:g> calls"</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"Answering will end your <xliff:g id="CALL_VIA">%1$s</xliff:g> video call"</string>
+ <string name="answering_ends_other_managed_call" msgid="4031778317409881805">"Answering will end your ongoing call"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"Answering will end your ongoing calls"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"Answering will end your ongoing video call"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"Answer"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"Decline"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"Call cannot be placed because there are no calling accounts that support calls of this type."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"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="6379163795277824868">"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="8243532328969433172">"Call cannot be placed due to a call in another app."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"Incoming calls"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"Missed calls"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"Call Blocking"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"Placing this call will end your <xliff:g id="OTHER_APP">%1$s</xliff:g> call."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Choose how to make this call"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Redirect call using <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"Call using my phone number"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"Call can\'t be placed by <xliff:g id="OTHER_APP">%1$s</xliff:g>. Try using a different call redirecting app or contacting the developer for help."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"Call Blocking"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"Numbers not in Contacts"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"Block numbers that are not listed in your Contacts"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"Private"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"Block callers who do not disclose their number"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"Phonebox"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"Block calls from pay phones"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"Unknown"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"Block calls from unidentified callers"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"Call Blocking"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"Call Blocking disabled"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"Emergency call made"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"Call Blocking has been disabled to allow emergency responders to contact you."</string>
+ <string name="developer_title" msgid="9146088855661672353">"Telecom Developer Menu"</string>
</resources>
diff --git a/res/values-en-rXC/strings.xml b/res/values-en-rXC/strings.xml
index 7a44902..71205ab 100644
--- a/res/values-en-rXC/strings.xml
+++ b/res/values-en-rXC/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"Call Management"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"Phone"</string>
- <string name="unknown" msgid="6878797917991465859">"Unknown"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"Missed call"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"Missed work call"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Missed calls"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> missed calls"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"Missed call from <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Call back"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"Message"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"Call muted."</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"Speakerphone enabled."</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"Can\'t talk now. What\'s up?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"I\'ll call you right back."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"I\'ll call you later."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Can\'t talk now. Call me later?"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Quick responses"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Edit quick responses"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"Quick response"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"Message sent to <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"Calling accounts"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"Only emergency calls are allowed."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"This application cannot make outgoing calls without the Phone permission."</string>
- <string name="outgoing_call_error_no_phone_number_supplied" msgid="1940125199802007505">"To place a call, enter a valid number."</string>
- <string name="duplicate_video_call_not_allowed" msgid="3749211605014548386">"Call cannot be added at this time."</string>
- <string name="no_vm_number" msgid="4164780423805688336">"Missing voicemail number"</string>
- <string name="no_vm_number_msg" msgid="1300729501030053828">"No voicemail number is stored on the SIM card."</string>
- <string name="add_vm_number_str" msgid="4676479471644687453">"Add number"</string>
- <string name="change_default_dialer_dialog_title" msgid="9101655962941740507">"Make <xliff:g id="NEW_APP">%s</xliff:g> your default Phone app?"</string>
- <string name="change_default_dialer_dialog_affirmative" msgid="8606546663509166276">"Set Default"</string>
- <string name="change_default_dialer_dialog_negative" msgid="9078144617060173845">"Cancel"</string>
- <string name="change_default_dialer_warning_message" msgid="1417671460801684999">"<xliff:g id="NEW_APP">%s</xliff:g> will be able to place and control all aspects of calls. Only apps you trust should be set as the default Phone app."</string>
- <string name="blocked_numbers" msgid="2751843139572970579">"Blocked numbers"</string>
- <string name="blocked_numbers_msg" msgid="1045015186124965643">"You won\'t receive calls or texts from blocked numbers."</string>
- <string name="block_number" msgid="1101252256321306179">"Add a number"</string>
- <string name="unblock_dialog_body" msgid="1614238499771862793">"Unblock <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
- <string name="unblock_button" msgid="3078048901972674170">"Unblock"</string>
- <string name="add_blocked_dialog_body" msgid="9030243212265516828">"Block calls and texts from"</string>
- <string name="add_blocked_number_hint" msgid="6847675097085433553">"Phone number"</string>
- <string name="block_button" msgid="8822290682524373357">"Block"</string>
- <string name="non_primary_user" msgid="5180129233352533459">"Only the device owner can view and manage blocked numbers."</string>
- <string name="delete_icon_description" msgid="8903995728252556724">"Unblock"</string>
- <string name="blocked_numbers_butter_bar_title" msgid="438170866438793182">"Blocking temporarily off"</string>
- <string name="blocked_numbers_butter_bar_body" msgid="2223244484319442431">"After you dial or text an emergency number, blocking is turned off to ensure that emergency services can contact you."</string>
- <string name="blocked_numbers_butter_bar_button" msgid="2197943354922010696">"Re-enable now"</string>
- <string name="blocked_numbers_number_blocked_message" msgid="7678509606805029540">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> blocked"</string>
- <string name="blocked_numbers_number_unblocked_message" msgid="977894647366750418">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> unblocked"</string>
- <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 dialer 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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"Incoming calls"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"Missed calls"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"Call Blocking"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"Placing this call will end your <xliff:g id="OTHER_APP">%1$s</xliff:g> call."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"Call Blocking"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"Numbers not in Contacts"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"Block numbers that are not listed in your Contacts"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"Private"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"Block callers that do not disclose their number"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"Pay phone"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"Block calls from pay phones"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"Unknown"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"Block calls from unidentified callers"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"Call Blocking"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"Call Blocking disabled"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"Emergency call made"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"Call Blocking has been disabled to allow emergency responders to contact you."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"Call Management"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"Phone"</string>
+ <string name="unknown" msgid="6993977514360123431">"Unknown"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"Missed call"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"Missed work call"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"Missed calls"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> missed calls"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"Missed call from <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"Call back"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"Message"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"Call muted."</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Speakerphone enabled."</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Can\'t talk now. What\'s up?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"I\'ll call you right back."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"I\'ll call you later."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"Can\'t talk now. Call me later?"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"Quick responses"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"Edit quick responses"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"Quick response"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"Message sent to <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"Message failed to send to <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"Calling accounts"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"Only emergency calls are allowed."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"This application cannot make outgoing calls without the Phone permission."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"To place a call, enter a valid number."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"Call cannot be added at this time."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"Missing voicemail number"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"No voicemail number is stored on the SIM card."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"Add number"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"Make <xliff:g id="NEW_APP">%s</xliff:g> your default Phone app?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"Set Default"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"Cancel"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> will be able to place and control all aspects of calls. Only apps you trust should be set as the default Phone app."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"Make <xliff:g id="NEW_APP">%s</xliff:g> your default call screening app?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> will no longer be able to screen calls."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> will be able to see information about callers not in your contacts and will be able to block these calls. Only apps you trust should be set as the default call screening app."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"Set Default"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"Cancel"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"Blocked numbers"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"You won\'t receive calls or texts from blocked numbers."</string>
+ <string name="block_number" msgid="3784343046852802722">"Add a number"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"Unblock <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"Unblock"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"Block calls and texts from"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"Phone number"</string>
+ <string name="block_button" msgid="485080149164258770">"Block"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"Only the device owner can view and manage blocked numbers."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"Unblock"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"Blocking temporarily off"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"After you dial or text an emergency number, blocking is turned off to ensure that emergency services can contact you."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"Re-enable now"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> blocked"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> unblocked"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"Unable to block emergency number."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> is already blocked."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"Using the personal dialer to make the call"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"<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="5795968314037063900">"<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="8653544281903986641">"Answering will end your <xliff:g id="CALL_VIA">%1$s</xliff:g> call"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"Answering will end your <xliff:g id="CALL_VIA">%1$s</xliff:g> calls"</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"Answering will end your <xliff:g id="CALL_VIA">%1$s</xliff:g> video call"</string>
+ <string name="answering_ends_other_managed_call" msgid="4031778317409881805">"Answering will end your ongoing call"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"Answering will end your ongoing calls"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"Answering will end your ongoing video call"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"Answer"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"Decline"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"Call cannot be placed because there are no calling accounts which support calls of this type."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"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="6379163795277824868">"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="8243532328969433172">"Call cannot be placed due to a call in another app."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"Incoming calls"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"Missed calls"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"Call Blocking"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"Placing this call will end your <xliff:g id="OTHER_APP">%1$s</xliff:g> call."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Choose how to place this call"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Redirect call using <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"Call using my phone number"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"Call can\'t be placed by <xliff:g id="OTHER_APP">%1$s</xliff:g>. Try using a different call redirecting app or contacting the developer for help."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"Call Blocking"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"Numbers not in Contacts"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"Block numbers that are not listed in your Contacts"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"Private"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"Block callers that do not disclose their number"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"Pay phone"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"Block calls from pay phones"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"Unknown"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"Block calls from unidentified callers"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"Call Blocking"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"Call Blocking disabled"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"Emergency call made"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"Call Blocking has been disabled to allow emergency responders to contact you."</string>
+ <string name="developer_title" msgid="9146088855661672353">"Telecom Developer Menu"</string>
</resources>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 309e825..e5faef7 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"Administración de llamadas"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"Teléfono"</string>
- <string name="unknown" msgid="6878797917991465859">"Desconocida"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"Llamada perdida"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"Llamada de trabajo perdida"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Llamadas perdidas"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> llamadas perdidas"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"Se perdieron las llamadas de <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Llamar"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"Mensaje"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"Llamada silenciada"</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"Altavoz habilitado"</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"No puedo hablar ahora. ¿Todo bien?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"Te llamo en seguida."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Te llamo más tarde."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"No puedo hablar ahora. ¿Me llamas más tarde?"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Respuestas rápidas"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Editar respuestas rápidas"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"Respuesta rápida"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"Mensaje enviado a <xliff:g id="PHONE_NUMBER">%s</xliff:g>"</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"Cuentas telefónicas"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"Solo se permiten llamadas de emergencia."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"Esta aplicación no puede realizar llamadas salientes sin permiso del teléfono."</string>
- <string name="outgoing_call_error_no_phone_number_supplied" msgid="1940125199802007505">"Para realizar una llamada, ingresa un número válido."</string>
- <string name="duplicate_video_call_not_allowed" msgid="3749211605014548386">"No se puede agregar la llamada en este momento."</string>
- <string name="no_vm_number" msgid="4164780423805688336">"Falta el número de correo de voz"</string>
- <string name="no_vm_number_msg" msgid="1300729501030053828">"No hay un número de correo de voz almacenado en la tarjeta SIM."</string>
- <string name="add_vm_number_str" msgid="4676479471644687453">"Agregar número"</string>
- <string name="change_default_dialer_dialog_title" msgid="9101655962941740507">"¿Establecer <xliff:g id="NEW_APP">%s</xliff:g> como la app de teléfono predeterminada?"</string>
- <string name="change_default_dialer_dialog_affirmative" msgid="8606546663509166276">"Establecer como predeterminada"</string>
- <string name="change_default_dialer_dialog_negative" msgid="9078144617060173845">"Cancelar"</string>
- <string name="change_default_dialer_warning_message" msgid="1417671460801684999">"<xliff:g id="NEW_APP">%s</xliff:g> podrá realizar llamadas y controlar todos los aspectos relacionados con ellas. Establece solamente una app de confianza como la app de teléfono predeterminada."</string>
- <string name="blocked_numbers" msgid="2751843139572970579">"Números bloqueados"</string>
- <string name="blocked_numbers_msg" msgid="1045015186124965643">"No recibirás llamadas ni mensajes de texto de los números bloqueados."</string>
- <string name="block_number" msgid="1101252256321306179">"Agregar un número"</string>
- <string name="unblock_dialog_body" msgid="1614238499771862793">"¿Quieres desbloquear el número <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
- <string name="unblock_button" msgid="3078048901972674170">"Desbloquear"</string>
- <string name="add_blocked_dialog_body" msgid="9030243212265516828">"Bloquear llamadas y mensajes de texto de"</string>
- <string name="add_blocked_number_hint" msgid="6847675097085433553">"Número de teléfono"</string>
- <string name="block_button" msgid="8822290682524373357">"Bloquear"</string>
- <string name="non_primary_user" msgid="5180129233352533459">"Solo el propietario del dispositivo puede ver y administrar los números bloqueados."</string>
- <string name="delete_icon_description" msgid="8903995728252556724">"Desbloquear"</string>
- <string name="blocked_numbers_butter_bar_title" msgid="438170866438793182">"El bloqueo se desactivó de forma temporal"</string>
- <string name="blocked_numbers_butter_bar_body" msgid="2223244484319442431">"Luego de que llamas o envías un mensaje a un número de emergencia, el bloqueo se desactiva para garantizar que los servicios de emergencia puedan ponerse en contacto contigo."</string>
- <string name="blocked_numbers_butter_bar_button" msgid="2197943354922010696">"Volver a habilitar ahora"</string>
- <string name="blocked_numbers_number_blocked_message" msgid="7678509606805029540">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> bloqueado"</string>
- <string name="blocked_numbers_number_unblocked_message" msgid="977894647366750418">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> desbloqueado"</string>
- <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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"Llamadas entrantes"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"Llamadas perdidas"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"Bloqueo de llamadas"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"Si realizas esta llamada, finalizará la de <xliff:g id="OTHER_APP">%1$s</xliff:g>."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"Bloqueo de llamadas"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"Números que no están en Contactos"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"Bloquear números que no estén en tus Contactos"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"Privado"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"Bloquear llamadas de emisores con números ocultos"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"Teléfono público"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"Bloquear llamadas provenientes de teléfonos públicos"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"Desconocido"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"Bloquear llamadas de emisores desconocidos"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"Bloqueo de llamadas"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"Se inhabilitó el bloqueo de llamadas"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"Se realizó una llamada de emergencia"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"Se inhabilitó el bloqueo de llamadas para permitir que los servicios de emergencia se comuniquen contigo."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"Administración de llamadas"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"Teléfono"</string>
+ <string name="unknown" msgid="6993977514360123431">"Desconocida"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"Llamada perdida"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"Llamada de trabajo perdida"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"Llamadas perdidas"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> llamadas perdidas"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"Se perdieron las llamadas de <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"Llamar"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"Mensaje"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"Llamada silenciada"</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Altavoz habilitado"</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"No puedo hablar ahora. ¿Todo bien?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"Te llamo enseguida."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"Te llamo más tarde."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"No puedo hablar ahora. ¿Me llamas más tarde?"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"Respuestas rápidas"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"Editar respuestas rápidas"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"Respuesta rápida"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"Mensaje enviado a <xliff:g id="PHONE_NUMBER">%s</xliff:g>"</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"No se pudo enviar el mensaje al <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"Cuentas telefónicas"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"Solo se permiten llamadas de emergencia."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"Esta aplicación no puede realizar llamadas salientes sin permiso del teléfono."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"Para realizar una llamada, ingresa un número válido."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"No se puede agregar la llamada en este momento."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"Falta el número de correo de voz"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"No hay un número de correo de voz almacenado en la tarjeta SIM."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"Agregar número"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"¿Establecer <xliff:g id="NEW_APP">%s</xliff:g> como la app de teléfono predeterminada?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"Establecer como predeterminada"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"Cancelar"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> podrá realizar llamadas y controlar todos los aspectos relacionados con ellas. Establece solamente una app de confianza como la app de teléfono predeterminada."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"¿Establecer <xliff:g id="NEW_APP">%s</xliff:g> como filtro de llamadas predeterminado?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> ya no podrá filtrar llamadas."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> podrá ver la información de los emisores que no estén en tus contactos y bloquear estas llamadas. Te recomendamos que solo establezcas una app de confianza como predeterminada para filtrar llamadas."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"Establecer como predeterminada"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"Cancelar"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"Números bloqueados"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"No recibirás llamadas ni mensajes de texto de los números bloqueados."</string>
+ <string name="block_number" msgid="3784343046852802722">"Agregar un número"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"¿Quieres desbloquear el número <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"Desbloquear"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"Bloquear llamadas y mensajes de texto de"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"Número de teléfono"</string>
+ <string name="block_button" msgid="485080149164258770">"Bloquear"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"Solo el propietario del dispositivo puede ver y administrar los números bloqueados."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"Desbloquear"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"El bloqueo se desactivó de forma temporal"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"Luego de que llamas o envías un mensaje a un número de emergencia, el bloqueo se desactiva para garantizar que los servicios de emergencia puedan ponerse en contacto contigo."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"Volver a habilitar ahora"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> bloqueado"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> desbloqueado"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"No se puede bloquear el número de emergencia."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> ya está bloqueado."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"Usando el teléfono personal para realizar la llamada"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"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="5795968314037063900">"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="8653544281903986641">"Si respondes, finalizará la llamada de <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"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="8572022039304239958">"Si respondes, finalizará la videollamada de <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+ <string name="answering_ends_other_managed_call" msgid="4031778317409881805">"Si respondes, finalizará tu llamada en curso"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"Si respondes, finalizarán tus llamadas en curso"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"Si respondes, finalizará tu videollamada en curso"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"Responder"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"Rechazar"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"No se puede realizar la llamada porque no hay ninguna cuenta compatible con este tipo de llamadas."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"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="6379163795277824868">"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="8243532328969433172">"No se puede realizar la llamada porque hay una llamada en curso en otra app."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"Llamadas entrantes"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"Llamadas perdidas"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"Bloqueo de llamadas"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"Si realizas esta llamada, finalizará la de <xliff:g id="OTHER_APP">%1$s</xliff:g>."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Elige cómo quieres realizar esta llamada"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Redireccionar la llamada mediante <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"Llamar mediante mi número de teléfono"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"No se puede realizar la llamada a través de <xliff:g id="OTHER_APP">%1$s</xliff:g>. Intenta usar otra app de derivación de llamadas o comunícate con el desarrollador para obtener ayuda."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"Bloqueo de llamadas"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"Números que no están en Contactos"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"Bloquear números que no estén en tus Contactos"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"Privado"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"Bloquear llamadas de emisores con números ocultos"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"Teléfono público"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"Bloquear llamadas provenientes de teléfonos públicos"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"Desconocido"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"Bloquear llamadas de emisores desconocidos"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"Bloqueo de llamadas"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"Se inhabilitó el bloqueo de llamadas"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"Se realizó una llamada de emergencia"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"Se inhabilitó el bloqueo de llamadas para permitir que los servicios de emergencia se comuniquen contigo."</string>
+ <string name="developer_title" msgid="9146088855661672353">"Menú para desarrolladores de Telecom"</string>
</resources>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index f3d17f5..e83dff4 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"Gestión de llamadas"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"Teléfono"</string>
- <string name="unknown" msgid="6878797917991465859">"Desconocido"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"Llamada perdida"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"Llamada de trabajo perdida"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Llamadas perdidas"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> llamadas perdidas"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"Llamada perdida de <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Llamar"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"Mensaje"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"Llamada silenciada"</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"Altavoz habilitado"</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"No puedo hablar. ¿Es importante?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"Te llamo en cuanto pueda."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Te llamo más tarde."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"No puedo hablar. Llámame luego."</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Respuestas rápidas"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Editar respuestas rápidas"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"Respuesta rápida"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"Mensaje enviado a <xliff:g id="PHONE_NUMBER">%s</xliff:g>"</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"Cuentas de llamadas"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"Solo se permiten llamadas de emergencia."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"Esta aplicación no puede hacer llamadas sin permiso del teléfono."</string>
- <string name="outgoing_call_error_no_phone_number_supplied" msgid="1940125199802007505">"Para realizar una llamada, introduce un número válido."</string>
- <string name="duplicate_video_call_not_allowed" msgid="3749211605014548386">"No se puede añadir la llamada en este momento."</string>
- <string name="no_vm_number" msgid="4164780423805688336">"Falta el número del buzón de voz."</string>
- <string name="no_vm_number_msg" msgid="1300729501030053828">"No se ha almacenado ningún número de buzón de voz en la tarjeta SIM."</string>
- <string name="add_vm_number_str" msgid="4676479471644687453">"Añadir número"</string>
- <string name="change_default_dialer_dialog_title" msgid="9101655962941740507">"¿Quieres que <xliff:g id="NEW_APP">%s</xliff:g> sea tu aplicación de teléfono predeterminada?"</string>
- <string name="change_default_dialer_dialog_affirmative" msgid="8606546663509166276">"Configurar como predeterminada"</string>
- <string name="change_default_dialer_dialog_negative" msgid="9078144617060173845">"Cancelar"</string>
- <string name="change_default_dialer_warning_message" msgid="1417671460801684999">"<xliff:g id="NEW_APP">%s</xliff:g> podrá llamar y controlar todo lo relacionado con las llamadas. Te aconsejamos que solo configures una aplicación como predeterminada si es de confianza."</string>
- <string name="blocked_numbers" msgid="2751843139572970579">"Números bloqueados"</string>
- <string name="blocked_numbers_msg" msgid="1045015186124965643">"No recibirás llamadas ni mensajes de los números bloqueados."</string>
- <string name="block_number" msgid="1101252256321306179">"Añadir un número"</string>
- <string name="unblock_dialog_body" msgid="1614238499771862793">"¿Desbloquear el número <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
- <string name="unblock_button" msgid="3078048901972674170">"Desbloquear"</string>
- <string name="add_blocked_dialog_body" msgid="9030243212265516828">"Bloquear llamadas y mensajes de texto del"</string>
- <string name="add_blocked_number_hint" msgid="6847675097085433553">"Número de teléfono"</string>
- <string name="block_button" msgid="8822290682524373357">"Bloquear"</string>
- <string name="non_primary_user" msgid="5180129233352533459">"Solo el propietario del dispositivo puede ver y administrar los números bloqueados."</string>
- <string name="delete_icon_description" msgid="8903995728252556724">"Desbloquear"</string>
- <string name="blocked_numbers_butter_bar_title" msgid="438170866438793182">"Bloqueo desactivado temporalmente"</string>
- <string name="blocked_numbers_butter_bar_body" msgid="2223244484319442431">"Después de llamar o enviar un SMS a un número de emergencias, el bloqueo se desactiva para que los servicios de emergencias puedan contactarte."</string>
- <string name="blocked_numbers_butter_bar_button" msgid="2197943354922010696">"Volver a habilitarlo ahora"</string>
- <string name="blocked_numbers_number_blocked_message" msgid="7678509606805029540">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> bloqueado"</string>
- <string name="blocked_numbers_number_unblocked_message" msgid="977894647366750418">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> desbloqueado"</string>
- <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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"Llamadas entrantes"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"Llamadas perdidas"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"Bloqueo de llamadas"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"Si haces esta llamada, se finalizará la de <xliff:g id="OTHER_APP">%1$s</xliff:g>."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"Bloqueo de llamadas"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"Números que no están en Contactos"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"Bloquea los números que no estén en Contactos"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"Privada"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"Bloquea las llamadas que tengan el número oculto"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"Teléfono público"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"Bloquea las llamadas de teléfonos públicos"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"Desconocidos"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"Bloquea las llamadas de números desconocidos"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"Bloqueo de llamadas"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"Se ha inhabilitado el bloqueo de llamadas"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"Se ha hecho una llamada de emergencia"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"Se ha inhabilitado el bloqueo de llamadas para que los servicios de emergencia puedan ponerse en contacto contigo."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"Gestión de llamadas"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"Teléfono"</string>
+ <string name="unknown" msgid="6993977514360123431">"Desconocido"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"Llamada perdida"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"Llamada de trabajo perdida"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"Llamadas perdidas"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> llamadas perdidas"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"Llamada perdida de <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"Llamar"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"Mensaje"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"Llamada silenciada"</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Altavoz habilitado"</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"No puedo hablar. ¿Es importante?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"Te llamo en cuanto pueda."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"Te llamo más tarde."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"No puedo hablar. Llámame luego."</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"Respuestas rápidas"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"Editar respuestas rápidas"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"Respuesta rápida"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"Mensaje enviado a <xliff:g id="PHONE_NUMBER">%s</xliff:g>"</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"No se ha podido enviar el mensaje al <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"Cuentas de llamadas"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"Solo se permiten llamadas de emergencia."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"Esta aplicación no puede hacer llamadas sin permiso del teléfono."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"Para realizar una llamada, introduce un número válido."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"No se puede añadir la llamada en este momento."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"Falta el número del buzón de voz."</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"No se ha almacenado ningún número de buzón de voz en la tarjeta SIM."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"Añadir número"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"¿Quieres que <xliff:g id="NEW_APP">%s</xliff:g> sea tu aplicación de teléfono predeterminada?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"Configurar como predeterminada"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"Cancelar"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> podrá llamar y controlar todo lo relacionado con las llamadas. Te aconsejamos que solo configures una aplicación como predeterminada si es de confianza."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"¿Convertir <xliff:g id="NEW_APP">%s</xliff:g> en tu aplicación de filtro predeterminada?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> ya no podrá filtrar llamadas."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> podrá ver información sobre las llamadas que recibas de personas que no estén en tus contactos y podrá bloquearlas. Te recomendamos que solo configures una aplicación de filtro de llamadas como predeterminada si es de confianza."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"Configurar como predeterminada"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"Cancelar"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"Números bloqueados"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"No recibirás llamadas ni mensajes de los números bloqueados."</string>
+ <string name="block_number" msgid="3784343046852802722">"Añadir un número"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"¿Desbloquear el número <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"Desbloquear"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"Bloquear llamadas y mensajes de texto del"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"Número de teléfono"</string>
+ <string name="block_button" msgid="485080149164258770">"Bloquear"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"Solo el propietario del dispositivo puede ver y administrar los números bloqueados."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"Desbloquear"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"Bloqueo desactivado temporalmente"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"Después de llamar o enviar un SMS a un número de emergencias, el bloqueo se desactiva para que los servicios de emergencias puedan contactarte."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"Volver a habilitarlo ahora"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> bloqueado"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> desbloqueado"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"No se puede bloquear el número de emergencias."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"El <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> ya está bloqueado."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"Utilizando teléfono personal para llamar"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"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="5795968314037063900">"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="8653544281903986641">"Al responder, finalizará tu llamada de <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"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="8572022039304239958">"Al responder, finalizará tu videollamada de <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+ <string name="answering_ends_other_managed_call" msgid="4031778317409881805">"Al responder, finalizará la llamada en curso"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"Al responder, finalizarán las llamadas en curso"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"Al responder, finalizará la videollamada en curso"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"Responder"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"Rechazar"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"No puedes llamar porque no hay cuentas de llamada que admitan este tipo de llamadas."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"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="6379163795277824868">"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="8243532328969433172">"No puedes llamar porque tienes una llamada en curso en otra aplicación."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"Llamadas entrantes"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"Llamadas perdidas"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"Bloqueo de llamadas"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"Si haces esta llamada, se finalizará la de <xliff:g id="OTHER_APP">%1$s</xliff:g>."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Elige cómo quieres hacer esta llamada"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Redirigir llamada con <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"Llamar con mi número de teléfono"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"<xliff:g id="OTHER_APP">%1$s</xliff:g> no puede realizar la llamada. Prueba con otra aplicación de redirección de llamadas o ponte en contacto con el desarrollador para obtener ayuda."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"Bloqueo de llamadas"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"Números que no están en Contactos"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"Bloquea los números que no estén en Contactos"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"Privada"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"Bloquea las llamadas que tengan el número oculto"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"Teléfono público"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"Bloquea las llamadas de teléfonos públicos"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"Desconocidos"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"Bloquea las llamadas de números desconocidos"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"Bloqueo de llamadas"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"Se ha inhabilitado el bloqueo de llamadas"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"Se ha hecho una llamada de emergencia"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"Se ha inhabilitado el bloqueo de llamadas para que los servicios de emergencia puedan ponerse en contacto contigo."</string>
+ <string name="developer_title" msgid="9146088855661672353">"Menú para desarrolladores de telecomunicaciones"</string>
</resources>
diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml
index f94ac85..9128b1d 100644
--- a/res/values-et/strings.xml
+++ b/res/values-et/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"Kõnehaldus"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"Telefon"</string>
- <string name="unknown" msgid="6878797917991465859">"Tundmatu"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"Vastamata kõne"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"Vastamata kõne töölt"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Vastamata kõned"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> vastamata kõnet"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"Vastamata kõne helistajalt <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Helista tagasi"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"Sõnum"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"Kõne on summutatud."</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"Valjuhääldi on sisse lülitatud."</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"Ei saa praegu rääkida. Milles asi?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"Helistan kohe tagasi."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Helistan sulle hiljem."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Ei saa rääkida. Helistad hiljem?"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Kiirvastused"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Kiirvastuste muutmine"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"Kiirvastus"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"Sõnum on saadetud numbrile <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"Kõnekontod"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"Lubatud on ainult hädaabikõned."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"See rakendus ei saa ilma telefoni kasutamise loata välja helistada."</string>
- <string name="outgoing_call_error_no_phone_number_supplied" msgid="1940125199802007505">"Helistamiseks sisestage kehtiv number."</string>
- <string name="duplicate_video_call_not_allowed" msgid="3749211605014548386">"Kõnet ei saa praegu lisada."</string>
- <string name="no_vm_number" msgid="4164780423805688336">"Puudub kõnepostinumber"</string>
- <string name="no_vm_number_msg" msgid="1300729501030053828">"SIM-kaardile pole salvestatud ühtegi kõnepostinumbrit."</string>
- <string name="add_vm_number_str" msgid="4676479471644687453">"Lisa number"</string>
- <string name="change_default_dialer_dialog_title" msgid="9101655962941740507">"Kas muuta rakendus <xliff:g id="NEW_APP">%s</xliff:g> telefoni vaikerakenduseks?"</string>
- <string name="change_default_dialer_dialog_affirmative" msgid="8606546663509166276">"Määra vaikeseadeks"</string>
- <string name="change_default_dialer_dialog_negative" msgid="9078144617060173845">"Tühista"</string>
- <string name="change_default_dialer_warning_message" msgid="1417671460801684999">"Rakendus <xliff:g id="NEW_APP">%s</xliff:g> saab helistada ja juhtida kõiki kõnede aspekte. Määrake telefoni vaikerakenduseks vaid usaldusväärsed rakendused."</string>
- <string name="blocked_numbers" msgid="2751843139572970579">"Blokeeritud numbrid"</string>
- <string name="blocked_numbers_msg" msgid="1045015186124965643">"Te ei saa blokeeritud numbritelt kõnesid ega tekstsõnumeid."</string>
- <string name="block_number" msgid="1101252256321306179">"Lisa number"</string>
- <string name="unblock_dialog_body" msgid="1614238499771862793">"Kas deblokeerida number <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
- <string name="unblock_button" msgid="3078048901972674170">"Deblokeeri"</string>
- <string name="add_blocked_dialog_body" msgid="9030243212265516828">"Blokeeri kõned ja tekstsõnumid numbrilt"</string>
- <string name="add_blocked_number_hint" msgid="6847675097085433553">"Telefoninumber"</string>
- <string name="block_button" msgid="8822290682524373357">"Blokeeri"</string>
- <string name="non_primary_user" msgid="5180129233352533459">"Ainult seadme omanik saab blokeeritud numbreid vaadata ja hallata."</string>
- <string name="delete_icon_description" msgid="8903995728252556724">"Deblokeerimine"</string>
- <string name="blocked_numbers_butter_bar_title" msgid="438170866438793182">"Blokeerimine on ajutiselt välja lülitatud"</string>
- <string name="blocked_numbers_butter_bar_body" msgid="2223244484319442431">"Kui helistate või saadate sõnumi hädaabinumbrile, lülitatakse blokeerimine välja, et hädaabiteenused saaksid teiega ühendust võtta."</string>
- <string name="blocked_numbers_butter_bar_button" msgid="2197943354922010696">"Luba kohe uuesti"</string>
- <string name="blocked_numbers_number_blocked_message" msgid="7678509606805029540">"Number <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> on blokeeritud"</string>
- <string name="blocked_numbers_number_unblocked_message" msgid="977894647366750418">"Number <xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> on deblokeeritud"</string>
- <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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"Sissetulevad kõned"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"Vastamata kõned"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"Kõnede blokeerimine"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"Selle kõne tegemisel lõpetatakse pooleliolev kõne rakenduses <xliff:g id="OTHER_APP">%1$s</xliff:g>."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"Kõnede blokeerimine"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"Numbrid, mis ei ole kontaktide hulgas"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"Blokeeritud numbreid ei lisata teie kontaktide hulka"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"Privaatne"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"Nende helistajate blokeerimine, kes ei avalda oma numbrit"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"Telefoniautomaat"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"Kõnede blokeerimine telefoniautomaatidest"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"Tundmatud"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"Kõnede blokeerimine tuvastamata helistajatelt"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"Kõnede blokeerimine"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"Kõnede blokeerimine on keelatud"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"Tehti hädaabikõne"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"Kõnede blokeerimine on keelatud, et lubada hädaabiteenustel teiega ühendust võtta."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"Kõnehaldus"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"Telefon"</string>
+ <string name="unknown" msgid="6993977514360123431">"Tundmatu"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"Vastamata kõne"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"Vastamata kõne töölt"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"Vastamata kõned"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> vastamata kõnet"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"Vastamata kõne helistajalt <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"Helista tagasi"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"Sõnum"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"Kõne on summutatud."</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Valjuhääldi on sisse lülitatud."</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Ei saa praegu rääkida. Milles asi?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"Helistan kohe tagasi."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"Helistan sulle hiljem."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"Ei saa rääkida. Helistad hiljem?"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"Kiirvastused"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"Kiirvastuste muutmine"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"Kiirvastus"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"Sõnum on saadetud numbrile <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"Sõnumi saatmine numbrile <xliff:g id="PHONE_NUMBER">%s</xliff:g> ebaõnnestus."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"Kõnekontod"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"Lubatud on ainult hädaabikõned."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"See rakendus ei saa ilma telefoni kasutamise loata välja helistada."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"Helistamiseks sisestage kehtiv number."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"Kõnet ei saa praegu lisada."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"Puudub kõnepostinumber"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"SIM-kaardile pole salvestatud ühtegi kõnepostinumbrit."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"Lisa number"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"Kas muuta rakendus <xliff:g id="NEW_APP">%s</xliff:g> telefoni vaikerakenduseks?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"Määra vaikeseadeks"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"Tühista"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"Rakendus <xliff:g id="NEW_APP">%s</xliff:g> saab helistada ja juhtida kõiki kõnede aspekte. Määrake telefoni vaikerakenduseks vaid usaldusväärsed rakendused."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"Kas muuta <xliff:g id="NEW_APP">%s</xliff:g> kõnede filtreerimise vaikerakenduseks?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"Rakendus <xliff:g id="OLD_APP">%s</xliff:g> ei saa enam kõnesid filtreerida."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"Rakendus <xliff:g id="NEW_APP">%s</xliff:g> näeb teavet helistajate kohta, kes ei ole teie kontaktides, ja saab need kõned blokeerida. Määrake kõnede filtreerimise vaikerakenduseks vaid usaldusväärsed rakendused."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"Määra vaikeseadeks"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"Loobu"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"Blokeeritud numbrid"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"Te ei saa blokeeritud numbritelt kõnesid ega tekstsõnumeid."</string>
+ <string name="block_number" msgid="3784343046852802722">"Lisa number"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"Kas deblokeerida number <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"Deblokeeri"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"Blokeeri kõned ja tekstsõnumid numbrilt"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"Telefoninumber"</string>
+ <string name="block_button" msgid="485080149164258770">"Blokeeri"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"Ainult seadme omanik saab blokeeritud numbreid vaadata ja hallata."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"Deblokeerimine"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"Blokeerimine on ajutiselt välja lülitatud"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"Kui helistate või saadate sõnumi hädaabinumbrile, lülitatakse blokeerimine välja, et hädaabiteenused saaksid teiega ühendust võtta."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"Luba kohe uuesti"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"Number <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> on blokeeritud"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"Number <xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> on deblokeeritud"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"Hädaabinumbrit ei saa blokeerida."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"Number <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> on juba blokeeritud."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"Helistamiseks kasutatakse isiklikku helistamisprogrammi"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"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="5795968314037063900">"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="8653544281903986641">"Vastamisel lõpetatakse teenuse <xliff:g id="CALL_VIA">%1$s</xliff:g> kõne"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"Vastamisel lõpetatakse teenuse <xliff:g id="CALL_VIA">%1$s</xliff:g> kõned"</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"Vastamisel lõpetatakse teenuse <xliff:g id="CALL_VIA">%1$s</xliff:g> videokõne"</string>
+ <string name="answering_ends_other_managed_call" msgid="4031778317409881805">"Vastamisel lõpetatakse pooleliolev kõne"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"Vastamisel lõpetatakse pooleliolevad kõned"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"Vastamisel lõpetatakse pooleliolev videokõne"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"Vasta"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"Keeldu"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"Helistada ei saa, kuna pole ühtegi kõnekontot, mis toetaks seda tüüpi kõnesid."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"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="6379163795277824868">"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="8243532328969433172">"Kõnet ei saa teise rakenduse kõne tõttu teha."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"Sissetulevad kõned"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"Vastamata kõned"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"Kõnede blokeerimine"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"Selle kõne tegemisel lõpetatakse pooleliolev kõne rakenduses <xliff:g id="OTHER_APP">%1$s</xliff:g>."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Valige, kuidas soovite helistada"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Suuna kõne ümber rakenduse <xliff:g id="OTHER_APP">%1$s</xliff:g> abil"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"Helista minu telefoninumbri abil"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"Rakendus <xliff:g id="OTHER_APP">%1$s</xliff:g> ei saa helistada. Proovige kasutada teist kõnede ümbersuunamise rakendust või võtke abi saamiseks arendajaga ühendust."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"Kõnede blokeerimine"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"Numbrid, mis ei ole kontaktide hulgas"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"Blokeeritud numbreid ei lisata teie kontaktide hulka"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"Privaatne"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"Nende helistajate blokeerimine, kes ei avalda oma numbrit"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"Telefoniautomaat"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"Kõnede blokeerimine telefoniautomaatidest"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"Tundmatud"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"Kõnede blokeerimine tuvastamata helistajatelt"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"Kõnede blokeerimine"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"Kõnede blokeerimine on keelatud"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"Tehti hädaabikõne"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"Kõnede blokeerimine on keelatud, et lubada hädaabiteenustel teiega ühendust võtta."</string>
+ <string name="developer_title" msgid="9146088855661672353">"Teenuse Telecom arendaja menüü"</string>
</resources>
diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml
index df8b015..5186c17 100644
--- a/res/values-eu/strings.xml
+++ b/res/values-eu/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <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_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>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"Deitzaile honen dei galdua: <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Erantzun deiari"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"Mezua"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"Deiaren audioa desaktibatu da."</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"Bozgorailua gaitu da."</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"Ezin dut hitz egin. Arazoren bat al dago?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"Oraintxe deituko dizut bueltan."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Geroago deituko dizut."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Ezin dut hitz egin. Deitu geroago, mesedez."</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Erantzun bizkorrak"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Editatu erantzun bizkorrak"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"Erantzun bizkorra"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"Mezua bidali da <xliff:g id="PHONE_NUMBER">%s</xliff:g> zenbakira."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"Deiak egiteko kontuak"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"Larrialdi-deiak bakarrik egin daitezke."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"Aplikazioak deitu ahal izan dezan, telefonoaren eginbidea erabiltzeko baimena behar du."</string>
- <string name="outgoing_call_error_no_phone_number_supplied" msgid="1940125199802007505">"Deitzeko, idatzi balio duen zenbaki bat."</string>
- <string name="duplicate_video_call_not_allowed" msgid="3749211605014548386">"Une honetan ezin da deirik gehitu."</string>
- <string name="no_vm_number" msgid="4164780423805688336">"Erantzungailuaren zenbakia falta da"</string>
- <string name="no_vm_number_msg" msgid="1300729501030053828">"Ez da erantzungailuaren zenbakirik gorde SIM txartelean."</string>
- <string name="add_vm_number_str" msgid="4676479471644687453">"Gehitu zenbakia"</string>
- <string name="change_default_dialer_dialog_title" msgid="9101655962941740507">"Telefonoa aplikazio lehenetsia <xliff:g id="NEW_APP">%s</xliff:g> izatea nahi duzu?"</string>
- <string name="change_default_dialer_dialog_affirmative" msgid="8606546663509166276">"Ezarri lehenetsi gisa"</string>
- <string name="change_default_dialer_dialog_negative" msgid="9078144617060173845">"Utzi"</string>
- <string name="change_default_dialer_warning_message" msgid="1417671460801684999">"Deien aspektu guztiak erabili eta kontrolatu ahal izango ditu <xliff:g id="NEW_APP">%s</xliff:g> aplikazioak. Fidagarriak diren aplikazioak bakarrik erabili beharko lirateke Telefonoa aplikazio lehenetsi gisa."</string>
- <string name="blocked_numbers" msgid="2751843139572970579">"Blokeatutako zenbakiak"</string>
- <string name="blocked_numbers_msg" msgid="1045015186124965643">"Ez duzu jasoko deirik edo testu-mezurik blokeatutako zenbakietatik."</string>
- <string name="block_number" msgid="1101252256321306179">"Gehitu zenbaki bat"</string>
- <string name="unblock_dialog_body" msgid="1614238499771862793">"<xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g> desblokeatu nahi duzu?"</string>
- <string name="unblock_button" msgid="3078048901972674170">"Desblokeatu"</string>
- <string name="add_blocked_dialog_body" msgid="9030243212265516828">"Blokeatu zenbaki honetatik jasotzen diren deiak eta testu-mezuak:"</string>
- <string name="add_blocked_number_hint" msgid="6847675097085433553">"Telefono-zenbakia"</string>
- <string name="block_button" msgid="8822290682524373357">"Blokeatu"</string>
- <string name="non_primary_user" msgid="5180129233352533459">"Gailuaren jabeak soilik ikus eta kudea ditzake blokeatutako zenbakiak."</string>
- <string name="delete_icon_description" msgid="8903995728252556724">"Desblokeatu"</string>
- <string name="blocked_numbers_butter_bar_title" msgid="438170866438793182">"Aldi baterako desgaitu da blokeatzeko aukera"</string>
- <string name="blocked_numbers_butter_bar_body" msgid="2223244484319442431">"Larrialdietarako zenbakia markatu ondoren, edo zenbait horretara testu-mezua bidali ondoren, desaktibatu egingo da blokeatzeko aukera, larrialdi-zerbitzuak zurekin harremanetan jarriko direla ziurtatzeko."</string>
- <string name="blocked_numbers_butter_bar_button" msgid="2197943354922010696">"Gaitu berriro"</string>
- <string name="blocked_numbers_number_blocked_message" msgid="7678509606805029540">"Blokeatu da <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g>"</string>
- <string name="blocked_numbers_number_unblocked_message" msgid="977894647366750418">"Desblokeatu da <xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g>"</string>
- <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"Ezin da blokeatu larrialdietarako 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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"Jasotako deiak"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"Dei galduak"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"Deiak blokeatzeko aukera"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"Dei hau egiten baduzu, amaitu egingo da <xliff:g id="OTHER_APP">%1$s</xliff:g> aplikazioko deia."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"Deiak blokeatzeko aukera"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"Kontaktuak zerbitzuan ez dauden zenbakiak"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"Blokeatu Kontaktuak zerbitzuan zerrendatuta ez dauden zenbakiak"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"Pribatua"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"Blokeatu zenbakia erakusten ez duten deitzaileak"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"Telefono publikoa"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"Blokeatu telefono publikoen deiak"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"Ezezaguna"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"Blokeatu identifikatu gabeko deitzaileen deiak"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"Deiak blokeatzeko aukera"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"Desgaitu da deiak blokeatzeko aukera"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"Larrialdi-deia egin da"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"Desgaitu da deiak blokeatzeko aukera, larrialdietako zerbitzuak zurekin harremanetan jarri ahal daitezen."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"Deien kudeaketa"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"Telefonoa"</string>
+ <string name="unknown" msgid="6993977514360123431">"Ezezaguna"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"Dei galdua"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"Laneko dei bat galdu duzu"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"Dei galduak"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> dei galdu"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"Deitzaile honen dei galdua: <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"Itzuli deia"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"Mezua"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"Deiaren audioa desaktibatu da."</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Bozgorailua gaitu da."</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Ezin dut hitz egin. Arazoren bat al dago?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"Oraintxe itzuliko dizut deia."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"Geroago deituko dizut."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"Ezin dut hitz egin. Deitu geroago, mesedez."</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"Erantzun bizkorrak"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"Editatu erantzun bizkorrak"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"Erantzun bizkorra"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"Mezua bidali da <xliff:g id="PHONE_NUMBER">%s</xliff:g> zenbakira."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"Ezin izan da bidali mezua <xliff:g id="PHONE_NUMBER">%s</xliff:g> zenbakira."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"Deiak egiteko kontuak"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"Larrialdi-deiak bakarrik egin daitezke."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"Aplikazioak deitu ahal izan dezan, telefonoaren eginbidea erabiltzeko baimena behar du."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"Deitzeko, idatzi balio duen zenbaki bat."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"Une honetan ezin da deirik gehitu."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"Erantzungailuaren zenbakia falta da"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"Ez da erantzungailuaren zenbakirik gorde SIM txartelean."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"Gehitu zenbakia"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"Telefonoa aplikazio lehenetsia <xliff:g id="NEW_APP">%s</xliff:g> izatea nahi duzu?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"Ezarri lehenetsi gisa"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"Utzi"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"Deien aspektu guztiak erabili eta kontrolatu ahal izango ditu <xliff:g id="NEW_APP">%s</xliff:g> aplikazioak. Fidagarriak diren aplikazioak bakarrik erabili beharko lirateke Telefonoa aplikazio lehenetsi gisa."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"Deiak iragazteko aplikazio lehenetsia <xliff:g id="NEW_APP">%s</xliff:g> izatea nahi duzu?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"Aurrerantzean, <xliff:g id="OLD_APP">%s</xliff:g> aplikazioak ezingo ditu iragazi deiak."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"Kontaktuetan gordeta ez dituzun deitzaileei buruzko informazioa ikusteko eta dei horiek blokeatzeko gai izango da <xliff:g id="NEW_APP">%s</xliff:g>. Aplikazio fidagarriak soilik ezarri beharko lirateke deiak iragazteko aplikazio lehenetsi gisa."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"Ezarri lehenetsi gisa"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"Utzi"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"Blokeatutako zenbakiak"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"Ez duzu jasoko deirik edo testu-mezurik blokeatutako zenbakietatik."</string>
+ <string name="block_number" msgid="3784343046852802722">"Gehitu zenbaki bat"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"<xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g> desblokeatu nahi duzu?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"Desblokeatu"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"Blokeatu zenbaki honetatik jasotzen diren deiak eta testu-mezuak:"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"Telefono-zenbakia"</string>
+ <string name="block_button" msgid="485080149164258770">"Blokeatu"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"Gailuaren jabeak soilik ikus eta kudea ditzake blokeatutako zenbakiak."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"Desblokeatu"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"Aldi baterako desgaitu da blokeatzeko aukera"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"Larrialdietarako zenbakia markatu ondoren, edo zenbait horretara testu-mezua bidali ondoren, desaktibatu egingo da blokeatzeko aukera, larrialdi-zerbitzuak zurekin harremanetan jarriko direla ziurtatzeko."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"Gaitu berriro"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"Blokeatu da <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g>"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"Desblokeatu da <xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g>"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"Ezin da blokeatu larrialdietarako zenbakia."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> blokeatuta dago dagoeneko."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"Telefono pertsonala erabiltzen ari zara deia egiteko"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"<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="5795968314037063900">"<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="8653544281903986641">"Erantzuten baduzu, amaitu egingo da <xliff:g id="CALL_VIA">%1$s</xliff:g> deia"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"Erantzuten baduzu, amaitu egingo dira <xliff:g id="CALL_VIA">%1$s</xliff:g> deiak"</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"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="4031778317409881805">"Erantzuten baduzu, amaitu egingo da uneko deia"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"Erantzuten baduzu, amaitu egingo dira uneko deiak"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"Erantzuten baduzu, amaitu egingo da uneko bideo-deia"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"Erantzun"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"Baztertu"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"Ezin da egin deia, ez dagoelako mota honetako deiak onartzen duen deiak egiteko konturik."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"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="6379163795277824868">"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="8243532328969433172">"Ezin da egin deia, beste dei bat abian delako beste aplikazio batean."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"Jasotako deiak"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"Dei galduak"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"Deiak blokeatzeko aukera"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"Dei hau egiten baduzu, amaitu egingo da <xliff:g id="OTHER_APP">%1$s</xliff:g> aplikazioko deia."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Aukeratu dei hau egiteko modua"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Birbideratu deia <xliff:g id="OTHER_APP">%1$s</xliff:g> aplikazioaren bidez"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"Erabili nire telefono-zenbakia deitzeko"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"<xliff:g id="OTHER_APP">%1$s</xliff:g> aplikazioak ezin du egin deia. Erabili deiak birbideratzeko beste aplikazio bat edo jarri harremanetan garatzailearekin laguntza lortzeko."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"Deiak blokeatzeko aukera"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"Kontaktuak zerbitzuan ez dauden zenbakiak"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"Blokeatu Kontaktuak zerbitzuan zerrendatuta ez dauden zenbakiak"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"Pribatua"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"Blokeatu zenbakia erakusten ez duten deitzaileak"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"Telefono publikoa"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"Blokeatu telefono publikoen deiak"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"Ezezagunak"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"Blokeatu identifikatu gabeko deitzaileen deiak"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"Deiak blokeatzeko aukera"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"Desgaitu da deiak blokeatzeko aukera"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"Larrialdi-deia egin da"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"Desgaitu da deiak blokeatzeko aukera, larrialdietako zerbitzuak zurekin harremanetan jarri ahal daitezen."</string>
+ <string name="developer_title" msgid="9146088855661672353">"Telekomunikazioen garatzaileen menua"</string>
</resources>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index b3f8d1e..3532ed5 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"مدیریت تماس"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"تلفن"</string>
- <string name="unknown" msgid="6878797917991465859">"ناشناس"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"تماس بی پاسخ"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"تماس کاری ازدسترفته"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"تماسهای بی پاسخ"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> تماس بی پاسخ"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"تماس بی پاسخ از <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"پاسخ تماس"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"پیام"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"تماس نادیده گرفته شد."</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"تلفن آیفوندار فعال شد."</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"اکنون نمیتوانم صحبت کنم. موضوع چیست؟"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"بیدرنگ با شما تماس میگیرم."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"بعداً با شما تماس میگیرم."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"اکنون نمیتوانم صحبت کنم. بعداً به من زنگ میزنید؟"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"پاسخهای سریع"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"ویرایش پاسخهای سریع"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"پاسخ سریع"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"پیام به <xliff:g id="PHONE_NUMBER">%s</xliff:g> ارسال شد."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"حسابهای تماس"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"فقط تماسهای اضطراری مجاز است."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"این برنامه نمیتواند بدون اجازه تلفن، تماسهای خروجی برقرار کند."</string>
- <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="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>
- <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="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_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>
- <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_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_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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"تماسهای ورودی"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"تماسهای بیپاسخ"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"مسدود کردن تماس"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"اگر این تماس را برقرار کنید، تماس <xliff:g id="OTHER_APP">%1$s</xliff:g> شما قطع میشود."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"مسدود کردن تماس"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"شمارههایی که در «مخاطبین» نیستند"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"مسدود کردن شمارههایی که در «مخاطبین» شما نیستند"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"خصوصی"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"مسدود کردن تماسگیرندگانی که شمارهشان را افشا نمیکنند"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"تلفن عمومی"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"مسدود کردن تماسها از تلفنهای عمومی"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"ناشناس"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"مسدودن تماسهای تماسگیرندگان ناشناس"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"مسدود کردن تماس"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"مسدود کردن تماس غیرفعال شد"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"تماس اضطراری برقرار شد"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"مسدود کردن تماس غیرفعال شده است تا پاسخدهندگان اضطراری بتوانند با شما تماس بگیرند."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"مدیریت تماس"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"تلفن"</string>
+ <string name="unknown" msgid="6993977514360123431">"ناشناس"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"تماس بی پاسخ"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"تماس کاری ازدسترفته"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"تماسهای بی پاسخ"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> تماس بی پاسخ"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"تماس بی پاسخ از <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"پاسخ تماس"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"پیام"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"تماس نادیده گرفته شد."</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"تلفن آیفوندار فعال شد."</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"الآن نمیتوانم صحبت کنم. موضوع چیست؟"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"همین حالا با شما تماس میگیرم.."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"بعداً با شما تماس میگیرم."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"اکنون نمیتوانم صحبت کنم. بعداً به من زنگ میزنید؟"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"پاسخهای سریع"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"ویرایش پاسخهای سریع"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"پاسخ سریع"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"پیام به <xliff:g id="PHONE_NUMBER">%s</xliff:g> ارسال شد."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"پیام به <xliff:g id="PHONE_NUMBER">%s</xliff:g> ارسال نشد."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"حسابهای تماس"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"فقط تماسهای اضطراری مجاز است."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"این برنامه نمیتواند بدون اجازه تلفن، تماسهای خروجی برقرار کند."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"برای برقراری تماس، یک شماره معتبر وارد کنید."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"در این زمان نمیتوان تماسی اضافه کرد."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"عدم وجود شماره پست صوتی"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"شماره پست صوتی در سیم کارت ذخیره نشده است."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"افزودن شماره"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"<xliff:g id="NEW_APP">%s</xliff:g> را به برنامه تلفن پیشفرضتان تبدیل میکنید؟"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"تنظیم پیشفرض"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"لغو"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> میتواند تماسها را برقرار کند و همه مسائل مربوط به آنها را کنترل کند. فقط برنامههایی را که به آنها اطمینان دارید بهعنوان برنامه پیشفرض تلفن تنظیم کنید."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"<xliff:g id="NEW_APP">%s</xliff:g> برنامه پیشفرض غربالگری تماستان شود؟"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> دیگر نمیتواند تماسها را غربال کند."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> میتواند اطلاعات تماسگیرندههایی را که در مخاطبینتان نیستند، ببیند و این تماسها را مسدود کند. فقط برنامههایی را که به آنها اعتماد دارید بهعنوان برنامه غربالگری تماس پیشفرض تنظیم کنید."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"تنظیم پیشفرض"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"لغو"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"شمارههای مسدودشده"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"از شمارههای مسدودشده نمیتوانید تماس یا پیامک دریافت کنید."</string>
+ <string name="block_number" msgid="3784343046852802722">"افزودن شماره"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"<xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g> رفع انسداد شود؟"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"رفع انسداد"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"مسدود کردن تماس و پیامک از"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"شماره تلفن"</string>
+ <string name="block_button" msgid="485080149164258770">"مسدود کردن"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"فقط مالک دستگاه میتواند شمارههای مسدودشده را مدیریت کند."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"رفع انسداد"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"امکان مسدود کردن موقتاً خاموش شده است."</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"بعد از گرفتن شماره اضطراری یا ارسال پیام نوشتاری به آن شماره، برای اطمینان از اینکه سرویسهای اضطراری با شما تماس بگیرند، امکان مسدود کردن خاموش شده است."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"اکنون دوباره فعال شود"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> مسدود شد"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"انسداد <xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> لغو شد"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"شماره اضطراری مسدود نشد."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> قبلاً مسدود شده است."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"استفاده از شمارهگیر شخصی برای گرفتن تماس"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"<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="5795968314037063900">"<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="8653544281903986641">"پاسخگویی به تماس <xliff:g id="CALL_VIA">%1$s</xliff:g> پایان میدهد"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"پاسخگویی به تماسهای <xliff:g id="CALL_VIA">%1$s</xliff:g> شما پاسخ میدهد"</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"پاسخگویی به تماس ویدیویی <xliff:g id="CALL_VIA">%1$s</xliff:g> شما پایان میدهد"</string>
+ <string name="answering_ends_other_managed_call" msgid="4031778317409881805">"پاسخگویی به تماس درحال انجامتان پایان میدهد"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"پاسخگویی به تماسهای درحال انجامتان پایان میدهد"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"پاسخگویی به تماس ویدیویی درحال انجامتان پایان میدهد"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"پاسخگویی"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"نپذیرفتن"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"بهدلیل اینکه هیچ حساب تماسی وجود ندارد که از این نوع تماس پشتیبانی کند، تماس برقرار نشد."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"به دلیل تماس <xliff:g id="OTHER_CALL">%1$s</xliff:g>، نمیتوان تماسی برقرار کرد."</string>
+ <string name="cant_call_due_to_ongoing_calls" msgid="6379163795277824868">"به دلیل تماسهای <xliff:g id="OTHER_CALL">%1$s</xliff:g>، نمیتوان تماسی برقرار کرد."</string>
+ <string name="cant_call_due_to_ongoing_unknown_call" msgid="8243532328969433172">"به دلیل تماسی در برنامه دیگر، نمیتوان تماسی برقرار کرد."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"تماسهای ورودی"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"تماسهای بیپاسخ"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"مسدود کردن تماس"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"اگر این تماس را برقرار کنید، تماس <xliff:g id="OTHER_APP">%1$s</xliff:g> شما قطع میشود."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"انتخاب نحوه برقراری این تماس"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"هدایت تماس با استفاده از <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"تماس با استفاده از شماره تلفن من"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"نمیتوان با <xliff:g id="OTHER_APP">%1$s</xliff:g> تماس برقرار کرد. لطفاً از برنامه هدایت تماس دیگری استفاده کنید یا برای دریافت راهنمایی با برنامهنویس تماس بگیرید."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"مسدود کردن تماس"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"شمارههایی که در «مخاطبین» نیستند"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"مسدود کردن شمارههایی که در «مخاطبین» شما نیستند"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"خصوصی"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"مسدود کردن تماسگیرندگانی که شمارهشان را افشا نمیکنند"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"تلفن عمومی"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"مسدود کردن تماسها از تلفنهای عمومی"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"ناشناس"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"مسدود کردن تماسهای تماسگیرندگان ناشناس"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"مسدود کردن تماس"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"مسدود کردن تماس غیرفعال شد"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"تماس اضطراری برقرار شد"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"مسدود کردن تماس غیرفعال شده است تا پاسخدهندگان اضطراری بتوانند با شما تماس بگیرند."</string>
+ <string name="developer_title" msgid="9146088855661672353">"منوی برنامهنویس Telecom"</string>
</resources>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index 73cb390..a714eee 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"Puhelujen hallinta"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"Puhelin"</string>
- <string name="unknown" msgid="6878797917991465859">"Tuntematon"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"Vastaamatta jäänyt puhelu"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"Vastaamaton työpuhelu"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Vastaamattomat puhelut"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> vastaamatonta puhelua"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"Vastaamatta jäänyt puhelu numerosta <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Soita"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"Viesti"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"Puhelu mykistetty."</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"Kaiutin käytössä."</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"En voi vastata. Mitä asiaa?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"Soitan sinulle pian."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Soitan sinulle myöhemmin."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"En voi vastata. Soitatko myöhemmin?"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Pikavastaukset"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Muokkaa pikavastausta"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"Pikavastaukset"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"Viesti lähetetty numeroon <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"Puhelutilit"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"Vain hätäpuhelut sallittu"</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"Tämä sovellus ei voi soittaa puheluita ilman Puhelin-lupaa."</string>
- <string name="outgoing_call_error_no_phone_number_supplied" msgid="1940125199802007505">"Soita antamalla kelvollinen numero."</string>
- <string name="duplicate_video_call_not_allowed" msgid="3749211605014548386">"Puhelua ei voi lisätä juuri nyt."</string>
- <string name="no_vm_number" msgid="4164780423805688336">"Puhelinvastaajan numero puuttuu"</string>
- <string name="no_vm_number_msg" msgid="1300729501030053828">"SIM-kortille ei ole tallennettu puhelinvastaajan numeroa."</string>
- <string name="add_vm_number_str" msgid="4676479471644687453">"Lisää numero"</string>
- <string name="change_default_dialer_dialog_title" msgid="9101655962941740507">"Valitaanko <xliff:g id="NEW_APP">%s</xliff:g> oletuspuhelinsovellukseksi?"</string>
- <string name="change_default_dialer_dialog_affirmative" msgid="8606546663509166276">"Aseta oletukseksi"</string>
- <string name="change_default_dialer_dialog_negative" msgid="9078144617060173845">"Peruuta"</string>
- <string name="change_default_dialer_warning_message" msgid="1417671460801684999">"<xliff:g id="NEW_APP">%s</xliff:g> voi hallita kaikkia puhelutoimintoja. Aseta oletuspuhelinsovellukseksi vain luotettava sovellus."</string>
- <string name="blocked_numbers" msgid="2751843139572970579">"Estetyt numerot"</string>
- <string name="blocked_numbers_msg" msgid="1045015186124965643">"Et voi vastaanottaa puheluita tai tekstiviestejä estetyistä numeroista."</string>
- <string name="block_number" msgid="1101252256321306179">"Lisää numero"</string>
- <string name="unblock_dialog_body" msgid="1614238499771862793">"Kumotaanko numeron <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g> esto?"</string>
- <string name="unblock_button" msgid="3078048901972674170">"Kumoa esto"</string>
- <string name="add_blocked_dialog_body" msgid="9030243212265516828">"Estä puhelut ja tekstiviestit numerosta"</string>
- <string name="add_blocked_number_hint" msgid="6847675097085433553">"Puhelinnumero"</string>
- <string name="block_button" msgid="8822290682524373357">"Estä"</string>
- <string name="non_primary_user" msgid="5180129233352533459">"Vain laitteen omistaja voi katsella ja hallinnoida estettyjä numeroita."</string>
- <string name="delete_icon_description" msgid="8903995728252556724">"Kumoa esto"</string>
- <string name="blocked_numbers_butter_bar_title" msgid="438170866438793182">"Esto on väliaikaisesti pois käytöstä"</string>
- <string name="blocked_numbers_butter_bar_body" msgid="2223244484319442431">"Hätänumeroon soittamisen tai tekstiviestin lähettämisen jälkeen esto poistetaan käytöstä, jotta hätäviranomaiset voivat olla yhteydessä sinuun."</string>
- <string name="blocked_numbers_butter_bar_button" msgid="2197943354922010696">"Ota nyt uudelleen käyttöön"</string>
- <string name="blocked_numbers_number_blocked_message" msgid="7678509606805029540">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> estettiin."</string>
- <string name="blocked_numbers_number_unblocked_message" msgid="977894647366750418">"Numeron <xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> esto kumottiin."</string>
- <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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"Saapuvat puhelut"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"Vastaamattomat puhelut"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"Puhelujen esto"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"Tämän puhelun soittaminen päättää puhelun sovelluksessa <xliff:g id="OTHER_APP">%1$s</xliff:g>."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"Puhelujen esto"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"Numerot eivät ole yhteystiedoissa"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"Toiminto estää numerot, jotka eivät ole yhteystiedoissasi"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"Yksityinen"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"Estä soittajat, jotka ovat estäneet oman numeronsa näkymisen"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"Yleisöpuhelin"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"Estä yleisöpuhelimista soitetut puhelut"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"Tuntematon"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"Estä tuntemattomien soittajien puhelut"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"Puhelujen esto"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"Puhelujen esto poistettu käytöstä"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"Hätäpuhelu soitettu"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"Puhelujen esto on poistettu käytöstä, jotta pelastusviranomaiset voivat soittaa puhelimeesi."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"Puhelujen hallinta"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"Puhelin"</string>
+ <string name="unknown" msgid="6993977514360123431">"Tuntematon"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"Vastaamatta jäänyt puhelu"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"Vastaamaton työpuhelu"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"Vastaamattomat puhelut"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> vastaamatonta puhelua"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"Vastaamatta jäänyt puhelu numerosta <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"Soita"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"Viesti"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"Puhelu mykistetty."</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Kaiutin käytössä."</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"En voi vastata. Mitä asiaa?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"Soitan sinulle pian."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"Soitan sinulle myöhemmin."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"En voi vastata. Soitatko myöhemmin?"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"Pikavastaukset"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"Muokkaa pikavastausta"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"Pikavastaukset"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"Viesti lähetetty numeroon <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"Viestin lähetys numeroon <xliff:g id="PHONE_NUMBER">%s</xliff:g> epäonnistui."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"Puhelutilit"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"Vain hätäpuhelut sallittu"</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"Tämä sovellus ei voi soittaa puheluita ilman Puhelin-lupaa."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"Soita antamalla kelvollinen numero."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"Puhelua ei voi lisätä juuri nyt."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"Puhelinvastaajan numero puuttuu"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"SIM-kortille ei ole tallennettu puhelinvastaajan numeroa."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"Lisää numero"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"Valitaanko <xliff:g id="NEW_APP">%s</xliff:g> oletuspuhelinsovellukseksi?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"Aseta oletukseksi"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"Peruuta"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> voi hallita kaikkia puhelutoimintoja. Aseta oletuspuhelinsovellukseksi vain luotettava sovellus."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"Määritetäänkö <xliff:g id="NEW_APP">%s</xliff:g> puheluseulonnan oletussovellukseksi?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> ei voi enää seuloa puheluita."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> näkee tietoa soittajista, jotka eivät ole yhteystiedoissasi, ja pystyy estämään heiltä tulevat puhelut. Puheluseulonnan oletussovellukseksi kannattaa määrittää vain sellainen sovellus, johon luotat."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"Määritä oletussovellus"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"Peruuta"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"Estetyt numerot"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"Et voi vastaanottaa puheluita tai tekstiviestejä estetyistä numeroista."</string>
+ <string name="block_number" msgid="3784343046852802722">"Lisää numero"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"Kumotaanko numeron <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g> esto?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"Kumoa esto"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"Estä puhelut ja tekstiviestit numerosta"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"Puhelinnumero"</string>
+ <string name="block_button" msgid="485080149164258770">"Estä"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"Vain laitteen omistaja voi katsella ja hallinnoida estettyjä numeroita."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"Kumoa esto"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"Esto on väliaikaisesti pois käytöstä"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"Hätänumeroon soittamisen tai tekstiviestin lähettämisen jälkeen esto poistetaan käytöstä, jotta hätäviranomaiset voivat olla yhteydessä sinuun."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"Ota nyt uudelleen käyttöön"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> estettiin."</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"Numeron <xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> esto kumottiin."</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"Hätänumeroa ei voi estää."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> on jo estetty."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"Puhelun soittaminen henkilökohtaisella numerovalitsimella"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"<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="5795968314037063900">"<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="8653544281903986641">"Vastaaminen päättää <xliff:g id="CALL_VIA">%1$s</xliff:g>-puhelun."</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"Vastaaminen päättää <xliff:g id="CALL_VIA">%1$s</xliff:g>-puhelut."</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"Vastaaminen päättää <xliff:g id="CALL_VIA">%1$s</xliff:g>-videopuhelun."</string>
+ <string name="answering_ends_other_managed_call" msgid="4031778317409881805">"Vastaaminen päättää käynnissä olevan puhelun."</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"Vastaaminen päättää käynnissä olevat puhelut."</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"Vastaaminen päättää käynnissä olevan videopuhelun."</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"Vastaa"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"Hylkää"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"Puhelua ei voi soittaa, koska laitteella ei ole puhelutiliä, joka tukisi tätä puhelutyyppiä."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"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="6379163795277824868">"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="8243532328969433172">"Puhelua ei voi soittaa, koska toisessa sovelluksessa on puhelu käynnissä."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"Saapuvat puhelut"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"Vastaamattomat puhelut"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"Puhelujen esto"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"Tämän puhelun soittaminen päättää puhelun sovelluksessa <xliff:g id="OTHER_APP">%1$s</xliff:g>."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Valitse, miten puhelu soitetaan"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Uudelleenohjaa puhelu sovelluksella <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"Soita puhelinnumerollani"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"<xliff:g id="OTHER_APP">%1$s</xliff:g> ei voi soittaa puhelua. Kokeile jotakin toista soitonsiirtosovellusta tai ota yhteyttä kehittäjään."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"Puhelujen esto"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"Numerot eivät ole yhteystiedoissa"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"Toiminto estää numerot, jotka eivät ole yhteystiedoissasi"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"Yksityinen"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"Estä soittajat, jotka ovat estäneet oman numeronsa näkymisen"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"Yleisöpuhelin"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"Estä yleisöpuhelimista soitetut puhelut"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"Tuntematon"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"Estä tuntemattomien soittajien puhelut"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"Puhelujen esto"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"Puhelujen esto poistettu käytöstä"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"Hätäpuhelu soitettu"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"Puhelujen esto on poistettu käytöstä, jotta pelastusviranomaiset voivat soittaa puhelimeesi."</string>
+ <string name="developer_title" msgid="9146088855661672353">"Televiestinnän kehittäjävalikko"</string>
</resources>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index b90b2ff..1da1fee 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"Gestion des appels"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"Téléphone"</string>
- <string name="unknown" msgid="6878797917991465859">"Inconnu"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"Appel manqué"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"Appel professionnel manqué"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Appels manqués"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> appels manqués"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"Appel manqué de <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Rappeler"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"Message"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"Son coupé"</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"Haut-parleur activé"</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"Peux pas parler. Quoi de neuf?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"Je te rappelle tout de suite."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Je t\'appellerai plus tard."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Peux pas parler. On se rappelle?"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Réponses rapides"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Modifier réponses rapides"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"Réponse rapide"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"Message envoyé à <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"Comptes d\'appel"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"Seuls les appels d\'urgence sont autorisés."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"Cette application ne peut pas faire d\'appels sans l\'autorisation de l\'application Téléphone."</string>
- <string name="outgoing_call_error_no_phone_number_supplied" msgid="1940125199802007505">"Pour faire un appel, entrez un numéro valide."</string>
- <string name="duplicate_video_call_not_allowed" msgid="3749211605014548386">"Impossible d\'ajouter l\'appel pour le moment."</string>
- <string name="no_vm_number" msgid="4164780423805688336">"Numéro de messagerie vocale manquant"</string>
- <string name="no_vm_number_msg" msgid="1300729501030053828">"Aucun numéro de messagerie vocale n\'est enregistré sur la carte SIM."</string>
- <string name="add_vm_number_str" msgid="4676479471644687453">"Ajouter un numéro"</string>
- <string name="change_default_dialer_dialog_title" msgid="9101655962941740507">"Définir <xliff:g id="NEW_APP">%s</xliff:g> comme votre application de téléphonie par défaut?"</string>
- <string name="change_default_dialer_dialog_affirmative" msgid="8606546663509166276">"Définir comme application de téléphonie par défaut"</string>
- <string name="change_default_dialer_dialog_negative" msgid="9078144617060173845">"Annuler"</string>
- <string name="change_default_dialer_warning_message" msgid="1417671460801684999">"<xliff:g id="NEW_APP">%s</xliff:g> sera en mesure de passer des appels et de contrôler tous les aspects des appels. Seules les applications auxquelles vous avez confiance doivent être définies comme l\'application de téléphonie par défaut."</string>
- <string name="blocked_numbers" msgid="2751843139572970579">"Numéros bloqués"</string>
- <string name="blocked_numbers_msg" msgid="1045015186124965643">"Vous ne recevrez pas d\'appels ni de messages texte provenant des numéros bloqués."</string>
- <string name="block_number" msgid="1101252256321306179">"Ajouter un numéro"</string>
- <string name="unblock_dialog_body" msgid="1614238499771862793">"Débloquer <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
- <string name="unblock_button" msgid="3078048901972674170">"Débloquer"</string>
- <string name="add_blocked_dialog_body" msgid="9030243212265516828">"Bloquer les appels et les textos de"</string>
- <string name="add_blocked_number_hint" msgid="6847675097085433553">"Numéro de téléphone"</string>
- <string name="block_button" msgid="8822290682524373357">"Bloquer"</string>
- <string name="non_primary_user" msgid="5180129233352533459">"Seul le propriétaire de l\'appareil peut afficher et gérer les numéros bloqués."</string>
- <string name="delete_icon_description" msgid="8903995728252556724">"Débloquer"</string>
- <string name="blocked_numbers_butter_bar_title" msgid="438170866438793182">"Le blocage est temporairement désactivé"</string>
- <string name="blocked_numbers_butter_bar_body" msgid="2223244484319442431">"Lorsque vous communiquez avec les services d\'urgence par téléphone ou par message texte, la fonctionnalité de blocage est désactivée pour que ceux-ci puissent vous joindre."</string>
- <string name="blocked_numbers_butter_bar_button" msgid="2197943354922010696">"Réactiver le blocage maintenant"</string>
- <string name="blocked_numbers_number_blocked_message" msgid="7678509606805029540">"Le numéro <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> a été bloqué."</string>
- <string name="blocked_numbers_number_unblocked_message" msgid="977894647366750418">"Le numéro <xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> a été débloqué."</string>
- <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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"Appels entrants"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"Appels manqués"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"Blocage des appels"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"Si vous passez cet appel, vous mettrez fin à l\'appel <xliff:g id="OTHER_APP">%1$s</xliff:g>."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"Blocage des appels"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"Numéros non répertoriés dans les contacts"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"Bloquer les numéros non répertoriés dans vos contacts"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"Privé"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"Bloquer les appelants qui ne divulguent pas leur numéro"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"Téléphone public"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"Bloquer les appels provenant de téléphones publics"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"Inconnu"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"Bloquer les appels provenant d\'appelants non identifiés"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"Blocage des appels"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"Blocage des appels désactivé"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"Appel d\'urgence effectué"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"Le blocage des appels a été désactivé pour permettre aux intervenants d\'urgence de communiquer avec vous."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"Gestion des appels"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"Téléphone"</string>
+ <string name="unknown" msgid="6993977514360123431">"Inconnu"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"Appel manqué"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"Appel professionnel manqué"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"Appels manqués"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> appels manqués"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"Appel manqué de <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"Rappeler"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"Message"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"Son coupé"</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Haut-parleur activé"</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Peux pas parler. Quoi de neuf?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"Je te rappelle tout de suite."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"Je t\'appellerai plus tard."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"Peux pas parler. On se rappelle?"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"Réponses rapides"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"Modifier réponses rapides"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"Réponse rapide"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"Message envoyé à <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"Échec de l\'envoi du message au <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"Comptes d\'appel"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"Seuls les appels d\'urgence sont autorisés."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"Cette application ne peut pas faire d\'appels sans l\'autorisation de l\'application Téléphone."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"Pour faire un appel, entrez un numéro valide."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"Impossible d\'ajouter l\'appel pour le moment."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"Numéro de messagerie vocale manquant"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"Aucun numéro de messagerie vocale n\'est enregistré sur la carte SIM."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"Ajouter un numéro"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"Définir <xliff:g id="NEW_APP">%s</xliff:g> comme votre application de téléphonie par défaut?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"Définir comme application de téléphonie par défaut"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"Annuler"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> sera en mesure de passer des appels et de contrôler tous les aspects des appels. Seules les applications auxquelles vous avez confiance doivent être définies comme l\'application de téléphonie par défaut."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"Définir <xliff:g id="NEW_APP">%s</xliff:g> comme appli de filtrage d\'appels par défaut?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> ne pourra plus filtrer les appels."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> pourra accéder aux renseignements sur les appelants qui ne figurent pas dans vos contacts et pourra bloquer ces appels. L\'application de filtrage d\'appels par défaut doit être une application de confiance."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"Définir comme application de filtrage d\'appels par défaut"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"Annuler"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"Numéros bloqués"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"Vous ne recevrez pas d\'appels ni de messages texte provenant des numéros bloqués."</string>
+ <string name="block_number" msgid="3784343046852802722">"Ajouter un numéro"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"Débloquer <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"Débloquer"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"Bloquer les appels et les textos de"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"Numéro de téléphone"</string>
+ <string name="block_button" msgid="485080149164258770">"Bloquer"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"Seul le propriétaire de l\'appareil peut afficher et gérer les numéros bloqués."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"Débloquer"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"Le blocage est temporairement désactivé"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"Lorsque vous communiquez avec les services d\'urgence par téléphone ou par message texte, la fonctionnalité de blocage est désactivée pour que ceux-ci puissent vous joindre."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"Réactiver le blocage maintenant"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"Le numéro <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> a été bloqué."</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"Le numéro <xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> a été débloqué."</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"Impossible de bloquer le numéro d\'urgence."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"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="5817631570381795610">"Utilisation du clavier personnel pour faire l\'appel…"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"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="5795968314037063900">"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="8653544281903986641">"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="3702302838456922535">"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="8572022039304239958">"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="4031778317409881805">"Si vous répondez, vous mettrez fin à votre appel en cours"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"Si vous répondez, vous mettrez fin à vos appels en cours"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"Si vous répondez, vous mettrez fin à l\'appel vidéo en cours"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"Répondre"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"Refuser"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"Impossible de passer cet appel, car aucun compte d\'appel ne prend en charge les appels de ce type."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"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="6379163795277824868">"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="8243532328969433172">"Impossible de faire l\'appel en raison d\'un appel dans une autre application."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"Appels entrants"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"Appels manqués"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"Blocage des appels"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"Si vous passez cet appel, vous mettrez fin à l\'appel <xliff:g id="OTHER_APP">%1$s</xliff:g>."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Choisissez comment passer cet appel"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Rediriger l\'appel en utilisant <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"Appeler en utilisant mon numéro de téléphone"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"Impossible de passer l\'appel au moyen de l\'application <xliff:g id="OTHER_APP">%1$s</xliff:g>. Essayez d\'utiliser une autre application de redirection d\'appels ou de communiquer avec le concepteur de l\'application pour obtenir de l\'aide."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"Blocage des appels"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"Numéros non répertoriés dans les contacts"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"Bloquer les numéros non répertoriés dans vos contacts"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"Privé"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"Bloquer les appelants qui ne divulguent pas leur numéro"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"Téléphone public"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"Bloquer les appels provenant de téléphones publics"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"Inconnu"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"Bloquer les appels provenant d\'appelants non identifiés"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"Blocage des appels"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"Blocage des appels désactivé"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"Appel d\'urgence effectué"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"Le blocage des appels a été désactivé pour permettre aux intervenants d\'urgence de communiquer avec vous."</string>
+ <string name="developer_title" msgid="9146088855661672353">"Menu Telecom Developer"</string>
</resources>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index f7a5a00..9de7e3e 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"Gestion des appels"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"Téléphone"</string>
- <string name="unknown" msgid="6878797917991465859">"Inconnu"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"Appel manqué"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"Appel professionnel manqué"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Appels manqués"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> appels manqués"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"Appel manqué de <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Rappeler"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"Message"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"Son coupé"</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"Haut-parleur activé"</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"Je ne peux pas répondre. Ça va ?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"Je te rappelle tout de suite."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Je t\'appelle plus tard."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Peux pas répondre. On se rappelle ?"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Réponses rapides"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Modifier les réponses rapides"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"Réponse rapide"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"Message envoyé à <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"Comptes téléphoniques"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"Seuls les appels d\'urgence sont autorisés."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"Cette application ne peut pas passer d\'appels sortants sans l\'autorisation de l\'application Téléphone."</string>
- <string name="outgoing_call_error_no_phone_number_supplied" msgid="1940125199802007505">"Pour émettre un appel, veuillez saisir un numéro valide."</string>
- <string name="duplicate_video_call_not_allowed" msgid="3749211605014548386">"Impossible d\'ajouter un appel pour le moment."</string>
- <string name="no_vm_number" msgid="4164780423805688336">"Numéro de messagerie vocale manquant"</string>
- <string name="no_vm_number_msg" msgid="1300729501030053828">"Aucun numéro de messagerie vocale n\'est enregistré sur la carte SIM."</string>
- <string name="add_vm_number_str" msgid="4676479471644687453">"Ajouter un numéro"</string>
- <string name="change_default_dialer_dialog_title" msgid="9101655962941740507">"Définir <xliff:g id="NEW_APP">%s</xliff:g> comme application de téléphone par défaut ?"</string>
- <string name="change_default_dialer_dialog_affirmative" msgid="8606546663509166276">"Définir l\'application par défaut"</string>
- <string name="change_default_dialer_dialog_negative" msgid="9078144617060173845">"Annuler"</string>
- <string name="change_default_dialer_warning_message" msgid="1417671460801684999">"<xliff:g id="NEW_APP">%s</xliff:g> sera en mesure de passer des appels et d\'en contrôler tous les détails. Ne définissez qu\'une application de confiance comme application de téléphone par défaut."</string>
- <string name="blocked_numbers" msgid="2751843139572970579">"Numéros bloqués"</string>
- <string name="blocked_numbers_msg" msgid="1045015186124965643">"Vous ne recevrez plus les appels ni les SMS émis depuis les numéros bloqués."</string>
- <string name="block_number" msgid="1101252256321306179">"Ajouter un numéro"</string>
- <string name="unblock_dialog_body" msgid="1614238499771862793">"Débloquer <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g> ?"</string>
- <string name="unblock_button" msgid="3078048901972674170">"Débloquer"</string>
- <string name="add_blocked_dialog_body" msgid="9030243212265516828">"Bloquer les appels et les SMS provenant du :"</string>
- <string name="add_blocked_number_hint" msgid="6847675097085433553">"Numéro de téléphone"</string>
- <string name="block_button" msgid="8822290682524373357">"Bloquer"</string>
- <string name="non_primary_user" msgid="5180129233352533459">"Seul le propriétaire de l\'appareil peut afficher et gérer les numéros bloqués."</string>
- <string name="delete_icon_description" msgid="8903995728252556724">"Débloquer"</string>
- <string name="blocked_numbers_butter_bar_title" msgid="438170866438793182">"Le blocage est temporairement désactivé."</string>
- <string name="blocked_numbers_butter_bar_body" msgid="2223244484319442431">"Si vous composez un numéro d\'urgence ou que vous envoyez un SMS à ce type de numéro, le blocage est désactivé pour que les services d\'urgence puissent vous contacter."</string>
- <string name="blocked_numbers_butter_bar_button" msgid="2197943354922010696">"Réactiver"</string>
- <string name="blocked_numbers_number_blocked_message" msgid="7678509606805029540">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> bloqué"</string>
- <string name="blocked_numbers_number_unblocked_message" msgid="977894647366750418">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> débloqué"</string>
- <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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"Appels entrants"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"Appels manqués"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"Blocage d\'appels"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"Si vous passez cet appel, vous mettrez fin à celui qui est en cours dans l\'application <xliff:g id="OTHER_APP">%1$s</xliff:g>."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"Blocage d\'appels"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"Numéros non répertoriés dans Contacts"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"Bloquez les numéros qui ne figurent pas dans votre annuaire Contacts"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"Appels masqués"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"Bloquez les appelants qui masquent leur numéro"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"Cabines téléphoniques"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"Bloquez les appels provenant de cabines téléphoniques"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"Numéros inconnus"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"Bloquez les appels provenant de personnes non identifiées"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"Blocage d\'appels"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"Blocage d\'appels désactivé"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"Appel d\'urgence"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"Le blocage d\'appels a été désactivé pour que les services d\'urgence puissent vous contacter."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"Gestion des appels"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"Téléphone"</string>
+ <string name="unknown" msgid="6993977514360123431">"Inconnu"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"Appel manqué"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"Appel professionnel manqué"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"Appels manqués"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> appels manqués"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"Appel manqué de <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"Rappeler"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"Message"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"Son coupé"</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Haut-parleur activé"</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Je ne peux pas répondre. Ça va ?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"Je te rappelle tout de suite."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"Je t\'appelle plus tard."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"Peux pas répondre. On se rappelle ?"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"Réponses rapides"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"Modifier les réponses rapides"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"Réponse rapide"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"Message envoyé à <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"Échec de l\'envoi du message au <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"Comptes téléphoniques"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"Seuls les appels d\'urgence sont autorisés."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"Cette application ne peut pas passer d\'appels sortants sans l\'autorisation de l\'application Téléphone."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"Pour émettre un appel, veuillez saisir un numéro valide."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"Impossible d\'ajouter un appel pour le moment."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"Numéro de messagerie vocale manquant"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"Aucun numéro de messagerie vocale n\'est enregistré sur la carte SIM."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"Ajouter un numéro"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"Définir <xliff:g id="NEW_APP">%s</xliff:g> comme application de téléphone par défaut ?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"Définir l\'application par défaut"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"Annuler"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> sera en mesure de passer des appels et d\'en contrôler tous les détails. Ne définissez qu\'une application de confiance comme application de téléphone par défaut."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"Utiliser <xliff:g id="NEW_APP">%s</xliff:g> comme appli de filtrage d\'appels par défaut ?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> ne sera plus en mesure de filtrer les appels."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> sera en mesure de voir les informations sur les appelants qui ne figurent pas dans vos contacts et de bloquer leurs appels. Seules les applications auxquelles vous faites confiance doivent être définies comme application de filtrage d\'appels par défaut."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"Définir l\'application par défaut"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"Annuler"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"Numéros bloqués"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"Vous ne recevrez plus les appels ni les SMS émis depuis les numéros bloqués."</string>
+ <string name="block_number" msgid="3784343046852802722">"Ajouter un numéro"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"Débloquer <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g> ?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"Débloquer"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"Bloquer les appels et les SMS provenant du :"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"Numéro de téléphone"</string>
+ <string name="block_button" msgid="485080149164258770">"Bloquer"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"Seul le propriétaire de l\'appareil peut afficher et gérer les numéros bloqués."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"Débloquer"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"Le blocage est temporairement désactivé."</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"Si vous composez un numéro d\'urgence ou que vous envoyez un SMS à ce type de numéro, le blocage est désactivé pour que les services d\'urgence puissent vous contacter."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"Réactiver"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> bloqué"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> débloqué"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"Vous ne pouvez pas bloquer un numéro d\'urgence."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"Le numéro \"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g>\" est déjà bloqué."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"Utilisation du clavier personnel pour passer l\'appel…"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"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="5795968314037063900">"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="8653544281903986641">"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="3702302838456922535">"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="8572022039304239958">"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="4031778317409881805">"Si vous répondez, vous mettrez fin à votre appel en cours"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"Si vous répondez, vous mettrez fin à vos appels en cours"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"Si vous répondez, vous mettrez fin à l\'appel vidéo en cours"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"Répondre"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"Refuser"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"Impossible de passer cet appel, car aucun compte téléphonique ne prend en charge ce type d\'appel."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"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="6379163795277824868">"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="8243532328969433172">"Vous ne pouvez pas passer cet appel, car vous avez une communication en cours dans une autre application."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"Appels entrants"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"Appels manqués"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"Blocage d\'appels"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"Si vous passez cet appel, vous mettrez fin à celui qui est en cours dans l\'application <xliff:g id="OTHER_APP">%1$s</xliff:g>."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Choisissez comment passer cet appel"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Rediriger l\'appel avec <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"Appeler avec mon numéro de téléphone"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"<xliff:g id="OTHER_APP">%1$s</xliff:g> ne peut pas passer d\'appel. Essayez d\'utiliser une autre application de redirection des appels ou contactez le développeur pour obtenir de l\'aide."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"Blocage d\'appels"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"Numéros non répertoriés dans Contacts"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"Bloquez les numéros qui ne figurent pas dans votre annuaire Contacts"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"Appels masqués"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"Bloquez les appelants qui masquent leur numéro"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"Cabines téléphoniques"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"Bloquez les appels provenant de cabines téléphoniques"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"Numéros inconnus"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"Bloquez les appels provenant de personnes non identifiées"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"Blocage d\'appels"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"Blocage d\'appels désactivé"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"Appel d\'urgence"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"Le blocage d\'appels a été désactivé pour que les services d\'urgence puissent vous contacter."</string>
+ <string name="developer_title" msgid="9146088855661672353">"Menu Telecom Developer"</string>
</resources>
diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml
index 1821f57..13775de 100644
--- a/res/values-gl/strings.xml
+++ b/res/values-gl/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"Xestión de chamadas"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"Teléfono"</string>
- <string name="unknown" msgid="6878797917991465859">"Descoñecido"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"Chamada perdida"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"Chamada de traballo perdida"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Chamadas perdidas"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> chamadas perdidas"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"Chamada perdida de <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Devolver chamada"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"Mensaxe"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"Chamada silenciada"</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"Altofalante activado"</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"Non podo falar agora. Que pasa?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"Chámote agora."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Chámote máis tarde."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Non podo falar. Chámasme despois?"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Respostas rápidas"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Editar respostas rápidas"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"Resposta rápida"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"Mensaxe enviada ao <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"Contas de chamadas"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"Só se permiten chamadas de emerxencia."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"Esta aplicación non pode facer chamadas saíntes sen permiso do teléfono."</string>
- <string name="outgoing_call_error_no_phone_number_supplied" msgid="1940125199802007505">"Para realizar unha chamada, introduce un número válido."</string>
- <string name="duplicate_video_call_not_allowed" msgid="3749211605014548386">"Neste momento non se pode engadir a chamada."</string>
- <string name="no_vm_number" msgid="4164780423805688336">"Falta o número de correo de voz"</string>
- <string name="no_vm_number_msg" msgid="1300729501030053828">"Non hai ningún número de correo de voz almacenado na tarxeta SIM."</string>
- <string name="add_vm_number_str" msgid="4676479471644687453">"Engadir número"</string>
- <string name="change_default_dialer_dialog_title" msgid="9101655962941740507">"Establecer <xliff:g id="NEW_APP">%s</xliff:g> como aplicación de teléfono predeterminada?"</string>
- <string name="change_default_dialer_dialog_affirmative" msgid="8606546663509166276">"Establecer como predeterminada"</string>
- <string name="change_default_dialer_dialog_negative" msgid="9078144617060173845">"Cancelar"</string>
- <string name="change_default_dialer_warning_message" msgid="1417671460801684999">"<xliff:g id="NEW_APP">%s</xliff:g> poderá facer chamadas e controlar todo o referente a estas. Só deberías establecer como aplicación de teléfono predeterminada aplicacións nas que confíes."</string>
- <string name="blocked_numbers" msgid="2751843139572970579">"Números bloqueados"</string>
- <string name="blocked_numbers_msg" msgid="1045015186124965643">"Non recibirás chamadas nin mensaxes de texto dos números bloqueados."</string>
- <string name="block_number" msgid="1101252256321306179">"Engadir un número"</string>
- <string name="unblock_dialog_body" msgid="1614238499771862793">"Queres desbloquear o <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
- <string name="unblock_button" msgid="3078048901972674170">"Desbloquear"</string>
- <string name="add_blocked_dialog_body" msgid="9030243212265516828">"Bloquear chamadas e mensaxes do"</string>
- <string name="add_blocked_number_hint" msgid="6847675097085433553">"Número de teléfono"</string>
- <string name="block_button" msgid="8822290682524373357">"Bloquear"</string>
- <string name="non_primary_user" msgid="5180129233352533459">"Só o propietario do dispositivo pode ver e xestionar os números bloqueados."</string>
- <string name="delete_icon_description" msgid="8903995728252556724">"Desbloquear"</string>
- <string name="blocked_numbers_butter_bar_title" msgid="438170866438793182">"O bloqueo desactivouse temporalmente"</string>
- <string name="blocked_numbers_butter_bar_body" msgid="2223244484319442431">"Despois de facer unha chamada ou enviar unha mensaxe a un número de emerxencia, desactívase o bloqueo para garantir que os servizos de emerxencia poidan poñerse en contacto contigo."</string>
- <string name="blocked_numbers_butter_bar_button" msgid="2197943354922010696">"Volver activar agora"</string>
- <string name="blocked_numbers_number_blocked_message" msgid="7678509606805029540">"Bloqueouse o <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g>"</string>
- <string name="blocked_numbers_number_unblocked_message" msgid="977894647366750418">"Desbloqueouse o <xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g>"</string>
- <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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"Chamadas entrantes"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"Chamadas perdidas"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"Bloqueo de chamadas"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"Ao facer esta chamada, finalizarase o túa chamada de <xliff:g id="OTHER_APP">%1$s</xliff:g>."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"Bloqueo de chamadas"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"Números que non aparezan nos contactos"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"Bloquea números que non aparezan entre os teus contactos"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"Privado"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"Bloquea os emisores de chamada que non revelen os seus números"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"Teléfono público"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"Bloquea as chamadas de teléfonos públicos"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"Descoñecido"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"Bloquea as chamadas de emisores non identificados"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"Bloqueo de chamadas"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"Desactivouse o bloqueo de chamadas"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"Realizouse unha chamada de emerxencia"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"Desactivouse o bloqueo de chamadas parar permitir que os servizos de emerxencias se poidan poñer en contacto contigo."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"Xestión de chamadas"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"Teléfono"</string>
+ <string name="unknown" msgid="6993977514360123431">"Descoñecido"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"Chamada perdida"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"Chamada de traballo perdida"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"Chamadas perdidas"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> chamadas perdidas"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"Chamada perdida de <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"Devolver chamada"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"Mensaxe"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"Chamada silenciada"</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Altofalante activado"</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Non podo falar agora. Que pasa?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"Chámote agora."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"Chámote máis tarde."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"Non podo falar. Chámasme despois?"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"Respostas rápidas"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"Editar respostas rápidas"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"Resposta rápida"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"Mensaxe enviada ao <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"Non se puido enviar a mensaxe ao <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"Contas de chamadas"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"Só se permiten chamadas de emerxencia."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"Esta aplicación non pode facer chamadas saíntes sen permiso do teléfono."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"Para realizar unha chamada, introduce un número válido."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"Neste momento non se pode engadir a chamada."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"Falta o número de correo de voz"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"Non hai ningún número de correo de voz almacenado na tarxeta SIM."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"Engadir número"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"Establecer <xliff:g id="NEW_APP">%s</xliff:g> como aplicación de teléfono predeterminada?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"Establecer como predeterminada"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"Cancelar"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> poderá facer chamadas e controlar todo o referente a estas. Só deberías establecer como aplicación de teléfono predeterminada aplicacións nas que confíes."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"Usar <xliff:g id="NEW_APP">%s</xliff:g> como app de filtrado de chamadas predeterminada?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> xa non poderá filtrar chamadas."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> poderá consultar a información sobre os emisores de chamadas, aínda que non figuren entre os teus contactos, así como bloquear as súas chamadas. Só deberías establecer como aplicación de filtrado de chamadas predeterminada aplicacións nas que confíes."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"Establecer como predeterminada"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"Cancelar"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"Números bloqueados"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"Non recibirás chamadas nin mensaxes de texto dos números bloqueados."</string>
+ <string name="block_number" msgid="3784343046852802722">"Engadir un número"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"Queres desbloquear o <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"Desbloquear"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"Bloquear chamadas e mensaxes do"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"Número de teléfono"</string>
+ <string name="block_button" msgid="485080149164258770">"Bloquear"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"Só o propietario do dispositivo pode ver e xestionar os números bloqueados."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"Desbloquear"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"O bloqueo desactivouse temporalmente"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"Despois de facer unha chamada ou enviar unha mensaxe a un número de emerxencia, desactívase o bloqueo para garantir que os servizos de emerxencia poidan poñerse en contacto contigo."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"Volver activar agora"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"Bloqueouse o <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g>"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"Desbloqueouse o <xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g>"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"Non se pode bloquear o número de emerxencia."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"O <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> xa está bloqueado."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"Usando o marcador persoal para facer a chamada"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"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="5795968314037063900">"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="8653544281903986641">"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="3702302838456922535">"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="8572022039304239958">"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="4031778317409881805">"Ao responder, finalizará a túa chamada en curso"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"Ao responder, finalizarán as túas chamadas en curso"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"Ao responder, finalizarán as túas videochamadas en curso"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"Responder"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"Rexeitar"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"Non se pode realizar a chamada porque non hai ningunha conta de chamadas que admita chamadas deste tipo."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"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="6379163795277824868">"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="8243532328969433172">"Non se pode realizar a chamada porque hai chamadas en curso noutra aplicación."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"Chamadas entrantes"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"Chamadas perdidas"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"Bloqueo de chamadas"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"Ao facer esta chamada, finalizarase o túa chamada de <xliff:g id="OTHER_APP">%1$s</xliff:g>."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Escolle como facer esta chamada"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Redirixir a chamada con <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"Chamar co meu número de teléfono"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"Non se pode realizar a chamada a través de <xliff:g id="OTHER_APP">%1$s</xliff:g>. Proba con outra aplicación de redirección de chamadas ou ponte en contacto co programador para obter axuda."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"Bloqueo de chamadas"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"Números que non aparezan nos contactos"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"Bloquea números que non aparezan entre os teus contactos"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"Privado"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"Bloquea os emisores de chamada que non revelen os seus números"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"Teléfono público"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"Bloquea as chamadas de teléfonos públicos"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"Descoñecido"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"Bloquear as chamadas de emisores non identificados"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"Bloqueo de chamadas"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"Desactivouse o bloqueo de chamadas"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"Realizouse unha chamada de emerxencia"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"Desactivouse o bloqueo de chamadas parar permitir que os servizos de emerxencias se poidan poñer en contacto contigo."</string>
+ <string name="developer_title" msgid="9146088855661672353">"Menú para programadores de telecomunicacións"</string>
</resources>
diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml
index d229a2f..c6ae5d8 100644
--- a/res/values-gu/strings.xml
+++ b/res/values-gu/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"કૉલ સંચાલન"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"ફોન"</string>
- <string name="unknown" msgid="6878797917991465859">"અજાણ્યું"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"છૂટેલો કૉલ"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"ચૂકી ગયેલ કાર્ય કૉલ"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"છૂટેલા કૉલ્સ"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> છૂટેલા કૉલ્સ"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g> નો કૉલ ચૂકી ગયાં"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"કૉલ બેક"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"સંદેશ"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"કૉલ મ્યૂટ કરેલ છે."</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"સ્પીકરફોન પસંદ કરેલ છે."</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"હમણાં વાત નહીં કરી શકું. શું ચાલે છે?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"હું તરત જ પાછો કૉલ કરીશ."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"હું પછીથી કૉલ કરીશ."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"હમણાં વાત નહીં કરી શકું. મને પછીથી કૉલ કરી શકશો?"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"ઝડપી પ્રતિસાદ"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"ઝડપી પ્રતિસાદ સંપાદિત કરો"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"ઝડપી પ્રતિસાદ"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"<xliff:g id="PHONE_NUMBER">%s</xliff:g> પર સંદેશ મોકલ્યો."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"કૉલિંગ એકાઉન્ટ્સ"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"ફક્ત કટોકટીના કૉલ્સને મંજૂરી છે."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"ફોન પરવાનગી વિના આ ઍપ્લિકેશન આઉટગોઇંગ કૉલ્સ કરી શકતી નથી."</string>
- <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">"SIM કાર્ડ પર કોઈ વૉઇસમેઇલ નંબર સંગ્રહિત નથી."</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>
- <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="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_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>
- <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_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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"ઇનકમિંગ કૉલ"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"છૂટેલા કૉલ"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"કૉલ બ્લૉક કરી રહ્યાં છીએ"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"આ કૉલ કરવાથી તમારો <xliff:g id="OTHER_APP">%1$s</xliff:g> કૉલ સમાપ્ત થઈ જશે."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"કૉલ બ્લૉક કરી રહ્યાં છીએ"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"સંપર્કોમાં આ નંબર નથી"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"તમારા સંપર્કોમાં જે નંબર સૂચિબદ્ધ ન હોય તેને બ્લૉક કરો"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"ખાનગી"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"જે કૉલર પોતાનો નંબર ન બતાવે તેમને બ્લૉક કરો"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"પે ફોન"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"પે ફોન પરના કૉલ બ્લૉક કરો"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"અજાણ્યા"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"અજાણ્યા કૉલરના કૉલ બ્લૉક કરો"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"કૉલ બ્લૉક કરી રહ્યાં છીએ"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"કૉલ બ્લૉક કરવાનું બંધ કરવામાં આવ્યું છે"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"કટોકટીનો કૉલ કર્યો"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"કટોકટીમાં પ્રતિસાદ કરનારાઓ તમારો સંપર્ક કરી શકે તે માટે કૉલ બ્લૉક કરવાનું બંધ કરવામાં આવ્યું છે."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"કૉલ સંચાલન"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"ફોન"</string>
+ <string name="unknown" msgid="6993977514360123431">"અજાણ્યું"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"છૂટેલો કૉલ"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"ચૂકી ગયેલ કાર્ય કૉલ"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"છૂટેલા કૉલ્સ"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> છૂટેલા કૉલ્સ"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g> નો કૉલ ચૂકી ગયાં"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"કૉલ બેક"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"સંદેશ"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"કૉલ મ્યૂટ કરેલ છે."</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"સ્પીકરફોન પસંદ કરેલ છે."</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"હમણાં વાત નહીં કરી શકું. શું હતું?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"હમણાં કામમાં છું. થોડી વારમાં કૉલ કરું તમને."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"હું પછીથી કૉલ કરીશ."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"હમણાં વાત નહીં કરી શકું. મને પછીથી કૉલ કરી શકશો?"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"હાજરજવાબ"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"હાજરજવાબમાં ફેરફાર કરો"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"ઝડપી પ્રતિસાદ"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"<xliff:g id="PHONE_NUMBER">%s</xliff:g> પર સંદેશ મોકલ્યો."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"<xliff:g id="PHONE_NUMBER">%s</xliff:g>ને સંદેશ મોકલવામાં નિષ્ફળ રહ્યાં."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"કૉલિંગ એકાઉન્ટ્સ"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"ફક્ત કટોકટીના કૉલ્સને મંજૂરી છે."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"ફોન પરવાનગી વિના આ ઍપ્લિકેશન આઉટગોઇંગ કૉલ્સ કરી શકતી નથી."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"કૉલ કરવા માટે, માન્ય નંબર દાખલ કરો."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"આ સમયે કૉલ ઉમેરી શકાતો નથી."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"વૉઇસમેઇલ નંબર ખૂટે છે"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"SIM કાર્ડ પર કોઈ વૉઇસમેઇલ નંબર સંગ્રહિત નથી."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"નંબર ઉમેરો"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"શું <xliff:g id="NEW_APP">%s</xliff:g> ને તમારી ડિફૉલ્ટ ફોન ઍપ્લિકેશન બનાવીએ?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"ડિફૉલ્ટ સેટ કરો"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"રદ કરો"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g>, કૉલ્સ કરવામાં અને કૉલ્સના તમામ પાસાઓને નિયંત્રિત કરવામાં સમર્થ હશે. તમે વિશ્વાસ કરો છો તે જ ઍપ્લિકેશનોને ડિફૉલ્ટ ફોન ઍપ્લિકેશન તરીકે સેટ કરો."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"<xliff:g id="NEW_APP">%s</xliff:g>ને તમારી ડિફૉલ્ટ કૉલ સ્ક્રીનિંગ ઍપ બનાવીએ?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> હવે કૉલને સ્ક્રીન કરી શકશે નહીં."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> તમારા સંપર્કોમાં ન હોય એવા કૉલર વિશેની માહિતી જોઈ શકશે અને આ કૉલને બ્લૉક કરી શકશે. માત્ર તમે જેના પર વિશ્વાસ કરતા હોય તે ઍપને જ ડિફૉલ્ટ કૉલ સ્ક્રીનિંગ ઍપ તરીકે સેટ કરવી જોઈએ."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"ડિફૉલ્ટ સેટ કરો"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"રદ કરો"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"અવરોધિત નંબરો"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"બ્લૉક કરેલા નંબર પરથી કૉલ અથવા ટેક્સ્ટ તમને આવશે નહિ."</string>
+ <string name="block_number" msgid="3784343046852802722">"એક નંબર ઉમેરો"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"<xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g> ને બ્લૉક કરીએ?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"અનાવરોધિત કરો"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"આ નંબરના કૉલ અને ટેક્સ્ટને અવરોધિત કરો"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"ફોન નંબર"</string>
+ <string name="block_button" msgid="485080149164258770">"અવરોધિત કરો"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"ફક્ત ઉપકરણના માલિક અવરોધિત નંબરોને જોઈ અને સંચાલિત કરી શકે છે."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"અનાવરોધિત કરો"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"અવરોધિત કરવાનું અસ્થાયીરૂપે બંધ છે"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"તમે કોઈ કટોકટીનો નંબર ડાયલ કરો કે ટેક્સ્ટ કરો તે પછી, કટોકટીની સેવાઓ તમારો સંપર્ક કરી શકે તેની ખાતરી કરવા માટે અવરોધિત કરવું બંધ કરવામાં આવે છે."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"હવે ફરીથી સક્ષમ કરો"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> અવરોધિત કર્યો"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> અનાવરોધિત કર્યો"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"કટોકટીના નંબરને અવરોધિત કરવામાં અસમર્થ."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g>, પહેલાંથી અવરોધિત કરવામાં આવ્યો છે."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"કૉલ કરવા માટે વ્યક્તિગત ડાયલરનો ઉપયોગ કરી રહ્યાં છે"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"<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="5795968314037063900">"<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="8653544281903986641">"જવાબ આપવાથી તમારો <xliff:g id="CALL_VIA">%1$s</xliff:g> કૉલ સમાપ્ત થશે"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"જવાબ આપવાથી તમારા <xliff:g id="CALL_VIA">%1$s</xliff:g> કૉલ સમાપ્ત થશે"</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"જવાબ આપવાથી તમારો <xliff:g id="CALL_VIA">%1$s</xliff:g> વિડિઓ કૉલ સમાપ્ત થશે"</string>
+ <string name="answering_ends_other_managed_call" msgid="4031778317409881805">"જવાબ આપવાથી તમારો ચાલુ કૉલ સમાપ્ત થશે"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"જવાબ આપવાથી તમારા ચાલુ કૉલ સમાપ્ત થશે"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"જવાબ આપવાથી તમારો ચાલુ વિડિઓ કૉલ સમાપ્ત થશે"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"જવાબ આપો"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"નકારો"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"કૉલ કરી શકાતો નથી કારણ કે આ પ્રકારના કૉલની સુવિધા આપતા હોય એવા કોઈ કૉલિંગ એકાઉન્ટ નથી."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"તમારા <xliff:g id="OTHER_CALL">%1$s</xliff:g> કૉલને કારણે કૉલ કરી શકતાં નથી."</string>
+ <string name="cant_call_due_to_ongoing_calls" msgid="6379163795277824868">"તમારા <xliff:g id="OTHER_CALL">%1$s</xliff:g> કૉલને કારણે કૉલ કરી શકતાં નથી."</string>
+ <string name="cant_call_due_to_ongoing_unknown_call" msgid="8243532328969433172">"અન્ય ઍપ્લિકેશનમાં કૉલને કારણે કૉલ કરી શકતાં નથી."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"ઇનકમિંગ કૉલ"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"છૂટેલા કૉલ"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"કૉલ બ્લૉક કરી રહ્યાં છીએ"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"આ કૉલ કરવાથી તમારો <xliff:g id="OTHER_APP">%1$s</xliff:g> કૉલ સમાપ્ત થઈ જશે."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"આ કૉલ કેવી રીતે કરવો તે પસંદ કરો"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"<xliff:g id="OTHER_APP">%1$s</xliff:g>નો ઉપયોગ કરીને કૉલ રીડાયરેક્ટ કરો"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"મારા ફોન નંબરનો ઉપયોગ કરીને કૉલ કરો"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"<xliff:g id="OTHER_APP">%1$s</xliff:g> દ્વારા કૉલ કરી શકાશે નહીં. સહાય માટે કોઈ અલગ કૉલ રીડાયરેક્ટ કરનારી ઍપનો ઉપયોગ કરવાનો અથવા ડેવલપરનો સંપર્ક કરવાનો પ્રયાસ કરો."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"કૉલ બ્લૉક કરી રહ્યાં છીએ"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"સંપર્કોમાં આ નંબર નથી"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"તમારા સંપર્કોમાં જે નંબર સૂચિબદ્ધ ન હોય તેને બ્લૉક કરો"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"ખાનગી"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"જે કૉલર પોતાનો નંબર ન બતાવે તેમને બ્લૉક કરો"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"પે ફોન"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"પે ફોન પરના કૉલ બ્લૉક કરો"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"અજાણ્યા"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"અજાણ્યા કૉલરના કૉલ બ્લૉક કરો"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"કૉલ બ્લૉક કરી રહ્યાં છીએ"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"કૉલ બ્લૉક કરવાનું બંધ કરવામાં આવ્યું છે"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"કટોકટીનો કૉલ કર્યો"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"કટોકટીમાં પ્રતિસાદ કરનારાઓ તમારો સંપર્ક કરી શકે તે માટે કૉલ બ્લૉક કરવાનું બંધ કરવામાં આવ્યું છે."</string>
+ <string name="developer_title" msgid="9146088855661672353">"ટેલિકોમ ડેવલપર મેનૂ"</string>
</resources>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index 4bf7696..116f9a3 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"कॉल प्रबंधन"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"फ़ोन"</string>
- <string name="unknown" msgid="6878797917991465859">"अज्ञात"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"छूटी कॉल"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"दफ़्तर का छूटा हुआ कॉल"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"छूटी कॉल"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> छूटी कॉल"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g> की कॉल छूटी"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"वापस कॉल करें"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"मैसेज"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"कॉल म्यूट की गई."</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"स्पीकरफ़ोन सक्षम."</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"अभी बात नहीं हो सकती. क्या हो रहा है?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"मैं जल्दी ही कॉल करता हूं/करती हूं."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"मैं आपको बाद में कॉल करूंगा/करूंगी."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"अभी बात नहीं हो सकती. मुझे बाद में कॉल करेंगे?"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"झटपट उत्तर"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"पहले से तैयार जवाब में बदलाव करें"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"झटपट उत्तर"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"<xliff:g id="PHONE_NUMBER">%s</xliff:g> को संदेश भेजा गया."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"कॉलिंग खाते"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"केवल आपातकालीन कॉल की अनुमति है."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"यह ऐप्लिकेशन फ़ोन अनुमति के बिना आउटगोइंग कॉल नहीं कर सकता."</string>
- <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="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>
- <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="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_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>
- <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_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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"इनकमिंग कॉल"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"छूटे कॉल"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"कॉल पर रोक"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"इस कॉल को करने से आपका <xliff:g id="OTHER_APP">%1$s</xliff:g> कॉल खत्म हो जाएगा."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"कॉल पर रोक"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"वे नंबर जो संपर्कों में नहीं हैं"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"उन नंबरों पर रोक लगाएं, जो आपके संपर्क में मौजूद नहीं हैं"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"निजी"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"अपना नंबर ज़ाहिर न करने वाले कॉलर पर रोक लगाएं"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"पे फ़ोन"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"पे फ़ोन से आने वाले कॉल पर रोक लगाएं"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"अज्ञात"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"अनजान कॉलर के कॉल पर रोक लगाएं"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"कॉल पर रोक"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"कॉल पर रोक लगाने की सुविधा बंद है"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"आपातकालीन कॉल किया गया"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"आपातकालीन सहायता कर्मचारी आपसे संपर्क कर सकें, इसलिए कॉल पर रोक लगाने की सुविधा बंद कर दी गई है."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"कॉल प्रबंधन"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"फ़ोन"</string>
+ <string name="unknown" msgid="6993977514360123431">"अज्ञात"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"छूटी कॉल"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"दफ़्तर का छूटा हुआ कॉल"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"छूटी कॉल"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> छूटी कॉल"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g> की कॉल छूटी"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"वापस कॉल करें"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"मैसेज"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"कॉल म्यूट की गई."</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"स्पीकरफ़ोन सक्षम."</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"अभी बात नहीं हो सकती. क्या हो रहा है?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"मैं जल्दी ही कॉल करता हूं/करती हूं."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"मैं आपको बाद में कॉल करूंगा/करूंगी."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"अभी बात नहीं हो सकती. मुझे बाद में कॉल करेंगे?"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"झटपट उत्तर"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"पहले से तैयार जवाब में बदलाव करें"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"झटपट उत्तर"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"<xliff:g id="PHONE_NUMBER">%s</xliff:g> को संदेश भेजा गया."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"<xliff:g id="PHONE_NUMBER">%s</xliff:g> पर मैसेज नहीं भेजा जा सका."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"कॉलिंग खाते"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"केवल आपातकालीन कॉल की अनुमति है."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"यह ऐप्लिकेशन फ़ोन अनुमति के बिना आउटगोइंग कॉल नहीं कर सकता."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"कॉल करने के लिए, मान्य नंबर डालें."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"इस समय कॉल नहीं जोड़ा जा सकता."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"गुम वॉयस मेल नंबर"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"सिम कार्ड पर कोई वॉयस मेल नंबर संग्रहित नहीं है."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"नंबर जोड़ें"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"<xliff:g id="NEW_APP">%s</xliff:g> को अपना डिफ़ॉल्ट ऐप्लिकेशन बनाएं?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"डिफ़ॉल्ट सेट करें"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"अभी नहीं"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> कॉल करने और कॉल से संबंधित सभी पहलुओं को नियंत्रित कर पाएगा. केवल उन्हीं ऐप्लिकेशन को डिफ़ॉल्ट फ़ोन ऐप्लिकेशन के रूप में सेट करना चाहिए जिन पर आप विश्वास करते हैं."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"<xliff:g id="NEW_APP">%s</xliff:g> को, कॉल स्क्रीन करने वाला अपना डिफ़ॉल्ट ऐप बनाएं?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> अब कॉल को स्क्रीन नहीं कर पाएगा."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> आपके उन कॉल करने वालों की जानकारी देख पाएगा जो आपकी संपर्क सूची में नहीं हैं और उन कॉल को ब्लॉक कर पाएगा. सिर्फ़ उन्हीं ऐप्लिकेशन को डिफ़ॉल्ट कॉल स्क्रीन करने वाले ऐप्लिकेशन के रूप में सेट करना चाहिए जिन पर आप भरोसा करते हैं."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"डिफ़ॉल्ट सेट करें"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"अभी नहीं"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"ब्लॉक किए गए नंबर"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"ब्लॉक किए गए नंबर से आपको कॉल या मैसेज नहीं मिलेंगे."</string>
+ <string name="block_number" msgid="3784343046852802722">"नंबर जोड़ें"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"<xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g> को अनब्लॉक करें?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"अनवरोधित करें"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"इसके कॉल और मैसेज रोकें"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"फ़ोन नंबर"</string>
+ <string name="block_button" msgid="485080149164258770">"ब्लॉक करें"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"सिर्फ़ डिवाइस के मालिक रोके गए नंबर देख और प्रबंधित कर सकते हैं."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"अनवरोधित करें"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"अवरोधन अस्थायी रूप से बंद है"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"आपातकालीन नंबर डायल करने या उस पर लेख संदेश भेजने के बाद, अवरोधन बंद हो जाता है ताकि आपातकालीन सेवाएं आपसे संपर्क कर सकें."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"अभी फिर से सक्षम करें"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> अवरोधित है"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> अनवरोधित है"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"आपातकालीन नंबर ब्लॉक करने में असमर्थ."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> पहले से अवरोधित है."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"कॉल करने के लिए व्यक्तिगत डायलर का उपयोग करना"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"<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="5795968314037063900">"<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="8653544281903986641">"उत्तर देने से आपका <xliff:g id="CALL_VIA">%1$s</xliff:g> कॉल खत्म हो जाएगा"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"उत्तर देने से आपके <xliff:g id="CALL_VIA">%1$s</xliff:g> कॉल खत्म हो जाएंगे"</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"उत्तर देने से आपका <xliff:g id="CALL_VIA">%1$s</xliff:g> वीडियो कॉल खत्म हो जाएगा"</string>
+ <string name="answering_ends_other_managed_call" msgid="4031778317409881805">"उत्तर देने से आपका जारी कॉल खत्म हो जाएगा"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"उत्तर देने से आपके जारी कॉल खत्म हो जाएंगे"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"उत्तर देने से आपका जारी वीडियो कॉल खत्म हो जाएगा"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"उत्तर दें"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"अस्वीकार करें"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"कॉल नहीं किया जा सकता क्योंकि कॉल करने के लिए ऐसा कोई खाता नहीं है जिस पर इस तरह के कॉल की सुविधा हो."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"आपके <xliff:g id="OTHER_CALL">%1$s</xliff:g> कॉल के कारण कॉल नहीं लगाया जा सकता."</string>
+ <string name="cant_call_due_to_ongoing_calls" msgid="6379163795277824868">"आपके <xliff:g id="OTHER_CALL">%1$s</xliff:g> कॉल के कारण कॉल नहीं लगाया जा सकता."</string>
+ <string name="cant_call_due_to_ongoing_unknown_call" msgid="8243532328969433172">"किसी दूसरे ऐप्लिकेशन में कॉल के कारण कॉल नहीं लगाया जा सकता."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"इनकमिंग कॉल"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"छूटे कॉल"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"कॉल पर रोक"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"इस कॉल को करने से आपका <xliff:g id="OTHER_APP">%1$s</xliff:g> कॉल खत्म हो जाएगा."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"चुनें कि आप इस कॉल को कैसे करना चाहते हैं"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"<xliff:g id="OTHER_APP">%1$s</xliff:g> का इस्तेमाल करके कॉल को दूसरे नंबर पर भेजें"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"मेरे फ़ोन नंबर का इस्तेमाल करके कॉल करें"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"<xliff:g id="OTHER_APP">%1$s</xliff:g> के ज़रिए कॉल नहीं किया जा सकता. कॉल को रीडायरेक्ट करने वाले दूसरे ऐप्लिकेशन का इस्तेमाल करके देखें या मदद के लिए डेवलपर से संपर्क करने की कोशिश करें."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"कॉल पर रोक"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"वे नंबर जो संपर्कों में नहीं हैं"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"उन नंबरों पर रोक लगाएं, जो आपके संपर्क में मौजूद नहीं हैं"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"निजी"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"अपना नंबर ज़ाहिर न करने वाले कॉलर पर रोक लगाएं"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"पे फ़ोन"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"पे फ़ोन से आने वाले कॉल पर रोक लगाएं"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"अज्ञात"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"अनजान कॉलर के कॉल पर रोक लगाएं"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"कॉल पर रोक"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"कॉल पर रोक लगाने की सुविधा बंद है"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"आपातकालीन कॉल किया गया"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"आपातकालीन सहायता कर्मचारी आपसे संपर्क कर सकें, इसलिए कॉल पर रोक लगाने की सुविधा बंद कर दी गई है."</string>
+ <string name="developer_title" msgid="9146088855661672353">"टेलीकॉम डेवलपर मेन्यू"</string>
</resources>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index 1f7978e..5a7823b 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"Upravljanje pozivom"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"Telefon"</string>
- <string name="unknown" msgid="6878797917991465859">"Nepoznato"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"Propušteni poziv"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"Propušten poslovni poziv"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Propušteni pozivi"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"Broj propuštenih poziva: <xliff:g id="NUM_MISSED_CALLS">%s</xliff:g>"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"Propušten poziv kontakta <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Povratni poziv"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"Poruka"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"Zvuk poziva isključen."</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"Zvučnik je omogućen."</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"Sada ne mogu razgovarati. Što ima?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"Zovem čim stignem."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Nazvat ću kasnije."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Sad ne mogu razgovarati. Čujemo se kasnije."</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Brzi odgovori"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Uređivanje brzih odgovora"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"Brzi odgovor"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"Poruka poslana na broj <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"Računi za pozivanje"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"Dopušteni su samo hitni pozivi."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"Ova aplikacija ne može uspostavljati odlazne pozive bez dopuštenja za telefon."</string>
- <string name="outgoing_call_error_no_phone_number_supplied" msgid="1940125199802007505">"Unesite važeći broj da biste uspostavili poziv."</string>
- <string name="duplicate_video_call_not_allowed" msgid="3749211605014548386">"Poziv trenutačno nije moguć."</string>
- <string name="no_vm_number" msgid="4164780423805688336">"Nedostaje broj govorne pošte"</string>
- <string name="no_vm_number_msg" msgid="1300729501030053828">"Na SIM kartici nije spremljen broj govorne pošte."</string>
- <string name="add_vm_number_str" msgid="4676479471644687453">"Dodaj broj"</string>
- <string name="change_default_dialer_dialog_title" msgid="9101655962941740507">"Želite li postaviti <xliff:g id="NEW_APP">%s</xliff:g> kao zadanu aplikaciju telefona?"</string>
- <string name="change_default_dialer_dialog_affirmative" msgid="8606546663509166276">"Postavi zadano"</string>
- <string name="change_default_dialer_dialog_negative" msgid="9078144617060173845">"Odustani"</string>
- <string name="change_default_dialer_warning_message" msgid="1417671460801684999">"<xliff:g id="NEW_APP">%s</xliff:g> će moći uspostaviti poziv i upravljati svim njegovim aspektima. Kao zadanu aplikaciju telefona postavite samo aplikaciju koju smatrate pouzdanom."</string>
- <string name="blocked_numbers" msgid="2751843139572970579">"Blokirani brojevi"</string>
- <string name="blocked_numbers_msg" msgid="1045015186124965643">"Nećete primati ni pozive ni poruke s blokiranih brojeva."</string>
- <string name="block_number" msgid="1101252256321306179">"Dodajte broj"</string>
- <string name="unblock_dialog_body" msgid="1614238499771862793">"Želite li deblokirati <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
- <string name="unblock_button" msgid="3078048901972674170">"Deblokiraj"</string>
- <string name="add_blocked_dialog_body" msgid="9030243212265516828">"Blokiraj pozive i poruke koje upućuje"</string>
- <string name="add_blocked_number_hint" msgid="6847675097085433553">"Telefonski broj"</string>
- <string name="block_button" msgid="8822290682524373357">"Blokiraj"</string>
- <string name="non_primary_user" msgid="5180129233352533459">"Samo vlasnik uređaja može pregledavati i kontrolirati blokirane brojeve."</string>
- <string name="delete_icon_description" msgid="8903995728252556724">"Deblokiranje"</string>
- <string name="blocked_numbers_butter_bar_title" msgid="438170866438793182">"Blokiranje je privremeno isključeno"</string>
- <string name="blocked_numbers_butter_bar_body" msgid="2223244484319442431">"Nakon što nazovete broj hitne službe ili pošaljete poruku na njega, blokada će se isključiti kako bi vam se hitna služba mogla javiti."</string>
- <string name="blocked_numbers_butter_bar_button" msgid="2197943354922010696">"Ponovno omogući sada"</string>
- <string name="blocked_numbers_number_blocked_message" msgid="7678509606805029540">"Broj <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> blokiran je"</string>
- <string name="blocked_numbers_number_unblocked_message" msgid="977894647366750418">"Broj <xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> deblokiran je"</string>
- <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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"Dolazni pozivi"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"Propušteni pozivi"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"Blokiranje poziva"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"Upućivanjem ovog poziva prekinut ćete poziv u aplikaciji <xliff:g id="OTHER_APP">%1$s</xliff:g>."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"Blokiranje poziva"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"Brojevi koji nisu u kontaktima"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"Blokirajte brojeve koje nemate u kontaktima"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"Privatno"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"Blokirajte pozivatelje koji ne žele otkriti svoj broj"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"Telefonska govornica"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"Blokirajte pozive s telefonskih govornica"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"Nepoznato"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"Blokirajte pozive nepoznatih pozivatelja"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"Blokiranje poziva"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"Blokiranje poziva je onemogućeno"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"Hitni je poziv upućen"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"Blokiranje poziva onemogućeno je da bi vas mogli kontaktirati djelatnici hitnih službi."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"Upravljanje pozivom"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"Telefon"</string>
+ <string name="unknown" msgid="6993977514360123431">"Nepoznato"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"Propušteni poziv"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"Propušten poslovni poziv"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"Propušteni pozivi"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"Broj propuštenih poziva: <xliff:g id="NUM_MISSED_CALLS">%s</xliff:g>"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"Propušten poziv kontakta <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"Povratni poziv"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"Poruka"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"Zvuk poziva isključen."</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Zvučnik je omogućen."</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Sada ne mogu razgovarati. Što ima?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"Zovem čim stignem."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"Nazvat ću kasnije."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"Sad ne mogu razgovarati. Čujemo se kasnije."</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"Brzi odgovori"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"Uređivanje brzih odgovora"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"Brzi odgovor"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"Poruka poslana na broj <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"Slanje poruke na <xliff:g id="PHONE_NUMBER">%s</xliff:g> nije uspjelo."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"Računi za pozivanje"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"Dopušteni su samo hitni pozivi."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"Ova aplikacija ne može uspostavljati odlazne pozive bez dopuštenja za telefon."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"Unesite važeći broj da biste uspostavili poziv."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"Poziv trenutačno nije moguć."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"Nedostaje broj govorne pošte"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"Na SIM kartici nije spremljen broj govorne pošte."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"Dodaj broj"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"Želite li postaviti <xliff:g id="NEW_APP">%s</xliff:g> kao zadanu aplikaciju telefona?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"Postavi zadano"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"Odustani"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> će moći uspostaviti poziv i upravljati svim njegovim aspektima. Kao zadanu aplikaciju telefona postavite samo aplikaciju koju smatrate pouzdanom."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"Želite li postaviti <xliff:g id="NEW_APP">%s</xliff:g> kao zadanu aplikaciju za filtriranje poziva?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> više neće moći pregledavati pozive na zaslonu."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> će moći vidjeti podatke o pozivateljima koji se ne nalaze u vašim kontaktima i blokirati ih. Kao zadanu aplikaciju za filtriranje poziva postavite samo aplikaciju koju smatrate pouzdanom."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"Postavi zadano"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"Otkaži"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"Blokirani brojevi"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"Nećete primati ni pozive ni poruke s blokiranih brojeva."</string>
+ <string name="block_number" msgid="3784343046852802722">"Dodajte broj"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"Želite li deblokirati <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"Deblokiraj"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"Blokiraj pozive i poruke koje upućuje"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"Telefonski broj"</string>
+ <string name="block_button" msgid="485080149164258770">"Blokiraj"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"Samo vlasnik uređaja može pregledavati i kontrolirati blokirane brojeve."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"Deblokiranje"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"Blokiranje je privremeno isključeno"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"Nakon što nazovete broj hitne službe ili pošaljete poruku na njega, blokada će se isključiti kako bi vam se hitna služba mogla javiti."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"Ponovno omogući sada"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"Broj <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> blokiran je"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"Broj <xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> deblokiran je"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"Broj hitne službe ne može se blokirati."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"Broj <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> već je blokiran."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"Za upućivanje poziva upotrebljava se osobni program za biranje"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"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="5795968314037063900">"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="8653544281903986641">"Ako odgovorite, prekinut ćete poziv u aplikaciji <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"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="8572022039304239958">"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="4031778317409881805">"Ako odgovorite, prekinut ćete poziv u tijeku"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"Ako odgovorite, prekinut ćete pozive u tijeku"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"Ako odgovorite, prekinut ćete videopoziv u tijeku"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"Odgovori"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"Odbij"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"Poziv se ne može uputiti jer nema računa za pozivanje koji podržavaju pozive te vrste."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"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="6379163795277824868">"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="8243532328969433172">"Poziv se ne može uspostaviti zbog poziva u drugoj aplikaciji."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"Dolazni pozivi"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"Propušteni pozivi"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"Blokiranje poziva"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"Upućivanjem ovog poziva prekinut ćete poziv u aplikaciji <xliff:g id="OTHER_APP">%1$s</xliff:g>."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Odaberite kako ćete uputiti poziv"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Preusmjeri poziv putem aplikacije <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"Uputi poziv pomoću mog telefonskog broja"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"Aplikacija <xliff:g id="OTHER_APP">%1$s</xliff:g> ne može uputiti poziv. Pokušajte s drugom aplikacijom za preusmjeravanje poziva ili se obratite razvojnom programeru za pomoć."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"Blokiranje poziva"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"Brojevi koji nisu u kontaktima"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"Blokirajte brojeve koje nemate u kontaktima"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"Privatno"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"Blokirajte pozivatelje koji ne žele otkriti svoj broj"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"Telefonska govornica"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"Blokirajte pozive s telefonskih govornica"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"Nepoznato"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"Blokirajte pozive nepoznatih pozivatelja"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"Blokiranje poziva"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"Blokiranje poziva je onemogućeno"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"Hitni je poziv upućen"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"Blokiranje poziva onemogućeno je da bi vas mogli kontaktirati djelatnici hitnih službi."</string>
+ <string name="developer_title" msgid="9146088855661672353">"Izbornik Telecom Developer"</string>
</resources>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index effd923..2655975 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"Híváskezelés"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"Telefon"</string>
- <string name="unknown" msgid="6878797917991465859">"Ismeretlen"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"Nem fogadott hívás"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"Nem fogadott munkahelyi hívás"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Nem fogadott hívások"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> nem fogadott hívás"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"Nem fogadott hívás: <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Visszahívás"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"Üzenet"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"Hívás némítva."</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"Kihangosítás engedélyezve."</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"Most nem alkalmas. Mi újság?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"Hamarosan visszahívlak."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Később visszahívlak."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Most nem alkalmas. Hívnál később?"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Gyors válaszok"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Gyors válaszok szerkesztése"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"Gyors válasz"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"Üzenet elküldve ide: <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"Telefonos fiókok"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"Csak segélyhívás engedélyezett."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"Az alkalmazásból nem lehet kimenő hívást kezdeményezni a Telefon (Phone) engedély nélkül."</string>
- <string name="outgoing_call_error_no_phone_number_supplied" msgid="1940125199802007505">"Hívásindításhoz adjon meg egy érvényes számot."</string>
- <string name="duplicate_video_call_not_allowed" msgid="3749211605014548386">"Jelenleg nem lehet videohívást hozzáadni."</string>
- <string name="no_vm_number" msgid="4164780423805688336">"Hiányzik a hangposta száma"</string>
- <string name="no_vm_number_msg" msgid="1300729501030053828">"Nincs hangpostaszám a SIM kártyán."</string>
- <string name="add_vm_number_str" msgid="4676479471644687453">"Szám hozzáadása"</string>
- <string name="change_default_dialer_dialog_title" msgid="9101655962941740507">"Beállítja a(z) <xliff:g id="NEW_APP">%s</xliff:g> alkalmazást alapértelmezettként?"</string>
- <string name="change_default_dialer_dialog_affirmative" msgid="8606546663509166276">"Beállítás alapértelmezettként"</string>
- <string name="change_default_dialer_dialog_negative" msgid="9078144617060173845">"Mégse"</string>
- <string name="change_default_dialer_warning_message" msgid="1417671460801684999">"<xliff:g id="NEW_APP">%s</xliff:g> jogosult lesz hívások indítására és a hívásokkal kapcsolatos minden beállítás vezérlésére. Csak megbízható alkalmazást állítson be alapértelmezett telefonalkalmazásként."</string>
- <string name="blocked_numbers" msgid="2751843139572970579">"Letiltott számok"</string>
- <string name="blocked_numbers_msg" msgid="1045015186124965643">"A jövőben nem kap hívásokat vagy SMS-eket a letiltott számokról."</string>
- <string name="block_number" msgid="1101252256321306179">"Szám hozzáadása"</string>
- <string name="unblock_dialog_body" msgid="1614238499771862793">"Feloldja a következő szám letiltását: <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
- <string name="unblock_button" msgid="3078048901972674170">"Letiltás feloldása"</string>
- <string name="add_blocked_dialog_body" msgid="9030243212265516828">"A következő számról érkező hívások és SMS-ek letiltása:"</string>
- <string name="add_blocked_number_hint" msgid="6847675097085433553">"Telefonszám"</string>
- <string name="block_button" msgid="8822290682524373357">"Letiltás"</string>
- <string name="non_primary_user" msgid="5180129233352533459">"Csak az eszköz tulajdonosa nézheti meg és kezelheti a letiltott számokat."</string>
- <string name="delete_icon_description" msgid="8903995728252556724">"Letiltás feloldása"</string>
- <string name="blocked_numbers_butter_bar_title" msgid="438170866438793182">"A tiltás átmenetileg felfüggesztve"</string>
- <string name="blocked_numbers_butter_bar_body" msgid="2223244484319442431">"Ha segélyhívószámot tárcsáz, vagy segélyhívószámra küld SMS-t, a rendszer feloldja a tiltást, hogy a sürgősségi szolgáltatások felvehessék Önnel a kapcsolatot."</string>
- <string name="blocked_numbers_butter_bar_button" msgid="2197943354922010696">"Újbóli engedélyezés most"</string>
- <string name="blocked_numbers_number_blocked_message" msgid="7678509606805029540">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> letiltva"</string>
- <string name="blocked_numbers_number_unblocked_message" msgid="977894647366750418">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> letiltása feloldva"</string>
- <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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"Beérkező hívások"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"Nem fogadott hívások"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"Hívásletiltás"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"Ha hívást indít, azzal megszakítja a(z) <xliff:g id="OTHER_APP">%1$s</xliff:g>-hívást."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"Hívásletiltás"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"A névjegyek között nem szereplő számok"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"A névjegyek között nem szereplő számok letiltása"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"Privát"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"A privát számról hívók letiltása"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"Nyilvános telefon"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"A nyilvános telefonokról bejövő hívások letiltása"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"Ismeretlen"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"A nem azonosított hívók letiltása"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"Hívásletiltás"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"Hívásletiltás kikapcsolva"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"Segélyhívás indítva"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"A hívásletiltás ki van kapcsolva, hogy a segélyszolgálatok kapcsolatba léphessenek Önnel."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"Híváskezelés"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"Telefon"</string>
+ <string name="unknown" msgid="6993977514360123431">"Ismeretlen"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"Nem fogadott hívás"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"Nem fogadott munkahelyi hívás"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"Nem fogadott hívások"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> nem fogadott hívás"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"Nem fogadott hívás: <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"Visszahívás"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"Üzenet"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"Hívás némítva."</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Kihangosítás engedélyezve."</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Most nem alkalmas. Mi újság?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"Hamarosan visszahívlak."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"Később visszahívlak."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"Most nem alkalmas. Hívnál később?"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"Gyors válaszok"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"Gyors válaszok szerkesztése"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"Gyors válasz"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"Üzenet elküldve ide: <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"Sikertelen üzenetküldés (szám: <xliff:g id="PHONE_NUMBER">%s</xliff:g>)."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"Telefonos fiókok"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"Csak segélyhívás engedélyezett."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"Az alkalmazásból nem lehet kimenő hívást kezdeményezni a Telefon (Phone) engedély nélkül."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"Hívásindításhoz adjon meg egy érvényes számot."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"Jelenleg nem lehet videohívást hozzáadni."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"Hiányzik a hangposta száma"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"Nincs hangpostaszám a SIM kártyán."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"Szám hozzáadása"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"Beállítja a(z) <xliff:g id="NEW_APP">%s</xliff:g> alkalmazást alapértelmezettként?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"Beállítás alapértelmezettként"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"Mégse"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> jogosult lesz hívások indítására és a hívásokkal kapcsolatos minden beállítás vezérlésére. Csak megbízható alkalmazást állítson be alapértelmezett telefonalkalmazásként."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"Beállítja alapértelmezettként a hívásszűréshez: <xliff:g id="NEW_APP">%s</xliff:g>?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"A(z) <xliff:g id="OLD_APP">%s</xliff:g> nem fogja tudni többé szűrni a hívásokat."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"A(z) <xliff:g id="NEW_APP">%s</xliff:g> jogosult lesz a névjegyeiben nem szereplő hívók információinak lekérésére, és ezen hívások letiltására. Csak megbízható alkalmazást állítson be alapértelmezett hívásszűrési alkalmazásként."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"Beállítás alapértelmezettként"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"Mégse"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"Letiltott számok"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"A jövőben nem kap hívásokat vagy SMS-eket a letiltott számokról."</string>
+ <string name="block_number" msgid="3784343046852802722">"Szám hozzáadása"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"Feloldja a következő szám letiltását: <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"Letiltás feloldása"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"A következő számról érkező hívások és SMS-ek letiltása:"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"Telefonszám"</string>
+ <string name="block_button" msgid="485080149164258770">"Letiltás"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"Csak az eszköz tulajdonosa nézheti meg és kezelheti a letiltott számokat."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"Letiltás feloldása"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"A tiltás átmenetileg felfüggesztve"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"Ha segélyhívószámot tárcsáz, vagy segélyhívószámra küld SMS-t, a rendszer feloldja a tiltást, hogy a sürgősségi szolgáltatások felvehessék Önnel a kapcsolatot."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"Újbóli engedélyezés most"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> letiltva"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> letiltása feloldva"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"Nem sikerült letiltani a segélyhívószámot."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"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="5817631570381795610">"Hívás indítása a személyes tárcsázóval"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"<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="5795968314037063900">"<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="8653544281903986641">"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="3702302838456922535">"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="8572022039304239958">"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="4031778317409881805">"Ha válaszol erre a hívásra, megszakítja a jelenlegi hívást"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"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="1988508241432031327">"Ha válaszol a hívásra, megszakítja a meglévő videohívást"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"Hívás fogadása"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"Elutasítás"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"A hívás nem indítható el, mert nincs olyan hívásra alkalmas fiók, amely támogatná az ilyen típusú hívásokat."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"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="6379163795277824868">"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="8243532328969433172">"Egy másik alkalmazásban folytatott hívás miatt nem indítható hívás."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"Beérkező hívások"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"Nem fogadott hívások"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"Hívásletiltás"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"Ha hívást indít, azzal megszakítja a(z) <xliff:g id="OTHER_APP">%1$s</xliff:g>-hívást."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"A hívás módjának kiválasztása"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Hívás átirányítása a következővel: <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"Hívás a saját telefonszámommal"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"A(z) <xliff:g id="OTHER_APP">%1$s</xliff:g> nem tudja elindítani a hívást. Használjon másik hívásátirányítási alkalmazást, vagy forduljon az alkalmazás fejlesztőjéhez."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"Hívásletiltás"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"A névjegyek között nem szereplő számok"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"A névjegyek között nem szereplő számok letiltása"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"Privát"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"A privát számról hívók letiltása"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"Nyilvános telefon"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"A nyilvános telefonokról bejövő hívások letiltása"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"Ismeretlen"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"A nem azonosított hívók letiltása"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"Hívásletiltás"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"Hívásletiltás kikapcsolva"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"Segélyhívás indítva"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"A hívásletiltás ki van kapcsolva, hogy a segélyszolgálatok kapcsolatba léphessenek Önnel."</string>
+ <string name="developer_title" msgid="9146088855661672353">"Telekommunikációs fejlesztői menü"</string>
</resources>
diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml
index 8dfdf11..f5125a9 100644
--- a/res/values-hy/strings.xml
+++ b/res/values-hy/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"Զանգերի կառավարում"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"Հեռախոս"</string>
- <string name="unknown" msgid="6878797917991465859">"Անհայտ"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"Բաց թողնված զանգ"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"Բաց թողնված աշխատանքային զանգ"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Բաց թողնված զանգեր"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> բաց թողնված զանգ"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"Բաց թողնված զանգ <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>-ից"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Հետ զանգել"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"Գրել"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"Զանգը խլացված է:"</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"Բարձրախոսը միացված է:"</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"Հիմա չեմ կարող խոսել: Ի՞նչ կա:"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"Ես ձեզ հիմա հետ կզանգեմ:"</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Ես ձեզ մի փոքր ուշ կզանգեմ:"</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Չեմ կարող խոսել հիմա: Կզանգե՞ք ավելի ուշ:"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Արագ պատասխաններ"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Արագ պատասխաններ"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"Արագ պատասխան"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"Հաղորդագրությունն ուղարկվել է <xliff:g id="PHONE_NUMBER">%s</xliff:g>-ին:"</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"Հաշիվներ զանգերի համար"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"Միայն արտակարգ իրավիճակների զանգերն են թույլատրվում:"</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"Առանց Հեռախոսի թույլտվության այս ծրագիրը չի կարող ելքային զանգեր կատարել:"</string>
- <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">"SIM քարտում ձայնային փոստի ոչ մի համար գրանցված չէ:"</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>
- <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="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_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>
- <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_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_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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"Մուտքային զանգեր"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"Բաց թողնված զանգեր"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"Զանգերի արգելափակում"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"Այս զանգը կատարելու դեպքում <xliff:g id="OTHER_APP">%1$s</xliff:g>-ի ընթացիկ զանգը կընդհատվի"</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"Զանգերի արգելափակում"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"Կոնտակտներում չներառված համարներ"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"Արգելափակել համարները, որոնք ձեր կոնտակտներում չկան"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"Փակ համարներ"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"Արգելափակել փակ համարներից եկող զանգերը"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"Ավտոմատ հեռախոսներ"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"Արգելափակել ավտոմատ հեռախոսներից եկող զանգերը"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"Անհայտ համարներ"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"Արգելափակել անհայտ համարներից եկող զանգերը"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"Զանգերի արգելափակում"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"Զանգերի արգելափակումն անջատած է"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"Կատարվեց շտապ կանչ"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"Զանգերի արգելափակումն անջատվել է, որպեսզի արտակարգ ծառայությունները կարողանան ձեզ զանգել:"</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"Զանգերի կառավարում"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"Հեռախոս"</string>
+ <string name="unknown" msgid="6993977514360123431">"Անհայտ"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"Բաց թողնված զանգ"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"Բաց թողնված աշխատանքային զանգ"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"Բաց թողնված զանգեր"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> բաց թողնված զանգ"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"Բաց թողնված զանգ <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>-ից"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"Հետ զանգել"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"Գրել"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"Զանգը խլացված է:"</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Բարձրախոսը միացված է:"</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Հիմա չեմ կարող խոսել: Ի՞նչ կա:"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"Հիմա հետ կզանգեմ:"</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"Ավելի ուշ հետ կզանգեմ։"</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"Հիմա չեմ կարող խոսել, խնդրում եմ ավելի ուշ զանգել։"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"Արագ պատասխաններ"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"Արագ պատասխաններ"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"Արագ պատասխան"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"Հաղորդագրությունն ուղարկվել է <xliff:g id="PHONE_NUMBER">%s</xliff:g>-ին:"</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"SMS-ը չհաջողվեց ուղարկել <xliff:g id="PHONE_NUMBER">%s</xliff:g> համարին:"</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"Հաշիվներ զանգերի համար"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"Միայն արտակարգ իրավիճակների զանգերն են թույլատրվում:"</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"Առանց Հեռախոսի թույլտվության այս ծրագիրը չի կարող ելքային զանգեր կատարել:"</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"Զանգ կատարելու համար մուտքագրեք ճիշտ համար:"</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"Հնարավոր չէ ևս մեկ զանգ ավելացնել այս պահին:"</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"Բացակայում է ձայնային փոստի համարը"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"SIM քարտում ձայնային փոստի ոչ մի համար գրանցված չէ:"</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"Ավելացնել համար"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"Նշե՞լ <xliff:g id="NEW_APP">%s</xliff:g>-ը որպես Հեռախոսի կանխադրված հավելված:"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"Սահմանել որպես կանխադրված"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"Չեղարկել"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> հավելվածը կկատարի զանգերի հետ կապված բոլոր գործառույթները: Որպես Հեռախոսի կանխադրված հավելված նշեք միայն վստահելի հավելվածներ:"</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"Դարձնե՞լ «<xliff:g id="NEW_APP">%s</xliff:g>» հավելվածը զանգերի զտման կանխադրված հավելված"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"«<xliff:g id="OLD_APP">%s</xliff:g>» հավելվածն այլևս չի կարողանա զտել զանգերը:"</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"«<xliff:g id="NEW_APP">%s</xliff:g>» հավելվածը կճանաչի այն մարդկանց զանգերը, ովքեր ձեր կոնտակտներում չկան, և կարգելափակի դրանք: Ընտրեք միայն վստահելի հավելվածներ՝ զանգերի զտման կանխադրված հավելված դարձնելու համար:"</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"Դարձնել որպես կանխադրված"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"Չեղարկել"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"Արգելափակված համարներ"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"Արգելափակված համարներից զանգեր և SMS-ներ չեք ստանա:"</string>
+ <string name="block_number" msgid="3784343046852802722">"Ավելացնել համար"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"Արգելահանե՞լ <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g> համարը:"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"Արգելահանել"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"Արգելափակել զանգերն ու հաղորդագրությունները այս համարից"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"Հեռախոսահամարը"</string>
+ <string name="block_button" msgid="485080149164258770">"Արգելափակել"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"Միայն սարքի սեփականատերը կարող է դիտել և կառավարել արգելափակված համարները:"</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"Արգելահանել"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"Արգելափակումը ժամանակավորապես անջատվել է"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"Արտակարգ իրավիճակի հեռախոսահամար հավաքելուց հետո հեռախոսի արգելափակումը կանջատվի, որպեսզի արտակարգ իրավիճակների ծառայությունները կարողանան կապվել ձեզ հետ:"</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"Նորից միացնել"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> համարն արգելափակվեց"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> արգելահանվեց"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"Արտակարգ իրավիճակների հեռախոսահամարը հնարավոր չէ արգելափակել:"</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> համարն արդեն արգելափակված է:"</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"Զանգելու նպատակով անհատական համարհավաքիչի օգտագործում"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"<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="5795968314037063900">"<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="8653544281903986641">"Եթե պատասխանեք այս զանգին, <xliff:g id="CALL_VIA">%1$s</xliff:g>-ի ընթացիկ զանգը կընդհատվի"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"Եթե պատասխանեք այս զանգին, <xliff:g id="CALL_VIA">%1$s</xliff:g>-ի ընթացիկ զանգերը կընդհատվեն"</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"Եթե պատասխանեք այս զանգին, <xliff:g id="CALL_VIA">%1$s</xliff:g>-ի ընթացիկ տեսազանգը կընդհատվի"</string>
+ <string name="answering_ends_other_managed_call" msgid="4031778317409881805">"Եթե պատասխանեք այս զանգին, ընթացիկ զանգը կընդհատվի"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"Եթե պատասխանեք այս զանգին, ընթացիկ զանգերը կընդհատվեն"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"Եթե պատասխանեք այս զանգին, ընթացիկ տեսազանգը կընդհատվի"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"Պատասխանել"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"Մերժել"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"Զանգը հնարավոր չէ կատարել, քանի որ հաշիվներ չկան, որոնք աջակցում են այս տեսակի զանգեր:"</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"Զանգը հնարավոր չէ կատարել՝ <xliff:g id="OTHER_CALL">%1$s</xliff:g>-ի ընթացիկ զանգի պատճառով:"</string>
+ <string name="cant_call_due_to_ongoing_calls" msgid="6379163795277824868">"Զանգը հնարավոր չէ կատարել՝ <xliff:g id="OTHER_CALL">%1$s</xliff:g>-ի ընթացիկ զանգերի պատճառով:"</string>
+ <string name="cant_call_due_to_ongoing_unknown_call" msgid="8243532328969433172">"Զանգը հնարավոր չէ կատարել՝ մեկ այլ հավելվածի ընթացիկ զանգի պատճառով:"</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"Մուտքային զանգեր"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"Բաց թողնված զանգեր"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"Զանգերի արգելափակում"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"Այս զանգը կատարելու դեպքում <xliff:g id="OTHER_APP">%1$s</xliff:g>-ի ընթացիկ զանգը կընդհատվի"</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Ընտրեք, թե ինչպես եք ուզում կատարել այս զանգը"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Վերահասցեավորել զանգը <xliff:g id="OTHER_APP">%1$s</xliff:g> հավելվածով"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"Զանգել իմ հեռախոսահամարով"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"Զանգը չի կարող կատարվել <xliff:g id="OTHER_APP">%1$s</xliff:g> հավելվածով: Օգտագործեք զանգի վերահասցեավորման մեկ այլ հավելված կամ կապվեք մշակողի հետ՝ օգնություն ստանալու համար:"</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"Զանգերի արգելափակում"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"Կոնտակտներում չներառված համարներ"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"Արգելափակել համարները, որոնք ձեր կոնտակտներում չկան"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"Փակ համարներ"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"Արգելափակել փակ համարներից եկող զանգերը"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"Ավտոմատ հեռախոսներ"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"Արգելափակել ավտոմատ հեռախոսներից եկող զանգերը"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"Անհայտ համարներ"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"Արգելափակել անհայտ համարներից եկող զանգերը"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"Զանգերի արգելափակում"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"Զանգերի արգելափակումն անջատած է"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"Կատարվեց շտապ կանչ"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"Զանգերի արգելափակումն անջատվել է, որպեսզի արտակարգ ծառայությունները կարողանան ձեզ զանգել:"</string>
+ <string name="developer_title" msgid="9146088855661672353">"Telecom-ի մշակողի ընտրացանկ"</string>
</resources>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index 8450eff..d0a6a09 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"Pengelolaan Panggilan Telepon"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"Telepon"</string>
- <string name="unknown" msgid="6878797917991465859">"Tidak diketahui"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"Panggilan tak terjawab"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"Panggilan tak terjawab di telepon kerja"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Panggilan tak terjawab"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> panggilan tak terjawab"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"Panggilan tak terjawab dari <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Telepon"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"Pesan"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"Panggilan disenyapkan."</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"Pengeras suara ponsel diaktifkan."</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"Tak bisa bicara sekarang. Ada apa?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"Saya segera telepon balik."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Nanti saya telepon balik."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Tak bisa bicara skrg. Tlp lg nanti?"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Respons cepat"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Edit respons cepat"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"Respons cepat"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"Pesan dikirim ke <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"Akun pemanggil"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"Hanya panggilan darurat yang diizinkan."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"Aplikasi ini tidak dapat melakukan panggilan keluar tanpa izin Telepon."</string>
- <string name="outgoing_call_error_no_phone_number_supplied" msgid="1940125199802007505">"Untuk melakukan panggilan telepon, masukkan nomor yang valid."</string>
- <string name="duplicate_video_call_not_allowed" msgid="3749211605014548386">"Panggilan tidak dapat ditambahkan untuk saat ini."</string>
- <string name="no_vm_number" msgid="4164780423805688336">"Nomor kotak pesan hilang"</string>
- <string name="no_vm_number_msg" msgid="1300729501030053828">"Tidak ada nomor kotak pesan tersimpan pada kartu SIM."</string>
- <string name="add_vm_number_str" msgid="4676479471644687453">"Tambahkan nomor"</string>
- <string name="change_default_dialer_dialog_title" msgid="9101655962941740507">"Jadikan <xliff:g id="NEW_APP">%s</xliff:g> sebagai aplikasi Telepon default?"</string>
- <string name="change_default_dialer_dialog_affirmative" msgid="8606546663509166276">"Setel Default"</string>
- <string name="change_default_dialer_dialog_negative" msgid="9078144617060173845">"Batal"</string>
- <string name="change_default_dialer_warning_message" msgid="1417671460801684999">"<xliff:g id="NEW_APP">%s</xliff:g> dapat melakukan panggilan dan mengontrol semua aspek panggilan. Hanya aplikasi yang Anda percaya boleh disetel sebagai aplikasi Telepon default."</string>
- <string name="blocked_numbers" msgid="2751843139572970579">"Nomor yang diblokir"</string>
- <string name="blocked_numbers_msg" msgid="1045015186124965643">"Anda tidak akan menerima telepon atau SMS dari nomor yang diblokir."</string>
- <string name="block_number" msgid="1101252256321306179">"Tambahkan nomor"</string>
- <string name="unblock_dialog_body" msgid="1614238499771862793">"Batalkan pemblokiran <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
- <string name="unblock_button" msgid="3078048901972674170">"Batalkan pemblokiran"</string>
- <string name="add_blocked_dialog_body" msgid="9030243212265516828">"Blokir panggilan telepon dan SMS dari"</string>
- <string name="add_blocked_number_hint" msgid="6847675097085433553">"Nomor telepon"</string>
- <string name="block_button" msgid="8822290682524373357">"Blokir"</string>
- <string name="non_primary_user" msgid="5180129233352533459">"Hanya pemilik perangkat yang dapat melihat dan mengelola nomor yang diblokir."</string>
- <string name="delete_icon_description" msgid="8903995728252556724">"Bebaskan"</string>
- <string name="blocked_numbers_butter_bar_title" msgid="438170866438793182">"Blokir dinonaktifkan sementara"</string>
- <string name="blocked_numbers_butter_bar_body" msgid="2223244484319442431">"Setelah Anda menelepon atau mengirim SMS ke nomor gawat darurat, blokir akan dinonaktifkan agar layanan gawat darurat tersebut dapat menghubungi Anda."</string>
- <string name="blocked_numbers_butter_bar_button" msgid="2197943354922010696">"Aktifkan lagi sekarang"</string>
- <string name="blocked_numbers_number_blocked_message" msgid="7678509606805029540">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> diblokir"</string>
- <string name="blocked_numbers_number_unblocked_message" msgid="977894647366750418">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> dibatalkan blokirnya"</string>
- <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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"Panggilan masuk"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"Panggilan tak terjawab"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"Pemblokiran Panggilan"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"Melakukan panggilan ini akan mengakhiri panggilan <xliff:g id="OTHER_APP">%1$s</xliff:g>."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"Pemblokiran Panggilan"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"Nomor yang tidak ada di Kontak"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"Blokir nomor yang tidak tercantum di Kontak Anda"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"Pribadi"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"Blokir penelepon yang menyembunyikan nomornya"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"Telepon umum"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"Blokir panggilan dari telepon umum"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"Tidak tahu"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"Blokir panggilan dari penelepon yang tidak dikenal"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"Pemblokiran Panggilan"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"Pemblokiran Panggilan dinonaktifkan"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"Panggilan darurat dibuat"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"Pemblokiran Panggilan dinonaktifkan untuk mengizinkan penjawab darurat menghubungi Anda."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"Pengelolaan Panggilan Telepon"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"Telepon"</string>
+ <string name="unknown" msgid="6993977514360123431">"Tidak diketahui"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"Panggilan tak terjawab"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"Panggilan tak terjawab di telepon kerja"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"Panggilan tak terjawab"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> panggilan tak terjawab"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"Panggilan tak terjawab dari <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"Telepon"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"Pesan"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"Panggilan disenyapkan."</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Pengeras suara ponsel diaktifkan."</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Tak bisa bicara sekarang. Ada apa?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"Saya segera telepon balik."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"Nanti saya telepon balik."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"Tak bisa bicara skrg. Tlp lg nanti?"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"Respons cepat"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"Edit respons cepat"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"Respons cepat"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"Pesan dikirim ke <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"Pesan gagal dikirim ke <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"Akun pemanggil"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"Hanya panggilan darurat yang diizinkan."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"Aplikasi ini tidak dapat melakukan panggilan keluar tanpa izin Telepon."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"Untuk melakukan panggilan telepon, masukkan nomor yang valid."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"Panggilan tidak dapat ditambahkan untuk saat ini."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"Nomor kotak pesan hilang"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"Tidak ada nomor kotak pesan tersimpan pada kartu SIM."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"Tambahkan nomor"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"Jadikan <xliff:g id="NEW_APP">%s</xliff:g> sebagai aplikasi Telepon default?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"Setel Default"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"Batal"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> dapat melakukan panggilan dan mengontrol semua aspek panggilan. Hanya aplikasi yang Anda percaya boleh disetel sebagai aplikasi Telepon default."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"Jadikan <xliff:g id="NEW_APP">%s</xliff:g> aplikasi penyaringan panggilan default?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> tidak akan dapat menyaring panggilan lagi."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> akan dapat melihat informasi tentang penelepon yang tidak ada di kontak Anda dan dapat memblokir panggilan telepon ini. Hanya aplikasi yang Anda percayai yang sebaiknya ditetapkan sebagai aplikasi penyaringan panggilan default."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"Setel Default"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"Batal"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"Nomor yang diblokir"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"Anda tidak akan menerima telepon atau SMS dari nomor yang diblokir."</string>
+ <string name="block_number" msgid="3784343046852802722">"Tambahkan nomor"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"Batalkan pemblokiran <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"Batalkan pemblokiran"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"Blokir panggilan telepon dan SMS dari"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"Nomor telepon"</string>
+ <string name="block_button" msgid="485080149164258770">"Blokir"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"Hanya pemilik perangkat yang dapat melihat dan mengelola nomor yang diblokir."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"Bebaskan"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"Blokir dinonaktifkan sementara"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"Setelah Anda menelepon atau mengirim SMS ke nomor gawat darurat, blokir akan dinonaktifkan agar layanan gawat darurat tersebut dapat menghubungi Anda."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"Aktifkan lagi sekarang"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> diblokir"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> dibatalkan blokirnya"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"Tidak dapat memblokir nomor darurat."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> sudah diblokir."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"Menggunakan telepon pribadi untuk melakukan panggilan"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"<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="5795968314037063900">"<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="8653544281903986641">"Menjawab panggilan akan mengakhiri panggilan <xliff:g id="CALL_VIA">%1$s</xliff:g> Anda"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"Menjawab panggilan akan mengakhiri panggilan <xliff:g id="CALL_VIA">%1$s</xliff:g> Anda"</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"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="4031778317409881805">"Menjawab panggilan akan mengakhiri panggilan yang sedang berlangsung"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"Menjawab panggilan akan mengakhiri panggilan yang sedang berlangsung"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"Menjawab panggilan akan mengakhiri video call yang sedang berlangsung"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"Jawab"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"Tolak"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"Panggilan tidak dapat dilakukan karena tidak ada akun panggilan yang mendukung jenis panggilan ini."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"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="6379163795277824868">"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="8243532328969433172">"Panggilan tidak dapat dilakukan karena adanya panggilan di aplikasi lain."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"Panggilan masuk"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"Panggilan tak terjawab"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"Pemblokiran Panggilan"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"Melakukan panggilan ini akan mengakhiri panggilan <xliff:g id="OTHER_APP">%1$s</xliff:g>."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Pilih cara melakukan panggilan ini"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Alihkan panggilan menggunakan <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"Lakukan panggilan dengan nomor telepon saya"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"Tidak dapat melakukan panggilan melalui <xliff:g id="OTHER_APP">%1$s</xliff:g>. Coba gunakan aplikasi pengalihan panggilan lain atau hubungi developer untuk mendapatkan bantuan."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"Pemblokiran Panggilan"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"Nomor yang tidak ada di Kontak"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"Blokir nomor yang tidak tercantum di Kontak Anda"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"Pribadi"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"Blokir penelepon yang menyembunyikan nomornya"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"Telepon umum"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"Blokir panggilan dari telepon umum"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"Tidak dikenal"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"Blokir panggilan dari penelepon yang tidak dikenal"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"Pemblokiran Panggilan"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"Pemblokiran Panggilan dinonaktifkan"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"Panggilan darurat dibuat"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"Pemblokiran Panggilan dinonaktifkan untuk mengizinkan penjawab darurat menghubungi Anda."</string>
+ <string name="developer_title" msgid="9146088855661672353">"Menu Developer Telecom"</string>
</resources>
diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml
index c41f657..ccdd57f 100644
--- a/res/values-is/strings.xml
+++ b/res/values-is/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"Símtalastjórnun"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"Sími"</string>
- <string name="unknown" msgid="6878797917991465859">"Óþekkt"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"Ósvarað símtal"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"Ósvarað vinnusímtal"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Ósvöruð símtöl"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> ósvöruð símtöl"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"Ósvarað símtal frá <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Hringja til baka"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"Skilaboð"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"Símtal þaggað."</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"Kveikt á hátalara."</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"Kemst ekki í símann. Eitthvað títt?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"Ég hringi strax í þig til baka."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Ég hringi í þig seinna."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Get ekki svarað. Heyrast síðar?"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Snarsvör"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Breyta snarsvörum"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"Snarsvar"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"Skilaboð send til <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"Símtalareikningar"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"Aðeins neyðarsímöl eru leyfð."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"Þetta forrit getur ekki hringt án heimildar í símanum."</string>
- <string name="outgoing_call_error_no_phone_number_supplied" msgid="1940125199802007505">"Sláðu inn gilt númer til að hringja símtal."</string>
- <string name="duplicate_video_call_not_allowed" msgid="3749211605014548386">"Ekki er hægt að bæta símtali við sem stendur."</string>
- <string name="no_vm_number" msgid="4164780423805688336">"Talhólfsnúmer vantar"</string>
- <string name="no_vm_number_msg" msgid="1300729501030053828">"Ekkert talhólfsnúmer er vistað á SIM-kortinu."</string>
- <string name="add_vm_number_str" msgid="4676479471644687453">"Bæta númeri við"</string>
- <string name="change_default_dialer_dialog_title" msgid="9101655962941740507">"Gera <xliff:g id="NEW_APP">%s</xliff:g> að sjálfgefnu símaforriti?"</string>
- <string name="change_default_dialer_dialog_affirmative" msgid="8606546663509166276">"Velja sem sjálfgefið"</string>
- <string name="change_default_dialer_dialog_negative" msgid="9078144617060173845">"Hætta við"</string>
- <string name="change_default_dialer_warning_message" msgid="1417671460801684999">"<xliff:g id="NEW_APP">%s</xliff:g> getur framkvæmt og stjórnað öllu sem tengist símtölum. Einungis forrit sem þú treystir ættu að vera stillt sem sjálfgefið símaforrit."</string>
- <string name="blocked_numbers" msgid="2751843139572970579">"Númer á bannlista"</string>
- <string name="blocked_numbers_msg" msgid="1045015186124965643">"Þú færð ekki símtöl eða skilaboð frá númerum á bannlista."</string>
- <string name="block_number" msgid="1101252256321306179">"Bæta við númeri"</string>
- <string name="unblock_dialog_body" msgid="1614238499771862793">"Taka <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g> af bannlista?"</string>
- <string name="unblock_button" msgid="3078048901972674170">"Taka af bannlista"</string>
- <string name="add_blocked_dialog_body" msgid="9030243212265516828">"Loka fyrir símtöl og skilaboð frá"</string>
- <string name="add_blocked_number_hint" msgid="6847675097085433553">"Símanúmer"</string>
- <string name="block_button" msgid="8822290682524373357">"Setja á bannlista"</string>
- <string name="non_primary_user" msgid="5180129233352533459">"Aðeins eigandi tækisins getur skoðað og stjórnað númerum á bannlista."</string>
- <string name="delete_icon_description" msgid="8903995728252556724">"Taka af bannlista"</string>
- <string name="blocked_numbers_butter_bar_title" msgid="438170866438793182">"Slökkt tímabundið á lokun símtala"</string>
- <string name="blocked_numbers_butter_bar_body" msgid="2223244484319442431">"Eftir að þú hefur hringt eða sent skilaboð í neyðarnúmer verður slökkt á lokun símtala til að tryggja að neyðarþjónusta geti haft samband við þig."</string>
- <string name="blocked_numbers_butter_bar_button" msgid="2197943354922010696">"Kveikja aftur núna"</string>
- <string name="blocked_numbers_number_blocked_message" msgid="7678509606805029540">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> á bannlista"</string>
- <string name="blocked_numbers_number_unblocked_message" msgid="977894647366750418">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> ekki á bannlista"</string>
- <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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"Móttekin símtöl"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"Ósvöruð símtöl"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"Lokað fyrir símtöl"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"Ef þú hringir mun þessu símtali í <xliff:g id="OTHER_APP">%1$s</xliff:g> ljúka."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"Lokað fyrir símtöl"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"Númer sem eru ekki í tengiliðum"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"Loka fyrir númer sem eru ekki á tengiliðalista"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"Lokað"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"Loka á hringjendur sem birta ekki símanúmer"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"Almenningssími"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"Loka fyrir símtöl úr almenningssímum"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"Óþekkt"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"Loka fyrir símtöl frá óþekktum hringjendum"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"Lokað fyrir símtöl"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"Ekki er lokað fyrir símtöl"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"Neyðarsímtal var hringt"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"Slökkt hefur verið á „Lokað fyrir símtöl“ svo neyðarþjónustuaðilar geti haft samband við þig."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"Símtalastjórnun"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"Sími"</string>
+ <string name="unknown" msgid="6993977514360123431">"Óþekkt"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"Ósvarað símtal"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"Ósvarað vinnusímtal"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"Ósvöruð símtöl"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> ósvöruð símtöl"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"Ósvarað símtal frá <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"Hringja til baka"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"Skilaboð"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"Símtal þaggað."</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Kveikt á hátalara."</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Kemst ekki í símann. Eitthvað títt?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"Ég hringi strax í þig til baka."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"Ég hringi í þig seinna."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"Get ekki svarað. Heyrast síðar?"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"Snarsvör"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"Breyta snarsvörum"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"Snarsvar"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"Skilaboð send til <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"Ekki tókst að senda skilaboðin í <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"Símtalareikningar"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"Aðeins neyðarsímöl eru leyfð."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"Þetta forrit getur ekki hringt án heimildar í símanum."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"Sláðu inn gilt númer til að hringja símtal."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"Ekki er hægt að bæta símtali við sem stendur."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"Talhólfsnúmer vantar"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"Ekkert talhólfsnúmer er vistað á SIM-kortinu."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"Bæta númeri við"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"Gera <xliff:g id="NEW_APP">%s</xliff:g> að sjálfgefnu símaforriti?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"Velja sem sjálfgefið"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"Hætta við"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> getur framkvæmt og stjórnað öllu sem tengist símtölum. Einungis forrit sem þú treystir ættu að vera stillt sem sjálfgefið símaforrit."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"Viltu gera <xliff:g id="NEW_APP">%s</xliff:g> að sjálfgefnu símtalasíuforriti?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> getur ekki lengur síað símtöl."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> getur séð upplýsingar um notendur sem hringja í þig, jafnvel þótt þeir séu ekki á tengiliðalistanum þínum, og getur lokað fyrir símtöl frá þeim. Vertu viss um að þú treystir forritinu sem þú velur sem sjálfgefið símtalasíuforrit."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"Velja sem sjálfgefið"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"Hætta við"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"Númer á bannlista"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"Þú færð ekki símtöl eða skilaboð frá númerum á bannlista."</string>
+ <string name="block_number" msgid="3784343046852802722">"Bæta við númeri"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"Taka <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g> af bannlista?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"Taka af bannlista"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"Loka fyrir símtöl og skilaboð frá"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"Símanúmer"</string>
+ <string name="block_button" msgid="485080149164258770">"Setja á bannlista"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"Aðeins eigandi tækisins getur skoðað og stjórnað númerum á bannlista."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"Taka af bannlista"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"Slökkt tímabundið á lokun símtala"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"Eftir að þú hefur hringt eða sent skilaboð í neyðarnúmer verður slökkt á lokun símtala til að tryggja að neyðarþjónusta geti haft samband við þig."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"Kveikja aftur núna"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> á bannlista"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> ekki á bannlista"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"Getur ekki sett neyðarnúmer á bannlista."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> er nú þegar á bannlista."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"Notar eigin símaforrit til að hringja"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"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="5795968314037063900">"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="8653544281903986641">"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="3702302838456922535">"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="8572022039304239958">"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="4031778317409881805">"Ef þessu er svarað lýkur símtalinu"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"Ef þessu er svarað lýkur símtölum"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"Ef þessu er svarað lýkur myndsímtalinu"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"Svara"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"Hafna"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"Ekki er hægt að hringja vegna þess að engir símtalareikningar eru til staðar sem styðja svona símtöl."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"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="6379163795277824868">"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="8243532328969433172">"Ekki er hægt að hringja sökum símtals í öðru forriti."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"Móttekin símtöl"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"Ósvöruð símtöl"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"Lokað fyrir símtöl"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"Ef þú hringir mun þessu símtali í <xliff:g id="OTHER_APP">%1$s</xliff:g> ljúka."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Veldu hvernig hringt er"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Framsenda símtal með <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"Hringja með símanúmerinu mínu"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"Ekki er hægt að hringja símtal með <xliff:g id="OTHER_APP">%1$s</xliff:g>. Prófaðu að nota annað símtalaforrit eða hafðu samband við þróunaraðila til að fá aðstoð."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"Lokað fyrir símtöl"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"Númer sem eru ekki í tengiliðum"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"Loka fyrir númer sem eru ekki á tengiliðalista"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"Lokað"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"Loka á hringjendur sem birta ekki símanúmer"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"Almenningssími"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"Loka fyrir símtöl úr almenningssímum"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"Óþekkt"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"Loka fyrir símtöl frá óþekktum hringjendum"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"Lokað fyrir símtöl"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"Ekki er lokað fyrir símtöl"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"Neyðarsímtal var hringt"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"Slökkt hefur verið á „Lokað fyrir símtöl“ svo neyðarþjónustuaðilar geti haft samband við þig."</string>
+ <string name="developer_title" msgid="9146088855661672353">"Forritaravalmynd fyrir fjarskipti"</string>
</resources>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index e5e63cc..18925ce 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <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 persa"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"Chiamata di lavoro persa"</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>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"Chiamata disattivata."</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"Vivavoce attivo."</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"Non posso parlare ora. Che succede?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"Ti richiamo subito."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Ti chiamo dopo."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Non posso parlare ora. Mi chiami dopo?"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Risposte rapide"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Modifica risposte rapide"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"Risposta rapida"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"Messaggio inviato a <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"Account di chiamata"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"Sono consentite soltanto le chiamate di emergenza."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"Non è possibile effettuare chiamate tramite questa applicazione senza l\'autorizzazione sul telefono."</string>
- <string name="outgoing_call_error_no_phone_number_supplied" msgid="1940125199802007505">"Per effettuare una chiamata, inserisci un numero valido."</string>
- <string name="duplicate_video_call_not_allowed" msgid="3749211605014548386">"Al momento non è possibile aggiungere la chiamata."</string>
- <string name="no_vm_number" msgid="4164780423805688336">"Numero segreteria mancante"</string>
- <string name="no_vm_number_msg" msgid="1300729501030053828">"Nessun numero di segreteria presente nella SIM."</string>
- <string name="add_vm_number_str" msgid="4676479471644687453">"Aggiungi numero"</string>
- <string name="change_default_dialer_dialog_title" msgid="9101655962941740507">"Rendere <xliff:g id="NEW_APP">%s</xliff:g> l\'app predefinita del tuo telefono?"</string>
- <string name="change_default_dialer_dialog_affirmative" msgid="8606546663509166276">"Imposta come predefinita"</string>
- <string name="change_default_dialer_dialog_negative" msgid="9078144617060173845">"Annulla"</string>
- <string name="change_default_dialer_warning_message" msgid="1417671460801684999">"<xliff:g id="NEW_APP">%s</xliff:g> potrà effettuare e controllare tutti gli aspetti delle chiamate. L\'app predefinita del telefono dovrebbe essere un\'app di cui ti fidi."</string>
- <string name="blocked_numbers" msgid="2751843139572970579">"Numeri bloccati"</string>
- <string name="blocked_numbers_msg" msgid="1045015186124965643">"Non riceverai chiamate o SMS da numeri bloccati."</string>
- <string name="block_number" msgid="1101252256321306179">"Aggiungi un numero"</string>
- <string name="unblock_dialog_body" msgid="1614238499771862793">"Sbloccare <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
- <string name="unblock_button" msgid="3078048901972674170">"Sblocca"</string>
- <string name="add_blocked_dialog_body" msgid="9030243212265516828">"Blocca chiamate e SMS da"</string>
- <string name="add_blocked_number_hint" msgid="6847675097085433553">"Numero di telefono"</string>
- <string name="block_button" msgid="8822290682524373357">"Blocca"</string>
- <string name="non_primary_user" msgid="5180129233352533459">"Soltanto il proprietario del dispositivo può visualizzare e gestire i numeri bloccati."</string>
- <string name="delete_icon_description" msgid="8903995728252556724">"Sblocca"</string>
- <string name="blocked_numbers_butter_bar_title" msgid="438170866438793182">"Blocco temporaneamente disattivato"</string>
- <string name="blocked_numbers_butter_bar_body" msgid="2223244484319442431">"Dopo aver chiamato o inviato un SMS a un numero di emergenza, il blocco viene disattivato per garantire che i servizi di emergenza possano contattarti."</string>
- <string name="blocked_numbers_butter_bar_button" msgid="2197943354922010696">"Riattiva ora"</string>
- <string name="blocked_numbers_number_blocked_message" msgid="7678509606805029540">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> bloccato"</string>
- <string name="blocked_numbers_number_unblocked_message" msgid="977894647366750418">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> sbloccato"</string>
- <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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"Chiamate in arrivo"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"Chiamate perse"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"Blocco delle chiamate"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"Se effettui questa chiamata, la chiamata di <xliff:g id="OTHER_APP">%1$s</xliff:g> verrà terminata."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"Blocco delle chiamate"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"Numeri esterni ai Contatti"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"Blocca i numeri non elencati nei Contatti"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"Privato"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"Blocca i chiamanti che nascondono il loro numero"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"Cabina telefonica"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"Blocca le chiamate dalle cabine telefoniche"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"Sconosciuto"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"Blocca le chiamate da chiamanti non identificati"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"Blocco delle chiamate"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"Blocco delle chiamate disattivato"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"Chiamata di emergenza effettuata"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"Il blocco delle chiamate è stato disattivato per consentire ai servizi di emergenza di contattarti."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"Gestione chiamate"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"Telefono"</string>
+ <string name="unknown" msgid="6993977514360123431">"Sconosciuto"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"Chiamata persa"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"Chiamata di lavoro persa"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"Chiamate perse"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> chiamate perse"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"Chiamata senza risposta da <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"Richiama"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"Messaggio"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"Chiamata disattivata."</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Vivavoce attivo."</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Non posso parlare ora. Che succede?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"Ti richiamo subito."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"Ti chiamo dopo."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"Non posso parlare ora. Mi chiami dopo?"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"Risposte rapide"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"Modifica risposte rapide"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"Risposta rapida"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"Messaggio inviato a <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"Impossibile inviare il messaggio a <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"Account di chiamata"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"Sono consentite soltanto le chiamate di emergenza."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"Non è possibile effettuare chiamate tramite questa applicazione senza l\'autorizzazione sul telefono."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"Per effettuare una chiamata, inserisci un numero valido."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"Al momento non è possibile aggiungere la chiamata."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"Numero segreteria mancante"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"Nessun numero di segreteria presente nella SIM."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"Aggiungi numero"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"Rendere <xliff:g id="NEW_APP">%s</xliff:g> l\'app predefinita del tuo telefono?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"Imposta come predefinita"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"Annulla"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> potrà effettuare e controllare tutti gli aspetti delle chiamate. L\'app predefinita del telefono dovrebbe essere un\'app di cui ti fidi."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"Rendere <xliff:g id="NEW_APP">%s</xliff:g> l\'app predefinita di filtro delle chiamate?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> non potrà più filtrare le chiamate."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> potrà visualizzare informazioni sui chiamanti non presenti nei tuoi contatti e bloccare queste chiamate. L\'app predefinita di filtro delle chiamate dovrebbe essere un\'app di cui ti fidi."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"Imposta come predefinita"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"Annulla"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"Numeri bloccati"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"Non riceverai chiamate o SMS da numeri bloccati."</string>
+ <string name="block_number" msgid="3784343046852802722">"Aggiungi un numero"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"Sbloccare <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"Sblocca"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"Blocca chiamate e SMS da"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"Numero di telefono"</string>
+ <string name="block_button" msgid="485080149164258770">"Blocca"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"Soltanto il proprietario del dispositivo può visualizzare e gestire i numeri bloccati."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"Sblocca"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"Blocco temporaneamente disattivato"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"Dopo aver chiamato o inviato un SMS a un numero di emergenza, il blocco viene disattivato per garantire che i servizi di emergenza possano contattarti."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"Riattiva ora"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> bloccato"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> sbloccato"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"Impossibile bloccare un numero di emergenza."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> è già bloccato."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"Utilizzo dell\'app Telefono personale per chiamare"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"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="5795968314037063900">"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="8653544281903986641">"Se rispondi, la chiamata <xliff:g id="CALL_VIA">%1$s</xliff:g> verrà terminata"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"Se rispondi, le chiamate <xliff:g id="CALL_VIA">%1$s</xliff:g> verranno terminate"</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"Se rispondi, la videochiamata <xliff:g id="CALL_VIA">%1$s</xliff:g> verrà terminata"</string>
+ <string name="answering_ends_other_managed_call" msgid="4031778317409881805">"Se rispondi, la chiamata in corso verrà terminata"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"Se rispondi, le chiamate in corso verranno terminate"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"Se rispondi, la videochiamata in corso verrà terminata"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"Rispondi"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"Rifiuta"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"Impossibile effettuare la chiamata perché non sono presenti account che supportano chiamate di questo tipo."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"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="6379163795277824868">"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="8243532328969433172">"Impossibile effettuare la chiamata a causa di una chiamata in un\'altra app."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"Chiamate in arrivo"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"Chiamate perse"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"Blocco delle chiamate"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"Se effettui questa chiamata, la chiamata di <xliff:g id="OTHER_APP">%1$s</xliff:g> verrà terminata."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Scegli come effettuare questa chiamata"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Reindirizza la chiamata utilizzando <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"Chiama utilizzando il mio numero di telefono"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"<xliff:g id="OTHER_APP">%1$s</xliff:g> non è in grado di effettuare la chiamata. Prova a utilizzare un\'altra app per il reindirizzamento delle chiamate o contatta lo sviluppatore per ricevere assistenza."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"Blocco delle chiamate"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"Numeri esterni ai Contatti"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"Blocca i numeri non elencati nei Contatti"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"Privato"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"Blocca i chiamanti che nascondono il loro numero"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"Cabina telefonica"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"Blocca le chiamate dalle cabine telefoniche"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"Sconosciuto"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"Blocca le chiamate da chiamanti non identificati"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"Blocco delle chiamate"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"Blocco delle chiamate disattivato"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"Chiamata di emergenza effettuata"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"Il blocco delle chiamate è stato disattivato per consentire ai servizi di emergenza di contattarti."</string>
+ <string name="developer_title" msgid="9146088855661672353">"Menu sviluppatore telecomunicazioni"</string>
</resources>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index dcab617..b2ca40f 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"ניהול השיחות"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"טלפון"</string>
- <string name="unknown" msgid="6878797917991465859">"לא ידוע"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"שיחה שלא נענתה"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"שיחה עסקית שלא נענתה"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"שיחות שלא נענו"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> שיחות שלא נענו"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"שיחה שלא נענתה מאת <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"התקשר חזרה"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"שליחת הודעה"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"שיחה מושתקת."</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"רמקול מופעל."</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"לא נוח לי עכשיו. מה קורה?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"תיכף אחזור אליך."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"אני אתקשר אליך יותר מאוחר."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"לא נוח לי עכשיו. נדבר אחר כך?"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"תגובות מהירות"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"תגובות מהירות"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"תגובה מהירה"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"הודעה נשלחה אל <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"חשבונות לביצוע שיחות"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"ניתן לבצע רק שיחות חירום."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"לא ניתן להוציא שיחות באמצעות האפליקציה הזו ללא ההרשאה \'טלפון\'."</string>
- <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">"בכרטיס ה-SIM לא מאוחסן מספר של דואר קולי."</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>
- <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="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_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>
- <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_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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"שיחות נכנסות"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"שיחות שלא נענו"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"חסימת שיחות"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"ביצוע השיחה הזו יסיים את השיחה ב-<xliff:g id="OTHER_APP">%1$s</xliff:g>."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"חסימת שיחות"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"מספרים שאינם באנשי הקשר"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"חסימת שיחות ממספרים שאינם ברשימה של אנשי הקשר"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"מספרים פרטיים"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"חסימת שיחות מאנשים שלא חושפים את המספר שלהם"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"טלפונים ציבוריים"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"חסימת שיחות מטלפונים ציבוריים"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"מספרים לא ידועים"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"חסימת שיחות ממספרים לא מזוהים"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"חסימת שיחות"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"חסימת השיחות הושבתה"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"בוצעה שיחת חירום"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"חסימת השיחות הושבתה כדי לאפשר לצוותי עזרה ראשונה להתקשר אליך."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"ניהול השיחות"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"טלפון"</string>
+ <string name="unknown" msgid="6993977514360123431">"לא ידוע"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"שיחה שלא נענתה"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"שיחה עסקית שלא נענתה"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"שיחות שלא נענו"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> שיחות שלא נענו"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"שיחה שלא נענתה מאת <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"התקשר חזרה"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"שליחת הודעה"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"שיחה מושתקת."</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"רמקול מופעל."</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"לא נוח לי עכשיו. מה קורה?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"תיכף אחזור אליך."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"אני אתקשר אליך יותר מאוחר."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"לא נוח לי עכשיו. נדבר אחר כך?"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"תגובות מהירות"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"עריכת תגובות מהירות"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"תגובה מהירה"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"הודעה נשלחה אל <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"לא ניתן היה לשלוח את ההודעה ל-<xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"חשבונות לביצוע שיחות"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"ניתן לבצע רק שיחות חירום."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"לא ניתן להוציא שיחות באמצעות האפליקציה הזו ללא ההרשאה \'טלפון\'."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"כדי להתקשר, הזן מספר טלפון חוקי."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"לא ניתן כעת להוסיף את השיחה."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"חסר מספר של דואר קולי"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"בכרטיס ה-SIM לא מאוחסן מספר של דואר קולי."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"הוסף מספר"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"האם להפוך את <xliff:g id="NEW_APP">%s</xliff:g> לברירת המחדל לאפליקציית \'טלפון\'?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"הגדר כברירת מחדל"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"ביטול"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> תוכל להתקשר ולשלוט בכל ההיבטים של השיחות. מומלץ לבחור רק אפליקציות שאתה סומך עליהן כברירת המחדל לאפליקציית \'טלפון\'."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"רוצה להפוך את <xliff:g id="NEW_APP">%s</xliff:g> לאפליקציית ברירת המחדל שלך לסינון שיחות?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"אפליקציית <xliff:g id="OLD_APP">%s</xliff:g> לא תוכל לסנן שיחות עוד."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"אפליקציית <xliff:g id="NEW_APP">%s</xliff:g> תוכל לראות מידע על מתקשרים שאינם באנשי הקשר שלך ולחסום שיחות מהם. מומלץ לבחור רק אפליקציות שסומכים עליהן כברירת המחדל לסינון שיחות."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"ברירת מחדל"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"ביטול"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"מספרים חסומים"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"לא יגיעו אליך שיחות או הודעות טקסט מהמספרים החסומים."</string>
+ <string name="block_number" msgid="3784343046852802722">"מספר חדש"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"האם לבטל את חסימת המספר <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"ביטול חסימה"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"חסימת שיחות והודעות טקסט מ-"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"מספר טלפון"</string>
+ <string name="block_button" msgid="485080149164258770">"חסימה"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"רק בעל המכשיר יכול להציג ולנהל מספרים חסומים."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"ביטול חסימה"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"החסימה הושבתה זמנית"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"לאחר חיוג או שליחת הודעה למספר חירום, החסימה תושבת כדי ששירותי החירום יוכלו ליצור איתך קשר."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"הפעל מחדש עכשיו"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> נחסם"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"החסימה של <xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> בוטלה"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"אי אפשר לחסום מספרי חירום."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"המספר <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> כבר חסום."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"משתמש בחייגן האישי כדי להתקשר"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"<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="5795968314037063900">"<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="8653544281903986641">"מענה יסיים את השיחה ב-<xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"מענה יסיים את השיחות ב-<xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"מענה יסיים את שיחת הווידאו ב-<xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+ <string name="answering_ends_other_managed_call" msgid="4031778317409881805">"מענה יסיים את השיחה הנוכחית"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"מענה יסיים את השיחות הנוכחיות"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"מענה יסיים את שיחת הווידאו הנוכחית"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"מענה"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"דחייה"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"אי אפשר להתקשר כי אין במכשיר חשבון שתומך בשיחות מהסוג הזה."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"אי אפשר להתקשר בגלל שיש שיחה ב-<xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+ <string name="cant_call_due_to_ongoing_calls" msgid="6379163795277824868">"אי אפשר להתקשר בגלל שיש שיחות ב-<xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+ <string name="cant_call_due_to_ongoing_unknown_call" msgid="8243532328969433172">"אי אפשר להתקשר בגלל שיש שיחה באפליקציה אחרת."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"שיחות נכנסות"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"שיחות שלא נענו"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"חסימת שיחות"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"ביצוע השיחה הזו יסיים את השיחה ב-<xliff:g id="OTHER_APP">%1$s</xliff:g>."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"איך להתקשר?"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"ניתוב דרך <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"ממספר הטלפון שלי"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"אי אפשר להתקשר דרך <xliff:g id="OTHER_APP">%1$s</xliff:g>. אפשר לנסות אפליקציה אחרת לניתוב שיחות או לפנות למפתח האפליקציה לקבלת עזרה."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"חסימת שיחות"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"מספרים שאינם באנשי הקשר"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"חסימת שיחות ממספרים שאינם ברשימה של אנשי הקשר"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"מספרים פרטיים"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"חסימת שיחות מאנשים שלא חושפים את המספר שלהם"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"טלפונים ציבוריים"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"חסימת שיחות מטלפונים ציבוריים"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"מספרים לא ידועים"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"חסימת שיחות ממספרים לא מזוהים"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"חסימת שיחות"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"חסימת השיחות הושבתה"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"בוצעה שיחת חירום"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"חסימת השיחות הושבתה כדי לאפשר לצוותי עזרה ראשונה להתקשר אליך."</string>
+ <string name="developer_title" msgid="9146088855661672353">"תפריט למפתחי מערכות תקשורת"</string>
</resources>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 22c2073..f6f60c2 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"通話管理"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"電話"</string>
- <string name="unknown" msgid="6878797917991465859">"通知不可能"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"不在着信"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"仕事の通話の不在着信"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"不在着信"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"不在着信<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g>件"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g>さんからの不在着信"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"コールバック"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"メッセージ"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"通話がミュートされています。"</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"スピーカーが有効です。"</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"ただいま電話に出られません。ご用件をお知らせください。"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"ただいま電話に出られません。すぐに折り返しご連絡いたします。"</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"ただいま電話に出られません。後ほど折り返しご連絡いたします。"</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"ただいま電話に出られません。後ほどご連絡をお願いいたします。"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"クイック返信"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"クイック返信の編集"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"クイック返信"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"<xliff:g id="PHONE_NUMBER">%s</xliff:g>にメッセージを送信しました。"</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"通話アカウント"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"許可されているのは緊急通報のみです。"</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"このアプリは、電話権限がないため発信できません。"</string>
- <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">"SIMカードにボイスメールの番号がありません。"</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>
- <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="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_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>
- <string name="blocked_numbers_butter_bar_title" msgid="438170866438793182">"ブロックが一時的に OFF になっています"</string>
- <string name="blocked_numbers_butter_bar_body" msgid="2223244484319442431">"緊急通報番号に電話をかけたり、テキスト メッセージを送信したりすると、ブロックが OFF になり、緊急通報受理機関からの通話を着信できるようになります。"</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_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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"着信"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"不在着信"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"着信のブロック"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"この通話を発信すると、<xliff:g id="OTHER_APP">%1$s</xliff:g> の通話が終了します。"</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"着信のブロック"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"連絡帳にない番号"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"連絡帳にリストされていない番号をブロック"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"非通知"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"番号非通知の発信者をブロック"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"公衆電話"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"公衆電話からの着信をブロック"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"不明"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"不明な発信者からの着信をブロック"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"着信のブロック"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"着信のブロックを無効にしました"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"緊急通報"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"着信のブロックを無効して、救急隊員などがあなたに連絡できるようにしました。"</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"通話管理"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"電話"</string>
+ <string name="unknown" msgid="6993977514360123431">"通知不可能"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"不在着信"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"仕事の通話の不在着信"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"不在着信"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"不在着信<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g>件"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g>さんからの不在着信"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"コールバック"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"メッセージ"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"通話がミュートされています。"</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"スピーカーが有効です。"</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"ただいま電話に出られません。ご用件をお知らせください。"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"ただいま電話に出られません。すぐに折り返しご連絡いたします。"</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"ただいま電話に出られません。後ほど折り返しご連絡いたします。"</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"ただいま電話に出られません。後ほどご連絡をお願いいたします。"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"クイック返信"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"クイック返信の編集"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"クイック返信"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"<xliff:g id="PHONE_NUMBER">%s</xliff:g>にメッセージを送信しました。"</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"<xliff:g id="PHONE_NUMBER">%s</xliff:g> 宛にメッセージを送信できませんでした。"</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"通話アカウント"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"許可されているのは緊急通報のみです。"</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"このアプリは、電話権限がないため発信できません。"</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"発信するには、有効な番号を入力してください。"</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"通話は現在追加できません。"</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"ボイスメール番号がありません"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"SIMカードにボイスメールの番号がありません。"</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"番号を追加"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"<xliff:g id="NEW_APP">%s</xliff:g> をデフォルトの電話アプリにしますか?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"デフォルトに設定"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"キャンセル"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> はすべての通話の発信や制御を行えるようになります。デフォルトの電話アプリに設定するのは信頼できるアプリだけにしてください。"</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"<xliff:g id="NEW_APP">%s</xliff:g> をデフォルトのコール スクリーニング アプリにしますか?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> では通話をスクリーニングできなくなります。"</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> をデフォルトにすると、連絡先に登録されていない発信者の情報を確認したり、そのような発信者からの通話をブロックしたりできるようになります。デフォルトのコール スクリーニング アプリに設定するのは信頼できるアプリだけにしてください。"</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"デフォルトに設定"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"キャンセル"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"ブロックした番号"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"ブロックした電話番号から通話やテキスト メッセージを受け取ることはありません。"</string>
+ <string name="block_number" msgid="3784343046852802722">"番号を追加"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"<xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g> のブロックを解除しますか?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"ブロックを解除"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"次の発信元からの通話とテキスト メッセージをブロック"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"電話番号"</string>
+ <string name="block_button" msgid="485080149164258770">"ブロック"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"ブロックした番号を表示、管理できるのはデバイスの所有者のみです。"</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"ブロックを解除"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"ブロックが一時的に OFF になっています"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"緊急通報番号に電話をかけたり、テキスト メッセージを送信したりすると、ブロックが OFF になり、緊急通報受理機関からの通話を着信できるようになります。"</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"再度有効にする"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> をブロックしました"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> のブロックを解除しました"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"緊急通報番号はブロックできません。"</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> は既にブロックされています。"</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"個人用の電話アプリで電話する"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"<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="5795968314037063900">"<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="8653544281903986641">"応答すると、<xliff:g id="CALL_VIA">%1$s</xliff:g> の通話は終了します"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"応答すると、<xliff:g id="CALL_VIA">%1$s</xliff:g> の通話は終了します"</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"応答すると、<xliff:g id="CALL_VIA">%1$s</xliff:g> のビデオ通話は終了します"</string>
+ <string name="answering_ends_other_managed_call" msgid="4031778317409881805">"応答すると、進行中の通話は終了します"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"応答すると、進行中の通話は終了します"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"応答すると、進行中のビデオ通話は終了します"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"応答"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"拒否"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"この種の通話に対応している通話アカウントがないため、通話を発信できません。"</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"<xliff:g id="OTHER_CALL">%1$s</xliff:g> で通話中のため、この通話を発信することはできません。"</string>
+ <string name="cant_call_due_to_ongoing_calls" msgid="6379163795277824868">"<xliff:g id="OTHER_CALL">%1$s</xliff:g> で通話中のため、この通話を発信することはできません。"</string>
+ <string name="cant_call_due_to_ongoing_unknown_call" msgid="8243532328969433172">"別のアプリで通話中のため、この通話を発信することはできません。"</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"着信"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"不在着信"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"着信のブロック"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"この通話を発信すると、<xliff:g id="OTHER_APP">%1$s</xliff:g> の通話が終了します。"</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"通話の発信方法を選択してください"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"<xliff:g id="OTHER_APP">%1$s</xliff:g> を使用して通話をリダイレクト"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"自分の電話番号を使用して通話を発信"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"<xliff:g id="OTHER_APP">%1$s</xliff:g> から通話を発信することができません。別の通話転送アプリを使用するか、デベロッパーに問い合わせてみてください。"</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"着信のブロック"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"連絡帳にない番号"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"連絡帳にリストされていない番号をブロック"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"非通知"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"番号非通知の発信者をブロック"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"公衆電話"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"公衆電話からの着信をブロック"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"不明"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"不明な発信者からの着信をブロック"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"着信のブロック"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"着信のブロックを無効にしました"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"緊急通報"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"着信のブロックを無効して、救急隊員などがあなたに連絡できるようにしました。"</string>
+ <string name="developer_title" msgid="9146088855661672353">"Telecom デベロッパー メニュー"</string>
</resources>
diff --git a/res/values-ka/strings.xml b/res/values-ka/strings.xml
index 1a39384..6b19df5 100644
--- a/res/values-ka/strings.xml
+++ b/res/values-ka/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"ზარების მართვა"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"ტელეფონი"</string>
- <string name="unknown" msgid="6878797917991465859">"უცნობი"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"გამოტოვებული ზარი"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"გამოტოვებული ზარი (სამსახური)"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"გამოტოვებული ზარები"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> გამოტოვებული ზარები"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"გამოტოვებული ზარი <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>-ისგან"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"გადარეკვა"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"შეტყობინების გაგზავნა"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"ზარი დადუმებულია."</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"სპიკერები ჩართულია."</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"ვერ ვპასუხობ. რა ხდება?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"ცოტა ხანში გადმოვრეკავ."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"მოგვიანებით გადმოვრეკავ."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"ვერ ვპასუხობ. მოგვიანებით დამირეკეთ."</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"სწრაფი პასუხი"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"სწრაფი პასუხის რედაქტირება"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"სწრაფი პასუხი"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"შეტყობინება გაიგზავნა <xliff:g id="PHONE_NUMBER">%s</xliff:g>-თან."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"დარეკვის ანგარიშები"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"შესაძლებელია მხოლოდ გადაუდებელი ზარების განხორციელება."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"ეს აპლიკაცია ტელეფონის ნებართვის გარეშე გამავალ ზარებს ვერ განახორციელებს."</string>
- <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">"SIM ბარათზე ხმოვანი ფოსტის ნომერი შენახული არ არის."</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>
- <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="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_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>
- <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_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_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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"შემომავალი ზარები"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"გამოტოვებული ზარები"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"ზარების დაბლოკვა"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"ამ ზარის განხორციელება თქვენს <xliff:g id="OTHER_APP">%1$s</xliff:g> ზარს დაასრულებს."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"ზარების დაბლოკვა"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"ნომრები არ არის კონტაქტებში"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"ნომრების დაბლოკვა, რომლებიც არ არის შეტანილი თქვენს კონტაქტებში"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"პირადი"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"ზარების დაბლოკვა, რომლებიც არ ამხელს ნომერს"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"საზოგადოებრივი ტელეფონი"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"ზარების დაბლოკვა საზოგადოებრივი ტელეფონებიდან"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"უცნობი"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"ზარების დაბლოკვა ამოუცნობი აბონენტებისგან"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"ზარების დაბლოკვა"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"ზარების დაბლოკვა გათიშულია"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"საგანგებო ზარი შესრულდა"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"ზარების დაბლოკვა გათიშულია, რათა საგანგებო სიტუაციებში მოპასუხეებმა თქვენთან დაკავშირება შეძლონ"</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"ზარების მართვა"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"ტელეფონი"</string>
+ <string name="unknown" msgid="6993977514360123431">"უცნობი"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"გამოტოვებული ზარი"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"გამოტოვებული ზარი (სამსახური)"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"გამოტოვებული ზარები"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> გამოტოვებული ზარები"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"გამოტოვებული ზარი <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>-ისგან"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"გადარეკვა"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"შეტყობინების გაგზავნა"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"ზარი დადუმებულია."</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"სპიკერები ჩართულია."</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"ვერ ვპასუხობ. რა ხდება?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"ცოტა ხანში გადმოვრეკავ."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"მოგვიანებით გადმოვრეკავ."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"ვერ ვპასუხობ. მოგვიანებით დამირეკეთ."</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"სწრაფი პასუხი"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"სწრაფი პასუხის რედაქტირება"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"სწრაფი პასუხი"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"შეტყობინება გაიგზავნა <xliff:g id="PHONE_NUMBER">%s</xliff:g>-თან."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"შეტყობინება ვერ გაიგზავნა <xliff:g id="PHONE_NUMBER">%s</xliff:g>-ზე."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"დარეკვის ანგარიშები"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"შესაძლებელია მხოლოდ გადაუდებელი ზარების განხორციელება."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"ეს აპლიკაცია ტელეფონის ნებართვის გარეშე გამავალ ზარებს ვერ განახორციელებს."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"ზარის განხორციელებისათვის, შეიყვანეთ მოქმედი ნომერი."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"ამ ეტაპზე ზარის დამატება ვერ ხერხდება."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"ხმოვანი ფოსტის ნომერი არ არის"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"SIM ბარათზე ხმოვანი ფოსტის ნომერი შენახული არ არის."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"ნომრის დამატება"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"გახდეს <xliff:g id="NEW_APP">%s</xliff:g> თქვენი ნაგულისხმევი ტელეფონის აპი?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"ნაგულისხმევად დაყენება"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"გაუქმება"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> შეძლებს ზარების განხორციელებას და მათი ყველა ასპექტის მართვას. ნაგულისხმევ ტელეფონის აპად უნდა დააყენოთ ის აპები, რომლებსაც ენდობით."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"გსურთ, დააყენოთ <xliff:g id="NEW_APP">%s</xliff:g> ზარების სკრინინგის ნაგულისხმევ აპად?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> ვეღარ შეძლებს ზარების სკრინინგს."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> შეძლებს იმ აბონენტების შესახებ ინფორმაციის დანახვას, რომლებიც თქვენს კონტაქტებში არ არიან და მათი ზარების დაბლოკვას. ზარის სკრინინგის ნაგულისხმევ აპად უნდა დააყენოთ მხოლოდ ის აპები, რომლებსაც ენდობით."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"ნაგულისხმევად დაყენება"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"გაუქმება"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"დაბლოკილი ნომრები"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"დაბლოკილი ნომრებიდან ზარებსა და ტექსტურ შეტყობინებებს ვერ მიიღებთ."</string>
+ <string name="block_number" msgid="3784343046852802722">"ნომრის დამატება"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"გსურთ, განბლოკოთ <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"განბლოკვა"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"ზარებისა და ტექსტური შეტყობინებების დაბლოკვა ნომრიდან:"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"ტელეფონის ნომერი"</string>
+ <string name="block_button" msgid="485080149164258770">"დაბლოკვა"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"დაბლოკილი ნომრების ნახვა და მართვა მხოლოდ მოწყობილობის მფლობელს შეუძლია."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"განბლოკვა"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"ბლოკი დროებით გამორთულია"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"საგანგებო ნომრის აკრეფის ან მასზე ტესქტური შეტყობინების გაგზავნის შემდეგ ბლოკი გამოირთვება, რათა გადაუდებელი დახმარების სერვისებმა თქვენთან დაკავშირება შეძლოს."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"ხელახლა ჩართვა ახლავე"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> დაბლოკილია"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> განბლოკილია"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"საგანგებო ნომრის დაბლოკვა შეუძლებელია."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> უკვე დაბლოკილია."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"ზარის განსახორციელებლად გამოიყენება პირადი დამრეკი"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"<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="5795968314037063900">"<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="8653544281903986641">"პასუხის გაცემა თქვენს <xliff:g id="CALL_VIA">%1$s</xliff:g> ზარს დაასრულებს"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"პასუხის გაცემა თქვენს <xliff:g id="CALL_VIA">%1$s</xliff:g> ზარებს დაასრულებს"</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"პასუხის გაცემა თქვენს <xliff:g id="CALL_VIA">%1$s</xliff:g> ვიდეოზარს დაასრულებს"</string>
+ <string name="answering_ends_other_managed_call" msgid="4031778317409881805">"პასუხის გაცემა თქვენს მიმდინარე ზარს დაასრულებს"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"პასუხის გაცემა თქვენს მიმდინარე ზარებს დაასრულებს"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"პასუხის გაცემა თქვენს მიმდინარე ვიდეოზარს დაასრულებს"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"პასუხი"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"უარყოფა"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"ზარის განხორციელება შეუძლებელია, რადგან არ არის დარეკვის ის ანგარიშები, რომლებიც მხარს უჭერს ამ ტიპის ზარებს."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"ზარი ვერ ხორციელდება <xliff:g id="OTHER_CALL">%1$s</xliff:g> ზარის გამო."</string>
+ <string name="cant_call_due_to_ongoing_calls" msgid="6379163795277824868">"ზარი ვერ ხორციელდება <xliff:g id="OTHER_CALL">%1$s</xliff:g> ზარების გამო."</string>
+ <string name="cant_call_due_to_ongoing_unknown_call" msgid="8243532328969433172">"ზარი ვერ ხორციელდება ზარის გამო სხვა აპში."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"შემომავალი ზარები"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"გამოტოვებული ზარები"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"ზარების დაბლოკვა"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"ამ ზარის განხორციელება თქვენს <xliff:g id="OTHER_APP">%1$s</xliff:g> ზარს დაასრულებს."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"აირჩიეთ, როგორ განათავსოთ ეს ზარი"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"ზარის გადამისამართება <xliff:g id="OTHER_APP">%1$s</xliff:g>-ის გამოყენებით"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"დარეკვა ჩემი ტელეფონის ნომრის გამოყენებით"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"ზარის განთავსება შეუძლებელია <xliff:g id="OTHER_APP">%1$s</xliff:g>-ით. სცადეთ ზარის გადამისამართების სხვა აპის გამოყენება ან დახმარებისთვის დაუკავშირდით დეველოპერს."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"ზარების დაბლოკვა"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"ნომრები არ არის კონტაქტებში"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"ნომრების დაბლოკვა, რომლებიც არ არის შეტანილი თქვენს კონტაქტებში"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"პირადი"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"ზარების დაბლოკვა, რომლებიც არ ამხელს ნომერს"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"საზოგადოებრივი ტელეფონი"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"ზარების დაბლოკვა საზოგადოებრივი ტელეფონებიდან"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"უცნობი"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"ზარების დაბლოკვა ამოუცნობი აბონენტებისგან"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"ზარების დაბლოკვა"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"ზარების დაბლოკვა გათიშულია"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"საგანგებო ზარი შესრულდა"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"ზარების დაბლოკვა გათიშულია, რათა საგანგებო სიტუაციებში მოპასუხეებმა თქვენთან დაკავშირება შეძლონ"</string>
+ <string name="developer_title" msgid="9146088855661672353">"Telecom-ის დეველოპერის მენიუ"</string>
</resources>
diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml
index 50bb0f2..3763646 100644
--- a/res/values-kk/strings.xml
+++ b/res/values-kk/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"Қоңырауды басқару"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"Телефон"</string>
- <string name="unknown" msgid="6878797917991465859">"Белгісіз"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"Қабылданбаған қоңырау"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"Өткізіп алынған жұмыс қоңырауы"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Қабылданбаған қоңыраулар"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> қабылданбаған қоңыраулар"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g> қоңырауы қабылданбаған"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Қоңырау шалу"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"Хабар"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"Қоңырау үнсіздендірілген."</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"Үндеткішті телефон қосылды."</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"Қазір сөйлесе алмаймын. Не болды?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"Қазір өзім қоңырау шаламын."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Сізге кейінірек қоңырау шаламын."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Қазір сөйлесе алмаймын. Кейінірек?"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Жылдам жауаптар"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Жылдам жауаптарды жөндеу"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"Жылдам жауап"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"Хабар <xliff:g id="PHONE_NUMBER">%s</xliff:g> нөміріне жіберілді."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"Қоңырау шалу есептік жазбалары"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"Құтқару қызметіне ғана қоңырау шалуға рұқсат етілген."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"\"Телефон\" рұқсатынсыз бұл қолданба шығыс қоңырауларды соға алмайды."</string>
- <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">"SIM картасында ешқандай дауыс хабарының нөмірі сақталмаған."</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>
- <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="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_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>
- <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_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_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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"Кіріс қоңыраулары"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"Қабылданбаған қоңыраулар"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"Қоңырауды бөгеу"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"Жаңа қоңырау шалу <xliff:g id="OTHER_APP">%1$s</xliff:g> қоңырауын тоқтатады."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"Қоңырауды бөгеу"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"Контактілерде жоқ нөмірлер"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"Контактілерде жоқ нөмірлерді бөгеу"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"Жеке"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"Нөмірі жасырын қоңырауларды бөгеу"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"Ақылы телефон"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"Ақылы телефон қоңырауларын бөгеу"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"Белгісіз"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"Белгісіз қоңырауларды бөгеу"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"Қоңырауды бөгеу"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"Қоңырау бөгеу функциясы өшірулі"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"Төтенше жағдай қоңырауы шалынды"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"Төтенше жағдай қызметтері сізге хабарласа алуы үшін, қоңырау бөгеу функциясы өшірілді."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"Қоңырауды басқару"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"Телефон"</string>
+ <string name="unknown" msgid="6993977514360123431">"Белгісіз"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"Қабылданбаған қоңырау"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"Өткізіп алынған жұмыс қоңырауы"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"Қабылданбаған қоңыраулар"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> қабылданбаған қоңыраулар"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g> қоңырауы қабылданбаған"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"Қоңырау шалу"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"Хабар"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"Қоңырау үнсіздендірілген."</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Үндеткішті телефон қосылды."</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Қазір сөйлесе алмаймын. Не болды?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"Қазір өзім қоңырау шаламын."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"Сізге кейінірек қоңырау шаламын."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"Қазір сөйлесе алмаймын. Кейінірек?"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"Жылдам жауаптар"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"Жылдам жауаптарды жөндеу"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"Жылдам жауап"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"Хабар <xliff:g id="PHONE_NUMBER">%s</xliff:g> нөміріне жіберілді."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"<xliff:g id="PHONE_NUMBER">%s</xliff:g> нөміріне хабар жіберілмеді."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"Қоңырау шалу есептік жазбалары"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"Құтқару қызметіне ғана қоңырау шалуға рұқсат етілген."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"\"Телефон\" рұқсатынсыз бұл қолданба шығыс қоңырауларды соға алмайды."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"Қоңырау шалу үшін жарамды нөмірді енгізіңіз."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"Қоңырауды қазіргі уақытта қосу мүмкін емес."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"Дауыс хабарының нөмірі жоқ"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"SIM картасында ешқандай дауыс хабарының нөмірі сақталмаған."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"Нөмір қосу"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"<xliff:g id="NEW_APP">%s</xliff:g> қолданбасын әдепкі Телефон қолданбасы ретінде сақтайсыз ба?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"Әдепкі ретінде орнату"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"Тоқтату"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> қоңыраулардың барлық аспектілерін бақылайтын болады. Тек қана өзіңіз сенетін қолданбаларды ғана әдепкі ретінде орнатқан дұрыс."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"<xliff:g id="NEW_APP">%s</xliff:g> әдепкі қоңырауды тексеру қолданбасы болсын ба?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> қоңырауларды тексере алмайтын болады."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> контактілер тізімінде жоқ қоңырау шалушылар туралы ақпаратты көріп, бұндай қоңырауларды бөгей алады. Әдепкі қоңырауды тексеру қолданбасы ретінде тек өзіңіз сенетін қолданбаларды ғана орнатқан дұрыс."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"Әдепкі ретінде орнату"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"Жабу"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"Бөгелген нөмірлер"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"Тыйым салынған нөмірлерден қоңыраулар немесе мәтіндік хабарлар алмайсыз."</string>
+ <string name="block_number" msgid="3784343046852802722">"Нөмір қосу"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"<xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g> бөгеуден шығарылсын ба?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"Бөгеуден шығару"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"Қоңыраулары мен мәтіндік хабарлары бөгелетін нөмір"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"Телефон нөмірі"</string>
+ <string name="block_button" msgid="485080149164258770">"Бөгеу"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"Бөгелген нөмірлерді тек құрылғы иесі көре және басқара алады."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"Бөгеуді алу"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"Тыйым уақытша алынды"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"Төтенше жағдай нөмірін терген немесе мәтіндік хабар жіберген соң, төтенше жағдай қызметтері сізге хабарласа алуы үшін тыйым алынады."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"Қазір қайта қосу"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> бөгелген"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> бөгеуден шығарылған"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"Жедел қызмет нөмірін бөгеу мүмкін емес."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> бұрыннан бөгелген."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"Қоңырау шалу үшін жеке нөмір тергішті пайдалану"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"<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="5795968314037063900">"<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="8653544281903986641">"Жауап беру <xliff:g id="CALL_VIA">%1$s</xliff:g> қоңырауын тоқтатады"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"Жауап беру <xliff:g id="CALL_VIA">%1$s</xliff:g> қоңырауларын тоқтатады"</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"Жауап беру <xliff:g id="CALL_VIA">%1$s</xliff:g> бейне қоңырауын тоқтатады"</string>
+ <string name="answering_ends_other_managed_call" msgid="4031778317409881805">"Жауап беру қазіргі қоңырауды тоқтатады"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"Жауап беру қазіргі қоңырауларды тоқтатады"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"Жауап беру қазіргі бейне қоңырауды тоқтатады"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"Жауап беру"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"Қабылдамау"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"Қоңырау шалу мүмкін емес, себебі бұндай қоңырауларға қолдау көрсететін есептік жазба жоқ."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"Қоңырау шалу мүмкін емес, себебі <xliff:g id="OTHER_CALL">%1$s</xliff:g> қоңырауы белсенді."</string>
+ <string name="cant_call_due_to_ongoing_calls" msgid="6379163795277824868">"Қоңырау шалу мүмкін емес, себебі <xliff:g id="OTHER_CALL">%1$s</xliff:g> қоңыраулары белсенді."</string>
+ <string name="cant_call_due_to_ongoing_unknown_call" msgid="8243532328969433172">"Қоңырау шалу мүмкін емес, себебі басқа қолданбадан қоңырау шалынуда."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"Кіріс қоңыраулары"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"Қабылданбаған қоңыраулар"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"Қоңырауды бөгеу"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"Жаңа қоңырау шалу <xliff:g id="OTHER_APP">%1$s</xliff:g> қоңырауын тоқтатады."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Қоңырау шалу әдісін таңдаңыз."</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Қоңырау бағытын <xliff:g id="OTHER_APP">%1$s</xliff:g> арқылы ауыстыру"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"Телефон нөміріммен қоңырау шалу"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"<xliff:g id="OTHER_APP">%1$s</xliff:g> арқылы қоңырау шалу мүмкін емес. Басқа қоңырау бағыттайтын қолданбаны пайдаланып көріңіз немесе әзірлеушіден көмек сұраңыз."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"Қоңырауды бөгеу"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"Контактілерде жоқ нөмірлер"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"Контактілерде жоқ нөмірлерді бөгеу"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"Жеке"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"Нөмірі жасырын қоңырауларды бөгеу"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"Ақылы телефон"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"Ақылы телефон қоңырауларын бөгеу"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"Белгісіз"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"Белгісіз қоңырауларды бөгеу"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"Қоңырауды бөгеу"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"Қоңырау бөгеу функциясы өшірулі"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"Төтенше жағдай қоңырауы шалынды"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"Төтенше жағдай қызметтері сізге хабарласа алуы үшін, қоңырау бөгеу функциясы өшірілді."</string>
+ <string name="developer_title" msgid="9146088855661672353">"Telecom Developer мәзірі"</string>
</resources>
diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml
index 827b02d..b04294c 100644
--- a/res/values-km/strings.xml
+++ b/res/values-km/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"គ្រប់គ្រងការហៅ"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"ទូរសព្ទ"</string>
- <string name="unknown" msgid="6878797917991465859">"មិនស្គាល់"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"ខកខានទទួល"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"បានខកខានការហៅចូលពីកន្លែងការងារ"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"ខកខានទទួល"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> ខកខានការទទួល"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"ខកខានទទួលពី <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"ហៅទៅវិញ"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"សារ"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"ការហៅបិទសំឡេង។"</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"បានបើកអូប៉ាល័រទូរស័ព្ទ។"</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"មិនអាចនិយាយបានទេ ឥឡូវនេះ។ មានការអីដែរ?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"ខ្ញុំនឹងហៅទៅអ្នកវិញ។"</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"ខ្ញុំនឹងហៅទៅអ្នកនៅពេលក្រោយ។"</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"មិនអាចនិយាយបានទេឥឡូវនេះ។ ហៅមកខ្ញុំពេលក្រោយ?"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"ការឆ្លើយតបរហ័ស"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"កែការឆ្លើយតបរហ័ស"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"ឆ្លើយតបរហ័ស"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"បានផ្ញើសារទៅ <xliff:g id="PHONE_NUMBER">%s</xliff:g> ។"</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"គណនីហៅទូរសព្ទ"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"អនុញ្ញាតតែការហៅពេលមានអាសន្នប៉ុណ្ណោះ"</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"កម្មវិធីនេះមិនអាចធ្វើការហៅចេញដោយគ្មានការអនុញ្ញាត ទូរស័ព្ទ បានទេ។"</string>
- <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="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>
- <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="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_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>
- <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_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_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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"ការហៅចូល"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"ការហៅដែលមិនបានទទួល"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"ការទប់ស្កាត់ការហៅ"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"ការហៅទូរសព្ទនេះ នឹងបញ្ចប់ការហៅ <xliff:g id="OTHER_APP">%1$s</xliff:g> របស់អ្នក។"</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"ការទប់ស្កាត់ការហៅ"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"លេខមិននៅក្នុងទំនាក់ទំនង"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"ទប់ស្កាត់លេខដែលមិនស្ថិតនៅក្នុងបញ្ជីទំនាក់ទំនងរបស់អ្នក"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"ឯកជន"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"ទប់ស្កាត់អ្នកហៅទូរសព្ទដែលមិនឲ្យឃើញលេខរបស់ពួកគេ"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"ទូរសព្ទដែលបង់ប្រាក់"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"ទប់ស្កាត់ការហៅពីទូរសព្ទដែលបង់ប្រាក់"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"មិនស្គាល់"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"ទប់ស្កាត់ការហៅទូរសព្ទពីអ្នកហៅដែលមិនស្គាល់អត្តសញ្ញាណ"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"ការទប់ស្កាត់ការហៅ"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"បានបិទការទប់ស្កាត់ការហៅ"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"បានធ្វើការហៅបន្ទាន់"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"ការទប់ស្កាត់ការហៅត្រូវបានបិទ ដើម្បីអនុញ្ញាតឲ្យអ្នកឆ្លើយតបបន្ទាន់អាចទាក់ទងអ្នកបាន។"</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"គ្រប់គ្រងការហៅ"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"ទូរសព្ទ"</string>
+ <string name="unknown" msgid="6993977514360123431">"មិនស្គាល់"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"ខកខានទទួល"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"បានខកខានការហៅចូលពីកន្លែងការងារ"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"ខកខានទទួល"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> ខកខានការទទួល"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"ខកខានទទួលពី <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"ហៅទៅវិញ"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"សារ"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"ការហៅបិទសំឡេង។"</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"បានបើកអូប៉ាល័រទូរស័ព្ទ។"</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"មិនអាចនិយាយបានទេ ឥឡូវនេះ។ មានការអីដែរ?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"ខ្ញុំនឹងហៅទៅអ្នកវិញ។"</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"ខ្ញុំនឹងហៅទៅអ្នកនៅពេលក្រោយ។"</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"មិនអាចនិយាយបានទេឥឡូវនេះ។ ហៅមកខ្ញុំពេលក្រោយ?"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"ការឆ្លើយតបរហ័ស"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"កែការឆ្លើយតបរហ័ស"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"ឆ្លើយតបរហ័ស"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"បានផ្ញើសារទៅ <xliff:g id="PHONE_NUMBER">%s</xliff:g> ។"</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"មិនអាចផ្ញើសារទៅ <xliff:g id="PHONE_NUMBER">%s</xliff:g> បានទេ។"</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"គណនីហៅទូរសព្ទ"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"អនុញ្ញាតតែការហៅពេលមានអាសន្នប៉ុណ្ណោះ"</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"កម្មវិធីនេះមិនអាចធ្វើការហៅចេញដោយគ្មានការអនុញ្ញាត ទូរស័ព្ទ បានទេ។"</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"ដើម្បីធ្វើការហៅ បញ្ចូលលេខដែលមានសុពលភាព។"</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"មិនអាចបន្ថែមនៅពេលនេះបានទេ។"</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"បាត់ចំនួនសារជាសំឡេង"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"គ្មានចំនួនសារជាសំឡេងត្រូវបានរក្សាទុកនៅលើស៊ីមកាតទេ។"</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"បន្ថែមលេខ"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"ធ្វើ <xliff:g id="NEW_APP">%s</xliff:g> ជាកម្មវិធីទូរសព្ទលំនាំដើមរបស់អ្នកដែរ ឬទេ?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"កំណត់លំនាំដើម"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"បោះបង់"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> នឹងអាចដាក់ចុះ និងត្រួតពិនិត្យទិដ្ឋភាពការហៅទាំងអស់។ មានតែកម្មវិធីដែលអ្នកទុកចិត្តប៉ុណ្ណោះអាចត្រូវបានកំណត់ជាកម្មវិធីទូរសព្ទលំនាំដើម។"</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"កំណត់ <xliff:g id="NEW_APP">%s</xliff:g> ជាកម្មវិធីត្រួតពិនិត្យការហៅទូរសព្ទលំនាំដើមរបស់អ្នកដែរឬទេ?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> នឹងលែងអាចត្រួតពិនិត្យការហៅទូរសព្ទបានទៀតហើយ។"</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> នឹងអាចមើលឃើញព័ត៌មានអំពីអ្នកហៅទូរសព្ទដែលមិននៅក្នុងទំនាក់ទំនងរបស់អ្នក ហើយនឹងអាចទប់ស្កាត់ការហៅទូរសព្ទទាំងនេះបាន។ មានតែកម្មវិធីដែលអ្នកទុកចិត្តប៉ុណ្ណោះគួរត្រូវបានកំណត់ជាកម្មវិធីត្រួតពិនិត្យការហៅទូរសព្ទលំនាំដើម។"</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"កំណត់លំនាំដើម"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"បោះបង់"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"លេខដែលបានទប់ស្កាត់"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"អ្នកនឹងមិនទទួលបានការហៅទូរសព្ទ ឬសារពីលេខដែលបានទប់ស្កាត់ឡើយ។"</string>
+ <string name="block_number" msgid="3784343046852802722">"បញ្ចូលលេខ"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"ឈប់ទប់ស្កាត់ <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g> ឬ?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"ឈប់ទប់ស្កាត់"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"ទប់ស្កាត់ការហៅ និងការផ្ញើសារពី"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"លេខទូរសព្ទ"</string>
+ <string name="block_button" msgid="485080149164258770">"ទប់ស្កាត់"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"មានតែម្ចាស់ឧបករណ៍តែប៉ុណ្ណោះដែលអាចមើល និងគ្រប់គ្រងបញ្ជីរារាំងបាន"</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"ឈប់ទប់ស្កាត់"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"បានបិទការទប់ស្កាត់ជាបណ្ដោះអាសន្ន"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"បន្ទាប់ពីអ្នកចុចហៅ ឬផ្ញើសារលេខអាសន្ន ការទប់ស្កាត់ត្រូវបានបិទដើម្បីប្រាកដថាសេវាកម្មអាសន្នអាចទាក់ទងអ្នកបាន។"</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"បើកដំណើរការឡើងវិញឥឡូវនេះ"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"បានទប់ស្កាត់ <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g>"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"បានឈប់ទប់ស្កាត់ <xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g>"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"មិនអាចទប់ស្កាត់លេខបន្ទាន់បានទេ។"</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> ត្រូវបានទប់ស្កាត់រួចហើយ។"</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"កំពុងប្រើកម្មវិធីហៅផ្ទាល់ខ្លួនដើម្បីធ្វើការហៅទូរស័ព្ទ"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"ការហៅ <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="5795968314037063900">"ការហៅតាមវីដេអូ <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="8653544281903986641">"ការឆ្លើយនឹងបញ្ចប់ការហៅ <xliff:g id="CALL_VIA">%1$s</xliff:g> របស់អ្នក"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"ការឆ្លើយនឹងបញ្ចប់ការហៅ <xliff:g id="CALL_VIA">%1$s</xliff:g> របស់អ្នក"</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"ការឆ្លើយនឹងបញ្ចប់ការហៅតាមវីដេអូ <xliff:g id="CALL_VIA">%1$s</xliff:g> របស់អ្នក"</string>
+ <string name="answering_ends_other_managed_call" msgid="4031778317409881805">"ការឆ្លើយនឹងបញ្ចប់ការហៅដែលកំពុងតែដំណើរការរបស់អ្នក"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"ការឆ្លើយនឹងបញ្ចប់ការហៅដែលកំពុងតែដំណើរការរបស់អ្នក"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"ការឆ្លើយនឹងបញ្ចប់ការហៅតាមវីដេអូដែលកំពុងតែដំណើរការរបស់អ្នក"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"ឆ្លើយ"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"បដិសេធ"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"មិនអាចធ្វើការហៅទូរសព្ទបានទេ ពីព្រោះមិនមានគណនីហៅទូរសព្ទដែលអាចប្រើបានជាមួយការហៅប្រភេទនេះទេ។"</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"ការហៅមិនអាចធ្វើបានទេ ដោយសារការហៅ <xliff:g id="OTHER_CALL">%1$s</xliff:g> របស់អ្នក។"</string>
+ <string name="cant_call_due_to_ongoing_calls" msgid="6379163795277824868">"ការហៅមិនអាចធ្វើបានទេ ដោយសារការហៅ <xliff:g id="OTHER_CALL">%1$s</xliff:g> របស់អ្នក។"</string>
+ <string name="cant_call_due_to_ongoing_unknown_call" msgid="8243532328969433172">"ការហៅមិនអាចធ្វើបានទេ ដោយសារមានការហៅមួយនៅក្នុងកម្មវិធីផ្សេង។"</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"ការហៅចូល"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"ការហៅដែលមិនបានទទួល"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"ការទប់ស្កាត់ការហៅ"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"ការហៅទូរសព្ទនេះ នឹងបញ្ចប់ការហៅ <xliff:g id="OTHER_APP">%1$s</xliff:g> របស់អ្នក។"</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"ជ្រើសរើសរបៀបធ្វើការហៅទូរសព្ទនេះ"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"បញ្ជូនការហៅទូរសព្ទបន្តដោយប្រើប្រាស់ <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"ហៅទូរសព្ទដោយប្រើប្រាស់លេខទូរសព្ទ"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"មិនអាចធ្វើការហៅទូរសព្ទតាម <xliff:g id="OTHER_APP">%1$s</xliff:g> បានទេ។ សាកល្បងប្រើប្រាស់កម្មវិធីបញ្ជូនបន្តការហៅទូរសព្ទផ្សេងទៀត ឬទាក់ទងអ្នកអភិវឌ្ឍន៍ដើម្បីទទួលបានជំនួយ។"</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"ការទប់ស្កាត់ការហៅ"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"លេខមិននៅក្នុងទំនាក់ទំនង"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"ទប់ស្កាត់លេខដែលមិនស្ថិតនៅក្នុងបញ្ជីទំនាក់ទំនងរបស់អ្នក"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"ឯកជន"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"ទប់ស្កាត់អ្នកហៅទូរសព្ទដែលមិនឲ្យឃើញលេខរបស់ពួកគេ"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"ទូរសព្ទដែលបង់ប្រាក់"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"ទប់ស្កាត់ការហៅពីទូរសព្ទដែលបង់ប្រាក់"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"មិនស្គាល់"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"ទប់ស្កាត់ការហៅទូរសព្ទពីអ្នកហៅដែលមិនស្គាល់អត្តសញ្ញាណ"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"ការទប់ស្កាត់ការហៅ"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"បានបិទការទប់ស្កាត់ការហៅ"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"បានធ្វើការហៅបន្ទាន់"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"ការទប់ស្កាត់ការហៅត្រូវបានបិទ ដើម្បីអនុញ្ញាតឲ្យអ្នកឆ្លើយតបបន្ទាន់អាចទាក់ទងអ្នកបាន។"</string>
+ <string name="developer_title" msgid="9146088855661672353">"ម៉ឺនុយអ្នកអភិវឌ្ឍន៍ទូរគមនាគមន៍"</string>
</resources>
diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml
index 159091a..5096ea0 100644
--- a/res/values-kn/strings.xml
+++ b/res/values-kn/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"ಕರೆ ನಿರ್ವಹಣೆ"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"ಫೋನ್"</string>
- <string name="unknown" msgid="6878797917991465859">"ಅಪರಿಚಿತ"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"ಮಿಸ್ಡ್ ಕಾಲ್"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"ಮಿಸ್ಡ್ ಕೆಲಸದ ಕರೆ"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"ಮಿಸ್ಡ್ ಕರೆಗಳು"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> ಮಿಸ್ಡ್ ಕರೆಗಳು"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g> ಅವರಿಂದ ಮಿಸ್ಡ್ ಕಾಲ್"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"ಮರಳಿ ಕರೆ ಮಾಡಿ"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"ಸಂದೇಶ"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"ಕರೆಯನ್ನು ಮ್ಯೂಟ್ ಮಾಡಲಾಗಿದೆ."</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"ಸ್ಪೀಕರ್ಫೋನ್ ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ."</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"ಈಗ ಮಾತನಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ. ಏನು ವಿಷಯ?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"ನಾನು ಮರಳಿ ನಿಮಗೆ ಕರೆ ಮಾಡುತ್ತೇನೆ."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"ನಾನು ನಂತರ ನಿಮಗೆ ಕರೆ ಮಾಡುತ್ತೇನೆ."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"ಈಗ ಮಾತನಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ. ನಂತರ ಮಾಡುವಿರಾ?"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"ತ್ವರಿತ ಪ್ರತಿಕ್ರಿಯೆಗಳು"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"ತ್ವರಿತ ಪ್ರತಿಕ್ರಿಯೆ ಎಡಿಟ್ ಮಾಡಿ"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"ತ್ವರಿತ ಪ್ರತಿಕ್ರಿಯೆ"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"<xliff:g id="PHONE_NUMBER">%s</xliff:g> ಗೆ ಸಂದೇಶ ಕಳುಹಿಸಲಾಗಿದೆ."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"ಕರೆ ಮಾಡುವ ಖಾತೆಗಳು"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"ತುರ್ತು ಕರೆಗಳನ್ನು ಮಾಡಲು ಮಾತ್ರ ಅವಕಾಶವಿದೆ."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"ಈ ಅಪ್ಲಿಕೇಶನ್ ಫೋನ್ ಅನುಮತಿಯಿಲ್ಲದೆ ಹೊರಹೋಗುವ ಕರೆಗಳನ್ನು ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ."</string>
- <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="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>
- <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="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_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>
- <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_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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"ಒಳಬರುವ ಕರೆಗಳು"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"ಮಿಸ್ಡ್ ಕರೆಗಳು"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"ಕರೆ ನಿರ್ಬಂಧಿಸುವಿಕೆ"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"ಈ ಕರೆಯನ್ನು ಮಾಡುವುದರಿಂದ ನಿಮ್ಮ <xliff:g id="OTHER_APP">%1$s</xliff:g> ಕರೆಯು ಅಂತ್ಯಗೊಳ್ಳುತ್ತದೆ."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"ಕರೆ ನಿರ್ಬಂಧಿಸುವಿಕೆ"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"ಸಂಖ್ಯೆಗಳು ಸಂಪರ್ಕದಲ್ಲಿಲ್ಲ"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"ನಿಮ್ಮ ಸಂಪರ್ಕಗಳಲ್ಲಿ ಪಟ್ಟಿ ಮಾಡಿರದ ಸಂಪರ್ಕಗಳನ್ನು ನಿರ್ಬಂಧಿಸಿ"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"ಖಾಸಗಿ"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"ತಮ್ಮ ಸಂಖ್ಯೆಯನ್ನು ಬಹಿರಂಗಪಡಿಸದ ಕರೆ ಮಾಡುವವರನ್ನು ನಿರ್ಬಂಧಿಸಿ"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"ಪಾವತಿ ಫೋನ್"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"ಪಾವತಿ ಫೋನ್ಗಳಿಂದ ಕರೆಗಳನ್ನು ನಿರ್ಬಂಧಿಸಿ"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"ಅಪರಿಚಿತ"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"ಗುರುತಿಸದ ಕರೆದಾರರಿಂದ ಕರೆಗಳನ್ನು ನಿರ್ಬಂಧಿಸಿ"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"ಕರೆ ನಿರ್ಬಂಧಿಸುವಿಕೆ"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"ಕರೆ ನಿರ್ಬಂಧಿಸುವಿಕೆಯನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"ತುರ್ತು ಕರೆ ಮಾಡಲಾಗಿದೆ"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"ನಿಮ್ಮನ್ನು ಸಂಪರ್ಕಿಸುವುದಕ್ಕಾಗಿ ತುರ್ತಾಗಿ ಪ್ರತಿಕ್ರಿಯಿಸುವವರ ಸಂಖ್ಯೆಯನ್ನು ನಿರ್ಬಂಧಿಸುವುದನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"ಕರೆ ನಿರ್ವಹಣೆ"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"ಫೋನ್"</string>
+ <string name="unknown" msgid="6993977514360123431">"ಅಪರಿಚಿತ"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"ಮಿಸ್ಡ್ ಕಾಲ್"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"ಮಿಸ್ಡ್ ಕೆಲಸದ ಕರೆ"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"ಮಿಸ್ಡ್ ಕರೆಗಳು"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> ಮಿಸ್ಡ್ ಕರೆಗಳು"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g> ಅವರಿಂದ ಮಿಸ್ಡ್ ಕಾಲ್"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"ಮರಳಿ ಕರೆ ಮಾಡಿ"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"ಸಂದೇಶ"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"ಕರೆಯನ್ನು ಮ್ಯೂಟ್ ಮಾಡಲಾಗಿದೆ."</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"ಸ್ಪೀಕರ್ಫೋನ್ ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ."</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"ಕ್ಷಮಿಸಿ, ಈಗ ಮಾತನಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ. ಸಮಾಚಾರವೇನು?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"ನಾನು ಮರಳಿ ನಿಮಗೆ ಕರೆ ಮಾಡುತ್ತೇನೆ."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"ನಾನು ನಂತರ ನಿಮಗೆ ಕರೆ ಮಾಡುತ್ತೇನೆ."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"ಈಗ ಮಾತನಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ. ನಂತರ ಮಾಡುವಿರಾ?"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"ತ್ವರಿತ ಪ್ರತಿಕ್ರಿಯೆಗಳು"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"ತ್ವರಿತ ಪ್ರತಿಕ್ರಿಯೆ ಎಡಿಟ್ ಮಾಡಿ"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"ತ್ವರಿತ ಪ್ರತಿಕ್ರಿಯೆ"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"<xliff:g id="PHONE_NUMBER">%s</xliff:g> ಗೆ ಸಂದೇಶ ಕಳುಹಿಸಲಾಗಿದೆ."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"<xliff:g id="PHONE_NUMBER">%s</xliff:g> ಫೋನ್ ಸಂಖ್ಯೆಗೆ ಸಂದೇಶವನ್ನು ಕಳುಹಿಸುವಲ್ಲಿ ವಿಫಲವಾಗಿದೆ."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"ಕರೆ ಮಾಡುವ ಖಾತೆಗಳು"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"ತುರ್ತು ಕರೆಗಳನ್ನು ಮಾಡಲು ಮಾತ್ರ ಅವಕಾಶವಿದೆ."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"ಈ ಅಪ್ಲಿಕೇಶನ್ ಫೋನ್ ಅನುಮತಿಯಿಲ್ಲದೆ ಹೊರಹೋಗುವ ಕರೆಗಳನ್ನು ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"ಕರೆಯನ್ನು ಮಾಡಲು, ಮಾನ್ಯವಾದ ಸಂಖ್ಯೆಯನ್ನು ನಮೂದಿಸಿ."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"ಕರೆಯನ್ನು ಈ ಸಮಯದಲ್ಲಿ ಸೇರಿಸಲಾಗುವುದಿಲ್ಲ."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"ಧ್ವನಿಮೇಲ್ ಸಂಖ್ಯೆಯು ಕಾಣೆಯಾಗಿದೆ"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"ಸಿಮ್ ಕಾರ್ಡ್ನಲ್ಲಿ ಯಾವುದೇ ಧ್ವನಿಮೇಲ್ ಸಂಖ್ಯೆಯನ್ನು ಸಂಗ್ರಹಿಸಿಲ್ಲ."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"ಸಂಖ್ಯೆಯನ್ನು ಸೇರಿಸಿ"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"<xliff:g id="NEW_APP">%s</xliff:g> ಅನ್ನು ನಿಮ್ಮ ಡಿಫಾಲ್ಟ್ ಫೋನ್ ಅಪ್ಲಿಕೇಶನ್ ಆಗಿ ಮಾಡುವುದೇ?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"ಡಿಫಾಲ್ಟ್ ಹೊಂದಿಸಿ"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"ರದ್ದುಮಾಡಿ"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> ಗೆ ನಿಮ್ಮ ಕರೆಗಳ ಎಲ್ಲಾ ಅಂಶಗಳನ್ನು ನಿಯಂತ್ರಿಸಲು ಮತ್ತು ಕರೆಗಳನ್ನು ಮಾಡಲು ಸಾಧ್ಯವಾಗುತ್ತದೆ. ನೀವು ವಿಶ್ವಾಸವಿರಿಸಿರುವಂತಹ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ಮಾತ್ರ ನಿಮ್ಮ ಡಿಫಾಲ್ಟ್ ಅಪ್ಲಿಕೇಶನ್ ಆಗಿ ಹೊಂದಿಸಬೇಕು."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"<xliff:g id="NEW_APP">%s</xliff:g> ನಿಮ್ಮ ಡೀಫಾಲ್ಟ್ ಕರೆ ಸ್ಕ್ರೀನಿಂಗ್ ಆ್ಯಪ್ ಆಗಿ ಮಾಡಬೇಕೇ?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> ಇನ್ನು ಮುಂದೆ ಕರೆಗಳನ್ನು ಸ್ಕ್ರೀನ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> ಗೆ ನಿಮ್ಮ ಸಂಪರ್ಕಗಳಲ್ಲಿ ಇಲ್ಲದ ಕರೆದಾರರ ಬಗ್ಗೆ ಮಾಹಿತಿಯನ್ನು ನೋಡಲು ಮತ್ತು ಈ ಕರೆಗಳನ್ನು ಬ್ಲಾಕ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗುತ್ತದೆ. ನೀವು ವಿಶ್ವಾಸವಿರಿಸಿರುವಂತಹ ಆ್ಯಪ್ಗಳನ್ನು ಮಾತ್ರ ನಿಮ್ಮ ಡೀಫಾಲ್ಟ್ ಕರೆ ಸ್ಕ್ರೀನಿಂಗ್ ಆ್ಯಪ್ ಆಗಿ ಹೊಂದಿಸಬೇಕು."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"ಡೀಫಾಲ್ಟ್ ಹೊಂದಿಸಿ"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"ರದ್ದುಮಾಡಿ"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"ನಿರ್ಬಂಧಿಸಲಾದ ಸಂಖ್ಯೆಗಳು"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"ನಿರ್ಬಂಧಿಸಲಾದ ಸಂಖ್ಯೆಗಳಿಂದ ಕರೆಗಳು ಅಥವಾ ಪಠ್ಯ ಸಂದೇಶಗಳನ್ನು ನೀವು ಸ್ವೀಕರಿಸುವುದಿಲ್ಲ."</string>
+ <string name="block_number" msgid="3784343046852802722">"ಸಂಖ್ಯೆ ಸೇರಿಸಿ"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"<xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g> ನಿರ್ಬಂಧ ತೆಗೆಯುವುದೇ?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"ನಿರ್ಬಂಧ ತೆಗೆಯಿರಿ"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"ಇದರಿಂದ ಬರುವ ಕರೆಗಳು ಮತ್ತು ಪಠ್ಯ ಸಂದೇಶಗಳನ್ನು ನಿರ್ಬಂಧಿಸಿ"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"ಫೋನ್ ಸಂಖ್ಯೆ"</string>
+ <string name="block_button" msgid="485080149164258770">"ನಿರ್ಬಂಧಿಸಿ"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"ಸಾಧನ ಮಾಲೀಕರು ಮಾತ್ರ ನಿರ್ಬಂಧಿಸಿದ ಸಂಖ್ಯೆಗಳನ್ನು ವೀಕ್ಷಿಸಬಹುದು ಮತ್ತು ನಿರ್ವಹಿಸಬಹುದು."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"ನಿರ್ಬಂಧ ತೆಗೆಯಿರಿ"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"ನಿರ್ಬಂಧಿಸುವಿಕೆ ತಾತ್ಕಾಲಿಕವಾಗಿ ಆಫ್ ಮಾಡಲಾಗಿದೆ"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"ನೀವು ತುರ್ತು ಸಂಖ್ಯೆಯನ್ನು ಡಯಲ್ ಮಾಡಿದ ಅಥವಾ ಪಠ್ಯ ಸಂದೇಶ ಕಳುಹಿಸಿದ ನಂತರ, ತುರ್ತು ಸೇವೆಗಳಲ್ಲಿ ನಿಮ್ಮನ್ನು ಸಂಪರ್ಕಿಸಬಹುದು ಎಂಬುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ನಿರ್ಬಂಧಿಸುವಿಕೆ ಆಫ್ ಮಾಡಲಾಗಿದೆ."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"ಇದೀಗ ಮರು ಸಕ್ರಿಯಗೊಳಿಸಿ"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> ನಿರ್ಬಂಧ ತೆಗೆಯಲಾಗಿದೆ"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"ತುರ್ತು ಸಂಖ್ಯೆಯನ್ನು ನಿರ್ಬಂಧಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> ಅನ್ನು ಈಗಾಗಲೇ ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"ಕರೆ ಮಾಡಲು ವೈಯಕ್ತಿಕ ಡಯಲರ್ ಬಳಸಲಾಗುತ್ತಿದೆ"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"<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="5795968314037063900">"<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="8653544281903986641">"ಕರೆಗೆ ಉತ್ತರಿಸುವುದರಿಂದ ನಿಮ್ಮ <xliff:g id="CALL_VIA">%1$s</xliff:g> ಕರೆಯು ಅಂತ್ಯಗೊಳ್ಳುತ್ತದೆ"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"ಕರೆಗೆ ಉತ್ತರಿಸುವುದರಿಂದ ನಿಮ್ಮ <xliff:g id="CALL_VIA">%1$s</xliff:g> ಕರೆಗಳು ಅಂತ್ಯಗೊಳ್ಳುತ್ತವೆ"</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"ಕರೆಗೆ ಉತ್ತರಿಸುವುದರಿಂದ ನಿಮ್ಮ <xliff:g id="CALL_VIA">%1$s</xliff:g> ವೀಡಿಯೊ ಕರೆಯು ಅಂತ್ಯಗೊಳ್ಳುತ್ತದೆ"</string>
+ <string name="answering_ends_other_managed_call" msgid="4031778317409881805">"ಕರೆಗೆ ಉತ್ತರಿಸುವುದರಿಂದ ನಿಮ್ಮ ಚಾಲ್ತಿಯಲ್ಲಿರುವ ಕರೆಯು ಅಂತ್ಯಗೊಳ್ಳುತ್ತದೆ"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"ಕರೆಗೆ ಉತ್ತರಿಸುವುದರಿಂದ ನಿಮ್ಮ ಚಾಲ್ತಿಯಲ್ಲಿರುವ ಕರೆಗಳು ಅಂತ್ಯಗೊಳ್ಳುತ್ತವೆ"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"ಕರೆಗೆ ಉತ್ತರಿಸುವುದರಿಂದ ನಿಮ್ಮ ಚಾಲ್ತಿಯಲ್ಲಿರುವ ವೀಡಿಯೊ ಕರೆಯು ಅಂತ್ಯಗೊಳ್ಳುತ್ತದೆ"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"ಉತ್ತರ"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"ನಿರಾಕರಿಸಿ"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"ಈ ಪ್ರಕಾರದ ಕರೆಗಳನ್ನು ಬೆಂಬಲಿಸುವ ಯಾವುದೇ ಕರೆಮಾಡುವಿಕೆ ಖಾತೆಗಳು ಇಲ್ಲದಿರುವ ಕಾರಣ ಕರೆಮಾಡಲು ಸಾಧ್ಯವಾಗುತ್ತಿಲ್ಲ."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"ನಿಮ್ಮ <xliff:g id="OTHER_CALL">%1$s</xliff:g> ಕರೆ ಇರುವ ಕಾರಣ ಕರೆ ಮಾಡಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ."</string>
+ <string name="cant_call_due_to_ongoing_calls" msgid="6379163795277824868">"ನಿಮ್ಮ <xliff:g id="OTHER_CALL">%1$s</xliff:g> ಕರೆಗಳ ಕಾರಣ ಕರೆ ಮಾಡಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ."</string>
+ <string name="cant_call_due_to_ongoing_unknown_call" msgid="8243532328969433172">"ಬೇರೊಂದು ಅಪ್ಲಿಕೇಶನ್ನಲ್ಲಿ ಕರೆಯಲ್ಲಿರುವುದರಿಂದ ಕರೆ ಮಾಡಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"ಒಳಬರುವ ಕರೆಗಳು"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"ಮಿಸ್ಡ್ ಕರೆಗಳು"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"ಕರೆ ನಿರ್ಬಂಧಿಸುವಿಕೆ"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"ಈ ಕರೆಯನ್ನು ಮಾಡುವುದರಿಂದ ನಿಮ್ಮ <xliff:g id="OTHER_APP">%1$s</xliff:g> ಕರೆಯು ಅಂತ್ಯಗೊಳ್ಳುತ್ತದೆ."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"ಈ ಕರೆ ಮಾಡುವುದು ಹೇಗೆ ಎಂಬುದನ್ನು ಆಯ್ಕೆಮಾಡಿ"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"<xliff:g id="OTHER_APP">%1$s</xliff:g> ಬಳಸಿಕೊಂಡು ಕರೆಯನ್ನು ಮರುನಿರ್ದೇರ್ಶಿಸಿ"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"ನನ್ನ ಫೋನ್ ಸಂಖ್ಯೆಯನ್ನು ಬಳಸಿಕೊಂಡು ಕರೆ ಮಾಡಿ"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"ಕರೆಯನ್ನು <xliff:g id="OTHER_APP">%1$s</xliff:g> ಮೂಲಕ ನಿಯೋಜಿಸಲಾಗುವುದಿಲ್ಲ. ಕರೆ ಮರುನಿರ್ದೇಶಿಸುವ ಬೇರೆ ಆ್ಯಪ್ ಅನ್ನು ಬಳಸುವ ಮೂಲಕ ಅಥವಾ ಸಹಾಯಕ್ಕಾಗಿ ಡೆವಲಪರ್ ಅನ್ನು ಸಂಪರ್ಕಿಸುವ ಮೂಲಕ ಪ್ರಯತ್ನಿಸಿ."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"ಕರೆ ನಿರ್ಬಂಧಿಸುವಿಕೆ"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"ಸಂಖ್ಯೆಗಳು ಸಂಪರ್ಕದಲ್ಲಿಲ್ಲ"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"ನಿಮ್ಮ ಸಂಪರ್ಕಗಳಲ್ಲಿ ಪಟ್ಟಿ ಮಾಡಿರದ ಸಂಪರ್ಕಗಳನ್ನು ನಿರ್ಬಂಧಿಸಿ"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"ಖಾಸಗಿ"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"ತಮ್ಮ ಸಂಖ್ಯೆಯನ್ನು ಬಹಿರಂಗಪಡಿಸದ ಕರೆ ಮಾಡುವವರನ್ನು ನಿರ್ಬಂಧಿಸಿ"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"ಪಾವತಿ ಫೋನ್"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"ಪಾವತಿ ಫೋನ್ಗಳಿಂದ ಕರೆಗಳನ್ನು ನಿರ್ಬಂಧಿಸಿ"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"ಅಪರಿಚಿತ"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"ಗುರುತಿಸದ ಕರೆದಾರರಿಂದ ಕರೆಗಳನ್ನು ನಿರ್ಬಂಧಿಸಿ"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"ಕರೆ ನಿರ್ಬಂಧಿಸುವಿಕೆ"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"ಕರೆ ನಿರ್ಬಂಧಿಸುವಿಕೆಯನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"ತುರ್ತು ಕರೆ ಮಾಡಲಾಗಿದೆ"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"ನಿಮ್ಮನ್ನು ಸಂಪರ್ಕಿಸುವುದಕ್ಕಾಗಿ ತುರ್ತಾಗಿ ಪ್ರತಿಕ್ರಿಯಿಸುವವರ ಸಂಖ್ಯೆಯನ್ನು ನಿರ್ಬಂಧಿಸುವುದನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ."</string>
+ <string name="developer_title" msgid="9146088855661672353">"ಟೆಲಿಕಾಂ ಡೆವಲಪರ್ ಮೆನು"</string>
</resources>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index dd3658c..8768651 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"통화 관리"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"전화"</string>
- <string name="unknown" msgid="6878797917991465859">"알 수 없음"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"부재중 전화"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"부재중 업무 통화"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"부재중 통화"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"부재중 통화 <xliff:g id="NUM_MISSED_CALLS">%s</xliff:g>통"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g>의 부재중 전화"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"통화하기"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"문자 메시지"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"통화가 음소거되었습니다."</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"스피커폰이 사용 설정되었습니다."</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"통화 불가. 용무를 남겨주세요."</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"바로 다시 전화드리겠습니다."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"나중에 전화드리겠습니다."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"통화 불가. 나중에 전화주세요."</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"빠른 응답"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"빠른 응답 수정"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"빠른 응답"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"<xliff:g id="PHONE_NUMBER">%s</xliff:g>(으)로 메시지를 보냈습니다."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"통화 계정"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"긴급 전화만 허용됩니다."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"전화 권한이 없으므로 애플리케이션에서 발신 전화를 걸 수 없습니다."</string>
- <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">"SIM 카드에 저장된 음성사서함 번호가 없습니다."</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>
- <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="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_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>
- <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_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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"수신 전화"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"부재중 전화"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"통화 차단"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"이 전화를 걸면 현재 <xliff:g id="OTHER_APP">%1$s</xliff:g>에서 진행 중인 통화가 종료됩니다."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"통화 차단"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"연락처에 없는 번호"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"연락처에 없는 번호 차단"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"익명"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"전화번호를 공개하지 않는 발신자 차단"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"공중전화"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"공중전화에서 걸려 온 통화 차단"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"알 수 없는 발신자"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"신원을 확인할 수 없는 발신자로부터 걸려 온 통화 차단"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"통화 차단"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"통화 차단이 사용 중지됨"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"긴급 통화가 사용됨"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"응급 구조 요원이 연락할 수 있도록 통화 차단이 사용 중지되었습니다."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"통화 관리"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"전화"</string>
+ <string name="unknown" msgid="6993977514360123431">"알 수 없음"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"부재중 전화"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"부재중 업무 통화"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"부재중 통화"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"부재중 통화 <xliff:g id="NUM_MISSED_CALLS">%s</xliff:g>통"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g>의 부재중 전화"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"통화하기"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"문자 메시지"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"통화가 음소거되었습니다."</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"스피커폰이 사용 설정되었습니다."</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"통화 불가. 용무를 남겨주세요."</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"바로 다시 전화드리겠습니다."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"나중에 전화드리겠습니다."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"통화 불가. 나중에 전화주세요."</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"빠른 응답"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"빠른 응답 수정"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"빠른 응답"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"<xliff:g id="PHONE_NUMBER">%s</xliff:g>(으)로 메시지를 보냈습니다."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"<xliff:g id="PHONE_NUMBER">%s</xliff:g>(으)로 메시지를 보내지 못했습니다."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"통화 계정"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"긴급 전화만 허용됩니다."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"전화 권한이 없으므로 애플리케이션에서 발신 전화를 걸 수 없습니다."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"전화를 걸려면 올바른 번호를 입력하세요."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"현재 통화를 추가할 수 없습니다."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"음성사서함 번호 없음"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"SIM 카드에 저장된 음성사서함 번호가 없습니다."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"번호 추가"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"<xliff:g id="NEW_APP">%s</xliff:g>을(를) 기본 전화 앱으로 설정하나요?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"기본으로 설정"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"취소"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g>은(는) 모든 전화를 걸고 제어할 수 있습니다. 신뢰할 수 있는 앱만 기본 전화 앱으로 설정하세요."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"<xliff:g id="NEW_APP">%s</xliff:g> 앱을 기본 선택 통화 앱으로 설정하시겠습니까?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g>에서는 더 이상 전화를 선택하여 받을 수 없습니다."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> 앱은 연락처에 없는 발신자의 정보를 확인할 수 있으며 이러한 발신자의 전화를 차단할 수 있습니다. 신뢰할 수 있는 앱만 기본 선택 통화 앱으로 설정하세요."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"기본으로 설정"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"취소"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"차단된 번호"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"차단한 번호에서 걸려오는 전화나 문자는 더 이상 수신되지 않습니다."</string>
+ <string name="block_number" msgid="3784343046852802722">"번호 추가"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"<xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>번을 차단 해제하시겠습니까?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"차단 해제"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"전화와 문자 메시지를 차단할 번호"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"전화번호"</string>
+ <string name="block_button" msgid="485080149164258770">"차단"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"기기 소유자만 차단된 번호를 보고 관리할 수 있습니다."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"차단 해제"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"차단 기능이 일시적으로 중지됨"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"긴급 전화번호로 전화를 걸거나 문자를 보내면 긴급 서비스를 사용할 수 있도록 차단 기능이 중지됩니다."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"지금 다시 사용 설정"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g>번이 차단되었습니다."</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g>번이 차단 해제되었습니다."</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"긴급 전화번호를 차단할 수 없습니다."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g>번은 이미 차단되었습니다."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"전화를 걸 때 개인 다이얼러 사용"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"<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="5795968314037063900">"<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="8653544281903986641">"전화를 받으면 <xliff:g id="CALL_VIA">%1$s</xliff:g> 통화가 종료됩니다."</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"전화를 받으면 <xliff:g id="CALL_VIA">%1$s</xliff:g> 통화가 종료됩니다."</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"전화를 받으면 <xliff:g id="CALL_VIA">%1$s</xliff:g> 화상 통화가 종료됩니다."</string>
+ <string name="answering_ends_other_managed_call" msgid="4031778317409881805">"전화를 받으면 진행 중인 통화가 종료됩니다."</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"전화를 받으면 진행 중인 통화가 종료됩니다."</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"전화를 받으면 진행 중인 화상 통화가 종료됩니다."</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"통화"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"거부"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"이 유형의 전화를 지원하는 전화 계정이 없으므로 전화를 걸 수 없습니다."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"<xliff:g id="OTHER_CALL">%1$s</xliff:g> 통화 중이므로 전화를 걸 수 없습니다."</string>
+ <string name="cant_call_due_to_ongoing_calls" msgid="6379163795277824868">"<xliff:g id="OTHER_CALL">%1$s</xliff:g> 통화 중이므로 전화를 걸 수 없습니다."</string>
+ <string name="cant_call_due_to_ongoing_unknown_call" msgid="8243532328969433172">"다른 앱에서 통화 중이므로 전화를 걸 수 없습니다."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"수신 전화"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"부재중 전화"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"통화 차단"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"이 전화를 걸면 현재 <xliff:g id="OTHER_APP">%1$s</xliff:g>에서 진행 중인 통화가 종료됩니다."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"전화 걸 방법 선택"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"<xliff:g id="OTHER_APP">%1$s</xliff:g> 앱으로 전화 리디렉션"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"내 전화번호로 전화 걸기"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"<xliff:g id="OTHER_APP">%1$s</xliff:g> 앱으로는 전화를 걸 수 없습니다. 다른 통화 리디렉션 앱을 사용하거나 개발자에게 도움을 요청해 보세요."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"통화 차단"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"연락처에 없는 번호"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"연락처에 없는 번호 차단"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"익명"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"전화번호를 공개하지 않는 발신자 차단"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"공중전화"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"공중전화에서 걸려 온 통화 차단"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"알 수 없는 발신자"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"신원을 확인할 수 없는 발신자로부터 걸려 온 통화 차단"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"통화 차단"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"통화 차단이 사용 중지됨"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"긴급 통화가 사용됨"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"응급 구조 요원이 연락할 수 있도록 통화 차단이 사용 중지되었습니다."</string>
+ <string name="developer_title" msgid="9146088855661672353">"Telecom 개발자 메뉴"</string>
</resources>
diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml
index 760fdb1..d4ac0b0 100644
--- a/res/values-ky/strings.xml
+++ b/res/values-ky/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"Чалууларды башкаруу"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"Телефон"</string>
- <string name="unknown" msgid="6878797917991465859">"Белгисиз"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"Кабыл алынбаган чалуу"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"Кабыл алынбай калган чалуу (жумуш)"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Кабыл алынбаган чалуулар"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> кабыл алынбаган чалуу"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g> дегенден кабыл алынбаган чалуу"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Кайра чалуу"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"Билдирүү"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"Чалуу үнсүз тартипте."</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"Динамик иштеп жатат."</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"Азыр сүйлөшө албайм. Эмне болду?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"Кайра чалам."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Кийинчерээк чалып коём."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Сүйлөшө албайм. Ананыраак чалчы?"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Тез жооптор"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Тез жоопторду өзгөртүү"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"Тез жооп"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"<xliff:g id="PHONE_NUMBER">%s</xliff:g> номуруна билдирүү жөнөтүлдү."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"Чалуу каттоо эсептери"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"Шашылыш чалууларга гана уруксат берилген."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"Бул колдонмо тийиштүү уруксатсыз чалууларды жасай албайт."</string>
- <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">"SIM-картада сакталган үн почтасынын номери жок."</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>
- <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="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">"Төмөнкү номерден келген чалуулар менен SMS билдирүүлөрүн бөгөттөө"</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>
- <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_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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"Кирүүчү чалуулар"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"Кабыл алынбаган чалуулар"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"Чалууну бөгөттөө"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"Эгер чалып баштасаңыз, <xliff:g id="OTHER_APP">%1$s</xliff:g> чалууңуз аяктайт."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"Чалууну бөгөттөө"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"Номерлер Байланыштар тизмесинде жок"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"Байланыштар тизмеңизде болбогон номерлерди бөгөттөңүз"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"Купуя"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"Номерин көрсөтпөгөн чалуучуларды бөгөттөө"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"Телефон-автомат"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"Телефон-автоматтардан келген чалууларды бөгөттөө"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"Белгисиз"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"Белгисиз чалуучуларды бөгөттөө"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"Чалууну бөгөттөө"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"Чалууну бөгөттөө өчүрүлдү"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"Шашылыш чалуу аткарылды"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"Өзгөчө кырдаалдардагы кызматчылар сиз менен байланышуусу үчүн чалууну бөгөттөө функциясы өчүрүлгөн."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"Чалууларды башкаруу"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"Телефон"</string>
+ <string name="unknown" msgid="6993977514360123431">"Белгисиз"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"Кабыл алынбаган чалуу"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"Кабыл алынбай калган чалуу (жумуш)"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"Кабыл алынбаган чалуулар"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> кабыл алынбаган чалуу"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g> дегенден кабыл алынбаган чалуу"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"Кайра чалуу"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"Билдирүү"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"Чалуу үнсүз тартипте."</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Динамик иштеп жатат."</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Азыр сүйлөшө албайм. Эмне болду?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"Кайра чалам."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"Кийинчерээк чалып коём."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"Сүйлөшө албайм. Ананыраак чалчы?"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"Тез жооптор"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"Тез жоопторду өзгөртүү"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"Тез жооп"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"<xliff:g id="PHONE_NUMBER">%s</xliff:g> номуруна билдирүү жөнөтүлдү."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"Билдирүү <xliff:g id="PHONE_NUMBER">%s</xliff:g> номерине жөнөтүлбөй калды."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"Чалуу каттоо эсептери"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"Шашылыш чалууларга гана уруксат берилген."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"Бул колдонмо тийиштүү уруксатсыз чалууларды жасай албайт."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"Чалуу үчүн, жарактуу номер киргизиңиз."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"Бул жолу чалууну кошуу мүмкүн эмес."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"Үн почтасынын номери жок болуп жатат"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"SIM-картада сакталган үн почтасынын номери жок."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"Номер кошуу"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"<xliff:g id="NEW_APP">%s</xliff:g> колдонмосун демейки телефон колдонмосу кыласызбы?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"Демейки шартта колдонуу"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"Жокко чыгаруу"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> колдонмосу аркылуу чалып, алардын параметрлерин жөндөй аласыз. Демейки чалуулар үчүн ишеничтүү колдонмолорду гана пайдалануу керек."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"<xliff:g id="NEW_APP">%s</xliff:g> колднмсн демейки чалуулар башкаруу колднмсу кыласызбы?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> колдонмосу кирүүчү чалууларды башкара албай калат."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> колдонмосу байланыштарыңызда болбогон чалуучулардын маалыматтарын көрүп, чалууларды бөгөттөй алат. Демейки кирүүчү чалууларды башкаруу үчүн ишеничтүү колдонмолорду гана пайдалануу керек."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"Демейки шартта колдонуу"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"Жок"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"Бөгөттөлгөн номерлер"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"Бөгөттөлгөн номерлерден эч ким чалып же билдирүү жөнөтө албайт."</string>
+ <string name="block_number" msgid="3784343046852802722">"Номер кошуу"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"<xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g> бөгөттөн чыгарылсынбы?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"Бөгөттөн чыгаруу"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"Төмөнкү номерден келген чалуулар менен SMS билдирүүлөрүн бөгөттөө"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"Телефон номери"</string>
+ <string name="block_button" msgid="485080149164258770">"Бөгөттөө"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"Бөгөттөлгөн номерлерди түзмөк ээси гана көрүп жана башкара алат."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"Бөгөттөн чыгаруу"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"Бөгөттөө функциясы убактылуу өчүк"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"Өзгөчө кырдаалдар кызматынын номерин терип же ошол номерге билдирүү жөнөтүлгөндөн кийин түзмөк бөгөттөн чыгарылат."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"Кайра жандыруу"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> бөгөттөлдү"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> бөгөттөн чыгарылды"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"Өзгөчө кырдаал кызматынын номери бөгөттөлбөй жатат."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> мурунтан эле бөгөттөлгөн."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"Чалууларды аткаруу үчүн жеке тергич колдонулууда"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"<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="5795968314037063900">"<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="8653544281903986641">"Бул чалууга жооп берсеңиз, <xliff:g id="CALL_VIA">%1$s</xliff:g> чалууңуз бүтүп калат"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"Бул чалууга жооп берсеңиз, <xliff:g id="CALL_VIA">%1$s</xliff:g> чалууларыңыз бүтүп калат"</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"Чалууга жооп берсеңиз, <xliff:g id="CALL_VIA">%1$s</xliff:g> видео чалууңуз бүтүп калат"</string>
+ <string name="answering_ends_other_managed_call" msgid="4031778317409881805">"Бул чалууга жооп берсеңиз, учурдагы чалууңуз бүтүп калат"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"Бул чалууга жооп берсеңиз, учурдагы чалууларыңыз бүтүп калат"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"Чалууга жооп берсеңиз, учурдагы видео чалууңуз бүтүп калат"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"Жооп берүү"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"Четке кагуу"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"Бул түрдөгү чалуударды колдоого алган чалуу аккаунттары жок болгондуктан, чалуу аткарылбай койду."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"Учурда <xliff:g id="OTHER_CALL">%1$s</xliff:g> чалууңуздан улам, башка жерге чала албайсыз."</string>
+ <string name="cant_call_due_to_ongoing_calls" msgid="6379163795277824868">"Учурда <xliff:g id="OTHER_CALL">%1$s</xliff:g> чалууларыңуздан улам, башка жерге чала албайсыз."</string>
+ <string name="cant_call_due_to_ongoing_unknown_call" msgid="8243532328969433172">"Башка колдонмодо чалып жатасыз, ошондуктан чала албайсыз."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"Кирүүчү чалуулар"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"Кабыл алынбаган чалуулар"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"Чалууну бөгөттөө"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"Эгер чалып баштасаңыз, <xliff:g id="OTHER_APP">%1$s</xliff:g> чалууңуз аяктайт."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Чалуу жолун тандаңыз"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"<xliff:g id="OTHER_APP">%1$s</xliff:g> аркылуу чалуу багытын буруу"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"Телефон номерим аркылуу чалуу"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"<xliff:g id="OTHER_APP">%1$s</xliff:g>аркылуу чалынбайт. Чалууну башка дарекке багыттоочу колдонмону колдонуп көрүңүз же жардам алуу үчүн иштеп чыгуучу менен байланышыңыз."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"Чалууну бөгөттөө"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"Номерлер Байланыштар тизмесинде жок"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"Байланыштар тизмеңизде болбогон номерлерди бөгөттөңүз"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"Купуя"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"Номерин көрсөтпөгөн чалуучуларды бөгөттөө"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"Телефон-автомат"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"Телефон-автоматтардан келген чалууларды бөгөттөө"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"Белгисиз"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"Белгисиз чалуучуларды бөгөттөө"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"Чалууну бөгөттөө"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"Чалууну бөгөттөө өчүрүлдү"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"Шашылыш чалуу аткарылды"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"Өзгөчө кырдаалдардагы кызматчылар сиз менен байланышуусу үчүн чалууну бөгөттөө функциясы өчүрүлгөн."</string>
+ <string name="developer_title" msgid="9146088855661672353">"Telecom иштеп чыгуучусунун менюсу"</string>
</resources>
diff --git a/res/values-lo/strings.xml b/res/values-lo/strings.xml
index 4c7ec9e..f37832f 100644
--- a/res/values-lo/strings.xml
+++ b/res/values-lo/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"ການຈັດການການໂທ"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"ໂທລະສັບ"</string>
- <string name="unknown" msgid="6878797917991465859">"ບໍ່ຮູ້ຈັກ"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"ສາຍທີ່ບໍ່ໄດ້ຮັບ"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"ສາຍບໍ່ໄດ້ຮັບຈາກບ່ອນເຮັດວຽກ"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"ສາຍທີ່ບໍ່ໄດ້ຮັບ"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> ສາຍບໍ່ໄດ້ຮັບ"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"ສາຍທີ່ບໍ່ໄດ້ຮັບຈາກ <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"ໂທກັບ"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"ຂໍ້ຄວາມ"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"ປິດສຽງການໂທແລ້ວ."</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"ເປີດລຳໂພງແລ້ວ."</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"ບໍ່ສາມາດລົມໄດ້ໃນຕອນນີ້. ມີຫຍັງບໍ່?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"ຂ້ອຍຈະໂທກັບຫາເຈົ້າທັນທີ."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"ຂ້ອຍຈະໂທຫາເຈົ້ານຳຫຼັງ."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"ຕອນນີ້ລົມບໍ່ໄດ້ເທື່ອ. ເຈົ້າຄ່ອຍໂທຫາຂ້ອຍໃໝ່ໄດ້ບໍ່?"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"ຕອບກັບດ່ວນ"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"ແກ້ໄຂຂໍ້ຄວາມຕອບກັບດ່ວນ"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"ຕອບກັບດ່ວນ"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"ສົ່ງຂໍ້ຄວາມຫາ <xliff:g id="PHONE_NUMBER">%s</xliff:g> ແລ້ວ."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"ບັນຊີໂທ"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"ອະນຸຍາດໃຫ້ໂທສຸກເສີນເທົ່ານັ້ນ."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"ແອັບພລິເຄຊັນນີ້ບໍ່ສາມາດໂທອອກໄດ້ ໂດຍບໍ່ມີການອະນຸຍາດຂອງໂທລະສັບ."</string>
- <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">"ບໍ່ມີເບີຂໍ້ຄວາມສຽງຖືກບັນທຶກໃນ SIM card."</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>
- <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="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_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>
- <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_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_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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"ສາຍໂທເຂົ້າ"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"ສາຍບໍ່ໄດ້ຮັບ"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"ການບລັອກສາຍ"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"ການໂທສາຍນີ້ຈະເປັນການສິ້ນສຸດສາຍ <xliff:g id="OTHER_APP">%1$s</xliff:g> ຂອງທ່ານ."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"ການບລັອກສາຍ"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"ເບີໂທບໍ່ໄດ້ຢູ່ໃນລາຍຊື່ຜູ້ຕິດຕໍ່"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"ບລັອກເບີໂທທີ່ບໍ່ຢູ່ໃນລາຍຊື່ຜູ້ຕິດຕໍ່ຂອງທ່ານ"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"ສ່ວນຕົວ"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"ບລັອກຜູ້ໂທທີ່ບໍ່ສະແດງເບີໂທຂອງເຂົາເຈົ້າ"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"ຕູ້ໂທ"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"ບລັອກສາຍຈາກຕູ້ໂທ"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"ບໍ່ຮູ້ຈັກ"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"ບລັອກສາຍຈາກຜູ້ໂທທີ່ລະບຸຕົວຕົນບໍ່ໄດ້"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"ການບລັອກສາຍ"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"ປິດການບລັອກສາຍແລ້ວ"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"ໂທສຸກເສີນແລ້ວ"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"ປິດການບລັອກສາຍແລ້ວເພື່ອອະນຸຍາດໃຫ້ສາຍສຸກເສີນສາມາດຕິດຕໍ່ຫາທ່ານໄດ້."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"ການຈັດການການໂທ"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"ໂທລະສັບ"</string>
+ <string name="unknown" msgid="6993977514360123431">"ບໍ່ຮູ້ຈັກ"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"ສາຍທີ່ບໍ່ໄດ້ຮັບ"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"ສາຍບໍ່ໄດ້ຮັບຈາກບ່ອນເຮັດວຽກ"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"ສາຍທີ່ບໍ່ໄດ້ຮັບ"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> ສາຍບໍ່ໄດ້ຮັບ"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"ສາຍທີ່ບໍ່ໄດ້ຮັບຈາກ <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"ໂທກັບ"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"ຂໍ້ຄວາມ"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"ປິດສຽງການໂທແລ້ວ."</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"ເປີດລຳໂພງແລ້ວ."</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"ບໍ່ສາມາດລົມໄດ້ໃນຕອນນີ້. ມີຫຍັງບໍ່?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"ຂ້ອຍຈະໂທກັບຫາເຈົ້າທັນທີ."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"ຂ້ອຍຈະໂທຫາເຈົ້ານຳຫຼັງ."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"ຕອນນີ້ລົມບໍ່ໄດ້ເທື່ອ. ເຈົ້າຄ່ອຍໂທຫາຂ້ອຍໃໝ່ໄດ້ບໍ່?"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"ຕອບກັບດ່ວນ"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"ແກ້ໄຂຂໍ້ຄວາມຕອບກັບດ່ວນ"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"ຕອບກັບດ່ວນ"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"ສົ່ງຂໍ້ຄວາມຫາ <xliff:g id="PHONE_NUMBER">%s</xliff:g> ແລ້ວ."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"ສົ່ງຂໍ້ຄວາມໄປຫາ <xliff:g id="PHONE_NUMBER">%s</xliff:g> ບໍ່ສຳເລັດ."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"ບັນຊີໂທ"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"ອະນຸຍາດໃຫ້ໂທສຸກເສີນເທົ່ານັ້ນ."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"ແອັບພລິເຄຊັນນີ້ບໍ່ສາມາດໂທອອກໄດ້ ໂດຍບໍ່ມີການອະນຸຍາດຂອງໂທລະສັບ."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"ເພື່ອທີ່ຈະໂທ, ປ້ອນເບີໂທທີ່ໃຊ້ໄດ້ເຂົ້າໄປ."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"ບໍ່ສາມາດເພີ່ມການໂທໄດ້ໃນເວລານີ້."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"ບໍ່ມີເບີຂໍ້ຄວາມສຽງ"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"ບໍ່ມີເບີຂໍ້ຄວາມສຽງຖືກບັນທຶກໃນ SIM card."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"ເພີ່ມໝາຍເລກ"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"ຕັ້ງໃຫ້ <xliff:g id="NEW_APP">%s</xliff:g> ເປັນແອັບໂທລະສັບເລີ່ມຕົ້ນຂອງທ່ານບໍ?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"ຕັ້ງເປັນຄ່າເລີ່ມຕົ້ນ"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"ຍົກເລີກ"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> ຈະສາມາດໂທ ແລະ ຄວບຄຸມທຸກແງ່ມຸມຂອງການໂທຕ່າງໆໄດ້. ທ່ານຄວນຕັ້ງໃຫ້ແອັບໂທລະສັບທີ່ທ່ານໄວ້ໃຈໄດ້ເທົ່ານັ້ນເປັນແອັບເລີ່ມຕົ້ນ."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"ຕັ້ງ <xliff:g id="NEW_APP">%s</xliff:g> ເປັນແອັບກວດສອບການໂທເລີ່ມຕົ້ນຂອງທ່ານບໍ?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> ຈະບໍ່ສາມາດກວດສອບການສາຍໄດ້ອີກຕໍ່ໄປ."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> ຈະສາມາດເບິ່ງເຫັນຂໍ້ມູນກ່ຽວກັບຜູ້ໂທທີ່ບໍ່ໄດ້ຢູ່ໃນລາຍຊື່ຜູ້ຕິດຕໍ່ຂອງທ່ານ ແລະ ຈະສາມາດບລັອກສາຍເຫຼົ່ານີ້ໄດ້. ທ່ານຄວນຕັ້ງແອັບກວດສອບການໂທເລີ່ມຕົ້ນທີ່ທ່ານເຊື່ອຖືເທົ່ານັ້ນ."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"ຕັ້ງເປັນຄ່າເລີ່ມຕົ້ນ"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"ຍົກເລີກ"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"ເບີໂທລະສັບທີ່ບລັອກໄວ້"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"ທ່ານຈະບໍ່ໄດ້ຮັບສາຍ ຫຼື ຂໍ້ຄວາມຈາກເບີທີ່ບລັອກໄວ້."</string>
+ <string name="block_number" msgid="3784343046852802722">"ເພີ່ມເບີໂທລະສັບ"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"ຍົກເລີກການບລັອກ <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g> ບໍ?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"ຍົກເລີກການບລັອກ"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"ບລັອກການໂທ ແລະ ຂໍ້ຄວາມຈາກ"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"ເບີໂທລະສັບ"</string>
+ <string name="block_button" msgid="485080149164258770">"ບລັອກ"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"ມີແຕ່ເຈົ້າຂອງອຸປະກອນເທົ່ານັ້ນທີ່ສາມາດເບິ່ງ ແລະ ຈັດການເບີທີ່ຖືກບລັອກໄວ້."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"ຍົກເລີກການບລັອກ"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"ຍົກເລີກການບລັອກຊົ່ວຄາວ"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"ຫຼັງຈາກທີ່ທ່ານໂທ ຫຼື ສົ່ງຂໍ້ຄວາມຫາເບີສຸກເສີນໃດໜຶ່ງແລ້ວ, ການບລັອກຈະຖືກປິດໄວ້ເພື່ອໃຫ້ແນ່ໃຈວ່າບໍລິການສຸກເສີນດັ່ງກ່າວຈະສາມາດຕິດຕໍ່ຫາທ່ານໄດ້."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"ເປີດໃຊ້ຄືນໃໝ່ດຽວນີ້"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"ບລັອກ <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> ແລ້ວ"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"ປົດບລັອກ <xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> ແລ້ວ"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"ບໍ່ສາມາດບລັອກເບີໂທສຸກເສີນໄດ້."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> ຖືກບລັອກຢູ່ກ່ອນແລ້ວ."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"ໃຊ້ແປ້ນໂທສ່ວນຕົວເພື່ອໂທອອກ"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"<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="5795968314037063900">"<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="8653544281903986641">"ການຮັບສາຍຈະເປັນການວາງສາຍ <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"ການຮັບສາຍຈະເປັນການວາງສາຍ <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"ການຮັບສາຍຈະເປັນການວາງສາຍວິດີໂອ <xliff:g id="CALL_VIA">%1$s</xliff:g> ຂອງທ່ານ"</string>
+ <string name="answering_ends_other_managed_call" msgid="4031778317409881805">"ການຮັບສາຍຈະເປັນການວາງສາຍທີ່ທ່ານກຳລັງໂທອອກ"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"ການຮັບສາຍຈະເປັນການວາງສາຍທີ່ທ່ານກຳລັງໂທອອກ"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"ການຮັບສາຍຈະເປັນການວາງສາຍວິດີໂອທີ່ທ່ານກຳລັງໂທອອກ"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"ຮັບສາຍ"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"ປະຕິເສດ"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"ບໍ່ສາມາດໂທໄດ້ເນື່ອງຈາກບໍ່ມີບັນຊີການໂທທີ່ຮອງຮັບການໂທປະເພດນີ້."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"ບໍ່ສາມາດໂທອອກໄດ້ເນື່ອງຈາກການໂທ <xliff:g id="OTHER_CALL">%1$s</xliff:g> ຂອງທ່ານ"</string>
+ <string name="cant_call_due_to_ongoing_calls" msgid="6379163795277824868">"ບໍ່ສາມາດໂທອອກໄດ້ເນື່ອງຈາກການໂທ <xliff:g id="OTHER_CALL">%1$s</xliff:g> ຂອງທ່ານ"</string>
+ <string name="cant_call_due_to_ongoing_unknown_call" msgid="8243532328969433172">"ບໍ່ສາມາດໂທອອກໄດ້ເນື່ອງຈາກສາຍໃນແອັບອື່ນ."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"ສາຍໂທເຂົ້າ"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"ສາຍບໍ່ໄດ້ຮັບ"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"ການບລັອກສາຍ"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"ການໂທສາຍນີ້ຈະເປັນການສິ້ນສຸດສາຍ <xliff:g id="OTHER_APP">%1$s</xliff:g> ຂອງທ່ານ."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"ເລືອກວິທີໂທສາຍນີ້"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"ປ່ຽນເສັ້ນທາງການໂທໂດຍໃຊ້ <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"ໂທໂດຍໃຊ້ເບີໂທລະສັບຂອງຂ້ອຍ"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"ບໍ່ສາມາດໂທດ້ວຍແອັບ <xliff:g id="OTHER_APP">%1$s</xliff:g> ໄດ້. ກະລຸນາລອງໃຊ້ແອັບການປ່ຽນເສັ້ນທາງການໂທອື່ນ ຫຼື ຕິດຕໍ່ຫາຜູ້ພັດທະນາສຳລັບຄວາມຊ່ວຍເຫຼືອ."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"ການບລັອກສາຍ"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"ເບີໂທບໍ່ໄດ້ຢູ່ໃນລາຍຊື່ຜູ້ຕິດຕໍ່"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"ບລັອກເບີໂທທີ່ບໍ່ຢູ່ໃນລາຍຊື່ຜູ້ຕິດຕໍ່ຂອງທ່ານ"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"ສ່ວນຕົວ"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"ບລັອກຜູ້ໂທທີ່ບໍ່ສະແດງເບີໂທຂອງເຂົາເຈົ້າ"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"ຕູ້ໂທ"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"ບລັອກສາຍຈາກຕູ້ໂທ"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"ບໍ່ຮູ້ຈັກ"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"ບລັອກສາຍຈາກຜູ້ໂທທີ່ລະບຸຕົວຕົນບໍ່ໄດ້"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"ການບລັອກສາຍ"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"ປິດການບລັອກສາຍແລ້ວ"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"ໂທສຸກເສີນແລ້ວ"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"ປິດການບລັອກສາຍແລ້ວເພື່ອອະນຸຍາດໃຫ້ສາຍສຸກເສີນສາມາດຕິດຕໍ່ຫາທ່ານໄດ້."</string>
+ <string name="developer_title" msgid="9146088855661672353">"ເມນູນັກພັດທະນາໂທລະຄົມ"</string>
</resources>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index 4891114..6ce9204 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"Skambučių tvarkymas"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"Telefonas"</string>
- <string name="unknown" msgid="6878797917991465859">"Nežinomas"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"Praleistas skambutis"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"Praleistas darbo skambutis"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Praleisti skambučiai"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> praleisti (-ų) skambučiai (-ų)"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"praleistas skambutis nuo <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Perskambinti"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"Pranešimas"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"Skambutis nutildytas."</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"Garsiakalbis įgalintas."</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"Dabar negaliu kalbėti. Kas nutiko?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"Netrukus perskambinsiu."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Paskambinsiu vėliau."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Dabar negaliu kalb. Pask. vėliau."</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Greiti atsakai"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Redaguoti greitus atsakus"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"Greitas atsakas"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"Pranešimas išsiųstas numeriu <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"Skambinimo paskyros"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"Leidžiami tik skambučiai pagalbos numeriu."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"Naudojant šią programą negalima skambinti be telefono leidimo."</string>
- <string name="outgoing_call_error_no_phone_number_supplied" msgid="1940125199802007505">"Kad galėtumėte paskambinti, įveskite tinkamą numerį."</string>
- <string name="duplicate_video_call_not_allowed" msgid="3749211605014548386">"Šiuo metu dar vieno skambučio atlikti negalima."</string>
- <string name="no_vm_number" msgid="4164780423805688336">"Trūksta balso pašto numerio"</string>
- <string name="no_vm_number_msg" msgid="1300729501030053828">"SIM kortelėje nėra išsaugoto balso pašto numerio."</string>
- <string name="add_vm_number_str" msgid="4676479471644687453">"Pridėti numerį"</string>
- <string name="change_default_dialer_dialog_title" msgid="9101655962941740507">"Nustatyti „<xliff:g id="NEW_APP">%s</xliff:g>“ kaip numatytąją telefono programą?"</string>
- <string name="change_default_dialer_dialog_affirmative" msgid="8606546663509166276">"Nustatyti numatytuosius nustatymus"</string>
- <string name="change_default_dialer_dialog_negative" msgid="9078144617060173845">"Atšaukti"</string>
- <string name="change_default_dialer_warning_message" msgid="1417671460801684999">"„<xliff:g id="NEW_APP">%s</xliff:g>“ galės atlikti ir valdyti įvairius skambučius. Tik patikimą programą turėtumėte nustatyti kaip numatytąją telefono programą."</string>
- <string name="blocked_numbers" msgid="2751843139572970579">"Užblokuoti numeriai"</string>
- <string name="blocked_numbers_msg" msgid="1045015186124965643">"Negausite skambučių ar teksto pranešimų iš užblokuotų numerių."</string>
- <string name="block_number" msgid="1101252256321306179">"Pridėti numerį"</string>
- <string name="unblock_dialog_body" msgid="1614238499771862793">"Panaikinti <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g> blokavimą?"</string>
- <string name="unblock_button" msgid="3078048901972674170">"Atblokuoti"</string>
- <string name="add_blocked_dialog_body" msgid="9030243212265516828">"Blokuoti skambučius ir teksto pranešimus nuo"</string>
- <string name="add_blocked_number_hint" msgid="6847675097085433553">"Telefono numeris"</string>
- <string name="block_button" msgid="8822290682524373357">"Blokuoti"</string>
- <string name="non_primary_user" msgid="5180129233352533459">"Tik įrenginio savininkas gali peržiūrėti ir tvarkyti užblokuotus numerius."</string>
- <string name="delete_icon_description" msgid="8903995728252556724">"Panaikinti blokavimą"</string>
- <string name="blocked_numbers_butter_bar_title" msgid="438170866438793182">"Blokavimo funkcija laikinai išjungta"</string>
- <string name="blocked_numbers_butter_bar_body" msgid="2223244484319442431">"Surinkus pagalbos numerį ar išsiuntus juo pranešimą blokavimo funkcija išjungiama, siekiant užtikrinti, kad pagalbos tarnybos galėtų su jumis susisiekti."</string>
- <string name="blocked_numbers_butter_bar_button" msgid="2197943354922010696">"Dabar įgalinti iš naujo"</string>
- <string name="blocked_numbers_number_blocked_message" msgid="7678509606805029540">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> užblokuotas"</string>
- <string name="blocked_numbers_number_unblocked_message" msgid="977894647366750418">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> blokavimas panaikintas"</string>
- <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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"Gaunamieji skambučiai"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"Praleisti skambučiai"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"Skambučių blokavimas"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"Atliekant šį skambutį bus užbaigtas „<xliff:g id="OTHER_APP">%1$s</xliff:g>“ skambutis."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"Skambučių blokavimas"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"Numerių nėra Kontaktuose"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"Blokuoti Kontaktuose nepateiktus numerius"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"Privatus"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"Blokuoti skambintojus, neatskleidžiančius savo numerių"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"Taksofonas"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"Blokuoti skambučius iš taksofonų"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"Nežinomas"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"Blokuoti skambučius nuo nenustatytų skambintojų"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"Skambučių blokavimas"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"Skambučių blokavimas išjungtas"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"Atliktas skambutis pagalbos numeriu"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"Skambučių blokavimas išjungtas, kad pagalbos numeriu atsiliepusiems žmonėms būtų leidžiama su jumis susisiekti."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"Skambučių tvarkymas"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"Telefonas"</string>
+ <string name="unknown" msgid="6993977514360123431">"Nežinomas"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"Praleistas skambutis"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"Praleistas darbo skambutis"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"Praleisti skambučiai"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> praleisti (-ų) skambučiai (-ų)"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"praleistas skambutis nuo <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"Perskambinti"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"Pranešimas"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"Skambutis nutildytas."</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Garsiakalbis įgalintas."</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Dabar negaliu kalbėti. Kas nutiko?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"Netrukus perskambinsiu."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"Paskambinsiu vėliau."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"Dabar negaliu kalb. Pask. vėliau."</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"Greiti atsakai"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"Redaguoti greitus atsakus"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"Greitas atsakas"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"Pranešimas išsiųstas numeriu <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"Nepavyko išsiųsti pranešimo numeriu <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"Skambinimo paskyros"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"Leidžiami tik skambučiai pagalbos numeriu."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"Naudojant šią programą negalima skambinti be telefono leidimo."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"Kad galėtumėte paskambinti, įveskite tinkamą numerį."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"Šiuo metu dar vieno skambučio atlikti negalima."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"Trūksta balso pašto numerio"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"SIM kortelėje nėra išsaugoto balso pašto numerio."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"Pridėti numerį"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"Nustatyti „<xliff:g id="NEW_APP">%s</xliff:g>“ kaip numatytąją telefono programą?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"Nustatyti numatytuosius nustatymus"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"Atšaukti"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"„<xliff:g id="NEW_APP">%s</xliff:g>“ galės atlikti ir valdyti įvairius skambučius. Tik patikimą programą turėtumėte nustatyti kaip numatytąją telefono programą."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"Nustatyti „<xliff:g id="NEW_APP">%s</xliff:g>“ kaip numat. skambučių stebėjimo programą?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"Naudojant programą „<xliff:g id="OLD_APP">%s</xliff:g>“ nebebus galima stebėti skambučių."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"Programa „<xliff:g id="NEW_APP">%s</xliff:g>“ galės matyti informaciją apie skambintojus, kurių nėra jūsų kontaktuose, ir užblokuoti šiuos skambučius. Tik patikimą programą turėtumėte nustatyti kaip numatytąją skambučių stebėjimo programą."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"Nustatyti kaip numatytąją"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"Atšaukti"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"Užblokuoti numeriai"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"Negausite skambučių ar teksto pranešimų iš užblokuotų numerių."</string>
+ <string name="block_number" msgid="3784343046852802722">"Pridėti numerį"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"Panaikinti <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g> blokavimą?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"Atblokuoti"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"Blokuoti skambučius ir teksto pranešimus nuo"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"Telefono numeris"</string>
+ <string name="block_button" msgid="485080149164258770">"Blokuoti"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"Tik įrenginio savininkas gali peržiūrėti ir tvarkyti užblokuotus numerius."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"Panaikinti blokavimą"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"Blokavimo funkcija laikinai išjungta"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"Surinkus pagalbos numerį ar išsiuntus juo pranešimą blokavimo funkcija išjungiama, siekiant užtikrinti, kad pagalbos tarnybos galėtų su jumis susisiekti."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"Dabar įgalinti iš naujo"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> užblokuotas"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> blokavimas panaikintas"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"Negalima užblokuoti pagalbos numerio."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> jau užblokuotas."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"Asmeninio numerio rinkiklio naudojimas skambinant"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"„<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="5795968314037063900">"„<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="8653544281903986641">"Atsakius bus užbaigtas „<xliff:g id="CALL_VIA">%1$s</xliff:g>“ skambutis"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"Atsakius bus užbaigti „<xliff:g id="CALL_VIA">%1$s</xliff:g>“ skambučiai"</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"Atsakius bus užbaigtas „<xliff:g id="CALL_VIA">%1$s</xliff:g>“ vaizdo skambutis"</string>
+ <string name="answering_ends_other_managed_call" msgid="4031778317409881805">"Atsakius bus užbaigtas vykstantis skambutis"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"Atsakius bus užbaigti vykstantys skambučiai"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"Atsakius bus užbaigtas vykstantis vaizdo skambutis"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"Atsakyti"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"Atmesti"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"Negalima skambinti, nes nėra jokių skambinimo paskyrų, kuriose palaikomi šio tipo skambučiai."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"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="6379163795277824868">"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="8243532328969433172">"Negalima skambinti dėl skambučio kitoje programoje."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"Gaunamieji skambučiai"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"Praleisti skambučiai"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"Skambučių blokavimas"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"Atliekant šį skambutį bus užbaigtas „<xliff:g id="OTHER_APP">%1$s</xliff:g>“ skambutis."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Pasirinkite, kaip norite skambinti"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Peradresuoti skambutį naudojant programą „<xliff:g id="OTHER_APP">%1$s</xliff:g>“"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"Skambinti naudojant mano telefono numerį"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"Negalima skambinti naudojant „<xliff:g id="OTHER_APP">%1$s</xliff:g>“. Pabandykite naudoti kitą skambučių peradresavimo programą arba susisiekite su kūrėju, jei reikia pagalbos."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"Skambučių blokavimas"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"Numerių nėra Kontaktuose"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"Blokuoti Kontaktuose nepateiktus numerius"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"Privatus"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"Blokuoti skambintojus, neatskleidžiančius savo numerių"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"Taksofonas"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"Blokuoti skambučius iš taksofonų"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"Nežinomas"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"Blokuoti skambučius nuo nenustatytų skambintojų"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"Skambučių blokavimas"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"Skambučių blokavimas išjungtas"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"Atliktas skambutis pagalbos numeriu"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"Skambučių blokavimas išjungtas, kad pagalbos numeriu atsiliepusiems žmonėms būtų leidžiama su jumis susisiekti."</string>
+ <string name="developer_title" msgid="9146088855661672353">"Telekomunikacijų kūrėjų meniu"</string>
</resources>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index 8b8d36a..b73e67a 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"Zvanu pārvaldība"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"Tālrunis"</string>
- <string name="unknown" msgid="6878797917991465859">"Nezināms"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"Neatbildēts zvans"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"Neatbildēts darba zvans"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Neatbildētie zvani"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> neatbildēts(-i) zvans(-i)"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"Neatbildēts zvans no: <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Atzvanīt"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"Ziņojums"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"Zvana skaņa ir izslēgta."</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"Skaļrunis ir iespējots."</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"Nevaru runāt. Kas gadījās?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"Tūlīt atzvanīšu."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Piezvanīšu vēlāk."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Nevaru runāt. Vai piezvanīsi vēlāk?"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Ātrās atbildes"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Ātro atbilžu rediģēšana"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"Ātrā atbilde"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"Ziņojums nosūt. uz šādu tālr. nr.: <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"Zvanu konti"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"Ir atļauti tikai ārkārtas zvani."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"Šajā lietojumprogrammā nevar veikt izejošos zvanus bez tālruņa atļaujas."</string>
- <string name="outgoing_call_error_no_phone_number_supplied" msgid="1940125199802007505">"Lai veiktu zvanu, ievadiet derīgu numuru."</string>
- <string name="duplicate_video_call_not_allowed" msgid="3749211605014548386">"Šobrīd nevar pievienot zvanu."</string>
- <string name="no_vm_number" msgid="4164780423805688336">"Trūkst balss pasta numura"</string>
- <string name="no_vm_number_msg" msgid="1300729501030053828">"SIM kartē neviens balss pasta numurs nav saglabāts."</string>
- <string name="add_vm_number_str" msgid="4676479471644687453">"Pievienot numuru"</string>
- <string name="change_default_dialer_dialog_title" msgid="9101655962941740507">"Vai iestatīt <xliff:g id="NEW_APP">%s</xliff:g> kā tālruņa noklusējuma lietotni?"</string>
- <string name="change_default_dialer_dialog_affirmative" msgid="8606546663509166276">"Iestatīt kā noklusējumu"</string>
- <string name="change_default_dialer_dialog_negative" msgid="9078144617060173845">"Atcelt"</string>
- <string name="change_default_dialer_warning_message" msgid="1417671460801684999">"Lietotne <xliff:g id="NEW_APP">%s</xliff:g> varēs veikt zvanus un kontrolēt visas zvanu funkcijas. Tālruņa noklusējuma lietotnes iestatīšanai izmantojiet tikai uzticamas lietotnes."</string>
- <string name="blocked_numbers" msgid="2751843139572970579">"Bloķētie numuri"</string>
- <string name="blocked_numbers_msg" msgid="1045015186124965643">"Jūs nesaņemsiet zvanus vai īsziņas no bloķētajiem numuriem."</string>
- <string name="block_number" msgid="1101252256321306179">"Pievienot numuru"</string>
- <string name="unblock_dialog_body" msgid="1614238499771862793">"Vai atbloķēt numuru <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
- <string name="unblock_button" msgid="3078048901972674170">"Atbloķēt"</string>
- <string name="add_blocked_dialog_body" msgid="9030243212265516828">"Bloķēt ienākošos zvanus un īsziņas no numura"</string>
- <string name="add_blocked_number_hint" msgid="6847675097085433553">"Tālruņa numurs"</string>
- <string name="block_button" msgid="8822290682524373357">"Bloķēt"</string>
- <string name="non_primary_user" msgid="5180129233352533459">"Tikai ierīces īpašnieks var skatīt un pārvaldīt bloķētos numurus."</string>
- <string name="delete_icon_description" msgid="8903995728252556724">"Atbloķēt"</string>
- <string name="blocked_numbers_butter_bar_title" msgid="438170866438793182">"Bloķēšana īslaicīgi izslēgta"</string>
- <string name="blocked_numbers_butter_bar_body" msgid="2223244484319442431">"Pēc avārijas dienesta numura sastādīšanas vai īsziņas sūtīšanas uz to tiek izslēgta bloķēšana, lai avārijas dienesti varētu ar jums sazināties."</string>
- <string name="blocked_numbers_butter_bar_button" msgid="2197943354922010696">"Atkārtoti iespējot tūlīt"</string>
- <string name="blocked_numbers_number_blocked_message" msgid="7678509606805029540">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> bloķēts"</string>
- <string name="blocked_numbers_number_unblocked_message" msgid="977894647366750418">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> atbloķēts"</string>
- <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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"Ienākošie zvani"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"Neatbildētie zvani"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"Zvanu bloķēšana"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"Veicot šo zvanu, tiks beigts zvans lietotnē <xliff:g id="OTHER_APP">%1$s</xliff:g>."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"Zvanu bloķēšana"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"Numuri, kas nav ietverti kontaktpersonu sarakstā"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"Bloķēt numurus, kas nav ietverti kontaktpersonu sarakstā"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"Privāts"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"Bloķēt zvanītājus, kas neatklāj savu numuru"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"Taksofons"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"Bloķēt zvanus no taksofoniem"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"Nezināms"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"Bloķēt zvanus no neidentificētiem zvanītājiem"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"Zvanu bloķēšana"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"Zvanu bloķēšana atspējota"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"Ārkārtas zvans ir veikts"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"Zvanu bloķēšana ir atspējota, lai ļautu ar jums sazināties avārijas dienestu darbiniekiem."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"Zvanu pārvaldība"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"Tālrunis"</string>
+ <string name="unknown" msgid="6993977514360123431">"Nezināms"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"Neatbildēts zvans"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"Neatbildēts darba zvans"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"Neatbildētie zvani"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> neatbildēts(-i) zvans(-i)"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"Neatbildēts zvans no: <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"Atzvanīt"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"Ziņojums"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"Zvana skaņa ir izslēgta."</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Skaļrunis ir iespējots."</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Nevaru runāt. Kas gadījās?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"Tūlīt atzvanīšu."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"Piezvanīšu vēlāk."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"Nevaru runāt. Vai piezvanīsi vēlāk?"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"Ātrās atbildes"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"Ātro atbilžu rediģēšana"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"Ātrā atbilde"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"Ziņojums nosūt. uz šādu tālr. nr.: <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"Neizdevās nosūtīt ziņojumu uz numuru <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"Zvanu konti"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"Ir atļauti tikai ārkārtas zvani."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"Šajā lietojumprogrammā nevar veikt izejošos zvanus bez tālruņa atļaujas."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"Lai veiktu zvanu, ievadiet derīgu numuru."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"Šobrīd nevar pievienot zvanu."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"Trūkst balss pasta numura"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"SIM kartē neviens balss pasta numurs nav saglabāts."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"Pievienot numuru"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"Vai iestatīt <xliff:g id="NEW_APP">%s</xliff:g> kā tālruņa noklusējuma lietotni?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"Iestatīt kā noklusējumu"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"Atcelt"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"Lietotne <xliff:g id="NEW_APP">%s</xliff:g> varēs veikt zvanus un kontrolēt visas zvanu funkcijas. Tālruņa noklusējuma lietotnes iestatīšanai izmantojiet tikai uzticamas lietotnes."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"Iestatīt <xliff:g id="NEW_APP">%s</xliff:g> kā zvanu pārvaldības noklusējuma lietotni?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"Lietotne <xliff:g id="OLD_APP">%s</xliff:g> vairs nevarēs pārvaldīt zvanus."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"Lietotne <xliff:g id="NEW_APP">%s</xliff:g> varēs skatīt informāciju par zvanītājiem, kas nav jūsu kontaktpersonu sarakstā, kā arī varēs bloķēt zvanus no šiem zvanītājiem. Zvanu pārvaldības noklusējuma lietotnes iestatīšanai izmantojiet tikai uzticamas lietotnes."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"Iestatīt kā noklusējumu"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"Atcelt"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"Bloķētie numuri"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"Jūs nesaņemsiet zvanus vai īsziņas no bloķētajiem numuriem."</string>
+ <string name="block_number" msgid="3784343046852802722">"Pievienot numuru"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"Vai atbloķēt numuru <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"Atbloķēt"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"Bloķēt ienākošos zvanus un īsziņas no numura"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"Tālruņa numurs"</string>
+ <string name="block_button" msgid="485080149164258770">"Bloķēt"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"Tikai ierīces īpašnieks var skatīt un pārvaldīt bloķētos numurus."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"Atbloķēt"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"Bloķēšana īslaicīgi izslēgta"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"Pēc avārijas dienesta numura sastādīšanas vai īsziņas sūtīšanas uz to tiek izslēgta bloķēšana, lai avārijas dienesti varētu ar jums sazināties."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"Atkārtoti iespējot tūlīt"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> bloķēts"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> atbloķēts"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"Ārkārtas numuru nevar bloķēt."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> jau ir bloķēts."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"Zvans tiek veikts, izmantojot personisko numura sastādītāju"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"<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="5795968314037063900">"<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="8653544281903986641">"Atbildot uz zvanu, tiks beigts <xliff:g id="CALL_VIA">%1$s</xliff:g> zvans"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"Atbildot uz zvanu, tiks beigti <xliff:g id="CALL_VIA">%1$s</xliff:g> zvani"</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"Atbildot uz zvanu, tiks beigts <xliff:g id="CALL_VIA">%1$s</xliff:g> videozvans"</string>
+ <string name="answering_ends_other_managed_call" msgid="4031778317409881805">"Atbildot uz zvanu, tiks beigts pašreizējais zvans"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"Atbildot uz zvanu, tiks beigti pašreizējie zvani"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"Atbildot uz zvanu, tiks beigts pašreizējais videozvans"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"Atbildēt"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"Noraidīt"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"Nevar veikt zvanu, jo ierīcē nav neviena zvanu konta, kurā tiktu atbalstīti šī veida zvani."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"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="6379163795277824868">"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="8243532328969433172">"Nevar veikt zvanu citā lietotnē notiekoša zvana dēļ."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"Ienākošie zvani"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"Neatbildētie zvani"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"Zvanu bloķēšana"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"Veicot šo zvanu, tiks beigts zvans lietotnē <xliff:g id="OTHER_APP">%1$s</xliff:g>."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Izvēlieties, kā veikt šo zvanu"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Novirzīt zvanu, izmantojot lietotni <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"Zvanīt, izmantojot manu tālruņa numuru"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"Zvanu nevar veikt lietotnē <xliff:g id="OTHER_APP">%1$s</xliff:g>. Mēģiniet izmantot citu zvanu pāradresācijas lietotni vai sazināties ar izstrādātāju, lai saņemtu palīdzību."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"Zvanu bloķēšana"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"Numuri, kas nav ietverti kontaktpersonu sarakstā"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"Bloķēt numurus, kas nav ietverti kontaktpersonu sarakstā"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"Privāts"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"Bloķēt zvanītājus, kas neatklāj savu numuru"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"Taksofons"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"Bloķēt zvanus no taksofoniem"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"Nezināms"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"Bloķēt zvanus no neidentificētiem zvanītājiem"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"Zvanu bloķēšana"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"Zvanu bloķēšana atspējota"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"Ārkārtas zvans ir veikts"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"Zvanu bloķēšana ir atspējota, lai ļautu ar jums sazināties avārijas dienestu darbiniekiem."</string>
+ <string name="developer_title" msgid="9146088855661672353">"Telecom izstrādātāja izvēlne"</string>
</resources>
diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml
index 6fcfa2a..566c1e7 100644
--- a/res/values-mk/strings.xml
+++ b/res/values-mk/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"Управување со повик"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"Телефон"</string>
- <string name="unknown" msgid="6878797917991465859">"Непознато"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"Пропуштен повик"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"Пропуштен работен повик"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Пропуштени повици"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> пропуштени повици"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"Пропуштен повик од <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Повикува назад"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"Порака"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"Повикот е со исклучен звук"</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"Интерфонот е овозможен."</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"Не можам да зборувам сега. Што има?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"Веднаш ќе ти се јавам."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Ќе ти се јавам подоцна."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Не можам да зборувам сега. Јави ми се подоцна?"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Брзи одговори"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Измени брзи одговори"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"Брз одговор"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"Порака е испратена на <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"Сметки за повици"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"Дозволени се само итни повици."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"Оваа апликација не може да прави појдовни повици без дозволата Телефон."</string>
- <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">"Нема мемориран број на говорна пошта на SIM картичката."</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>
- <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="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_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>
- <string name="blocked_numbers_butter_bar_title" msgid="438170866438793182">"Блокирањето е привремено исклучено"</string>
- <string name="blocked_numbers_butter_bar_body" msgid="2223244484319442431">"Откако ќе повикате или ќе испратите SMS на број за итни случаи, блокирањето се исклучува за да може да ве контактираат службите за итни случаи."</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_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_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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"Дојдовни повици"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"Пропуштени повици"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"Блокирање повици"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"Ако се воспостави повиков, вашиот повик на <xliff:g id="OTHER_APP">%1$s</xliff:g> ќе заврши."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"Блокирање повици"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"Броеви што не се наведени во „Контакти“"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"Блокирани броеви што не се наведени во вашите „Контакти“"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"Приватно"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"Блокирај повикувачи со сокриен број"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"Телефонска говорница"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"Блокирај повици од телефонски говорници"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"Непознато"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"Блокирај повици од неидентификувани повикувачи"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"Блокирање повици"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"Блокирањето повици е оневозможено"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"Воспоставен е итен повик"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"Блокирањето повици е оневозможено за да им се овозможи на лицата од службите за итни случаи да контактираат со вас."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"Управување со повик"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"Телефон"</string>
+ <string name="unknown" msgid="6993977514360123431">"Непознато"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"Пропуштен повик"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"Пропуштен работен повик"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"Пропуштени повици"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> пропуштени повици"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"Пропуштен повик од <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"Повикува назад"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"Порака"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"Повикот е со исклучен звук"</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Интерфонот е овозможен."</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Не можам да зборувам сега. Што има?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"Веднаш ќе ти се јавам."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"Ќе ти се јавам подоцна."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"Не можам да зборувам сега. Јави ми се подоцна?"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"Брзи одговори"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"Измени брзи одговори"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"Брз одговор"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"Порака е испратена на <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"Пораката не можеше да се испрати на <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"Сметки за повици"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"Дозволени се само итни повици."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"Оваа апликација не може да прави појдовни повици без дозволата Телефон."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"За да повикате, внесете важечки број."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"Повикот не може да се додаде во моментов."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"Недостасува број на говорна пошта"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"Нема мемориран број на говорна пошта на SIM картичката."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"Додај број"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"Да се направи <xliff:g id="NEW_APP">%s</xliff:g> ваша стандардна апликација Телефон?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"Поставете стандардна"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"Откажете"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> ќе може да ги поставува и контролира сите аспекти на повикувањето. Само апликации на кои им веруваш треба да се поставуваат како стандардната апликација Телефон."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"Да се направи <xliff:g id="NEW_APP">%s</xliff:g> стандардна аплик. за анализирање повици?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> веќе нема да може да анализира повици."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> ќе може да гледа информации за повикувачи што не се во вашите контакти и ќе може да ги блокира таквите повици. Само доверливи апликации треба да се постават како стандардни апликации за анализирање повици."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"Постави стандардна"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"Откажи"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"Блокирани броеви"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"Нема да добивате повици или SMS од блокирани броеви."</string>
+ <string name="block_number" msgid="3784343046852802722">"Додај број"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"Да се одблокира <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"Одблокирај"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"Блокирај повици и пораки од"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"Телефонски број"</string>
+ <string name="block_button" msgid="485080149164258770">"Блокирај"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"Само сопственикот на уредот може да ги прикаже и да управува со блокираните броеви."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"Одблокирај"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"Блокирањето е привремено исклучено"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"Откако ќе повикате или ќе испратите SMS на број за итни случаи, блокирањето се исклучува за да може да ве контактираат службите за итни случаи."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"Овозможи сега повторно"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> е блокиран"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> е одблокиран"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"Бројот за итни случаи не може да се блокира."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> е веќе блокиран."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"Користење на личниот бирач за остварување повик"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"Повик на <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="5795968314037063900">"Видеоповик на <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="8653544281903986641">"Ако одговорите, ќе се прекине вашиот повик на <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"Ако одговорите, ќе се прекинат вашите повици на <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"Ако одговорите, ќе се прекине вашиот видеоповик на <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+ <string name="answering_ends_other_managed_call" msgid="4031778317409881805">"Ако одговорите, ќе се прекине вашиот тековен повик"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"Ако одговорите, ќе се прекинат вашите тековни повици"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"Ако одговорите, ќе се прекине вашиот тековен видеоповик"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"Одговорете"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"Одбијте"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"Повикот не може да се воспостави затоа што нема сметки за повикување што поддржуваат ваков тип повици."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"Не може да се воспостави повик поради вашиот повик на <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+ <string name="cant_call_due_to_ongoing_calls" msgid="6379163795277824868">"Не може да се воспостави повик поради вашите повици на <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+ <string name="cant_call_due_to_ongoing_unknown_call" msgid="8243532328969433172">"Не може да се воспостави повик поради вашиот повик на друга апликација."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"Дојдовни повици"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"Пропуштени повици"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"Блокирање повици"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"Ако се воспостави повиков, вашиот повик на <xliff:g id="OTHER_APP">%1$s</xliff:g> ќе заврши."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Изберете како да се воспостави повиков"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Пренасочи го повикот со <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"Повикај со мојот телефонски број"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"Не може да се воспостави повик со <xliff:g id="OTHER_APP">%1$s</xliff:g>. Обидете се со друга апликација за пренасочување повици или пак, контактирајте со програмерот за помош."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"Блокирање повици"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"Броеви што не се наведени во „Контакти“"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"Блокирани броеви што не се наведени во вашите „Контакти“"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"Приватно"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"Блокирај повикувачи со сокриен број"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"Телефонска говорница"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"Блокирај повици од телефонски говорници"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"Непознато"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"Блокирај повици од неидентификувани повикувачи"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"Блокирање повици"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"Блокирањето повици е оневозможено"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"Воспоставен е итен повик"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"Блокирањето повици е оневозможено за да им се овозможи на лицата од службите за итни случаи да контактираат со вас."</string>
+ <string name="developer_title" msgid="9146088855661672353">"Програмерско мени за телекомуникации"</string>
</resources>
diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml
index 6547a3c..65fbf46 100644
--- a/res/values-ml/strings.xml
+++ b/res/values-ml/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"കോൾ മാനേജുമെന്റ്"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"ഫോണ്"</string>
- <string name="unknown" msgid="6878797917991465859">"അജ്ഞാതം"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"മിസ്ഡ് കോൾ"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"മിസ്ഡ് ഔദ്യോഗിക കോൾ"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"മിസ്ഡ് കോളുകൾ"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> മിസ്ഡ് കോളുകൾ"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g> എന്നതിൽ നിന്നുള്ള മിസ്ഡ് കോൾ"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"കോൾബാക്ക്"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"സന്ദേശം"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"കോൾ നിശബ്ദമാക്കി."</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"സ്പീക്കർഫോൺ പ്രവർത്തനക്ഷമമാക്കി."</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"ഇപ്പോൾ സംസാരിക്കാനാകില്ല. എന്തുചെയ്യുന്നു?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"ഞാൻ നിങ്ങളെ ഉടൻ തിരിച്ചുവിളിക്കാം."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"ഞാൻ നിങ്ങളെ പിന്നീട് വിളിക്കാം."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"ഇപ്പോൾ സംസാരിക്കാനാകില്ല. എന്നെ പിന്നീട് വിളിക്കാമോ?"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"അതിവേഗ പ്രതികരണങ്ങൾ"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"പ്രതികരണം എഡിറ്റുചെയ്യൂ"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"ദ്രുത പ്രതികരണം"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"<xliff:g id="PHONE_NUMBER">%s</xliff:g> എന്നതിലേക്ക് സന്ദേശമയച്ചു."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"കോളിംഗ് അക്കൗണ്ട്"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"അടിയന്തിര കോളുകൾ മാത്രമേ അനുവദിച്ചിട്ടുള്ളൂ."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"ഫോൺ അനുമതിയില്ലാതെ ഈ അപ്ലിക്കേഷന് ഔട്ട്ഗോയിംഗ് കോളുകൾ വിളിക്കാൻ കഴിയില്ല."</string>
- <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="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>
- <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="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_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>
- <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_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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"ഇൻകമിംഗ് കോളുകൾ"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"മിസ്ഡ് കോളുകൾ"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"കോൾ ബ്ലോക്ക് ചെയ്യൽ"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"ഈ കോൾ ചെയ്യുന്നത് നിങ്ങളുടെ <xliff:g id="OTHER_APP">%1$s</xliff:g> കോൾ അവസാനിക്കാനിടയാക്കും."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"കോൾ ബ്ലോക്ക് ചെയ്യൽ"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"കോൺടാക്റ്റുകളിൽ ഇല്ലാത്ത നമ്പറുകൾ"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"നിങ്ങളുടെ കോൺടാക്റ്റുകളിൽ ലിസ്റ്റ് ചെയ്യാത്ത നമ്പറുകൾ ബ്ലോക്ക് ചെയ്യുക"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"സ്വകാര്യം"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"വിളിക്കുന്നവരിൽ നമ്പർ വെളിപ്പെടുത്താത്തവരെ ബ്ലോക്ക് ചെയ്യുക"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"പേ ഫോൺ"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"പേ ഫോണുകളിൽ നിന്നുള്ള കോളുകൾ ബ്ലോക്ക് ചെയ്യുക"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"അജ്ഞാതം"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"തിരിച്ചറിയാത്ത കോളർമാരിൽ നിന്നുള്ള കോളുകൾ ബ്ലോക്ക് ചെയ്യുക"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"കോൾ ബ്ലോക്ക് ചെയ്യൽ"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"കോൾ ബ്ലോക്ക് ചെയ്യൽ പ്രവർത്തനരഹിതമാക്കി"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"അടിയന്തര കോൾ ചെയ്തു"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"അടിയന്തരമായി ബന്ധപ്പെടുന്നവരെ അനുവദിക്കാനായി കോൾ ബ്ലോക്ക് ചെയ്യൽ പ്രവർത്തനരഹിതമാക്കി."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"കോൾ മാനേജുമെന്റ്"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"ഫോണ്"</string>
+ <string name="unknown" msgid="6993977514360123431">"അജ്ഞാതം"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"മിസ്ഡ് കോൾ"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"മിസ്ഡ് ഔദ്യോഗിക കോൾ"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"മിസ്ഡ് കോളുകൾ"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> മിസ്ഡ് കോളുകൾ"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g> എന്നതിൽ നിന്നുള്ള മിസ്ഡ് കോൾ"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"കോൾബാക്ക്"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"സന്ദേശം"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"കോൾ നിശബ്ദമാക്കി."</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"സ്പീക്കർഫോൺ പ്രവർത്തനക്ഷമമാക്കി."</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"ഇപ്പോൾ സംസാരിക്കാനാകില്ല. എന്താ വിളിച്ചത്?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"ഞാൻ നിങ്ങളെ ഉടൻ തിരിച്ചുവിളിക്കാം."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"ഞാൻ നിങ്ങളെ പിന്നീട് വിളിക്കാം."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"ഇപ്പോൾ സംസാരിക്കാനാകില്ല. എന്നെ പിന്നീട് വിളിക്കാമോ?"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"അതിവേഗ പ്രതികരണങ്ങൾ"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"പ്രതികരണം എഡിറ്റുചെയ്യൂ"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"ദ്രുത പ്രതികരണം"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"<xliff:g id="PHONE_NUMBER">%s</xliff:g> എന്നതിലേക്ക് സന്ദേശമയച്ചു."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"<xliff:g id="PHONE_NUMBER">%s</xliff:g> എന്ന നമ്പറിലേക്ക് സന്ദേശം അയക്കുന്നതിൽ പരാജയപ്പെട്ടു."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"കോളിംഗ് അക്കൗണ്ട്"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"അടിയന്തിര കോളുകൾ മാത്രമേ അനുവദിച്ചിട്ടുള്ളൂ."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"ഫോൺ അനുമതിയില്ലാതെ ഈ അപ്ലിക്കേഷന് ഔട്ട്ഗോയിംഗ് കോളുകൾ വിളിക്കാൻ കഴിയില്ല."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"ഒരു കോൾ ചെയ്യുന്നതിന്, സാധുതയുള്ള നമ്പർ നൽകുക."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"കോൾ ഇപ്പോൾ ചേർക്കാനാകില്ല."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"വോയ്സ്മെയിൽ നമ്പർ കാണുന്നില്ല"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"സിം കാർഡിൽ വോയ്സ്മെയിൽ നമ്പറൊന്നും സംഭരിച്ചിട്ടില്ല."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"നമ്പർ ചേർക്കുക"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"<xliff:g id="NEW_APP">%s</xliff:g> എന്നതിനെ നിങ്ങളുടെ ഡിഫോൾട്ട് ഫോൺ ആപ്പാക്കണോ?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"ഡിഫോൾട്ട് ഫോൺ ആപ്പ് സജ്ജമാക്കുക"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"റദ്ദാക്കുക"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> ആപ്പിന് എല്ലാ തരത്തിലുമുള്ള കോളുകൾ ചെയ്യാനും നിയന്ത്രിക്കാനുമാവും. നിങ്ങൾക്ക് വിശ്വാസമുള്ള ആപ്സിനെ മാത്രമേ ഡിഫോൾട്ട് ഫോൺ ആപ്പായി സജ്ജമാക്കാവൂ."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"<xliff:g id="NEW_APP">%s</xliff:g> എന്നതിനെ നിങ്ങളുടെ ഡിഫോൾട്ട് കോൾ സ്ക്രീനിംഗ് ആപ്പ് ആക്കണോ?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> എന്നതിന് ഇനിയങ്ങോട്ട് കോളുകൾ സ്ക്രീൻ ചെയ്യാനാവില്ല."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g>-ന് നിങ്ങളുടെ കോൺടാക്റ്റുകളിൽ ഇല്ലാത്ത വിളിക്കുന്ന ആളുടെ, വിവരങ്ങൾ കാണാനും, ആ കോളുകളെ ബ്ലോക്കുചെയ്യാനുമാവും. വിശ്വസിക്കാവുന്ന ആപ്പുകൾ മാത്രം ഡിഫോൾട്ട് കോൾ സ്ക്രീനിംഗ് ആപ്പായി സജ്ജീകരിക്കുക."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"ഡിഫോൾട്ട് കോൾ സ്ക്രീനിംഗ് ആപ്പ് സജ്ജീകരിക്കുക"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"റദ്ദാക്കുക"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"ബ്ലോക്ക് ചെയ്ത നമ്പറുകൾ"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"ബ്ലോക്ക് ചെയ്ത നമ്പറുകളിൽ നിന്ന് നിങ്ങൾക്ക് കോളുകളോ സന്ദേശങ്ങളോ ലഭിക്കില്ല."</string>
+ <string name="block_number" msgid="3784343046852802722">"ഒരു നമ്പർ ചേർക്കുക"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"<xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g> അൺബ്ലോക്ക് ചെയ്യണോ?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"അൺബ്ലോക്ക് ചെയ്യുക"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"ഈ നമ്പറിൽ നിന്നുള്ള കോളുകളും ടെക്സ്റ്റുകളും ബ്ലോക്ക് ചെയ്യുക"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"ഫോൺ നമ്പർ"</string>
+ <string name="block_button" msgid="485080149164258770">"ബ്ലോക്കുചെയ്യുക"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"ബ്ലോക്കുചെയ്ത നമ്പറുകൾ ഉപകരണ ഉടമയ്ക്ക് മാത്രമേ കാണാനും മാനേജുചെയ്യാനും കഴിയൂ."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"അൺബ്ലോക്ക് ചെയ്യുക"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"ബ്ലോക്കുചെയ്യൽ താൽക്കാലികമായി ഓഫാണ്"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"നിങ്ങൾ ഒരു എമർജൻസി നമ്പർ ഡയൽ ചെയ്ത് കഴിയുമ്പോഴോ അതിലേക്ക് സന്ദേശമയച്ചുകഴിയുമ്പോഴോ, എമർജൻസി സേവനങ്ങൾ നിങ്ങളിലേക്ക് എത്തുമെന്ന് ഉറപ്പാക്കാൻ കോൾ ബ്ലോക്കിംഗ് ഓഫാക്കും."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"ഇപ്പോൾ വീണ്ടും പ്രവർത്തനക്ഷമമാക്കുക"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> ബ്ലോക്ക് ചെയ്തു"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> അൺബ്ലോക്കുചെയ്തു"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"അടിയന്തര നമ്പർ ബ്ലോക്കുചെയ്യാനാകുന്നില്ല."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> മുമ്പേതന്നെ ബ്ലോക്കുചെയ്തതാണ്."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"കോൾ ചെയ്യുന്നതിന് സ്വകാര്യ ഡയലർ ഉപയോഗിക്കുന്നു"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"<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="5795968314037063900">"<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="8653544281903986641">"കോൾ സ്വീകരിക്കുന്നത് നിങ്ങളുടെ <xliff:g id="CALL_VIA">%1$s</xliff:g> കോൾ അവസാനിക്കാനിടയാക്കും"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"കോൾ സ്വീകരിക്കുന്നത് നിങ്ങളുടെ <xliff:g id="CALL_VIA">%1$s</xliff:g> കോളുകൾ അവസാനിക്കാനിടയാക്കും"</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"കോൾ സ്വീകരിക്കുന്നത് നിങ്ങളുടെ <xliff:g id="CALL_VIA">%1$s</xliff:g> വീഡിയോ കോൾ അവസാനിക്കാനിടയാക്കും"</string>
+ <string name="answering_ends_other_managed_call" msgid="4031778317409881805">"കോൾ സ്വീകരിക്കുന്നത് നിങ്ങളുടെ നിലവിലുള്ള കോൾ അവസാനിക്കാനിടയാക്കും"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"കോൾ സ്വീകരിക്കുന്നത് നിങ്ങളുടെ നിലവിലുള്ള കോളുകൾ അവസാനിക്കാനിടയാക്കും"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"കോൾ സ്വീകരിക്കുന്നത് നിങ്ങളുടെ നിലവിലുള്ള വീഡിയോ കോൾ അവസാനിക്കാനിടയാക്കും"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"മറുപടി നൽകുക"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"നിരസിക്കുക"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"ഇത്തരം കോളുകൾക്ക് അനുയോജ്യമായ അക്കൗണ്ടുകളൊന്നും ഇല്ലാത്തതിനാൽ കോൾ ചെയ്യാനായില്ല."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"നിങ്ങളുടെ <xliff:g id="OTHER_CALL">%1$s</xliff:g> കോൾ കാരണം കോൾ ചെയ്യാനായില്ല."</string>
+ <string name="cant_call_due_to_ongoing_calls" msgid="6379163795277824868">"നിങ്ങളുടെ <xliff:g id="OTHER_CALL">%1$s</xliff:g> കോളുകൾ കാരണം കോൾ ചെയ്യാനായില്ല."</string>
+ <string name="cant_call_due_to_ongoing_unknown_call" msgid="8243532328969433172">"മറ്റൊരു ആപ്പിലുള്ള കോൾ കാരണം കോൾ ചെയ്യാനായില്ല."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"ഇൻകമിംഗ് കോളുകൾ"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"മിസ്ഡ് കോളുകൾ"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"കോൾ ബ്ലോക്ക് ചെയ്യൽ"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"ഈ കോൾ ചെയ്യുന്നത് നിങ്ങളുടെ <xliff:g id="OTHER_APP">%1$s</xliff:g> കോൾ അവസാനിക്കാനിടയാക്കും."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"ഈ കോൾ എങ്ങനെ ചെയ്യണമെന്ന് തിരഞ്ഞെടുക്കുക"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"<xliff:g id="OTHER_APP">%1$s</xliff:g> ഉപയോഗിച്ച് കോൾ റീഡയറക്റ്റ് ചെയ്യുക"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"എന്റെ ഫോൺ നമ്പർ ഉപയോഗിച്ച് കോൾ ചെയ്യുക"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"<xliff:g id="OTHER_APP">%1$s</xliff:g>-ന് കോൾ ചെയ്യാനാവില്ല. സഹായത്തിനായി, ഡെവലപ്പറിനെ കോൺടാക്റ്റ് ചെയ്യുകയോ ആപ്പിനെ റീഡയറക്ട് ചെയ്യുകയോ ചെയ്ത്, മറ്റൊരു കോൾ ചെയ്യാൻ ശ്രമിക്കുക."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"കോൾ ബ്ലോക്ക് ചെയ്യൽ"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"കോൺടാക്റ്റുകളിൽ ഇല്ലാത്ത നമ്പറുകൾ"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"നിങ്ങളുടെ കോൺടാക്റ്റുകളിൽ ലിസ്റ്റ് ചെയ്യാത്ത നമ്പറുകൾ ബ്ലോക്ക് ചെയ്യുക"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"സ്വകാര്യം"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"വിളിക്കുന്നവരിൽ നമ്പർ വെളിപ്പെടുത്താത്തവരെ ബ്ലോക്ക് ചെയ്യുക"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"പേ ഫോൺ"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"പേ ഫോണുകളിൽ നിന്നുള്ള കോളുകൾ ബ്ലോക്ക് ചെയ്യുക"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"അജ്ഞാതം"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"തിരിച്ചറിയാത്ത കോളർമാരിൽ നിന്നുള്ള കോളുകൾ ബ്ലോക്ക് ചെയ്യുക"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"കോൾ ബ്ലോക്ക് ചെയ്യൽ"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"കോൾ ബ്ലോക്ക് ചെയ്യൽ പ്രവർത്തനരഹിതമാക്കി"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"അടിയന്തര കോൾ ചെയ്തു"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"അടിയന്തരമായി ബന്ധപ്പെടുന്നവരെ അനുവദിക്കാനായി കോൾ ബ്ലോക്ക് ചെയ്യൽ പ്രവർത്തനരഹിതമാക്കി."</string>
+ <string name="developer_title" msgid="9146088855661672353">"ടെലികോം ഡെവലപ്പര് മെനു"</string>
</resources>
diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml
index 342680b..a0ac502 100644
--- a/res/values-mn/strings.xml
+++ b/res/values-mn/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"Дуудлагын удирдлага"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"Утас"</string>
- <string name="unknown" msgid="6878797917991465859">"Тодорхойгүй"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"Аваагүй дуудлага"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"Аваагүй албаны дуудлага"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Аваагүй дуудлагууд"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> аваагүй дуудлага"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g>-н аваагүй дуудлага"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Буцааж залгах"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"Мессэж"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"Дууг хаасан."</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"Чанга яригчийг идэвхжүүлсэн."</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"Ярих боломжгүй байна. Сонин юу байна?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"Би тань руу одоо буцаагаад залгая."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Би тань руу дараа залгана."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Ярих боломжгүй байна. Дараа залгах уу?"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Шуурхай хариунууд"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Шуурхай хариуг засах"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"Шуурхай хариу"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"Зурвасыг <xliff:g id="PHONE_NUMBER">%s</xliff:g> руу илгээв."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"Дуудлагын эрхтэй бүртгэлүүд"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"Зөвхөн яаралтай тусламжийн дуудлага хийх боломжтой."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"Энэ апп нь утасны зөвшөөрөлгүйгээр дуудлага хийх боломжгүй."</string>
- <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">"SIM карт дээр дуут шуудангийн дугаар хадгалагдаагүй байна."</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>
- <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="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_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>
- <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_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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"Ирж буй дуудлага"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"Аваагүй дуудлага"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"Дуудлага хориглох"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"Энэ дуудлагыг хийснээр таны <xliff:g id="OTHER_APP">%1$s</xliff:g> дуудлагыг дуусгана."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"Дуудлага хориглох"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"Харилцагчид дотор байхгүй дугаарууд"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"Өөрийн Харилцагчид дотор байхгүй дугааруудыг хориглох"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"Хувийн"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"Дугаараа нууцалсан дуудлагыг хориглох"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"Төлбөртэй утас"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"Төлбөртэй утаснаас залгасан дуудлагуудыг хориглох"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"Тодорхойгүй"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"Тодорхойгүй дугаараас ирсэн дуудлагуудыг блоклох"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"Дуудлага хориглох"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"Дуудлага хориглохыг идэвхгүй болгосон"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"Яаралтай тусламжийн дуудлага хийсэн"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"Яаралтай тусламжийнханд тантай холбогдохыг зөвшөөрөхийн тулд дуудлага хориглохыг идэвхгүй болгосон."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"Дуудлагын удирдлага"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"Утас"</string>
+ <string name="unknown" msgid="6993977514360123431">"Тодорхойгүй"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"Аваагүй дуудлага"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"Аваагүй албаны дуудлага"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"Аваагүй дуудлагууд"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> аваагүй дуудлага"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g>-н аваагүй дуудлага"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"Буцааж залгах"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"Мессэж"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"Дууг хаасан."</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Чанга яригчийг идэвхжүүлсэн."</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Ярих боломжгүй байна. Сонин юу байна?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"Би тань руу одоо буцаагаад залгая."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"Би тань руу дараа залгая."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"Ярих боломжгүй байна. Дараа залгах уу?"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"Шуурхай хариунууд"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"Шуурхай хариуг засах"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"Шуурхай хариу"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"Зурвасыг <xliff:g id="PHONE_NUMBER">%s</xliff:g> руу илгээв."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"<xliff:g id="PHONE_NUMBER">%s</xliff:g> руу зурвас илгээж чадсангүй."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"Дуудлагын эрхтэй бүртгэлүүд"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"Зөвхөн яаралтай тусламжийн дуудлага хийх боломжтой."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"Энэ апп нь утасны зөвшөөрөлгүйгээр дуудлага хийх боломжгүй."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"Дуудлага хийхийн тулд хүчин төгөлдөр дугаар оруулна уу."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"Одоо дуудлага нэмэх боломжгүй."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"Дуут шуудангийн дугаар байхгүй"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"SIM карт дээр дуут шуудангийн дугаар хадгалагдаагүй байна."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"Дугаар нэмэх"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"<xliff:g id="NEW_APP">%s</xliff:g>-г өөрийн өгөгдмөл Утасны апп болгох уу?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"Өгөгдмөл болгох"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"Цуцлах"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> бүх төрлийн дуудлага хийх, хянах боломжтой болно. Зөвхөн өөрийн итгэдэг апп-г өгөгдмөл Утасны апп-р тохируулах нь зүйтэй."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"<xliff:g id="NEW_APP">%s</xliff:g>-г үндсэн дуудлага шүүх аппаа болгох уу?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> цаашид дуудлага шүүх боломжгүй болсон."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> таны харилцагчид дунд байхгүй дуудлага хийгчдийн тухай мэдээллийг харах боломжтой бөгөөд тэдгээр дуудлагыг блоклох боломжтой. Зөвхөн өөрийн итгэдэг аппыг үндсэн дуудлага шүүх аппаар тохируулах нь зүйтэй."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"Үндсэн болгох"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"Болих"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"Блоклосон дугаар"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"Та блоклосон дугаараас дуудлага, мессеж хүлээн авахгүй."</string>
+ <string name="block_number" msgid="3784343046852802722">"Дугаар нэмэх"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"<xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>-г блокоос гаргах уу?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"Блокоос гаргах"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"Дараахаас ирэх дуудлага, текстийг блоклох"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"Утасны дугаар"</string>
+ <string name="block_button" msgid="485080149164258770">"Блоклох"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"Зөвхөн энэ төхөөрөмжийн эзэн блоклосон дугаарыг харж, өөрчлөх боломжтой."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"Хоригийг тайлах"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"Дугаар хориглох түр хугацаанд идэвхгүй болсон"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"Түргэн тусламжийн дугаар руу залгах буюу мессеж бичсэний дараа түргэн тусламжаас тантай холбогдох боломжтой байлгахын тулд дугаар хориглохыг идэвхгүй болгоно."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"Одоо дахин идэвхжүүлэх"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g>-г хориглосон"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g>-н хоригийг авсан"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"Яаралтай дугаарыг хориглох боломжгүй."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g>-г аль хэдийн хориглосон байна."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"Дуудлага хийхийн тулд хувийн залгагчийг ашиглаж байна"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"<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="5795968314037063900">"<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="8653544281903986641">"Хариулбал таны <xliff:g id="CALL_VIA">%1$s</xliff:g> дуудлагыг таслах болно"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"Хариулбал таны <xliff:g id="CALL_VIA">%1$s</xliff:g> дуудлагыг таслах болно"</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"Хариулбал таны <xliff:g id="CALL_VIA">%1$s</xliff:g> видео дуудлагыг таслах болно"</string>
+ <string name="answering_ends_other_managed_call" msgid="4031778317409881805">"Хариулбал таны одоогийн дуудлагыг таслах болно"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"Хариулбал таны одоогийн дуудлагуудыг таслах болно"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"Хариулбал таны одоогийн видео дуудлагыг таслах болно"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"Хариулах"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"Татгалзах"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"Энэ төрлийн дуудлага дэмждэг дуудлагын бүртгэл байхгүй тул дуудлага хийх боломжгүй байна."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"Таны <xliff:g id="OTHER_CALL">%1$s</xliff:g> дуудлагаас шалтгаалан дуудлага хийх боломжгүй байна."</string>
+ <string name="cant_call_due_to_ongoing_calls" msgid="6379163795277824868">"Таны <xliff:g id="OTHER_CALL">%1$s</xliff:g> дуудлагаас шалтгаалан дуудлага хийх боломжгүй байна."</string>
+ <string name="cant_call_due_to_ongoing_unknown_call" msgid="8243532328969433172">"Өөр апп доторх дуудлагаас шалтгаалан дуудлага хийх боломжгүй байна."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"Ирж буй дуудлага"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"Аваагүй дуудлага"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"Дуудлага хориглох"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"Энэ дуудлагыг хийснээр таны <xliff:g id="OTHER_APP">%1$s</xliff:g> дуудлагыг дуусгана."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Энэ дуудлагыг хэрхэн хийхийг сонгох"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"<xliff:g id="OTHER_APP">%1$s</xliff:g>-г ашиглан дуудлагыг дахин чиглүүлэх"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"Миний дугаарыг ашиглаж буй дуудлага"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"<xliff:g id="OTHER_APP">%1$s</xliff:g> дуудлага байршуулах боломжгүй. Тусламж авахын тулд өөр дуудлага дахин чиглүүлэх аппыг ашиглах эсвэл хөгжүүлэгчтэй холбогдоно уу."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"Дуудлага хориглох"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"Харилцагчид дотор байхгүй дугаарууд"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"Өөрийн Харилцагчид дотор байхгүй дугааруудыг хориглох"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"Хувийн"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"Дугаараа нууцалсан дуудлагыг хориглох"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"Төлбөртэй утас"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"Төлбөртэй утаснаас залгасан дуудлагуудыг хориглох"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"Тодорхойгүй"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"Тодорхойгүй дугаараас ирсэн дуудлагуудыг блоклох"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"Дуудлага хориглох"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"Дуудлага хориглохыг идэвхгүй болгосон"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"Яаралтай тусламжийн дуудлага хийсэн"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"Яаралтай тусламжийнханд тантай холбогдохыг зөвшөөрөхийн тулд дуудлага хориглохыг идэвхгүй болгосон."</string>
+ <string name="developer_title" msgid="9146088855661672353">"Телеком хөгжүүлэгчийн цэс"</string>
</resources>
diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml
index ebb08de..0c03564 100644
--- a/res/values-mr/strings.xml
+++ b/res/values-mr/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"कॉल व्यवस्थापन"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"फोन"</string>
- <string name="unknown" msgid="6878797917991465859">"अज्ञात"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"सुटलेला कॉल"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"कार्याचा कॉल चुकविला"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"सुटलेले कॉल"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> सुटलेले कॉल"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g> कडील सुटलेला कॉल"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"पुन्हा कॉल करा"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"मेसेज"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"कॉल नि.शब्द केला."</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"स्पीकरफोन सक्षम केला."</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"आत्ता बोलू शकत नाही. काय चालले आहे?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"मी आपल्याला परत कॉल करेन."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"मी आपल्याला नंतर कॉल करेन."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"आत्ता बोलू शकत नाही. नंतर कॉल करा?"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"द्रुत प्रतिसाद"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"द्रुत प्रतिसाद संपादित करा"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"द्रुत प्रतिसाद"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"मेसेज <xliff:g id="PHONE_NUMBER">%s</xliff:g> वर पाठविला."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"कॉल करण्याची खाती"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"फक्त आणीबाणी कॉल करण्याची परवानगी आहे."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"हा अॅप्लिकेशन फोन परवानगी शिवाय कॉल करू शकत नाही."</string>
- <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="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>
- <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="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_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>
- <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_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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"येणारे कॉल"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"सुटलेले कॉल"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"कॉल ब्लॉक करणे"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"हा कॉल केल्याने तुमचा <xliff:g id="OTHER_APP">%1$s</xliff:g> कॉल समाप्त होईल."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"कॉल ब्लॉक करणे"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"संपर्कांमध्ये क्रमांक नाहीत"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"तुमच्या संपर्कांच्या सूचीमध्ये नसलेले क्रमांक ब्लॉक करा"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"खाजगी"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"अशा कॉलरना ब्लॉक करा, जे त्यांचे क्रमांक उघड करत नाहीत"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"पे फोन"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"पे फोनवरून येणारे कॉल ब्लॉक करा"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"अज्ञात"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"अनोळखी कॉलरकडून येणारे कॉल ब्लॉक करा"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"कॉल ब्लॉक करणे"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"कॉल ब्लॉक करणे बंद केले"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"आणीबाणी कॉल केला"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"आणीबाणीत प्रतिसाद देणार्यांना तुमच्याशी संपर्क साधण्याची अनुमती देण्यासाठी कॉल ब्लॉक करणे बंद केले आहे."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"कॉल व्यवस्थापन"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"फोन"</string>
+ <string name="unknown" msgid="6993977514360123431">"अज्ञात"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"सुटलेला कॉल"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"कार्याचा कॉल चुकविला"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"सुटलेले कॉल"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> सुटलेले कॉल"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g> कडील सुटलेला कॉल"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"पुन्हा कॉल करा"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"मेसेज"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"कॉल नि.शब्द केला."</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"स्पीकरफोन सक्षम केला."</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"आत्ता बोलू शकत नाही. कशासाठी कॉल केला होता?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"मी तुम्हाला परत कॉल करेन."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"मी तुम्हाला नंतर कॉल करेन."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"आत्ता बोलू शकत नाही. नंतर कॉल कराल?"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"द्रुत प्रतिसाद"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"द्रुत प्रतिसाद संपादित करा"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"द्रुत प्रतिसाद"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"मेसेज <xliff:g id="PHONE_NUMBER">%s</xliff:g> वर पाठविला."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"<xliff:g id="PHONE_NUMBER">%s</xliff:g> वर मेसेज पाठवता आला नाही."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"कॉल करण्याची खाती"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"फक्त आणीबाणी कॉल करण्याची परवानगी आहे."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"हा ॲप्लिकेशन फोन परवानगी शिवाय कॉल करू शकत नाही."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"कॉल करण्यासाठी, एक वैध नंबर एंटर करा."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"यावेळी कॉल जोडला जाऊ शकत नाही."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"व्हॉइसमेल नंबर गहाळ"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"सिम कार्डवर कोणताही व्हॉइसमेल नंबर स्टोअर केला नाही."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"नंबर जोडा"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"<xliff:g id="NEW_APP">%s</xliff:g> ला तुमचा डीफॉल्ट अॅप बनवायचा?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"डीफॉल्ट म्हणून सेट करा"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"रद्द करा"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> कॉल करण्यात आणि त्याचे सर्व पैलू नियंत्रित करण्यात सक्षम असेल. ज्या अॅप्सवर तुमचा विश्वास आहे फक्त त्यांंनाच तुमचा डीफॉल्ट फोन अॅप म्हणून सेट करावे."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"<xliff:g id="NEW_APP">%s</xliff:g> ला तुमचे डीफॉल्ट कॉल स्क्रीनिंग अॅप बनवा?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> यापुढे स्क्रीन कॉल करता येणार नाहीत"</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> तुमच्या संपर्कांमध्ये नसलेल्या कॉल करणार्याविषयी माहिती पाहू शकेल आणि हे कॉल ब्लॉक करू शकेल. फक्त तुमचा विश्वास असलेल्या अॅप्स डीफॉल्ट कॉल स्क्रीनिंग अॅप म्हणून सेट केले जाणे आवश्यक आहे."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"डीफॉल्ट सेट करा"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"रद्द करा"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"ब्लॉक केलेले नंबर"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"ब्लॉक केलेल्या नंबरवरुन तुम्हाला कॉल किंवा एसएमएस येणार नाहीत."</string>
+ <string name="block_number" msgid="3784343046852802722">"एक नंबर जोडा"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"<xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g> अनब्लॉक करायचा?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"ब्लॉक करा"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"यावरील कॉल आणि एसएमएस ब्लॉक करा"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"फोन नंबर"</string>
+ <string name="block_button" msgid="485080149164258770">"ब्लॉक करा"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"फक्त डिव्हाइस मालक अवरोधित केलेले नंबर पाहू आणि व्यवस्थापित करू शकतो."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"ब्लॉक करा"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"अवरोधित करणे तात्पुरते बंद आहे"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"तुम्ही एखादा आणीबाणी नंबर डायल केला किंवा त्यावर मजकूर पाठविल्यानंतर, आणीबाणी सेवा आपल्याशी संपर्क साधू शकतात हे सुनिश्चित करण्यासाठी अवरोधित करणे बंद करते."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"आता पुन्हा-सक्षम करा"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> अवरोधित केला"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> अनब्लॉक केला"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"आणीबाणी नंबर अवरोधित करण्यात अक्षम."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> आधीपासून अवरोधित केला आहे."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"कॉल करण्यासाठी वैयक्तिक डायलर वापरणे"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"<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="5795968314037063900">"<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="8653544281903986641">"उत्तर देण्यामुळे तुमचा <xliff:g id="CALL_VIA">%1$s</xliff:g> कॉल समाप्त होईल"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"उत्तर देण्यामुळे तुमचे <xliff:g id="CALL_VIA">%1$s</xliff:g> कॉल समाप्त होतील"</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"उत्तर देण्यामुळे तुमचा <xliff:g id="CALL_VIA">%1$s</xliff:g> व्हिडिओ कॉल समाप्त होईल"</string>
+ <string name="answering_ends_other_managed_call" msgid="4031778317409881805">"उत्तर देण्यामुळे तुमचा सुरु असलेला कॉल समाप्त होईल"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"उत्तर देण्यामुळे तुमचे सुरु असलेले कॉल समाप्त होतील"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"उत्तर देण्यामुळे तुमचा सुरु असलेला व्हिडिओ कॉल समाप्त होईल"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"उत्तर द्या"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"नकार द्या"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"कॉल करू शकत नाही कारण अशाप्रकारच्या कॉलला सपोर्ट करतील अशी कोणतीही कॉलिंग खाती नाहीत."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"आपल्या <xliff:g id="OTHER_CALL">%1$s</xliff:g> कॉलमुळे कॉल केला जाऊ शकत नाही."</string>
+ <string name="cant_call_due_to_ongoing_calls" msgid="6379163795277824868">"आपल्या <xliff:g id="OTHER_CALL">%1$s</xliff:g> कॉलमुळे कॉल केला जाऊ शकत नाही."</string>
+ <string name="cant_call_due_to_ongoing_unknown_call" msgid="8243532328969433172">"दुसर्या ॲपमधील कॉलमुळे कॉल केला जाऊ शकत नाही."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"येणारे कॉल"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"सुटलेले कॉल"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"कॉल ब्लॉक करणे"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"हा कॉल केल्याने तुमचा <xliff:g id="OTHER_APP">%1$s</xliff:g> कॉल समाप्त होईल."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"हा कॉल कसा करायचा ते निवडा"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"<xliff:g id="OTHER_APP">%1$s</xliff:g> वापरून कॉल रीडिरेक्ट करा"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"माझा फोन नंबर वापरून कॉल करा"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"<xliff:g id="OTHER_APP">%1$s</xliff:g> द्वारे कॉल केला जाऊ शकत नाही. वेगळे कॉल रीडिरेक्टिंग अॅप वापरण्याचा किंवा मदतीसाठी डेव्हलपरशी संपर्क साधण्याचा प्रयत्न करा."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"कॉल ब्लॉक करणे"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"संपर्कांमध्ये क्रमांक नाहीत"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"तुमच्या संपर्कांच्या सूचीमध्ये नसलेले क्रमांक ब्लॉक करा"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"खाजगी"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"अशा कॉलरना ब्लॉक करा, जे त्यांचे क्रमांक उघड करत नाहीत"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"पे फोन"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"पे फोनवरून येणारे कॉल ब्लॉक करा"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"अज्ञात"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"अनोळखी कॉलरकडून येणारे कॉल ब्लॉक करा"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"कॉल ब्लॉक करणे"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"कॉल ब्लॉक करणे बंद केले"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"आणीबाणी कॉल केला"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"आणीबाणीत प्रतिसाद देणार्यांना तुमच्याशी संपर्क साधण्याची अनुमती देण्यासाठी कॉल ब्लॉक करणे बंद केले आहे."</string>
+ <string name="developer_title" msgid="9146088855661672353">"टेलिकॉम डेव्हलपर मेनू"</string>
</resources>
diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml
index ce0e2d1..8a43aa6 100644
--- a/res/values-ms/strings.xml
+++ b/res/values-ms/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"Pengurusan Panggilan"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"Telefon"</string>
- <string name="unknown" msgid="6878797917991465859">"Tidak diketahui"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"Panggilan tidak dijawab"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"Panggilan terlepas daripada tempat kerja"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Panggilan tidak dijawab"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> panggilan tidak dijawab"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"Panggilan tidak dijawab daripada <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Panggil balik"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"Mesej"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"Panggilan diredam."</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"Telefon pembesar suara didayakan."</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"Sedang sibuk. Ada apa?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"Saya akan hubungi awak semula."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Saya akan hubungi awak kemudian."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Sedang sibuk. Telefon saya nanti?"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Respons pantas"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Edit respons pantas"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"Respons pantas"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"Mesej dihantar ke <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"Akaun panggilan"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"Panggilan kecemasan sahaja dibenarkan."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"Aplikasi ini tidak boleh membuat panggilan keluar tanpa kebenaran Telefon."</string>
- <string name="outgoing_call_error_no_phone_number_supplied" msgid="1940125199802007505">"Untuk membuat panggilan, masukkan nombor yang sah."</string>
- <string name="duplicate_video_call_not_allowed" msgid="3749211605014548386">"Panggilan tidak boleh ditambahkan pada masa ini."</string>
- <string name="no_vm_number" msgid="4164780423805688336">"Nombor mel suara tiada"</string>
- <string name="no_vm_number_msg" msgid="1300729501030053828">"Tidak ada nombor mel suara disimpan pada kad SIM."</string>
- <string name="add_vm_number_str" msgid="4676479471644687453">"Tambah nombor"</string>
- <string name="change_default_dialer_dialog_title" msgid="9101655962941740507">"Jadikan <xliff:g id="NEW_APP">%s</xliff:g> apl Telefon lalai anda?"</string>
- <string name="change_default_dialer_dialog_affirmative" msgid="8606546663509166276">"Tetapkan Lalai"</string>
- <string name="change_default_dialer_dialog_negative" msgid="9078144617060173845">"Batal"</string>
- <string name="change_default_dialer_warning_message" msgid="1417671460801684999">"<xliff:g id="NEW_APP">%s</xliff:g> akan dapat membuat dan mengawal semua aspek panggilan. Hanya apl yang anda percayai sahaja yang seharusnya ditetapkan sebagai apl Telefon lalai."</string>
- <string name="blocked_numbers" msgid="2751843139572970579">"Nombor yang disekat"</string>
- <string name="blocked_numbers_msg" msgid="1045015186124965643">"Anda tidak akan menerima panggilan atau teks daripada nombor yang disekat."</string>
- <string name="block_number" msgid="1101252256321306179">"Tambahkan nombor"</string>
- <string name="unblock_dialog_body" msgid="1614238499771862793">"Nyahsekat <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
- <string name="unblock_button" msgid="3078048901972674170">"Nyahsekat"</string>
- <string name="add_blocked_dialog_body" msgid="9030243212265516828">"Sekat panggilan dan teks daripada"</string>
- <string name="add_blocked_number_hint" msgid="6847675097085433553">"Nombor telefon"</string>
- <string name="block_button" msgid="8822290682524373357">"Sekat"</string>
- <string name="non_primary_user" msgid="5180129233352533459">"Hanya pemilik peranti boleh melihat dan menguruskan nombor yang disekat."</string>
- <string name="delete_icon_description" msgid="8903995728252556724">"Nyahsekat"</string>
- <string name="blocked_numbers_butter_bar_title" msgid="438170866438793182">"Sekatan dimatikan untuk sementara waktu"</string>
- <string name="blocked_numbers_butter_bar_body" msgid="2223244484319442431">"Sekatan dimatikan selepas anda mendail atau menghantar teks kepada nombor kecemasan untuk memastikan perkhidmatan kecemasan dapat menghubungi anda."</string>
- <string name="blocked_numbers_butter_bar_button" msgid="2197943354922010696">"Dayakan semula sekarang"</string>
- <string name="blocked_numbers_number_blocked_message" msgid="7678509606805029540">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> disekat"</string>
- <string name="blocked_numbers_number_unblocked_message" msgid="977894647366750418">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> dinyahsekat"</string>
- <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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"Panggilan masuk"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"Panggilan tidak dijawab"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"Sekatan Panggilan"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"Membuat panggilan ini akan menamatkan panggilan <xliff:g id="OTHER_APP">%1$s</xliff:g> anda."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"Sekatan Panggilan"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"Nombor bukan dalam Kenalan"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"Sekat nombor yang tidak disenaraikan dalam Kenalan anda"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"Persendirian"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"Sekat pemanggil yang tidak mendedahkan nombor mereka"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"Telefon awam"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"Sekat panggilan daripada telefon awam"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"Tidak diketahui"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"Sekat panggilan daripada pemanggil yang tidak dikenal pasti"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"Sekatan Panggilan"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"Sekatan Panggilan dilumpuhkan"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"Panggilan kecemasan dibuat"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"Sekatan Panggilan telah dilumpuhkan untuk membolehkan pasukan bantuan kecemasan menghubungi anda."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"Pengurusan Panggilan"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"Telefon"</string>
+ <string name="unknown" msgid="6993977514360123431">"Tidak diketahui"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"Panggilan tidak dijawab"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"Panggilan terlepas daripada tempat kerja"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"Panggilan tidak dijawab"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> panggilan tidak dijawab"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"Panggilan tidak dijawab daripada <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"Panggil balik"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"Mesej"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"Panggilan diredam."</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Telefon pembesar suara didayakan."</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Sedang sibuk. Ada apa?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"Saya akan hubungi awak semula."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"Saya akan hubungi awak kemudian."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"Sedang sibuk. Telefon saya nanti?"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"Respons pantas"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"Edit respons pantas"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"Respons pantas"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"Mesej dihantar ke <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"Mesej gagal dihantar kepada <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"Akaun panggilan"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"Panggilan kecemasan sahaja dibenarkan."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"Aplikasi ini tidak boleh membuat panggilan keluar tanpa kebenaran Telefon."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"Untuk membuat panggilan, masukkan nombor yang sah."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"Panggilan tidak boleh ditambahkan pada masa ini."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"Nombor mel suara tiada"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"Tidak ada nombor mel suara disimpan pada kad SIM."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"Tambah nombor"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"Jadikan <xliff:g id="NEW_APP">%s</xliff:g> apl Telefon lalai anda?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"Tetapkan Lalai"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"Batal"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> akan dapat membuat dan mengawal semua aspek panggilan. Hanya apl yang anda percayai sahaja yang seharusnya ditetapkan sebagai apl Telefon lalai."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"Jadikan <xliff:g id="NEW_APP">%s</xliff:g> apl penyaringan panggilan lalai anda?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> tidak lagi dapat menyaring panggilan."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> akan dapat melihat maklumat tentang pemanggil yang tidak disenaraikan dalam kenalan anda dan dapat menyekat panggilan ini. Hanya apl yang anda percayai harus ditetapkan sebagai apl penyaringan panggilan lalai."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"Tetapkan Lalai"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"Batal"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"Nombor yang disekat"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"Anda tidak akan menerima panggilan atau teks daripada nombor yang disekat."</string>
+ <string name="block_number" msgid="3784343046852802722">"Tambahkan nombor"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"Nyahsekat <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"Nyahsekat"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"Sekat panggilan dan teks daripada"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"Nombor telefon"</string>
+ <string name="block_button" msgid="485080149164258770">"Sekat"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"Hanya pemilik peranti boleh melihat dan menguruskan nombor yang disekat."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"Nyahsekat"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"Sekatan dimatikan untuk sementara waktu"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"Sekatan dimatikan selepas anda mendail atau menghantar teks kepada nombor kecemasan untuk memastikan perkhidmatan kecemasan dapat menghubungi anda."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"Dayakan semula sekarang"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> disekat"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> dinyahsekat"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"Tidak dapat menyekat nombor kecemasan."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> sudah disekat."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"Menggunakan pendail peribadi untuk membuat panggilan"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"<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="5795968314037063900">"<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="8653544281903986641">"Menjawab akan menamatkan panggilan <xliff:g id="CALL_VIA">%1$s</xliff:g> anda"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"Menjawab akan menamatkan panggilan <xliff:g id="CALL_VIA">%1$s</xliff:g> anda"</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"Menjawab akan menamatkan panggilan video <xliff:g id="CALL_VIA">%1$s</xliff:g> anda"</string>
+ <string name="answering_ends_other_managed_call" msgid="4031778317409881805">"Menjawab akan menamatkan panggilan yang sedang berlangsung"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"Menjawab akan menamatkan panggilan yang sedang berlangsung"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"Menjawab akan menamatkan panggilan video semasa anda"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"Jawab"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"Tolak"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"Panggilan tidak dapat dibuat kerana tiada akaun panggilan yang menyokong panggilan jenis ini."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"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="6379163795277824868">"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="8243532328969433172">"Panggilan tidak dapat dibuat disebabkan panggilan dalam apl lain."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"Panggilan masuk"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"Panggilan tidak dijawab"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"Sekatan Panggilan"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"Membuat panggilan ini akan menamatkan panggilan <xliff:g id="OTHER_APP">%1$s</xliff:g> anda."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Pilih cara untuk membuat panggilan ini"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Ubah hala panggilan menggunakan <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"Panggil menggunakan nombor telefon saya"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"Panggilan tidak boleh dibuat oleh <xliff:g id="OTHER_APP">%1$s</xliff:g>. Cuba gunakan apl pengubahhalaan panggilan yang lain atau hubungi pembangun untuk mendapatkan bantuan."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"Sekatan Panggilan"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"Nombor bukan dalam Kenalan"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"Sekat nombor yang tidak disenaraikan dalam Kenalan anda"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"Persendirian"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"Sekat pemanggil yang tidak mendedahkan nombor mereka"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"Telefon awam"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"Sekat panggilan daripada telefon awam"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"Tidak diketahui"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"Sekat panggilan daripada pemanggil yang tidak dikenal pasti"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"Sekatan Panggilan"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"Sekatan Panggilan dilumpuhkan"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"Panggilan kecemasan dibuat"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"Sekatan Panggilan telah dilumpuhkan untuk membolehkan pasukan bantuan kecemasan menghubungi anda."</string>
+ <string name="developer_title" msgid="9146088855661672353">"Menu Pembangun Telekom"</string>
</resources>
diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml
index fe9f33e..55dadf0 100644
--- a/res/values-my/strings.xml
+++ b/res/values-my/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"ခေါ်ဆိုမှုစီမံခန့်ခွဲရေး"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"ဖုန်း"</string>
- <string name="unknown" msgid="6878797917991465859">"မသိပါ"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"လွဲသွားသော ဖုန်းခေါ်မှု"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"လွတ်သွားသည့် အလုပ်ဆိုင်ရာ ခေါ်ဆိုမှု"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"လွဲသွားသော ဖုန်းခေါ်မှုများ"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> လွဲသွားသော ဖုန်းခေါ်မှုများ"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g> က ဖုန်းခေါ်မှုကို မကိုင်မိပါ"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"ပြန်ခေါ်ပါ"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"စာတို"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"နားထောင်ရုံသာ (စကားပြောပိတ်ထားသည်)"</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"စပီကာဖုန်း သုံးလို့ရသည်"</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"အခုပြောလို့မရဘူး။ အကြောင်းထူးရှိလား။"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"အခုပဲ ပြန်ခေါ်လိုက်မယ်။"</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"နောက်မှ ပြန်ခေါ်လိုက်မယ်။"</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"အခုပြောလို့မရဘူး။ ပြန်ခေါ်ပါလား။"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"အမြန်တုံ့ပြန်ချက်များ"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"အမြန်တုံ့ပြန်ချက်များပြင်ခြင်း"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"အမြန်တုံ့ပြန်ချက်"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"<xliff:g id="PHONE_NUMBER">%s</xliff:g> ထံ စာတိုပို့လိုက်ပါပြီ"</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"ခေါ်ဆိုသော အကောင့်များ"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"အရေးပေါ်ခေါ်ဆိုမှုများသာ ခွင့်ပြုပါသည်။"</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"ဤအပ္ပလီကေးရှင်းသည် ဖုန်းခွင့်ပြုချက်မရှိဘဲ အထွက်ခေါ်ဆိုမှု ပြုလုပ်၍မရပါ။"</string>
- <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="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>
- <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> သည် ခေါ်ဆိုမှုများကို ဘက်စုံပြုလုပ်ထိန်းချုပ်သွားနိုင်မည်ဖြစ်သည်။ သင်ယုံကြည်သော အက်ပ်များကိုသာ မူရင်း Phone အက်ပ်အဖြစ် သတ်မှတ်သင့်ပါသည်။"</string>
- <string name="blocked_numbers" msgid="2751843139572970579">"ပိတ်ဆို့နံပါတ်များ"</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>
- <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>
- <string name="delete_icon_description" msgid="8903995728252556724">"မပိတ်ဆို့တော့ပါ"</string>
- <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_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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"အဝင်ဖုန်းခေါ်ဆိုမှုများ"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"လွတ်သွားသော ဖုန်းခေါ်ဆိုမှုများ"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"ခေါ်ဆိုမှု ပိတ်ခြင်း"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"ဤခေါ်ဆိုမှု ပြုလုပ်ပါက <xliff:g id="OTHER_APP">%1$s</xliff:g> သုံးပြီးပြောနေခြင်းကို ဖြတ်ပစ်ပါမည်။"</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"ခေါ်ဆိုမှု ပိတ်ခြင်း"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"\'အဆက်အသွယ်များ\' ထဲတွင် မရှိသော နံပါတ်များ"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"သင်၏ \'အဆက်အသွယ်များ\' ထဲတွင် မပါဝင်သော နံပါတ်များကို ပိတ်ပါ"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"သီးသန့်"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"နံပါတ်မပြသသော ခေါ်ဆိုမှုများကို ပိတ်ပါ"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"အများသုံးဖုန်း"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"အများသုံးဖုန်းများမှ ခေါ်ဆိုမှုများကို ပိတ်ပါ"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"အမည်မသိ"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"အမည်မသိသော ခေါ်ဆိုသူများကို ပိတ်ပါ"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"ခေါ်ဆိုမှု ပိတ်ခြင်း"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"\'ခေါ်ဆိုမှု ပိတ်ခြင်း\' ကို ရပ်ထားပါသည်"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"အရေးပေါ် ခေါ်ဆိုမှု ပြုလုပ်ထားပါသည်"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"အရေးပေါ်တုံ့ပြန်သူများက သင့်အား ဆက်သွယ်နိုင်စေရန် \'ခေါ်ဆိုမှု ပိတ်ခြင်း\' ကို ရပ်ထားပါသည်။"</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"ခေါ်ဆိုမှုစီမံခန့်ခွဲရေး"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"ဖုန်း"</string>
+ <string name="unknown" msgid="6993977514360123431">"မသိပါ"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"လွဲသွားသော ဖုန်းခေါ်မှု"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"လွတ်သွားသည့် အလုပ်ဆိုင်ရာ ခေါ်ဆိုမှု"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"လွဲသွားသော ဖုန်းခေါ်မှုများ"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> လွဲသွားသော ဖုန်းခေါ်မှုများ"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g> က ဖုန်းခေါ်မှုကို မကိုင်မိပါ"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"ပြန်ခေါ်ပါ"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"စာတို"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"နားထောင်ရုံသာ (စကားပြောပိတ်ထားသည်)"</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"စပီကာဖုန်း သုံးလို့ရသည်"</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"အခုပြောလို့မရဘူး။ အကြောင်းထူးရှိလား။"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"အခုပဲ ပြန်ခေါ်လိုက်မယ်။"</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"နောက်မှ ပြန်ခေါ်လိုက်မယ်။"</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"အခုပြောလို့မရဘူး။ ပြန်ခေါ်ပါလား။"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"အမြန်တုံ့ပြန်ချက်များ"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"အမြန်တုံ့ပြန်ချက်များပြင်ခြင်း"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"အမြန်တုံ့ပြန်ချက်"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"<xliff:g id="PHONE_NUMBER">%s</xliff:g> ထံ စာတိုပို့လိုက်ပါပြီ"</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"<xliff:g id="PHONE_NUMBER">%s</xliff:g> ထံသို့ မက်ဆေ့ဂျ် ပို့၍ မရပါ။"</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"ခေါ်ဆိုသော အကောင့်များ"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"အရေးပေါ်ခေါ်ဆိုမှုများသာ ခွင့်ပြုပါသည်။"</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"ဤအပ္ပလီကေးရှင်းသည် ဖုန်းခွင့်ပြုချက်မရှိဘဲ အထွက်ခေါ်ဆိုမှု ပြုလုပ်၍မရပါ။"</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"ဖုန်းခေါ်ရန်အတွက်၊ သင့်လျော်သည့်နံပါတ် ရိုက်ထည့်ပါ။"</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"ဗွီဒီယိုခေါ်နေစဉ် ထပ်ခေါ်မရပါ။"</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"အသံမေးလ် နံပါတ် ပျောက်နေပါသည်"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"ဆင်းမ်ကဒ်ပေါ်တွင် အသံမေးလ် နံပါတ် သိမ်းဆည်ထားခြင်း မရှိပါ"</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"နံပါတ်ထပ်ထည့်ရန်"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"<xliff:g id="NEW_APP">%s</xliff:g> ကို သင့်ဖုန်း၏မူရင်းအက်ပ်အဖြစ် ထားမလား။"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"မူရင်း သတ်မှတ်ရန်"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"မလုပ်တော့"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> သည် ခေါ်ဆိုမှုများကို ဘက်စုံပြုလုပ်ထိန်းချုပ်သွားနိုင်မည်ဖြစ်သည်။ သင်ယုံကြည်သော အက်ပ်များကိုသာ မူရင်း Phone အက်ပ်အဖြစ် သတ်မှတ်သင့်ပါသည်။"</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"<xliff:g id="NEW_APP">%s</xliff:g> ကို သင့်မူရင်း ခေါ်ဆိုမှုပြသသောအက်ပ်အဖြစ် သတ်မှတ်မလား။"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> က ဖုန်းခေါ်ဆိုမှုများကို ပြသနိုင်တော့မည် မဟုတ်ပါ။"</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> သည် သင့်အဆက်အသွယ်များတွင် မပါဝင်သော ခေါ်ဆိုသူများ၏ အချက်အလက်များကို ကြည့်ရှုနိုင်မည်ဖြစ်ပြီး အဆိုပါ ခေါ်ဆိုမှုများကို ပိတ်နိုင်ပါမည်။ သင်ယုံကြည်သော အက်ပ်များကိုသာ မူရင်း ခေါ်ဆိုမှုပြသသောအက်ပ်အဖြစ် သတ်မှတ်သင့်ပါသည်။"</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"မူရင်းအဖြစ် သတ်မှတ်မည်"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"မလုပ်တော့"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"ပိတ်ထားသည့် နံပါတ်များ"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"ပိတ်ထားသော နံပါတ်များမှ ဖုန်းခေါ်ခြင်း (သို့) စာသားပို့ခြင်းတို့ကို သင်လက်ခံရရှိမည် မဟုတ်ပါ။"</string>
+ <string name="block_number" msgid="3784343046852802722">"နံပါတ်တစ်ခု ထည့်ပါ"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"<xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g> ကို ပိတ်ဆို့မှုပြန်ဖွင့်မလား။"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"ပိတ်ဆို့မှုပြန်ဖွင့်ပါ"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"ဤနံပါတ်မှ ခေါ်ဆိုမှုနှင့် စာများကို ပိတ်ဆို့ပါ"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"ဖုန်းနံပါတ်"</string>
+ <string name="block_button" msgid="485080149164258770">"ပိတ်ဆို့ပါ"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"ပိတ်ဆို့ထားသည့် နံပါတ်များကို စက်ပစ္စည်းပိုင်ရှင်သာလျှင် ကြည့်ရှု၍ စီမံခန့်ခွဲနိုင်ပါသည်။"</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"မပိတ်ဆို့တော့ပါ"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"ဘလော့ခ်လုပ်ခြင်းကို ပိတ်ထားပါသည်"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"သင် အရေးပေါ်နံပါတ်တစ်ခုကို ဖုန်းခေါ် (သို့) စာသားပို့ပြီးနောက် အရေးပေါ်ဝန်ဆောင်မှုများက သင့်ကို ဆက်သွယ်နိုင်ကြောင်း သေချာစေရန် ဘလော့ခ်လုပ်ခြင်းကို ပိတ်ထားပါသည်။"</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"ယခု ပြန်ဖွင့်လိုက်ပါ"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> ကို ပိတ်ဆို့ပြီးပါပြီ"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> ကို မပိတ်ဆို့တော့ပါ"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"အရေးပေါ်နံပါတ်ကို ပိတ်ဆို့၍ မရပါ။"</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> ကို ပိတ်ဆို့ထားပြီး ဖြစ်သည်။"</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"ဖုန်းခေါ်ဆိုမှုပြုလုပ်ရန် ကိုယ်ရေးကိုယ်တာ ဖုန်းခေါ်ဆိုမှုစနစ်ကို အသုံးပြုခြင်း"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"<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="5795968314037063900">"<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="8653544281903986641">"ဖုန်းကိုင်လိုက်လျှင် <xliff:g id="CALL_VIA">%1$s</xliff:g> သုံးပြီးပြောနေခြင်းကို ဖြတ်ပစ်ပါမည်"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"ဖုန်းကိုင်လိုက်လျှင် <xliff:g id="CALL_VIA">%1$s</xliff:g> သုံးပြီးပြောနေခြင်းများကိုဖြတ်ပစ်ပါမည်"</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"ဖုန်းကိုင်လိုက်လျှင် <xliff:g id="CALL_VIA">%1$s</xliff:g> ဗီဒီယိုပြောနေခြင်းကိုဖြတ်ပစ်ပါလိမ့်မည်"</string>
+ <string name="answering_ends_other_managed_call" msgid="4031778317409881805">"ဖုန်းကိုင်လိုက်လျှင် သင်ယခုပြောနေခြင်းကို ဖြတ်ပစ်ပါမည်"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"ဖုန်းကိုင်လိုက်လျှင် သင်ယခုပြောနေခြင်းများကို ဖြတ်ပစ်ပါမည်"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"ဖုန်းကိုင်လိုက်လျှင် လက်ရှိဗီဒီယိုပြောနေခြင်းကိုဖြတ်ပစ်ပါမည်"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"ဖုန်းကိုင်ရန်"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"ဖုန်းမကိုင်ရန်"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"ဤဖုန်းခေါ်ဆိုမှု အမျိုးအစားကို ပံ့ပိုးပေးသည့် ခေါ်ဆိုမှုအကောင့်များ မရှိသဖြင့် ဖုန်းခေါ်၍ မရပါ။"</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"<xliff:g id="OTHER_CALL">%1$s</xliff:g> သုံးပြီးပြောနေသည့်အတွက် အထွက်ခေါ်ဆိုမှုကို မပြုလုပ်နိုင်ပါ။"</string>
+ <string name="cant_call_due_to_ongoing_calls" msgid="6379163795277824868">"<xliff:g id="OTHER_CALL">%1$s</xliff:g> သုံးပြီးပြောနေသည့်အတွက် အထွက်ခေါ်ဆိုမှုများကို မပြုလုပ်နိုင်ပါ။"</string>
+ <string name="cant_call_due_to_ongoing_unknown_call" msgid="8243532328969433172">"အခြားအက်ပ်သုံးပြီးပြောနေသည့်အတွက် အထွက်ခေါ်ဆိုမှုကို မပြုလုပ်နိုင်ပါ။"</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"အဝင်ဖုန်းခေါ်ဆိုမှုများ"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"လွတ်သွားသော ဖုန်းခေါ်ဆိုမှုများ"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"ခေါ်ဆိုမှု ပိတ်ခြင်း"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"ဤခေါ်ဆိုမှု ပြုလုပ်ပါက <xliff:g id="OTHER_APP">%1$s</xliff:g> သုံးပြီးပြောနေခြင်းကို ဖြတ်ပစ်ပါမည်။"</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"ဤခေါ်ဆိုမှု ပြုလုပ်ပုံကို ရွေးချယ်ပါ"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"ခေါ်ဆိုမှုကို <xliff:g id="OTHER_APP">%1$s</xliff:g> ဖြင့် တစ်ဆင့်ပြန်ညွှန်ရန်"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"ကျွန်ုပ်၏ ဖုန်းနံပါတ်ဖြင့် ဖုန်းခေါ်ရန်"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"<xliff:g id="OTHER_APP">%1$s</xliff:g> ဖြင့်ဖုန်းခေါ်ဆို၍မရပါ။ ဖုန်းခေါ်ဆိုမှု တစ်ဆင့်ပြန်ညွှန်ပြသည့် အခြားအက်ပ်ကို အသုံးပြုပါ (သို့) အကူအညီအတွက် ဆော့ဖ်ဝဲအင်ဂျင်နီယာကို ဆက်သွယ်ပါ။"</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"ခေါ်ဆိုမှု ပိတ်ခြင်း"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"\'အဆက်အသွယ်များ\' ထဲတွင် မရှိသော နံပါတ်များ"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"သင်၏ \'အဆက်အသွယ်များ\' ထဲတွင် မပါဝင်သော နံပါတ်များကို ပိတ်ပါ"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"သီးသန့်"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"နံပါတ်မပြသသော ခေါ်ဆိုမှုများကို ပိတ်ပါ"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"အများသုံးဖုန်း"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"အများသုံးဖုန်းများမှ ခေါ်ဆိုမှုများကို ပိတ်ပါ"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"အမည်မသိ"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"အမည်မသိသော ခေါ်ဆိုသူများကို ပိတ်ပါ"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"ခေါ်ဆိုမှု ပိတ်ခြင်း"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"\'ခေါ်ဆိုမှု ပိတ်ခြင်း\' ကို ရပ်ထားပါသည်"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"အရေးပေါ် ခေါ်ဆိုမှု ပြုလုပ်ထားပါသည်"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"အရေးပေါ်တုံ့ပြန်သူများက သင့်အား ဆက်သွယ်နိုင်စေရန် \'ခေါ်ဆိုမှု ပိတ်ခြင်း\' ကို ရပ်ထားပါသည်။"</string>
+ <string name="developer_title" msgid="9146088855661672353">"Telecom ဆော့ဖ်ဝဲအင်ဂျင်နီယာ မီနူး"</string>
</resources>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 6e63c1e..72c362a 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"Administrering av samtaler"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"Telefon"</string>
- <string name="unknown" msgid="6878797917991465859">"Ukjent"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"Tapt anrop"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"Tapt jobbanrop"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Tapte anrop"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> tapte anrop"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"Tapt anrop fra <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Ring tilbake"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"Melding"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"Samtalelyd er kuttet."</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"Høyttaler er aktivert."</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"Kan ikke snakke nå. Hva skjer?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"Jeg ringer deg tilbake straks."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Jeg ringer deg senere."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Kan ikke nå. Ring meg senere."</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Hurtigsvar"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Rediger hurtigsvar"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"Hurtigsvar"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"Melding er sendt til <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"Ringekontoer"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"Kun nødanrop er mulig."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"Denne appen kan ikke ringe uten tillatelse fra telefonen."</string>
- <string name="outgoing_call_error_no_phone_number_supplied" msgid="1940125199802007505">"Skriv inn et gyldig nummer for å plassere en samtale."</string>
- <string name="duplicate_video_call_not_allowed" msgid="3749211605014548386">"Anrop kan ikke legges til akkurat nå."</string>
- <string name="no_vm_number" msgid="4164780423805688336">"Mangler nummer til talepostkasse"</string>
- <string name="no_vm_number_msg" msgid="1300729501030053828">"Det er ikke lagret noe nummer for talepostkasse på SIM-kortet."</string>
- <string name="add_vm_number_str" msgid="4676479471644687453">"Legg til nummer"</string>
- <string name="change_default_dialer_dialog_title" msgid="9101655962941740507">"Vil du bruke <xliff:g id="NEW_APP">%s</xliff:g> som standard telefonapp?"</string>
- <string name="change_default_dialer_dialog_affirmative" msgid="8606546663509166276">"Angi som standard"</string>
- <string name="change_default_dialer_dialog_negative" msgid="9078144617060173845">"Avbryt"</string>
- <string name="change_default_dialer_warning_message" msgid="1417671460801684999">"<xliff:g id="NEW_APP">%s</xliff:g> kan håndtere alt som har med telefonanrop å gjøre. Bruk bare apper du stoler på som standard telefonapp."</string>
- <string name="blocked_numbers" msgid="2751843139572970579">"Blokkerte numre"</string>
- <string name="blocked_numbers_msg" msgid="1045015186124965643">"Du mottar ingen anrop eller tekstmeldinger fra blokkerte numre."</string>
- <string name="block_number" msgid="1101252256321306179">"Legg til et nummer"</string>
- <string name="unblock_dialog_body" msgid="1614238499771862793">"Vil du oppheve blokkeringen av <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
- <string name="unblock_button" msgid="3078048901972674170">"Opphev blokkering"</string>
- <string name="add_blocked_dialog_body" msgid="9030243212265516828">"Blokkér anrop og meldinger fra"</string>
- <string name="add_blocked_number_hint" msgid="6847675097085433553">"Telefonnummer"</string>
- <string name="block_button" msgid="8822290682524373357">"Blokkér"</string>
- <string name="non_primary_user" msgid="5180129233352533459">"Bare enhetseieren kan se og administrere blokkerte numre."</string>
- <string name="delete_icon_description" msgid="8903995728252556724">"Opphev blokkeringen"</string>
- <string name="blocked_numbers_butter_bar_title" msgid="438170866438793182">"Blokkeringen er midlertidig slått av"</string>
- <string name="blocked_numbers_butter_bar_body" msgid="2223244484319442431">"Når du har ringt eller sendt tekstmelding til et nødnummer, blir blokkeringen slått av, sånn at nødtjenesten har mulighet til å kontakte deg."</string>
- <string name="blocked_numbers_butter_bar_button" msgid="2197943354922010696">"Slå på igjen nå"</string>
- <string name="blocked_numbers_number_blocked_message" msgid="7678509606805029540">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> er blokkert"</string>
- <string name="blocked_numbers_number_unblocked_message" msgid="977894647366750418">"Blokkeringen av <xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> er opphevet"</string>
- <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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"Innkommende anrop"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"Tapte anrop"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"Anropsblokkering"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"Samtalen din i <xliff:g id="OTHER_APP">%1$s</xliff:g> avsluttes hvis du foretar dette anropet."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"Anropsblokkering"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"Numre som ikke står i Kontakter"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"Blokkér numre som ikke står i kontaktene mine"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"Privat"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"Blokkér oppringere som ikke viser telefonnummeret sitt"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"Telefonkiosk"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"Blokkér anrop fra telefonkiosker"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"Ukjent"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"Blokkér anrop fra oppringere som ikke er identifisert"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"Anropsblokkering"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"Anropsblokkering er slått av"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"Nødanrop utført"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"Anropsblokkering er slått av for å gjøre det mulig for nødtjenester å kontakte deg."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"Administrering av samtaler"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"Telefon"</string>
+ <string name="unknown" msgid="6993977514360123431">"Ukjent"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"Tapt anrop"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"Tapt jobbanrop"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"Tapte anrop"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> tapte anrop"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"Tapt anrop fra <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"Ring tilbake"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"Melding"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"Samtalelyd er kuttet."</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Høyttaler er aktivert."</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Kan ikke snakke nå. Hva skjer?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"Jeg ringer deg tilbake straks."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"Jeg ringer deg senere."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"Kan ikke nå. Ring meg senere."</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"Hurtigsvar"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"Rediger hurtigsvar"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"Hurtigsvar"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"Melding er sendt til <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"Kunne ikke sende meldingen til <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"Ringekontoer"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"Kun nødanrop er mulig."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"Denne appen kan ikke ringe uten tillatelse fra telefonen."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"Skriv inn et gyldig nummer for å plassere en samtale."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"Anrop kan ikke legges til akkurat nå."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"Mangler nummer til talepostkasse"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"Det er ikke lagret noe nummer for talepostkasse på SIM-kortet."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"Legg til nummer"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"Vil du bruke <xliff:g id="NEW_APP">%s</xliff:g> som standard telefonapp?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"Angi som standard"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"Avbryt"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> kan håndtere alt som har med telefonanrop å gjøre. Bruk bare apper du stoler på som standard telefonapp."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"Vil du angi <xliff:g id="NEW_APP">%s</xliff:g> som standardapp for anropsutvelgelse?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> kan ikke lenger utføre anropsutvelgelse."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> kan se informasjon om oppringere som ikke står i kontaktene dine, og kan blokkere disse anropene. Bare apper du stoler på, bør angis som standardapp for anropsutvelgelse."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"Angi som standard"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"Avbryt"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"Blokkerte numre"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"Du mottar ingen anrop eller tekstmeldinger fra blokkerte numre."</string>
+ <string name="block_number" msgid="3784343046852802722">"Legg til et nummer"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"Vil du oppheve blokkeringen av <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"Opphev blokkering"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"Blokkér anrop og meldinger fra"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"Telefonnummer"</string>
+ <string name="block_button" msgid="485080149164258770">"Blokkér"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"Bare enhetseieren kan se og administrere blokkerte numre."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"Opphev blokkeringen"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"Blokkeringen er midlertidig slått av"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"Når du har ringt eller sendt tekstmelding til et nødnummer, blir blokkeringen slått av, sånn at nødtjenesten har mulighet til å kontakte deg."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"Slå på igjen nå"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> er blokkert"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"Blokkeringen av <xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> er opphevet"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"Kan ikke blokkere nødnumre."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> er allerede blokkert."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"Ring via den personlige ringeappen"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"<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="5795968314037063900">"<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="8653544281903986641">"Hvis du svarer, avsluttes <xliff:g id="CALL_VIA">%1$s</xliff:g>-samtalen din"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"Hvis du svarer, avsluttes <xliff:g id="CALL_VIA">%1$s</xliff:g>-samtalene dine"</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"Hvis du svarer, avsluttes <xliff:g id="CALL_VIA">%1$s</xliff:g>-videosamtalen din"</string>
+ <string name="answering_ends_other_managed_call" msgid="4031778317409881805">"Hvis du svarer, avsluttes samtalen du er i nå"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"Hvis du svarer, avsluttes samtalene du er i nå"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"Hvis du svarer, avsluttes videosamtalen du er i nå"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"Svar"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"Avvis"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"Anropet kan ikke utføres fordi du ikke har noen ringekontoer som støtter denne typen anrop."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"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="6379163795277824868">"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="8243532328969433172">"Kan ikke ringe ut på grunn av en samtale i en annen app."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"Innkommende anrop"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"Tapte anrop"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"Anropsblokkering"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"Samtalen din i <xliff:g id="OTHER_APP">%1$s</xliff:g> avsluttes hvis du foretar dette anropet."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Velg hvordan du vil ringe"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Viderekoble anropet med <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"Ring med telefonnummeret mitt"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"Anrop kan ikke utføres av <xliff:g id="OTHER_APP">%1$s</xliff:g>. Prøv å bruke en annen app for viderekobling av anrop eller ta kontakt med utvikleren for å få hjelp."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"Anropsblokkering"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"Numre som ikke står i Kontakter"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"Blokkér numre som ikke står i kontaktene mine"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"Privat"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"Blokkér oppringere som ikke viser telefonnummeret sitt"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"Telefonkiosk"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"Blokkér anrop fra telefonkiosker"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"Ukjent"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"Blokkér anrop fra oppringere som ikke er identifisert"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"Anropsblokkering"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"Anropsblokkering er slått av"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"Nødanrop utført"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"Anropsblokkering er slått av for å gjøre det mulig for nødtjenester å kontakte deg."</string>
+ <string name="developer_title" msgid="9146088855661672353">"Meny for telekommunikasjonsutviklere"</string>
</resources>
diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml
index 155ae7e..2fa36c1 100644
--- a/res/values-ne/strings.xml
+++ b/res/values-ne/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"कल व्यवस्थापन"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"फोन"</string>
- <string name="unknown" msgid="6878797917991465859">"अज्ञात"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"छुटेका कल"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"छुटेको कार्यको कल"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"छुटेका कल"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> छुटेका कलहरू"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g>बाट छुटेका कल"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"फेरि कल गर्नुहोस्"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"सन्देश"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"कल म्युट भयो।"</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"स्पिकरफोन सक्षम भयो।"</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"अहिले कुरा गर्न मिल्दैन। के भइरहेको छ?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"मैले तपाईंलाई तुरुन्तै कल गर्ने छु।"</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"म तपाईंलाई पछि कल गर्ने छु।"</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"अहिले कुरा गर्न सक्नु हुन्न। मलाई पछि कल गर्नुहुन्छ?"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"द्रुत प्रतिक्रियाहरू"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"द्रुत प्रतिक्रियाहरू सम्पादन गर्नुहोस्"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"द्रुत प्रतिक्रिया"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"<xliff:g id="PHONE_NUMBER">%s</xliff:g> लाई सन्देश पठाइयो।"</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"कलिङ खाताहरू"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"आपतकालीन कलहरूलाई मात्र अनुमति दिइएको छ।"</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"यो अनुप्रयोगले फोनको अनुमति बिना बहिर्गमन कलहरू गर्न सक्दैन।"</string>
- <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">"SIM कार्डमा कुनै पनि भ्वाइसमेल नम्बर भण्डारण भएको छैन।"</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>
- <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="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_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>
- <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_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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"आगमन कलहरू"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"छुटेका कलहरू"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"कलमाथि रोक लगाउने सुविधा"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"यो कल गर्नुले तपाईंको <xliff:g id="OTHER_APP">%1$s</xliff:g> कल अन्त्य गर्दछ।"</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"कलमाथि रोक लगाउने सुविधा"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"सम्पर्क सूचीहरूमा नरहेका नम्बरहरू"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"आफ्नो सम्पर्क सूचीहरूमा सूचीबद्ध नगरिएका नम्बरहरूमाथि रोक लगाउनुहोस्"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"निजी"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"आफ्नो नम्बरको खुलासा नगरी कल गर्ने व्यक्तिहरूमाथि रोक लगाउनुहोस्"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"पे फोन"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"पे फोनहरूबाट आउने कलहरूमाथि रोक लगाउनुहोस्"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"अज्ञात"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"अज्ञात कल गर्ने व्यक्तिहरूको कलमाथि रोक लगाउनुहोस्"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"कलमाथि रोक लगाउने सुविधा"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"कलमाथि रोक लगाउने सुविधालाई असक्षम पारियो"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"आपतकालीन कल गरियो"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"आपतकालीन अवस्थामा उद्दार गर्ने मान्छेहरूलाई तपाईंलाई सम्पर्क गर्न दिन कलमाथि रोक लगाउने सुविधा असक्षम पारिएको छ।"</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"कल व्यवस्थापन"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"फोन"</string>
+ <string name="unknown" msgid="6993977514360123431">"अज्ञात"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"छुटेका कल"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"छुटेको कार्यको कल"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"छुटेका कल"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> छुटेका कलहरू"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g>बाट छुटेका कल"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"फेरि कल गर्नुहोस्"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"सन्देश"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"कल म्युट भयो।"</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"स्पिकरफोन सक्षम भयो।"</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"अहिले कुरा गर्न मिल्दैन। के भइरहेको छ?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"मैले तपाईंलाई तुरुन्तै कल गर्ने छु।"</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"म तपाईंलाई पछि कल गर्ने छु।"</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"अहिले कुरा गर्न सक्नु हुन्न। मलाई पछि कल गर्नुहुन्छ?"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"द्रुत प्रतिक्रियाहरू"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"द्रुत प्रतिक्रियाहरू सम्पादन गर्नुहोस्"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"द्रुत प्रतिक्रिया"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"<xliff:g id="PHONE_NUMBER">%s</xliff:g> लाई सन्देश पठाइयो।"</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"<xliff:g id="PHONE_NUMBER">%s</xliff:g> मा सन्देश पठाउन सकिएन।"</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"कलिङ खाताहरू"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"आपतकालीन कलहरूलाई मात्र अनुमति दिइएको छ।"</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"यो अनुप्रयोगले फोनको अनुमति बिना बहिर्गमन कलहरू गर्न सक्दैन।"</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"एक कल गर्नको लागि, एक वैध नम्बर प्रविष्टि गर्नुहोस्।"</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"यस समयमा कल थप गर्न सकिँदैन।"</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"भ्वाइसमेल नम्बर हराइरहेको छ"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"SIM कार्डमा कुनै पनि भ्वाइसमेल नम्बर भण्डारण भएको छैन।"</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"नम्बर थप्नुहोस्"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"तपाईंको पूर्वनिर्धारित फोन अनुप्रयोग <xliff:g id="NEW_APP">%s</xliff:g> बनाउने हो?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"पूर्वनिर्धारित रूपमा सेट गर्नुहोस्"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"रद्द गर्नुहोस्"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> कलका सबै पक्षहरूलाई स्थापित गर्न र नियन्त्रण गर्न सक्षम हुने छ। तपाईंलाई विश्वास लाग्ने अनुप्रयोगहरूलाई मात्र फोनमा पूर्वनिर्धारित अनुप्रयोगका रूपमा सेट गर्नुपर्छ।"</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"तपाईंको पूर्वनिर्धारित कल स्क्रिन अनुप्रयोग <xliff:g id="NEW_APP">%s</xliff:g> बनाउने हो?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> ले अब उप्रान्त कलहरू स्क्रिन गर्न सक्ने छैनन्।"</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> ले तपाईंको सम्पर्कमा नभएका कल गर्ने व्यक्तिका जानकारी हेर्न सक्छ र तिनीहरूमाथि रोक लगाउन सक्छ। तपाईंलाई विश्वास लाग्ने अनुप्रयोगहरूलाई मात्र कल स्क्रिन पूर्वनिर्धारित अनुप्रयोगका रूपमा सेट गर्नुपर्छ।"</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"पूर्वनिर्धारित रूपमा सेट गर्नुहोस्"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"रद्द गर्नुहोस्"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"रोकिएका नम्बरहरू"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"तपाईँले रोक लगाइएका नम्बरहरूबाट फोन वा पाठ सन्देशहरू प्राप्त गर्नुहुने छैन।"</string>
+ <string name="block_number" msgid="3784343046852802722">"नम्बर थप्नुहोस्"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"<xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g> लाई अनब्लक गर्ने हो?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"अनब्लक गर्नुहोस्"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"यस नम्बरबाट कल र पाठ सन्देशहरूलाई रोक्नुहोस्"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"फोन नम्बर"</string>
+ <string name="block_button" msgid="485080149164258770">"रोक्नुहोस्"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"यन्त्रको मालिकले रोकिएका नम्बरहरूलाई हेर्न र व्यवस्थापन गर्न सक्छ।"</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"अनब्लक गर्नुहोस्"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"रोक लगाउने काम अस्थायी रूपमा निष्क्रिय छ"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"तपाईँले आपतकालीन नम्बरमा डायल गरेपछि वा पाठ सन्देश पठाएपछि आपतकालीन सेवाहरूले तपाईँलाई सम्पर्क गर्न सकून् भन्ने कुरा सुनिश्चित गर्न कलमाथिको अवरोध निष्क्रिय गरिन्छ।"</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"अब पुन:-सक्रिय गर्नुहोस्"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> माथि रोक लगाइयो"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> माथिको रोक हटाइयो"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"आपतकालीन नम्बरमाथि रोक लगाउन सकिएन।"</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> लाई पहिले नै रोकिएको छ।"</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"कल गर्न व्यक्तिगत डायलर प्रयोग गर्दै"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"<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="5795968314037063900">"<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="8653544281903986641">"जवाफ फर्काउनुले तपाईंको <xliff:g id="CALL_VIA">%1$s</xliff:g> कल समाप्त हुनेछ"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"जवाफ फर्काउनुले तपाईंका <xliff:g id="CALL_VIA">%1$s</xliff:g> कलहरू समाप्त हुनेछन्"</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"जवाफ फर्काउनुले तपाईंको <xliff:g id="CALL_VIA">%1$s</xliff:g> भिडियो कल समाप्त हुनेछ"</string>
+ <string name="answering_ends_other_managed_call" msgid="4031778317409881805">"जवाफ फर्काउनुले तपाईंको जारी कल समाप्त हुनेछ"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"जवाफ फर्काउनुले तपाईंका जारी कलहरू समाप्त हुनेछन्"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"जवाफ फर्काउनुले तपाईंको जारी भिडियो कल समाप्त हुनेछ"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"जवाफ दिनुहोस्"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"अस्वीकार गर्नुहोस्"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"यस प्रकारका कलहरूलाई समर्थन गर्ने कुनै पनि कल गर्ने खाता नभएकाले कल गर्न सकिँदैन।"</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"तपाईंको <xliff:g id="OTHER_CALL">%1$s</xliff:g> कलका कारण कल गर्न सकिँदैन।"</string>
+ <string name="cant_call_due_to_ongoing_calls" msgid="6379163795277824868">"तपाईंका <xliff:g id="OTHER_CALL">%1$s</xliff:g> कलहरूका कारण कल गर्न सकिँदैन।"</string>
+ <string name="cant_call_due_to_ongoing_unknown_call" msgid="8243532328969433172">"अर्को अनुप्रयोगमा जारी कलका कारण कल गर्न सकिँदैन।"</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"आगमन कलहरू"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"छुटेका कलहरू"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"कलमाथि रोक लगाउने सुविधा"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"यो कल गर्नुले तपाईंको <xliff:g id="OTHER_APP">%1$s</xliff:g> कल अन्त्य गर्दछ।"</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"यो कल गर्ने तरिका छनौट गर्नुहोस्"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"<xliff:g id="OTHER_APP">%1$s</xliff:g> प्रयोग गरी कल रिडाइरेक्ट गर्नुहोस्"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"फोन नम्बर प्रयोग गरी कल गर्नुहोस्"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"<xliff:g id="OTHER_APP">%1$s</xliff:g> प्रयोग गरेर कल गर्न सकिएन। कुनै अर्को रिडिरेक्टिङ अनुप्रयोगको प्रयोग वा मद्दतका लागि विकासकर्तासँग सम्पर्क गरी हेर्नुहोस्।"</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"कलमाथि रोक लगाउने सुविधा"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"सम्पर्क सूचीहरूमा नरहेका नम्बरहरू"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"आफ्नो सम्पर्क सूचीहरूमा सूचीबद्ध नगरिएका नम्बरहरूमाथि रोक लगाउनुहोस्"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"निजी"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"आफ्नो नम्बरको खुलासा नगरी कल गर्ने व्यक्तिहरूमाथि रोक लगाउनुहोस्"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"पे फोन"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"पे फोनहरूबाट आउने कलहरूमाथि रोक लगाउनुहोस्"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"अज्ञात"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"अज्ञात कल गर्ने व्यक्तिहरूको कलमाथि रोक लगाउनुहोस्"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"कलमाथि रोक लगाउने सुविधा"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"कलमाथि रोक लगाउने सुविधालाई असक्षम पारियो"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"आपतकालीन कल गरियो"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"आपतकालीन अवस्थामा उद्दार गर्ने मान्छेहरूलाई तपाईंलाई सम्पर्क गर्न दिन कलमाथि रोक लगाउने सुविधा असक्षम पारिएको छ।"</string>
+ <string name="developer_title" msgid="9146088855661672353">"टेलिकमको विकासकर्ताको मेनु"</string>
</resources>
diff --git a/res/values-night/styles.xml b/res/values-night/styles.xml
new file mode 100644
index 0000000..da31304
--- /dev/null
+++ b/res/values-night/styles.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2019 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>
+
+ <style name="Theme.Telecom.DialerSettings" parent="@android:style/Theme.Material.Light">
+ <item name="android:forceDarkAllowed">true</item>
+ <item name="android:tint">@color/blocked_numbers_secondary_text_color</item>
+ <item name="android:actionBarStyle">@style/TelecomDialerSettingsActionBarStyle</item>
+ <item name="android:navigationBarColor">@color/background_color</item>
+ <item name="android:windowBackground">@color/background_color</item>
+ <item name="android:colorPrimaryDark">@color/background_color</item>
+ <item name="android:actionOverflowButtonStyle">@style/TelecomDialerSettingsActionOverflowButtonStyle</item>
+ <item name="android:windowContentOverlay">@null</item>
+ </style>
+
+ <style name="Theme.Telecom.BlockedNumbers" parent="@android:style/Theme.Material.Light">
+ <item name="android:forceDarkAllowed">true</item>
+ <item name="android:actionBarStyle">@style/TelecomDialerSettingsActionBarStyle</item>
+ <item name="android:navigationBarColor">@color/background_color</item>
+ <item name="android:windowBackground">@color/background_color</item>
+ <item name="android:colorPrimaryDark">@color/background_color</item>
+ <item name="android:windowContentOverlay">@null</item>
+ <item name="android:colorAccent">@color/theme_color</item>
+ <item name="android:listDivider">@null</item>
+ </style>
+
+</resources>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index a85d66e..37977c2 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"Oproepbeheer"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"Telefoon"</string>
- <string name="unknown" msgid="6878797917991465859">"Onbekend"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"Gemist gesprek"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"Gemist zakelijk gesprek"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Gemiste gesprekken"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> gemiste gesprekken"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"Gemist gesprek van <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Terugbellen"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"Bericht"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"Gesprek gedempt."</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"Luidspreker is aan."</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"Kan nu niet opnemen. Alles goed?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"Ik bel je zo terug."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Ik bel je later."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Kan nu niet opnemen. Bel je me later?"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Snelle reacties"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Snelle reacties bewerken"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"Snelle reactie"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"Bericht verzonden naar <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"Gespreksaccounts"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"Alleen noodoproepen zijn toegestaan."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"Deze app kan geen uitgaande gesprekken starten zonder telefoonrechten."</string>
- <string name="outgoing_call_error_no_phone_number_supplied" msgid="1940125199802007505">"Als je wilt bellen, moet je een geldig nummer invoeren."</string>
- <string name="duplicate_video_call_not_allowed" msgid="3749211605014548386">"Gesprek kan momenteel niet worden toegevoegd."</string>
- <string name="no_vm_number" msgid="4164780423805688336">"Voicemailnummer ontbreekt"</string>
- <string name="no_vm_number_msg" msgid="1300729501030053828">"Er is geen voicemailnummer op de simkaart opgeslagen."</string>
- <string name="add_vm_number_str" msgid="4676479471644687453">"Nummer toevoegen"</string>
- <string name="change_default_dialer_dialog_title" msgid="9101655962941740507">"Wil je <xliff:g id="NEW_APP">%s</xliff:g> instellen als je standaard telefoon-app?"</string>
- <string name="change_default_dialer_dialog_affirmative" msgid="8606546663509166276">"Standaard instellen"</string>
- <string name="change_default_dialer_dialog_negative" msgid="9078144617060173845">"Annuleren"</string>
- <string name="change_default_dialer_warning_message" msgid="1417671460801684999">"<xliff:g id="NEW_APP">%s</xliff:g> kan gesprekken plaatsen en alle aspecten hiervan beheren. Stel alleen apps in als je standaard telefoon-app als je ze vertrouwt."</string>
- <string name="blocked_numbers" msgid="2751843139572970579">"Geblokkeerde nummers"</string>
- <string name="blocked_numbers_msg" msgid="1045015186124965643">"Je ontvangt geen gesprekken of sms\'jes van geblokkeerde nummers."</string>
- <string name="block_number" msgid="1101252256321306179">"Een nummer toevoegen"</string>
- <string name="unblock_dialog_body" msgid="1614238499771862793">"Blokkering van <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g> opheffen?"</string>
- <string name="unblock_button" msgid="3078048901972674170">"Blokkering opheffen"</string>
- <string name="add_blocked_dialog_body" msgid="9030243212265516828">"Gesprekken en sms\'jes blokkeren van"</string>
- <string name="add_blocked_number_hint" msgid="6847675097085433553">"Telefoonnummer"</string>
- <string name="block_button" msgid="8822290682524373357">"Blokkeren"</string>
- <string name="non_primary_user" msgid="5180129233352533459">"Alleen de eigenaar van het apparaat kan geblokkeerd nummers bekijken en beheren."</string>
- <string name="delete_icon_description" msgid="8903995728252556724">"Blokkering opheffen"</string>
- <string name="blocked_numbers_butter_bar_title" msgid="438170866438793182">"Blokkering tijdelijk uitgeschakeld"</string>
- <string name="blocked_numbers_butter_bar_body" msgid="2223244484319442431">"Als je een noodnummer belt of er een sms naartoe stuurt, wordt de blokkering uitgeschakeld om te zorgen dat hulpdiensten contact met je kunnen opnemen."</string>
- <string name="blocked_numbers_butter_bar_button" msgid="2197943354922010696">"Nu opnieuw inschakelen"</string>
- <string name="blocked_numbers_number_blocked_message" msgid="7678509606805029540">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> geblokkeerd"</string>
- <string name="blocked_numbers_number_unblocked_message" msgid="977894647366750418">"Blokkering van <xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> opgeheven"</string>
- <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>-gesprek 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>-gesprek 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>-gesprekken 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 actief gesprek beëindigd"</string>
- <string name="answering_ends_other_managed_calls" msgid="6429838309560397988">"Als je opneemt, worden je actieve gesprekken 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">"Gesprek kan niet worden gestart vanwege je <xliff:g id="OTHER_CALL">%1$s</xliff:g>-gesprek."</string>
- <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"Gesprek kan niet worden gestart vanwege je <xliff:g id="OTHER_CALL">%1$s</xliff:g>-gesprekken."</string>
- <string name="cant_call_due_to_ongoing_unknown_call" msgid="149091978697302211">"Gesprek kan niet worden gestart vanwege een gesprek in een andere app."</string>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"Inkomende gesprekken"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"Gemiste gesprekken"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"Gesprekken blokkeren"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"Als je dit gesprek start, wordt je <xliff:g id="OTHER_APP">%1$s</xliff:g>-gesprek beëindigd."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"Gesprekken blokkeren"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"Nummers die niet op je contactenlijst staan"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"Blokkeer nummers die niet op je contactenlijst staan"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"Privé"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"Bellers met een anoniem nummer blokkeren"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"Betaaltelefoon"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"Gesprekken van betaaltelefoons blokkeren"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"Onbekend"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"Gesprekken van onbekende bellers blokkeren"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"Gesprekken blokkeren"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"Gesprekken blokkeren uitgeschakeld"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"Noodoproep geplaatst"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"Gesprekken blokkeren is uitgeschakeld zodat nooddiensten je kunnen bereiken."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"Oproepbeheer"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"Telefoon"</string>
+ <string name="unknown" msgid="6993977514360123431">"Onbekend"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"Gemist gesprek"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"Gemist zakelijk gesprek"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"Gemiste gesprekken"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> gemiste gesprekken"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"Gemist gesprek van <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"Terugbellen"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"Bericht"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"Gesprek gedempt."</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Luidspreker is aan."</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Kan nu niet opnemen. Alles goed?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"Ik bel je zo terug."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"Ik bel je later."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"Kan nu niet opnemen. Bel je me later?"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"Snelle reacties"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"Snelle reacties bewerken"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"Snelle reactie"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"Bericht verzonden naar <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"Kan bericht niet verzenden naar <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"Gespreksaccounts"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"Alleen noodoproepen zijn toegestaan."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"Deze app kan geen uitgaande gesprekken starten zonder telefoonrechten."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"Als je wilt bellen, moet je een geldig nummer invoeren."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"Gesprek kan momenteel niet worden toegevoegd."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"Voicemailnummer ontbreekt"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"Er is geen voicemailnummer op de simkaart opgeslagen."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"Nummer toevoegen"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"Wil je <xliff:g id="NEW_APP">%s</xliff:g> instellen als je standaard telefoon-app?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"Standaard instellen"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"Annuleren"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> kan gesprekken plaatsen en alle aspecten hiervan beheren. Stel alleen apps in als je standaard telefoon-app als je ze vertrouwt."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"<xliff:g id="NEW_APP">%s</xliff:g> instellen als standaard app voor gesprekken screenen?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> kan geen gesprekken meer screenen."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> kan informatie bekijken over bellers die niet in je contacten staan en kan deze gesprekken blokkeren. Stel alleen vertrouwde apps in als standaard app voor gesprekken screenen."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"Standaard instellen"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"Annuleren"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"Geblokkeerde nummers"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"Je ontvangt geen gesprekken of sms\'jes van geblokkeerde nummers."</string>
+ <string name="block_number" msgid="3784343046852802722">"Een nummer toevoegen"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"Blokkering van <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g> opheffen?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"Blokkering opheffen"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"Gesprekken en sms\'jes blokkeren van"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"Telefoonnummer"</string>
+ <string name="block_button" msgid="485080149164258770">"Blokkeren"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"Alleen de eigenaar van het apparaat kan geblokkeerd nummers bekijken en beheren."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"Blokkering opheffen"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"Blokkering tijdelijk uitgeschakeld"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"Als je een noodnummer belt of er een sms naartoe stuurt, wordt de blokkering uitgeschakeld om te zorgen dat hulpdiensten contact met je kunnen opnemen."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"Nu opnieuw inschakelen"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> geblokkeerd"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"Blokkering van <xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> opgeheven"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"Kan alarmnummer niet blokkeren."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> is al geblokkeerd."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"De persoonlijke kiezer gebruiken om te bellen"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"<xliff:g id="CALL_VIA">%1$s</xliff:g>-gesprek van <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
+ <string name="notification_incoming_video_call" msgid="5795968314037063900">"<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="8653544281903986641">"Als je opneemt, wordt je <xliff:g id="CALL_VIA">%1$s</xliff:g>-gesprek beëindigd"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"Als je opneemt, worden je <xliff:g id="CALL_VIA">%1$s</xliff:g>-gesprekken beëindigd"</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"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="4031778317409881805">"Als je opneemt, wordt je actief gesprek beëindigd"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"Als je opneemt, worden je actieve gesprekken beëindigd"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"Als je opneemt, wordt je actieve videogesprek beëindigd"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"Beantwoorden"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"Weigeren"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"Gesprek kan niet worden geplaatst omdat er geen gespreksaccounts zijn die gesprekken van dit type ondersteunen."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"Gesprek kan niet worden gestart vanwege je <xliff:g id="OTHER_CALL">%1$s</xliff:g>-gesprek."</string>
+ <string name="cant_call_due_to_ongoing_calls" msgid="6379163795277824868">"Gesprek kan niet worden gestart vanwege je <xliff:g id="OTHER_CALL">%1$s</xliff:g>-gesprekken."</string>
+ <string name="cant_call_due_to_ongoing_unknown_call" msgid="8243532328969433172">"Gesprek kan niet worden gestart vanwege een gesprek in een andere app."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"Inkomende gesprekken"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"Gemiste gesprekken"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"Gesprekken blokkeren"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"Als je dit gesprek start, wordt je <xliff:g id="OTHER_APP">%1$s</xliff:g>-gesprek beëindigd."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Kies hoe je dit gesprek wilt plaatsen"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Gesprek omleiden via <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"Bellen via mijn telefoonnummer"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"<xliff:g id="OTHER_APP">%1$s</xliff:g> kan geen gesprek plaatsen. Probeer een andere app om gesprekken om te leiden of neem voor hulp contact op met de ontwikkelaar."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"Gesprekken blokkeren"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"Nummers die niet op je contactenlijst staan"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"Blokkeer nummers die niet op je contactenlijst staan"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"Privé"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"Bellers met een anoniem nummer blokkeren"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"Betaaltelefoon"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"Gesprekken van betaaltelefoons blokkeren"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"Onbekend"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"Gesprekken van onbekende bellers blokkeren"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"Gesprekken blokkeren"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"Gesprekken blokkeren uitgeschakeld"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"Noodoproep geplaatst"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"Gesprekken blokkeren is uitgeschakeld zodat nooddiensten je kunnen bereiken."</string>
+ <string name="developer_title" msgid="9146088855661672353">"Telecomontwikkelaarsmenu"</string>
</resources>
diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml
index c3c6cbe..d6241f2 100644
--- a/res/values-or/strings.xml
+++ b/res/values-or/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"କଲ୍ ପରିଚାଳନା"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"ଫୋନ୍ କରନ୍ତୁ"</string>
- <string name="unknown" msgid="6878797917991465859">"ଅଜଣା"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"ମିସଡ୍ କଲ୍"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"କାର୍ଯ୍ୟସ୍ଥଳୀରୁ ଆସିଥିବା ମିସଡ୍ କଲ୍"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"ମିସଡ୍ କଲ୍"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g>ଟି ମିସଡ୍ କଲ୍"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g>ଙ୍କ ଠାରୁ ମିସ୍-କଲ୍ ମିଳିଛି"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"କଲବ୍ୟାକ୍ କରନ୍ତୁ"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"ମେସେଜ୍ ଦିଅନ୍ତୁ"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"କଲ୍ ମ୍ୟୁଟ୍ କରାଯାଇଛି।"</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"ସ୍ପିକରଫୋନ୍କୁ ସକ୍ଷମ କରାଯାଇଛି ।"</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"ବର୍ତ୍ତମାନ କଥା ହୋଇପାରିବ ନାହିଁ। କଥା କ’ଣ?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"ମୁଁ ଟିକେ ପରେ ଆପଣଙ୍କୁ କଲ୍ କରିବି।"</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"ମୁଁ ଆପଣଙ୍କୁ ପରେ କଲ୍ କରିବି।"</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"ବର୍ତ୍ତମାନ କଥା ହୋଇପାରିବ ନାହିଁ। ମୋତେ ପରେ କଲ୍ କରିବେ?"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"ଶୀଘ୍ର ଉତ୍ତର"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"ଶୀଘ୍ର ଉତ୍ତରକୁ ଏଡିଟ୍ କରନ୍ତୁ"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"ଶୀଘ୍ର ଉତ୍ତର"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"<xliff:g id="PHONE_NUMBER">%s</xliff:g>କୁ ମେସେଜ୍ ପଠାଗଲା।"</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"କଲ୍ କରିବା ଆକାଉଣ୍ଟ"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"କେବଳ ଜରୁରିକାଳୀନ କଲ୍କୁ ଅନୁମତି ଦିଆଯାଇଛି।"</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"ଫୋନ୍ର ବିନାଅନୁମତିରେ ଏହି ଆପ୍ଲିକେଶନ୍ ଆଉଟ୍ଗୋଇଙ୍ଗ କଲ୍ କରିପାରିବ ନାହିଁ।"</string>
- <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">"SIM କାର୍ଡରେ କୌଣସି ଭଏସମେଲ୍ ନମ୍ବର୍ ଷ୍ଟୋର୍ କରାଯାଇନାହିଁ।"</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>
- <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="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_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>
- <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_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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"ଇନ୍କମିଙ୍ଗ କଲ୍"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"ମିସଡ୍ କଲ୍"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"କଲ୍କୁ ଅବରୋଧ କରନ୍ତୁ"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"ଏହି କଲ୍କୁ ସ୍ଥାପନ କରିବା ଦ୍ଵାରା ଆପଣଙ୍କର <xliff:g id="OTHER_APP">%1$s</xliff:g> କଲ୍ ସମାପ୍ତ ହୋଇଯିବ।"</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"କଲ୍କୁ ଅବରୋଧ କରନ୍ତୁ"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"ଯୋଗାଯୋଗରେ ନଥିବା ନମ୍ବର୍"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"ଆପଣଙ୍କ ଯୋଗାଯୋଗରେ ତାଲିକାଭୁକ୍ତ ହୋଇନଥିବା ନମ୍ବର୍କୁ ଅବରୋଧ କରନ୍ତୁ"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"ଗୋପନୀୟ"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"ନିଜର ନମ୍ବର୍କୁ ପ୍ରକାଶ କରୁନଥିବା କଲ୍କର୍ତ୍ତାଙ୍କୁ ଅବରୋଧ କରନ୍ତୁ"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"ପେ-ଫୋନ୍"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"ପେ-ଫୋନ୍ରୁ କଲ୍କୁ ଅବରୋଧ କରନ୍ତୁ"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"ଅଜଣା"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"ଅଚିହ୍ନା କଲକର୍ତ୍ତାଙ୍କର କଲ୍କୁ ଅବରୋଧ କରନ୍ତୁ"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"କଲ୍କୁ ଅବରୋଧ କରନ୍ତୁ"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"କଲ୍ ଅବରୋଧ ସୁବିଧାକୁ ଅକ୍ଷମ କରାଯାଇଛି"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"ଜରୁରିକାଳୀନ କଲ୍ କରାଗଲା"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"ଜରୁରିକାଳୀନ ସହାୟତା କର୍ମଚାରୀମାନେ ଆପଣଙ୍କୁ ଯୋଗଯୋଗ କରିବା ପାଇଁ କଲ୍ ଅବରୋଧକୁ ଅକ୍ଷମ କରାଯାଇଛି।"</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"କଲ୍ ପରିଚାଳନା"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"ଫୋନ୍ କରନ୍ତୁ"</string>
+ <string name="unknown" msgid="6993977514360123431">"ଅଜଣା"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"ମିସଡ୍ କଲ୍"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"କାର୍ଯ୍ୟସ୍ଥଳୀରୁ ଆସିଥିବା ମିସଡ୍ କଲ୍"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"ମିସଡ୍ କଲ୍"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g>ଟି ମିସଡ୍ କଲ୍"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g>ଙ୍କ ଠାରୁ ମିସ୍-କଲ୍ ମିଳିଛି"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"କଲବ୍ୟାକ୍ କରନ୍ତୁ"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"ମେସେଜ୍ ଦିଅନ୍ତୁ"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"କଲ୍ ମ୍ୟୁଟ୍ କରାଯାଇଛି।"</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"ସ୍ପିକରଫୋନ୍କୁ ସକ୍ଷମ କରାଯାଇଛି ।"</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"ବର୍ତ୍ତମାନ କଥା ହୋଇପାରିବ ନାହିଁ। କଥା କ’ଣ?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"ମୁଁ ଟିକେ ପରେ ଆପଣଙ୍କୁ କଲ୍ କରିବି।"</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"ମୁଁ ଆପଣଙ୍କୁ ପରେ କଲ୍ କରିବି।"</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"ବର୍ତ୍ତମାନ କଥା ହୋଇପାରିବ ନାହିଁ। ମୋତେ ପରେ କଲ୍ କରିବେ?"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"ଶୀଘ୍ର ଉତ୍ତର"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"ଶୀଘ୍ର ଉତ୍ତରକୁ ଏଡିଟ୍ କରନ୍ତୁ"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"ଶୀଘ୍ର ଉତ୍ତର"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"<xliff:g id="PHONE_NUMBER">%s</xliff:g>କୁ ମେସେଜ୍ ପଠାଗଲା।"</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"Message failed to send to <xliff:g id="PHONE_NUMBER">%s</xliff:g>କୁ ପଠାଇବାକୁ ମେସେଜ୍ ବିିିିଫଳ ହୋଇଛି"</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"କଲ୍ କରିବା ଆକାଉଣ୍ଟ"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"କେବଳ ଜରୁରିକାଳୀନ କଲ୍କୁ ଅନୁମତି ଦିଆଯାଇଛି।"</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"ଫୋନ୍ର ବିନାଅନୁମତିରେ ଏହି ଆପ୍ଲିକେଶନ୍ ଆଉଟ୍ଗୋଇଙ୍ଗ କଲ୍ କରିପାରିବ ନାହିଁ।"</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"ଗୋଟିଏ କଲ୍ କରିବା ପାଇଁ ଏକ ବୈଧ ନମ୍ବର୍ ପ୍ରବେଶ କରନ୍ତୁ।"</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"ଏହି ସମୟରେ କଲ୍ ଯୋଡ଼ାଯାଇପାରିବ ନାହିଁ।"</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"ହଜିଯାଇଥିବା ଭଏସମେଲ୍ ନମ୍ବର୍"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"SIM କାର୍ଡରେ କୌଣସି ଭଏସମେଲ୍ ନମ୍ବର୍ ଷ୍ଟୋର୍ କରାଯାଇନାହିଁ।"</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"ନମ୍ବର୍ ଯୋଡ଼ନ୍ତୁ"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"<xliff:g id="NEW_APP">%s</xliff:g>କୁ ଆପଣଙ୍କ ଫୋନ୍ର ଡିଫଲ୍ଟ ଆପ୍ କରିବେ?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"ଡିଫଲ୍ଟ ସେଟ୍ କରନ୍ତୁ"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"କ୍ୟାନ୍ସଲ୍ କରନ୍ତୁ"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> କଲ୍ କରିବା ଏବଂ କଲ୍ର ସମସ୍ତ ଦିଗକୁ ନିୟନ୍ତ୍ରଣ କରିବାରେ ସକ୍ଷମ ହେବ। କେବଳ ନିଜର ଭରସାଯୋଗ୍ୟ ଆପ୍କୁ ଡିଫଲ୍ଟ ଫୋନ୍ ଆପ୍ ଭାବେ ସେଟ୍ କରିବା ଉଚିତ୍।"</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"<xliff:g id="NEW_APP">%s</xliff:g>କୁ ଆପଣଙ୍କ ଡିଫଲ୍ଟ କଲ୍ ସ୍କ୍ରିନିଂ ଆପ୍ କରିବେ?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> କଲ୍ ସ୍କ୍ରିନ୍ କରିପାରିରିବେ ନାହିଁ।"</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"ଆପଣଙ୍କ ଯୋଗାଯୋଗରେ ନଥିବା କଲର୍ଙ୍କ ସମ୍ଵନ୍ଧରେ ସୂଚନା ଦେଖିବାକୁ <xliff:g id="NEW_APP">%s</xliff:g> ସକ୍ଷମ ହେବେ। କେବଳ ଆପଣ ବିଶ୍ଵାସ କରୁଥିବା ଆପ୍ସ ଡିଫଲ୍ଟ କଲ୍ ସ୍କ୍ରିନିଂ ଆପ୍ ଭାବରେ ସେଟ୍ ହେବା ଆବଶ୍ୟକ ଅଟେ।"</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"ଡିଫଲ୍ଟ ସେଟ୍ କରନ୍ତୁ"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"ବାତିଲ୍ କରନ୍ତୁ"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"ବ୍ଲକ୍ କରାଯାଇଥିବା ନମ୍ବର୍"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"ବ୍ଲକ୍ କରାଯାଇଥିବା ନମ୍ବର୍ରୁ ଆପଣ କଲ୍ କିମ୍ବା ଟେକ୍ସଟ୍ ଗ୍ରହଣ କରିପାରିବେ ନାହିଁ।"</string>
+ <string name="block_number" msgid="3784343046852802722">"ଗୋଟିଏ ନମ୍ବର୍ ଯୋଡ଼ନ୍ତୁ"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"<xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>ରୁ ବ୍ଲକ୍ ହଟାଇବେ?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"ଅବରୋଧ ହଟାନ୍ତୁ"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"ଏହାର କଲ୍ ଓ ଟେକ୍ସଟ୍କୁ ବ୍ଲକ୍ କରନ୍ତୁ"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"ଫୋନ୍ ନମ୍ଵର୍"</string>
+ <string name="block_button" msgid="485080149164258770">"ବ୍ଲକ୍ କରନ୍ତୁ"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"କେବଳ ଡିଭାଇସ୍ର ମାଲିକ ଅବରୋଧ କରାଯାଇଥିବା ନମ୍ବର୍କୁ ଦେଖିପାରିବେ ଓ ପରିଚାଳନା କରିପାରିବେ।"</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"ଅନବ୍ଲକ୍ କରନ୍ତୁ"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"ଅସ୍ଥାୟୀରୂପେ ଅବରୋଧ ଅଫ୍ ଅଛି"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"ଆପଣ ଗୋଟିଏ ଜରୁରିକାଳୀନ ନମ୍ବର୍କୁ ଡାଏଲ୍ କିମ୍ବା ଟେକ୍ସଟ୍ କରିବା ପରେ, ଜରୁରିକାଳୀନ ସେବା ଆପଣଙ୍କୁ ଯୋଗାଯୋଗ କରିବାକୁ ସୁନିଶ୍ଚିତ କରିବା ପାଇଁ ଅବରୋଧକୁ ବନ୍ଦ କରିଦିଆଯାଇଥାଏ।"</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"ବର୍ତ୍ତମାନ ପୁନଃସକ୍ଷମ କରନ୍ତୁ"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> ବ୍ଲକ୍ କରାଯାଇଛି"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> ଅବରୋଧ ହଟାଇଦିଆଯାଇଛି"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"ଜରୁରିକାଳୀନ ନମ୍ବର୍କୁ ଅବରୋଧ କରିବାରେ ଅକ୍ଷମ।"</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g>କୁ ଅବରୋଧ କରାଯାଇସରିଛି।"</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"କଲ୍ କରିବା ପାଇଁ ବ୍ୟକ୍ତିଗତ ଡାଏଲର୍କୁ ବ୍ୟବହାର କରନ୍ତୁ"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"<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="5795968314037063900">"<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="8653544281903986641">"ଉତ୍ତର ଦେବାଦ୍ଵାରା ଆପଣଙ୍କର <xliff:g id="CALL_VIA">%1$s</xliff:g> କଲ୍ ସମାପ୍ତ ହୋଇଯିବ"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"ଉତ୍ତର ଦେବାଦ୍ଵାରା ଆପଣଙ୍କର <xliff:g id="CALL_VIA">%1$s</xliff:g> କଲ୍ ସମାପ୍ତ ହୋଇଯିବ"</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"ଉତ୍ତର ଦେବାଦ୍ଵାରା ଆପଣଙ୍କର <xliff:g id="CALL_VIA">%1$s</xliff:g> ଭିଡିଓ କଲ୍ ସମାପ୍ତ ହୋଇଯିବ"</string>
+ <string name="answering_ends_other_managed_call" msgid="4031778317409881805">"ଉତ୍ତର ଦେବାଦ୍ଵାରା ଆପଣଙ୍କର ଜାରି ରହିଥିବା କଲ୍ ସମାପ୍ତ ହୋଇଯିବ"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"ଉତ୍ତର ଦେବାଦ୍ଵାରା ଆପଣଙ୍କର ଜାରି ରହିଥିବା କଲ୍ ସମାପ୍ତ ହୋଇଯିବ"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"ଉତ୍ତର ଦେବାଦ୍ଵାରା ଆପଣଙ୍କର ଜାରି ରହିଥିବା ଭିଡିଓ କଲ୍ ସମାପ୍ତ ହୋଇଯିବ"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"ଉତ୍ତର ଦିଅନ୍ତୁ"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"ଅସ୍ୱୀକାର"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"ଏହି ପ୍ରକାରର କଲ୍ ସମର୍ଥନ କରୁଥିବା କଲିଂ ଆକାଉଣ୍ଟ ନଥିବା ଯୋଗୁଁ କଲ୍ କରାଯାଇପାରିବ ନାହିଁ।"</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"ଆପଣଙ୍କର <xliff:g id="OTHER_CALL">%1$s</xliff:g> କଲ୍ ହେତୁ କଲ୍ କରାଯାଇପାରିବ ନାହିଁ।"</string>
+ <string name="cant_call_due_to_ongoing_calls" msgid="6379163795277824868">"ଆପଣଙ୍କର <xliff:g id="OTHER_CALL">%1$s</xliff:g> କଲ୍ ହେତୁ କଲ୍ କରାଯାଇପାରିବ ନାହିଁ।"</string>
+ <string name="cant_call_due_to_ongoing_unknown_call" msgid="8243532328969433172">"ଅନ୍ୟ ଆପ୍ରେ କରାଯାଇଥିବା କଲ୍ ହେତୁ କଲ୍ କରାଯାଇପାରିବ ନାହିଁ।"</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"ଇନ୍କମିଙ୍ଗ କଲ୍"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"ମିସଡ୍ କଲ୍"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"କଲ୍କୁ ଅବରୋଧ କରନ୍ତୁ"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"ଏହି କଲ୍କୁ ସ୍ଥାପନ କରିବା ଦ୍ଵାରା ଆପଣଙ୍କର <xliff:g id="OTHER_APP">%1$s</xliff:g> କଲ୍ ସମାପ୍ତ ହୋଇଯିବ।"</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"ଏହି କଲ୍ କିପରି କରିବାକୁ ଚାହାନ୍ତି ବାଛନ୍ତୁ"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"<xliff:g id="OTHER_APP">%1$s</xliff:g> ବ୍ୟବହାର କରି କଲ୍ ରିଡାଇରେକ୍ଟ କରନ୍ତୁ"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"ମୋ ଫୋନ୍ ନମ୍ବର ବ୍ୟବହାର କରି କଲ୍ କରନ୍ତୁ"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"<xliff:g id="OTHER_APP">%1$s</xliff:g> କଲ୍ କରିପାରିବ ନାହିଁ। ଏକ ଭିନ୍ନ କଲ୍ ପୁନଃନିର୍ଦ୍ଦେଶିତ ଆପ୍ ବ୍ୟବହାର କରି ଚେଷ୍ଟା କରନ୍ତୁ କିମ୍ବା ସାହାଯ୍ୟ ପାଇଁ ଡେଭେଲପ୍ରଙ୍କ ସହ ଯୋଗାଯୋଗ କରନ୍ତୁ।"</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"କଲ୍କୁ ଅବରୋଧ କରନ୍ତୁ"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"ଯୋଗାଯୋଗରେ ନଥିବା ନମ୍ବର୍"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"ଆପଣଙ୍କ ଯୋଗାଯୋଗରେ ତାଲିକାଭୁକ୍ତ ହୋଇନଥିବା ନମ୍ବର୍କୁ ଅବରୋଧ କରନ୍ତୁ"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"ଗୋପନୀୟ"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"ନିଜର ନମ୍ବର୍କୁ ପ୍ରକାଶ କରୁନଥିବା କଲ୍କର୍ତ୍ତାଙ୍କୁ ଅବରୋଧ କରନ୍ତୁ"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"ପେ-ଫୋନ୍"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"ପେ-ଫୋନ୍ରୁ କଲ୍କୁ ଅବରୋଧ କରନ୍ତୁ"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"ଅଜଣା"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"ଅଜଣା କଲକର୍ତ୍ତାଙ୍କର କଲ୍କୁ ବ୍ଲକ୍ କରନ୍ତୁ"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"କଲ୍କୁ ଅବରୋଧ କରନ୍ତୁ"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"କଲ୍ ଅବରୋଧ ସୁବିଧାକୁ ଅକ୍ଷମ କରାଯାଇଛି"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"ଜରୁରିକାଳୀନ କଲ୍ କରାଗଲା"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"ଜରୁରିକାଳୀନ ସହାୟତା କର୍ମଚାରୀମାନେ ଆପଣଙ୍କୁ ଯୋଗଯୋଗ କରିବା ପାଇଁ କଲ୍ ଅବରୋଧକୁ ଅକ୍ଷମ କରାଯାଇଛି।"</string>
+ <string name="developer_title" msgid="9146088855661672353">"ଟେଲେକମ୍ ଡେଭେଲପର୍ ମେନୁ"</string>
</resources>
diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml
index b9ffc07..2548990 100644
--- a/res/values-pa/strings.xml
+++ b/res/values-pa/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"ਕਾਲ ਪ੍ਰਬੰਧਨ"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"ਫ਼ੋਨ"</string>
- <string name="unknown" msgid="6878797917991465859">"ਅਗਿਆਤ"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"ਮਿਸਡ ਕਾਲ"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"ਕੰਮ ਨਾਲ ਸਬੰਧਿਤ ਖੁੰਝੀ ਕਾਲ"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"ਮਿਸਡ ਕਾਲਾਂ"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> ਮਿਸਡ ਕਾਲਾਂ"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g> ਵੱਲੋਂ ਮਿਸਡ ਕਾਲ"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"ਕਾਲ ਬੈਕ ਕਰੋ"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"ਸੁਨੇਹਾ"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"ਕਾਲ ਮਿਊਟ ਕੀਤੀ।"</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"ਸਪੀਕਰਫੋਨ ਸਮਰਥਿਤ।"</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"ਹੁਣ ਗੱਲ ਨਹੀਂ ਹੋ ਸਕਦੀ। ਕੀ ਮਾਜ਼ਰਾ ਹੈ?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"ਮੈਂ ਤੁਹਾਨੂੰ ਹੁਣੇ ਵਾਪਸ ਕਾਲ ਕਰਾਂਗਾ/ਗੀ।"</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"ਮੈਂ ਤੁਹਾਨੂੰ ਬਾਅਦ ਵਿੱਚ ਕਾਲ ਕਰਾਂਗਾ/ਗੀ।"</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"ਹੁਣ ਗੱਲ ਨਹੀਂ ਹੋ ਸਕਦੀ। ਕੀ ਮੈਨੂੰ ਬਾਅਦ ਵਿੱਚ ਫ਼ੋਨ ਕਰ ਸਕਦੇ ਹੋ?"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"ਤਤਕਾਲ ਜਵਾਬ"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"ਤਤਕਾਲ ਜਵਾਬ ਸੰਪਾਦਿਤ ਕਰੋ"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"ਤਤਕਾਲ ਜਵਾਬ"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"ਸੁਨੇਹਾ <xliff:g id="PHONE_NUMBER">%s</xliff:g> ਨੂੰ ਭੇਜਿਆ ਗਿਆ।"</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"ਕਾਲਿੰਗ ਖਾਤੇ"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"ਸਿਰਫ਼ ਸੰਕਟ ਕਾਲਾਂ ਨੂੰ ਮਨਜ਼ੂਰੀ ਹੈ।"</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"ਇਹ ਐਪਲੀਕੇਸ਼ਨ ਫੋਨ ਅਨੁਮਤੀ ਦੇ ਬਿਨਾਂ ਆਉਟਗੋਇੰਗ ਕਾਲਾਂ ਨਹੀਂ ਕਰ ਸਕਦੀ।"</string>
- <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">"SIM ਕਾਰਡ ਤੇ ਕੋਈ ਵੌਇਸਮੇਲ ਨੰਬਰ ਸਟੋਰ ਨਹੀਂ ਕੀਤਾ ਗਿਆ ਹੈ।"</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>
- <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="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_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>
- <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_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_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_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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"ਇਨਕਮਿੰਗ ਕਾਲਾਂ"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"ਖੁੰਝੀਆਂ ਕਾਲਾਂ"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"ਕਾਲ ਬਲਾਕਿੰਗ"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"ਇਹ ਕਾਲ ਕਰਨ ਨਾਲ ਤੁਹਾਡੀ <xliff:g id="OTHER_APP">%1$s</xliff:g> ਕਾਲ ਸਮਾਪਤ ਹੋ ਜਾਵੇਗੀ।"</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"ਕਾਲ ਬਲਾਕਿੰਗ"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"ਨੰਬਰ ਜੋ ਤੁਹਾਡੇ ਸੰਪਰਕਾਂ ਵਿੱਚ ਨਹੀਂ ਹਨ"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"ਉਹ ਨੰਬਰ ਬਲਾਕ ਕਰੋ ਜੋ ਤੁਹਾਡੇ ਸੰਪਰਕਾਂ ਵਿੱਚ ਨਹੀਂ ਹਨ"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"ਨਿੱਜੀ"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"ਉਹ ਕਾਲਰ ਬਲਾਕ ਕਰੋ ਜਿਨ੍ਹਾਂ ਦਾ ਨੰਬਰ ਨਹੀਂ ਦਿਖਾਈ ਦਿੰਦਾ ਹੈ"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"ਜਨਤਕ ਫ਼ੋਨ"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"ਜਨਤਕ ਫ਼ੋਨਾਂ ਵਾਲੀਆਂ ਕਾਲਾਂ ਬਲਾਕ ਕਰੋ"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"ਅਗਿਆਤ"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"ਅਣਪਛਾਤੇ ਕਾਲਰਾਂ ਵਾਲੀਆਂ ਕਾਲਾਂ ਬਲਾਕ ਕਰੋ"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"ਕਾਲ ਬਲਾਕਿੰਗ"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"ਕਾਲ ਬਲਾਕਿੰਗ ਵਿਕਲਪ ਬੰਦ ਕੀਤਾ ਗਿਆ"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"ਸੰਕਟਕਾਲੀਨ ਕਾਲ ਕੀਤੀ ਗਈ"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"ਸੰਕਟਕਾਲੀਨ ਸਥਿਤੀ ਵਿੱਚ ਮਦਦ ਕਰਨ ਵਾਲੇ ਵਿਅਕਤੀ ਨੂੰ ਤੁਹਾਨੂੰ ਸੰਪਰਕ ਕਰਨ ਦੇਣ ਲਈ ਕਾਲ ਬਲਾਕਿੰਗ ਵਿਕਲਪ ਬੰਦ ਕਰ ਦਿੱਤਾ ਗਿਆ ਹੈ।"</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"ਕਾਲ ਪ੍ਰਬੰਧਨ"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"ਫ਼ੋਨ"</string>
+ <string name="unknown" msgid="6993977514360123431">"ਅਗਿਆਤ"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"ਮਿਸਡ ਕਾਲ"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"ਕੰਮ ਨਾਲ ਸਬੰਧਿਤ ਖੁੰਝੀ ਕਾਲ"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"ਮਿਸਡ ਕਾਲਾਂ"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> ਮਿਸਡ ਕਾਲਾਂ"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g> ਵੱਲੋਂ ਮਿਸਡ ਕਾਲ"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"ਕਾਲ ਬੈਕ ਕਰੋ"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"ਸੁਨੇਹਾ"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"ਕਾਲ ਮਿਊਟ ਕੀਤੀ।"</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"ਸਪੀਕਰਫੋਨ ਸਮਰਥਿਤ।"</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"ਹੁਣੇ ਗੱਲ ਨਹੀਂ ਹੋ ਸਕਦੀ। ਕੀ ਹੋਇਆ?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"ਮੈਂ ਤੁਹਾਨੂੰ ਹੁਣੇ ਵਾਪਸ ਕਾਲ ਕਰਾਂਗਾ/ਗੀ।"</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"ਮੈਂ ਤੁਹਾਨੂੰ ਬਾਅਦ ਵਿੱਚ ਕਾਲ ਕਰਾਂਗਾ/ਗੀ।"</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"ਹੁਣੇ ਗੱਲ ਨਹੀਂ ਹੋ ਸਕਦੀ। ਕੀ ਬਾਅਦ \'ਚ ਫ਼ੋਨ ਕਰ ਸਕਦੇ ਹੋ?"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"ਤਤਕਾਲ ਜਵਾਬ"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"ਤਤਕਾਲ ਜਵਾਬ ਸੰਪਾਦਿਤ ਕਰੋ"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"ਤਤਕਾਲ ਜਵਾਬ"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"ਸੁਨੇਹਾ <xliff:g id="PHONE_NUMBER">%s</xliff:g> ਨੂੰ ਭੇਜਿਆ ਗਿਆ।"</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"<xliff:g id="PHONE_NUMBER">%s</xliff:g> \'ਤੇ ਸੁਨੇਹਾ ਭੇਜਣਾ ਅਸਫਲ ਰਿਹਾ।"</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"ਕਾਲਿੰਗ ਖਾਤੇ"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"ਸਿਰਫ਼ ਸੰਕਟ ਕਾਲਾਂ ਨੂੰ ਮਨਜ਼ੂਰੀ ਹੈ।"</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"ਇਹ ਐਪਲੀਕੇਸ਼ਨ ਫੋਨ ਅਨੁਮਤੀ ਦੇ ਬਿਨਾਂ ਆਉਟਗੋਇੰਗ ਕਾਲਾਂ ਨਹੀਂ ਕਰ ਸਕਦੀ।"</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"ਇੱਕ ਕਾਲ ਕਰਨ ਲਈ, ਇੱਕ ਪ੍ਰਮਾਣਿਕ ਨੰਬਰ ਦਰਜ ਕਰੋ।"</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"ਇਸ ਵੇਲੇ ਕਾਲ ਨਹੀਂ ਜੋੜੀ ਸਕਦੀ।"</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"ਲੁਪਤ ਵੌਇਸਮੇਲ ਨੰਬਰ"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"SIM ਕਾਰਡ ਤੇ ਕੋਈ ਵੌਇਸਮੇਲ ਨੰਬਰ ਸਟੋਰ ਨਹੀਂ ਕੀਤਾ ਗਿਆ ਹੈ।"</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"ਨੰਬਰ ਜੋੜੋ"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"ਕੀ <xliff:g id="NEW_APP">%s</xliff:g> ਨੂੰ ਆਪਣੀ ਪੂਰਵ-ਨਿਰਧਾਰਤ ਫ਼ੋਨ ਐਪ ਬਣਾਉਣਾ ਹੈ?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"ਪੂਰਵ-ਨਿਰਧਾਰਤ ਸੈੱਟ ਕਰੋ"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"ਰੱਦ ਕਰੋ"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> ਕਾਲਾਂ ਕਰ ਸਕੇਗੀ ਅਤੇ ਕਾਲਾਂ ਦੇ ਸਾਰੇ ਪੱਖਾਂ ਨੂੰ ਕੰਟਰੋਲ ਕਰ ਸਕੇਗੀ। ਸਿਰਫ਼ ਉਹਨਾਂ ਐਪਾਂ ਨੂੰ ਪੂਰਵ-ਨਿਰਧਾਰਤ ਫ਼ੋਨ ਐਪ ਵਜੋਂ ਸੈੱਟ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ ਜਿੰਨ੍ਹਾਂ \'ਤੇ ਤੁਸੀਂ ਭਰੋਸਾ ਕਰਦੇ ਹੋ।"</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"ਕੀ <xliff:g id="NEW_APP">%s</xliff:g> ਨੂੰ ਆਪਣੀ ਪੂਰਵ-ਨਿਰਧਾਰਤ ਕਾਲ ਸਕ੍ਰੀਨਿੰਗ ਐਪ ਬਣਾਉਣਾ ਹੈ?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> ਹੁਣ ਕਾਲਾਂ ਦੀ ਨਿਗਰਾਨੀ ਨਹੀਂ ਕਰ ਸਕੇਗੀ।"</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> ਉਹਨਾਂ ਕਾਲਰਾਂ ਬਾਰੇ ਜਾਣਕਾਰੀ ਦੇਖ ਸਕੇਗੀ ਜੋ ਤੁਹਾਡੇ ਸੰਪਰਕਾਂ ਵਿੱਚ ਨਹੀਂ ਹਨ ਅਤੇ ਉਹਨਾਂ ਕਾਲਾਂ ਨੂੰ ਬਲਾਕ ਕਰ ਸਕੇਗੀ। ਸਿਰਫ਼ ਉਹਨਾਂ ਐਪਾਂ ਨੂੰ ਪੂਰਵ-ਨਿਰਧਾਰਤ ਸਕ੍ਰੀਨਿੰਗ ਐਪ ਵਜੋਂ ਸੈੱਟ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ ਜਿਨ੍ਹਾਂ \'ਤੇ ਤੁਸੀਂ ਭਰੋਸਾ ਕਰਦੇ ਹੋ।"</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"ਪੂਰਵ-ਨਿਰਧਾਰਤ ਸੈੱਟ ਕਰੋ"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"ਰੱਦ ਕਰੋ"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"ਬਲਾਕ ਕੀਤੇ ਨੰਬਰ"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"ਤੁਹਾਨੂੰ ਬਲਾਕ ਕੀਤੇ ਨੰਬਰਾਂ ਤੋਂ ਕਾਲਾਂ ਜਾਂ ਲਿਖਤ ਸੁਨੇਹੇ ਪ੍ਰਾਪਤ ਨਹੀਂ ਹੋਣਗੇ।"</string>
+ <string name="block_number" msgid="3784343046852802722">"ਇੱਕ ਨੰਬਰ ਸ਼ਾਮਲ ਕਰੋ"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"ਕੀ <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g> ਨੂੰ ਅਣਬਲਾਕ ਕਰਨਾ ਹੈ?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"ਅਣਬਲਾਕ ਕਰੋ"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"ਇਸ ਨੰਬਰ ਤੋਂ ਕਾਲਾਂ ਅਤੇ ਲਿਖਤੀ ਸੁਨੇਹਿਆਂ ਨੂੰ ਬਲਾਕ ਕਰੋ"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"ਫ਼ੋਨ ਨੰਬਰ"</string>
+ <string name="block_button" msgid="485080149164258770">"ਬਲਾਕ ਕਰੋ"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"ਸਿਰਫ਼ ਡੀਵਾਈਸ ਮਾਲਕ ਹੀ ਬਲੌਕ ਕੀਤੇ ਗਏ ਨੰਬਰਾਂ ਨੂੰ ਦੇਖ ਅਤੇ ਪ੍ਰਬੰਧਿਤ ਕਰ ਸਕਦਾ ਹੈ।"</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"ਅਣਬਲਾਕ ਕਰੋ"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"ਬਲੌਕਿੰਗ ਆਰਜ਼ੀ ਤੌਰ \'ਤੇ ਬੰਦ ਹੈ"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"ਤੁਹਾਡੇ ਵੱਲੋਂ ਇੱਕ ਐਮਰਜੈਂਸੀ ਨੰਬਰ ਨੂੰ ਡਾਇਲ ਕੀਤੇ ਜਾਣ ਜਾਂ ਲਿਖਤ ਸੁਨੇਹਾ ਭੇਜੇ ਜਾਣ ਤੋਂ ਬਾਅਦ, ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਬਲੌਕਿੰਗ ਨੂੰ ਬੰਦ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਕਿ ਐਮਰਜੈਂਸੀ ਸੇਵਾਵਾਂ ਤੁਹਾਨੂੰ ਸੰਪਰਕ ਕਰ ਸਕਣ।"</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"ਹੁਣੇ ਦੁਬਾਰਾ ਯੋਗ ਬਣਾਓ"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> ਬਲਾਕ ਕੀਤਾ ਗਿਆ"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> ਅਣਬਲਾਕ ਕੀਤਾ ਗਿਆ"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"ਐਮਰਜੈਂਸੀ ਨੰਬਰ ਨੂੰ ਬਲੌਕ ਕਰਨ ਵਿੱਚ ਅਸਮਰੱਥ।"</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> ਪਹਿਲਾਂ ਤੋਂ ਹੀ ਬਲੌਕ ਕੀਤਾ ਹੋਇਆ ਹੈ।"</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"ਕਾਲ ਕਰਨ ਲਈ ਨਿੱਜੀ ਡਾਇਲਰ ਦੀ ਵਰਤੋਂ ਕਰਨੀ"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"<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="5795968314037063900">"<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="8653544281903986641">"ਜਵਾਬ ਦੇਣ ਨਾਲ ਤੁਹਾਡੀ <xliff:g id="CALL_VIA">%1$s</xliff:g> ਕਾਲ ਸਮਾਪਤ ਹੋ ਜਾਵੇਗੀ"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"ਜਵਾਬ ਦੇਣ ਨਾਲ ਤੁਹਾਡੀਆਂ <xliff:g id="CALL_VIA">%1$s</xliff:g> ਕਾਲਾਂ ਸਮਾਪਤ ਹੋ ਜਾਣਗੀਆਂ"</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"ਜਵਾਬ ਦੇਣ ਨਾਲ ਤੁਹਾਡੀ <xliff:g id="CALL_VIA">%1$s</xliff:g> ਵੀਡੀਓ ਕਾਲ ਸਮਾਪਤ ਹੋ ਜਾਵੇਗੀ"</string>
+ <string name="answering_ends_other_managed_call" msgid="4031778317409881805">"ਜਵਾਬ ਦੇਣ ਨਾਲ ਤੁਹਾਡੀ ਜਾਰੀ ਕਾਲ ਸਮਾਪਤ ਹੋ ਜਾਵੇਗੀ"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"ਜਵਾਬ ਦੇਣ ਨਾਲ ਤੁਹਾਡੀਆਂ ਜਾਰੀ ਕਾਲਾਂ ਸਮਾਪਤ ਹੋ ਜਾਣਗੀਆਂ"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"ਜਵਾਬ ਦੇਣ ਨਾਲ ਤੁਹਾਡੀ ਜਾਰੀ ਵੀਡੀਓ ਕਾਲ ਸਮਾਪਤ ਹੋ ਜਾਵੇਗੀ"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"ਕਾਲ ਚੁੱਕੋ"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"ਕਾਲ ਕੱਟੋ"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"ਕਾਲ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕਦੀ ਕਿਉਂਕਿ ਇੱਥੇ ਅਜਿਹੇ ਕੋਈ ਕਾਲਿੰਗ ਖਾਤੇ ਨਹੀਂ ਹਨ ਜਿਨ੍ਹਾਂ ਵਿੱਚ ਇਸ ਕਿਸਮ ਦੀਆਂ ਕਾਲਾਂ ਦੀ ਸੁਵਿਧਾ ਹੋਵੇ।"</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"ਤੁਹਾਡੀ <xliff:g id="OTHER_CALL">%1$s</xliff:g> ਕਾਲ ਦੇ ਕਾਰਨ ਕਾਲ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕਦੀ।"</string>
+ <string name="cant_call_due_to_ongoing_calls" msgid="6379163795277824868">"ਤੁਹਾਡੀਆਂ <xliff:g id="OTHER_CALL">%1$s</xliff:g> ਕਾਲਾਂ ਦੇ ਕਾਰਨ ਕਾਲ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕਦੀ।"</string>
+ <string name="cant_call_due_to_ongoing_unknown_call" msgid="8243532328969433172">"ਕਿਸੇ ਹੋਰ ਐਪ ਵਿੱਚ ਇੱਕ ਕਾਲ ਹੋਣ ਦੇ ਕਾਰਨ ਕਾਲ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕਦੀ।"</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"ਇਨਕਮਿੰਗ ਕਾਲਾਂ"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"ਖੁੰਝੀਆਂ ਕਾਲਾਂ"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"ਕਾਲ ਬਲਾਕਿੰਗ"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"ਇਹ ਕਾਲ ਕਰਨ ਨਾਲ ਤੁਹਾਡੀ <xliff:g id="OTHER_APP">%1$s</xliff:g> ਕਾਲ ਸਮਾਪਤ ਹੋ ਜਾਵੇਗੀ।"</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"ਚੁਣੋ ਕਿ ਕਾਲ ਕਿਵੇਂ ਕਰਨੀ ਹੈ"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"<xliff:g id="OTHER_APP">%1$s</xliff:g> ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਕਾਲ ਰੀਡਾਇਰੈਕਟ ਕਰੋ"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"ਮੇਰਾ ਫ਼ੋਨ ਨੰਬਰ ਵਰਤ ਕੇ ਕਾਲ ਕਰੋ"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"<xliff:g id="OTHER_APP">%1$s</xliff:g> ਤੋਂ ਕਾਲ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕਦੀ। ਕਾਲ ਨੂੰ ਰੀਡਾਇਰੈਕਟ ਕਰਨ ਲਈ ਕੋਈ ਵੱਖਰੀ ਐਪ ਵਰਤ ਕੇ ਦੇਖੋ ਜਾਂ ਮਦਦ ਲਈ ਵਿਕਾਸਕਾਰ ਨਾਲ ਸੰਪਰਕ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ।"</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"ਕਾਲ ਬਲਾਕਿੰਗ"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"ਨੰਬਰ ਜੋ ਤੁਹਾਡੇ ਸੰਪਰਕਾਂ ਵਿੱਚ ਨਹੀਂ ਹਨ"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"ਉਹ ਨੰਬਰ ਬਲਾਕ ਕਰੋ ਜੋ ਤੁਹਾਡੇ ਸੰਪਰਕਾਂ ਵਿੱਚ ਨਹੀਂ ਹਨ"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"ਨਿੱਜੀ"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"ਉਹ ਕਾਲਰ ਬਲਾਕ ਕਰੋ ਜਿਨ੍ਹਾਂ ਦਾ ਨੰਬਰ ਨਹੀਂ ਦਿਖਾਈ ਦਿੰਦਾ ਹੈ"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"ਜਨਤਕ ਫ਼ੋਨ"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"ਜਨਤਕ ਫ਼ੋਨਾਂ ਵਾਲੀਆਂ ਕਾਲਾਂ ਬਲਾਕ ਕਰੋ"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"ਅਗਿਆਤ"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"ਅਣਪਛਾਤੇ ਕਾਲਰਾਂ ਵਾਲੀਆਂ ਕਾਲਾਂ ਬਲਾਕ ਕਰੋ"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"ਕਾਲ ਬਲਾਕਿੰਗ"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"ਕਾਲ ਬਲਾਕਿੰਗ ਵਿਕਲਪ ਬੰਦ ਕੀਤਾ ਗਿਆ"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"ਸੰਕਟਕਾਲੀਨ ਕਾਲ ਕੀਤੀ ਗਈ"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"ਸੰਕਟਕਾਲੀਨ ਸਥਿਤੀ ਵਿੱਚ ਮਦਦ ਕਰਨ ਵਾਲੇ ਵਿਅਕਤੀ ਨੂੰ ਤੁਹਾਨੂੰ ਸੰਪਰਕ ਕਰਨ ਦੇਣ ਲਈ ਕਾਲ ਬਲਾਕਿੰਗ ਵਿਕਲਪ ਬੰਦ ਕਰ ਦਿੱਤਾ ਗਿਆ ਹੈ।"</string>
+ <string name="developer_title" msgid="9146088855661672353">"ਟੈਲੀਕੋਮ ਵਿਕਾਸਕਾਰ ਮੀਨੂ"</string>
</resources>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index 1bc4863..a060e1b 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"Zarządzanie połączeniami"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"Telefon"</string>
- <string name="unknown" msgid="6878797917991465859">"Nieznany"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"Nieodebrane połączenie"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"Nieodebrane połączenie (praca)"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Połączenia nieodebrane"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> nieodebranych połączeń"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"Nieodebrane połączenie z <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Oddzwoń"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"Wiadomość"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"Połączenie wyciszone."</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"Głośnik włączony."</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"Nie mogę rozmawiać. Co słychać?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"Za chwilę do Ciebie oddzwonię."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Zadzwonię do Ciebie później."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Nie mogę rozmawiać. Zadzwonisz później?"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Szybkie odpowiedzi"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Edytuj szybkie odpowiedzi"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"Szybka odpowiedź"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"Wiadomość wysłano na numer <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"Konta telefoniczne"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"Dozwolone są tylko połączenia alarmowe."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"Ta aplikacja nie może wykonywać połączeń bez uprawnienia Telefon."</string>
- <string name="outgoing_call_error_no_phone_number_supplied" msgid="1940125199802007505">"Aby zadzwonić, wybierz prawidłowy numer."</string>
- <string name="duplicate_video_call_not_allowed" msgid="3749211605014548386">"Nie można w tej chwili dodać połączenia."</string>
- <string name="no_vm_number" msgid="4164780423805688336">"Brakuje numeru poczty głosowej"</string>
- <string name="no_vm_number_msg" msgid="1300729501030053828">"Na karcie SIM nie ma zapisanego numeru poczty głosowej."</string>
- <string name="add_vm_number_str" msgid="4676479471644687453">"Dodaj numer"</string>
- <string name="change_default_dialer_dialog_title" msgid="9101655962941740507">"Ustawić <xliff:g id="NEW_APP">%s</xliff:g> jako domyślną aplikację telefoniczną?"</string>
- <string name="change_default_dialer_dialog_affirmative" msgid="8606546663509166276">"Ustaw jako aplikację domyślną"</string>
- <string name="change_default_dialer_dialog_negative" msgid="9078144617060173845">"Anuluj"</string>
- <string name="change_default_dialer_warning_message" msgid="1417671460801684999">"<xliff:g id="NEW_APP">%s</xliff:g> uzyska możliwość nawiązywania połączeń i kontrolowania wszystkich ich aspektów. Tylko zaufane aplikacje powinny być ustawiane jako domyślna aplikacja telefoniczna."</string>
- <string name="blocked_numbers" msgid="2751843139572970579">"Zablokowane numery"</string>
- <string name="blocked_numbers_msg" msgid="1045015186124965643">"Nie będziesz otrzymywać połączeń ani SMS-ów z zablokowanych numerów."</string>
- <string name="block_number" msgid="1101252256321306179">"Dodaj numer"</string>
- <string name="unblock_dialog_body" msgid="1614238499771862793">"Odblokować <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
- <string name="unblock_button" msgid="3078048901972674170">"Odblokuj"</string>
- <string name="add_blocked_dialog_body" msgid="9030243212265516828">"Blokuj połączenia i SMS-y z numeru:"</string>
- <string name="add_blocked_number_hint" msgid="6847675097085433553">"Numer telefonu"</string>
- <string name="block_button" msgid="8822290682524373357">"Zablokuj"</string>
- <string name="non_primary_user" msgid="5180129233352533459">"Tylko właściciel urządzenia może przeglądać zablokowane numery i nimi zarządzać."</string>
- <string name="delete_icon_description" msgid="8903995728252556724">"Odblokuj"</string>
- <string name="blocked_numbers_butter_bar_title" msgid="438170866438793182">"Blokada tymczasowo wyłączona"</string>
- <string name="blocked_numbers_butter_bar_body" msgid="2223244484319442431">"Gdy wybierzesz numer awaryjny lub wyślesz pod ten numer SMS-a, blokada zostanie wyłączona, aby odpowiednie służby mogły się z Tobą skontaktować."</string>
- <string name="blocked_numbers_butter_bar_button" msgid="2197943354922010696">"Włącz ponownie"</string>
- <string name="blocked_numbers_number_blocked_message" msgid="7678509606805029540">"Numer <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> został zablokowany"</string>
- <string name="blocked_numbers_number_unblocked_message" msgid="977894647366750418">"Numer <xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> został odblokowany"</string>
- <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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"Połączenia przychodzące"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"Połączenia nieodebrane"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"Blokowanie połączeń"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"Jeśli zadzwonisz, połączenie w aplikacji <xliff:g id="OTHER_APP">%1$s</xliff:g> zostanie zakończone."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"Blokowanie połączeń"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"Numery spoza Kontaktów"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"Blokuj połączenia od numerów, które nie znajdują się w Kontaktach"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"Zastrzeżone"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"Blokuj połączenia z numerów zastrzeżonych"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"Budki telefoniczne"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"Blokuj połączenia z budek telefonicznych"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"Nieznane"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"Blokuj połączenia z nieznanych numerów"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"Blokowanie połączeń"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"Blokowanie połączeń wyłączone"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"Wykonano połączenie alarmowe"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"Blokowanie połączeń zostało wyłączone, aby służby ratownicze mogły się z Tobą skontaktować."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"Zarządzanie połączeniami"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"Telefon"</string>
+ <string name="unknown" msgid="6993977514360123431">"Nieznany"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"Nieodebrane połączenie"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"Nieodebrane połączenie (praca)"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"Połączenia nieodebrane"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> nieodebranych połączeń"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"Nieodebrane połączenie z <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"Oddzwoń"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"Wiadomość"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"Połączenie wyciszone."</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Głośnik włączony."</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Nie mogę rozmawiać. Co słychać?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"Za chwilę do Ciebie oddzwonię."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"Zadzwonię do Ciebie później."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"Nie mogę rozmawiać. Zadzwonisz później?"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"Szybkie odpowiedzi"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"Edytuj szybkie odpowiedzi"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"Szybka odpowiedź"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"Wiadomość wysłano na numer <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"Nie udało się wysłać wiadomości do: <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"Konta telefoniczne"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"Dozwolone są tylko połączenia alarmowe."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"Ta aplikacja nie może wykonywać połączeń bez uprawnienia Telefon."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"Aby zadzwonić, wybierz prawidłowy numer."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"Nie można w tej chwili dodać połączenia."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"Brakuje numeru poczty głosowej"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"Na karcie SIM nie ma zapisanego numeru poczty głosowej."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"Dodaj numer"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"Ustawić <xliff:g id="NEW_APP">%s</xliff:g> jako domyślną aplikację telefoniczną?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"Ustaw jako aplikację domyślną"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"Anuluj"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> uzyska możliwość nawiązywania połączeń i kontrolowania wszystkich ich aspektów. Tylko zaufane aplikacje powinny być ustawiane jako domyślna aplikacja telefoniczna."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"Czy <xliff:g id="NEW_APP">%s</xliff:g> ma być domyślną aplikacją do filtrowania połączeń?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"Aplikacja <xliff:g id="OLD_APP">%s</xliff:g> nie będzie już mogła filtrować połączeń."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"Aplikacja <xliff:g id="NEW_APP">%s</xliff:g> będzie widzieć informacje o dzwoniących spoza Twoich kontaktów i będzie mogła blokować te połączenia. Jako domyślną aplikację do filtrowania połączeń ustaw tylko aplikację, której ufasz."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"Ustaw jako aplikację domyślną"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"Anuluj"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"Zablokowane numery"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"Nie będziesz otrzymywać połączeń ani SMS-ów z zablokowanych numerów."</string>
+ <string name="block_number" msgid="3784343046852802722">"Dodaj numer"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"Odblokować <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"Odblokuj"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"Blokuj połączenia i SMS-y z numeru:"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"Numer telefonu"</string>
+ <string name="block_button" msgid="485080149164258770">"Zablokuj"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"Tylko właściciel urządzenia może przeglądać zablokowane numery i nimi zarządzać."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"Odblokuj"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"Blokada tymczasowo wyłączona"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"Gdy wybierzesz numer awaryjny lub wyślesz pod ten numer SMS-a, blokada zostanie wyłączona, aby odpowiednie służby mogły się z Tobą skontaktować."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"Włącz ponownie"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"Numer <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> został zablokowany"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"Numer <xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> został odblokowany"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"Nie można zablokować numeru alarmowego."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"Numer <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> jest już zablokowany."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"Wykonuję połączenie z osobistego telefonu"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"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="5795968314037063900">"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="8653544281903986641">"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="3702302838456922535">"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="8572022039304239958">"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="4031778317409881805">"Jeśli odbierzesz połączenie, zakończysz trwającą rozmowę"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"Jeśli odbierzesz połączenie, zakończysz trwające rozmowy"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"Jeśli odbierzesz połączenie, zakończysz rozmowę wideo"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"Odbierz"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"Odrzuć"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"Nie można nawiązać połączenia, ponieważ nie ma żadnego konta, które obsługuje połączenia tego typu."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"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="6379163795277824868">"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="8243532328969433172">"Nie możesz zadzwonić z powodu trwającej rozmowy w innej aplikacji."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"Połączenia przychodzące"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"Połączenia nieodebrane"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"Blokowanie połączeń"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"Jeśli zadzwonisz, połączenie w aplikacji <xliff:g id="OTHER_APP">%1$s</xliff:g> zostanie zakończone."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Wybierz, jak chcesz zadzwonić"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Przekieruj połączenie za pomocą aplikacji <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"Zadzwoń z mojego numeru telefonu"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"Aplikacja <xliff:g id="OTHER_APP">%1$s</xliff:g> nie może nawiązać połączenia. Skorzystaj z innej aplikacji do przekierowywania połączeń lub skontaktuj się z deweloperem i poproś o pomoc."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"Blokowanie połączeń"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"Numery spoza Kontaktów"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"Blokuj połączenia od numerów, które nie znajdują się w Kontaktach"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"Zastrzeżone"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"Blokuj połączenia z numerów zastrzeżonych"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"Budki telefoniczne"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"Blokuj połączenia z budek telefonicznych"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"Nieznane"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"Blokuj połączenia z nieznanych numerów"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"Blokowanie połączeń"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"Blokowanie połączeń wyłączone"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"Wykonano połączenie alarmowe"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"Blokowanie połączeń zostało wyłączone, aby służby ratownicze mogły się z Tobą skontaktować."</string>
+ <string name="developer_title" msgid="9146088855661672353">"Menu programisty Telecom"</string>
</resources>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 8dc9405..3c261fa 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"Gestão de chamadas"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"Telefone"</string>
- <string name="unknown" msgid="6878797917991465859">"Desconhecido"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"Chamada não atendida"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"Chamada de trabalho não atendida"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Chamadas não atendidas"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> chamadas não atendidas"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"Chamada não atendida de <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Ligar de volta"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"Mensagem"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"Chamada sem som."</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"Alta voz ativada."</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"Não posso falar agora. Que se passa?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"Telefono-lhe já a seguir."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Telefono-lhe mais tarde."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Pode telefonar-me mais tarde?"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Respostas rápidas"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Editar respostas rápidas"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"Resposta rápida"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"Mensagem enviada para <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"Contas de chamadas"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"Apenas são permitidas chamadas de emergência."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"Esta aplicação não pode fazer chamadas sem a autorização do telefone."</string>
- <string name="outgoing_call_error_no_phone_number_supplied" msgid="1940125199802007505">"Para telefonar, introduza um número válido."</string>
- <string name="duplicate_video_call_not_allowed" msgid="3749211605014548386">"Não é possível adicionar a chamada neste momento."</string>
- <string name="no_vm_number" msgid="4164780423805688336">"Número do correio de voz em falta"</string>
- <string name="no_vm_number_msg" msgid="1300729501030053828">"Não existe um número de correio de voz armazenado no cartão SIM."</string>
- <string name="add_vm_number_str" msgid="4676479471644687453">"Adicionar número"</string>
- <string name="change_default_dialer_dialog_title" msgid="9101655962941740507">"Predefinir <xliff:g id="NEW_APP">%s</xliff:g> como a sua aplicação Telefone?"</string>
- <string name="change_default_dialer_dialog_affirmative" msgid="8606546663509166276">"Predefinir"</string>
- <string name="change_default_dialer_dialog_negative" msgid="9078144617060173845">"Cancelar"</string>
- <string name="change_default_dialer_warning_message" msgid="1417671460801684999">"A aplicação <xliff:g id="NEW_APP">%s</xliff:g> poderá efetuar chamadas e controlar todos os aspetos das mesmas. Apenas as aplicações em que confia devem ser escolhidas como a aplicação de telefone predefinida."</string>
- <string name="blocked_numbers" msgid="2751843139572970579">"Números bloqueados"</string>
- <string name="blocked_numbers_msg" msgid="1045015186124965643">"Não irá receber chamadas ou mensagens de texto de números bloqueados."</string>
- <string name="block_number" msgid="1101252256321306179">"Adicionar um número"</string>
- <string name="unblock_dialog_body" msgid="1614238499771862793">"Pretende desbloquear <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
- <string name="unblock_button" msgid="3078048901972674170">"Desbloquear"</string>
- <string name="add_blocked_dialog_body" msgid="9030243212265516828">"Bloquear chamadas e mensagens de texto de"</string>
- <string name="add_blocked_number_hint" msgid="6847675097085433553">"Número de telefone"</string>
- <string name="block_button" msgid="8822290682524373357">"Bloquear"</string>
- <string name="non_primary_user" msgid="5180129233352533459">"Apenas o proprietário do dispositivo pode ver e gerir os números bloqueados."</string>
- <string name="delete_icon_description" msgid="8903995728252556724">"Desbloquear"</string>
- <string name="blocked_numbers_butter_bar_title" msgid="438170866438793182">"Bloqueio temporariamente desativado"</string>
- <string name="blocked_numbers_butter_bar_body" msgid="2223244484319442431">"Após marcar ou enviar uma mensagem de texto para um número de emergência, o bloqueio é desativado para garantir que os serviços de emergência conseguem contactá-lo."</string>
- <string name="blocked_numbers_butter_bar_button" msgid="2197943354922010696">"Reativar agora"</string>
- <string name="blocked_numbers_number_blocked_message" msgid="7678509606805029540">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> bloqueado"</string>
- <string name="blocked_numbers_number_unblocked_message" msgid="977894647366750418">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> desbloqueado"</string>
- <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">"Não é possível efetuar a chamada devido à sua chamada do <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
- <string name="cant_call_due_to_ongoing_calls" msgid="1380804892363503856">"Não é possível efetuar a chamada 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">"Não é possível efetuar a chamada devido a uma chamada noutra aplicação."</string>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"Chamadas recebidas"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"Chamadas não atendidas"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"Bloqueio de chamadas"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"Ao efetuar esta chamada, irá terminar a chamada na aplicação <xliff:g id="OTHER_APP">%1$s</xliff:g>."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"Bloqueio de chamadas"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"Números não incluídos nos Contactos"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"Bloquear números que não estejam na sua lista de Contactos"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"Privadas"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"Bloquear autores de chamadas que não revelem o número"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"Telefone público"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"Bloquear chamadas de telefones públicos"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"Desconhecidas"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"Bloquear chamadas não identificadas"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"Bloqueio de chamadas"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"Bloqueio de chamadas desativado"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"Chamada de emergência efetuada"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"O bloqueio de chamadas foi desativado para permitir a receção de contactos de resposta a emergências."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"Gestão de chamadas"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"Telefone"</string>
+ <string name="unknown" msgid="6993977514360123431">"Desconhecido"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"Chamada não atendida"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"Chamada de trabalho não atendida"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"Chamadas não atendidas"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> chamadas não atendidas"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"Chamada não atendida de <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"Ligar de volta"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"Mensagem"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"Chamada sem som."</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Alta voz ativada."</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Não posso falar agora. Que se passa?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"Telefono-lhe já a seguir."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"Telefono-lhe mais tarde."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"Pode telefonar-me mais tarde?"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"Respostas rápidas"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"Editar respostas rápidas"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"Resposta rápida"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"Mensagem enviada para <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"Falha ao enviar a mensagem para <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"Contas de chamadas"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"Apenas são permitidas chamadas de emergência."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"Esta aplicação não pode fazer chamadas sem a autorização do telefone."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"Para telefonar, introduza um número válido."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"Não é possível adicionar a chamada neste momento."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"Número do correio de voz em falta"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"Não existe um número de correio de voz armazenado no cartão SIM."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"Adicionar número"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"Predefinir <xliff:g id="NEW_APP">%s</xliff:g> como a sua aplicação Telefone?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"Predefinir"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"Cancelar"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"A aplicação <xliff:g id="NEW_APP">%s</xliff:g> poderá efetuar chamadas e controlar todos os aspetos das mesmas. Apenas as aplicações em que confia devem ser escolhidas como a aplicação de telefone predefinida."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"Predefinir <xliff:g id="NEW_APP">%s</xliff:g> como a sua aplicação Telefone?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> deixará de poder filtrar as chamadas."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> poderá ver informações sobre os autores das chamadas que não se encontrem nos seus contactos e poderá bloquear estas chamadas. Apenas deve predefinir como aplicação de filtro de chamadas as aplicações nas quais confia."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"Predefinir"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"Cancelar"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"Números bloqueados"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"Não irá receber chamadas ou mensagens de texto de números bloqueados."</string>
+ <string name="block_number" msgid="3784343046852802722">"Adicionar um número"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"Pretende desbloquear <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"Desbloquear"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"Bloquear chamadas e mensagens de texto de"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"Número de telefone"</string>
+ <string name="block_button" msgid="485080149164258770">"Bloquear"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"Apenas o proprietário do dispositivo pode ver e gerir os números bloqueados."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"Desbloquear"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"Bloqueio temporariamente desativado"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"Após marcar ou enviar uma mensagem de texto para um número de emergência, o bloqueio é desativado para garantir que os serviços de emergência conseguem contactá-lo."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"Reativar agora"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> bloqueado"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> desbloqueado"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"Não é possível bloquear números de emergência."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> já está bloqueado."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"A utilizar o telefone pessoal para efetuar a chamada"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"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="5795968314037063900">"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="8653544281903986641">"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="3702302838456922535">"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="8572022039304239958">"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="4031778317409881805">"Ao atender, a sua chamada em curso será terminada"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"Ao atender, as suas chamadas em curso serão terminadas"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"Ao atender, a sua videochamada em curso será terminada"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"Atender"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"Recusar"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"Não é possível efetuar a chamada porque não existem contas de chamadas que suportem chamadas deste tipo."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"Não é possível efetuar a chamada devido à sua chamada do <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+ <string name="cant_call_due_to_ongoing_calls" msgid="6379163795277824868">"Não é possível efetuar a chamada 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="8243532328969433172">"Não é possível efetuar a chamada devido a uma chamada noutra aplicação."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"Chamadas recebidas"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"Chamadas não atendidas"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"Bloqueio de chamadas"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"Ao efetuar esta chamada, irá terminar a chamada na aplicação <xliff:g id="OTHER_APP">%1$s</xliff:g>."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Escolha como pretende efetuar esta chamada"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Redirecionar chamada através de <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"Ligar com o meu número de telefone"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"Não é possível efetuar uma chamada através da aplicação <xliff:g id="OTHER_APP">%1$s</xliff:g>. Experimente utilizar uma aplicação de redirecionamento de chamadas diferente ou contactar o programador para obter ajuda."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"Bloqueio de chamadas"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"Números não incluídos nos Contactos"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"Bloquear números que não estejam na sua lista de Contactos"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"Privadas"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"Bloquear autores de chamadas que não revelem o número"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"Telefone público"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"Bloquear chamadas de telefones públicos"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"Desconhecidas"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"Bloquear chamadas não identificadas"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"Bloqueio de chamadas"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"Bloqueio de chamadas desativado"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"Chamada de emergência efetuada"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"O bloqueio de chamadas foi desativado para permitir a receção de contactos de resposta a emergências."</string>
+ <string name="developer_title" msgid="9146088855661672353">"Menu do programador de telecomunicações"</string>
</resources>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 84fe5a5..ecfddd5 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"Gerenciamento de chamadas"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"Telefone"</string>
- <string name="unknown" msgid="6878797917991465859">"Desconhecido"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"Chamada perdida"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"Chamada de trabalho perdida"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Chamadas perdidas"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> chamadas perdidas"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"Chamada perdida de <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Retornar chamada"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"Mensagem"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"Chamada sem áudio."</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"Viva-voz ativado."</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"Não posso falar agora. Manda um SMS, por favor?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"Já te ligo de volta."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Eu te ligo mais tarde."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Não posso falar agora. Liga depois, por favor?"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Respostas rápidas"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Editar respostas rápidas"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"Resposta rápida"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"Mensagem enviada para <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"Contas de chamadas"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"Somente chamadas de emergência são permitidas."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"Este aplicativo não pode fazer chamadas sem a permissão do smartphone."</string>
- <string name="outgoing_call_error_no_phone_number_supplied" msgid="1940125199802007505">"Para realizar uma chamada, digite um número válido."</string>
- <string name="duplicate_video_call_not_allowed" msgid="3749211605014548386">"No momento, não é possível adicionar a chamada."</string>
- <string name="no_vm_number" msgid="4164780423805688336">"Número correio de voz ausente"</string>
- <string name="no_vm_number_msg" msgid="1300729501030053828">"Não há um número correio de voz armazenado no chip."</string>
- <string name="add_vm_number_str" msgid="4676479471644687453">"Adicionar número"</string>
- <string name="change_default_dialer_dialog_title" msgid="9101655962941740507">"Usar o <xliff:g id="NEW_APP">%s</xliff:g> como seu app de telefone padrão?"</string>
- <string name="change_default_dialer_dialog_affirmative" msgid="8606546663509166276">"Definir padrão"</string>
- <string name="change_default_dialer_dialog_negative" msgid="9078144617060173845">"Cancelar"</string>
- <string name="change_default_dialer_warning_message" msgid="1417671460801684999">"O <xliff:g id="NEW_APP">%s</xliff:g> poderá ligar e controlar todos os aspectos das chamadas. Defina como aplicativo Telefone padrão somente aqueles em que você confia."</string>
- <string name="blocked_numbers" msgid="2751843139572970579">"Números bloqueados"</string>
- <string name="blocked_numbers_msg" msgid="1045015186124965643">"Você não receberá chamadas nem mensagens de texto dos números bloqueados."</string>
- <string name="block_number" msgid="1101252256321306179">"Adicionar um número"</string>
- <string name="unblock_dialog_body" msgid="1614238499771862793">"Desbloquear <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
- <string name="unblock_button" msgid="3078048901972674170">"Desbloquear"</string>
- <string name="add_blocked_dialog_body" msgid="9030243212265516828">"Bloquear chamadas e mensagens de:"</string>
- <string name="add_blocked_number_hint" msgid="6847675097085433553">"Nº de telefone"</string>
- <string name="block_button" msgid="8822290682524373357">"Bloquear"</string>
- <string name="non_primary_user" msgid="5180129233352533459">"Apenas o proprietário do dispositivo pode ver e gerenciar os números bloqueados."</string>
- <string name="delete_icon_description" msgid="8903995728252556724">"Desbloquear"</string>
- <string name="blocked_numbers_butter_bar_title" msgid="438170866438793182">"Bloqueio temporariamente desativado"</string>
- <string name="blocked_numbers_butter_bar_body" msgid="2223244484319442431">"Após discar ou enviar uma mensagem de texto para um telefone de emergência, o bloqueio é desativado para garantir o contato do serviço de emergência."</string>
- <string name="blocked_numbers_butter_bar_button" msgid="2197943354922010696">"Reativar agora"</string>
- <string name="blocked_numbers_number_blocked_message" msgid="7678509606805029540">"O número <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> está bloqueado."</string>
- <string name="blocked_numbers_number_unblocked_message" msgid="977894647366750418">"O número <xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> está desbloqueado."</string>
- <string name="blocked_numbers_block_emergency_number_message" msgid="917851876780698387">"Não é possível bloquear o telefone 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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"Chamadas recebidas"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"Chamadas perdidas"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"Bloqueio de chamadas"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"Se você ligar agora, sua chamada será encerrada no <xliff:g id="OTHER_APP">%1$s</xliff:g>."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"Bloqueio de chamadas"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"Números que não estão nos contatos"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"Bloquear os números que não estão nos seus contatos"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"Particular"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"Bloquear os autores das chamadas que não divulgam o número"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"Orelhão"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"Bloquear chamadas de orelhão"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"Desconhecido"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"Bloquear chamadas de autores não identificados"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"Bloqueio de chamadas"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"Bloqueio de chamadas desativado"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"A chamada de emergência foi feita"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"O bloqueio de chamadas foi desativado para permitir que a equipe de emergência entre em contato com você."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"Gerenciamento de chamadas"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"Telefone"</string>
+ <string name="unknown" msgid="6993977514360123431">"Desconhecido"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"Chamada perdida"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"Chamada de trabalho perdida"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"Chamadas perdidas"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> chamadas perdidas"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"Chamada perdida de <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"Retornar chamada"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"Mensagem"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"Chamada sem áudio."</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Viva-voz ativado."</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Não posso falar agora. Manda um SMS, por favor?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"Já te ligo de volta."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"Eu te ligo mais tarde."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"Não posso falar agora. Liga depois, por favor?"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"Respostas rápidas"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"Editar respostas rápidas"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"Resposta rápida"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"Mensagem enviada para <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"Falha ao enviar a mensagem para <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"Contas para chamadas"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"Somente chamadas de emergência são permitidas."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"Este aplicativo não pode fazer chamadas sem a permissão do smartphone."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"Para realizar uma chamada, digite um número válido."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"No momento, não é possível adicionar a chamada."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"Número correio de voz ausente"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"Não há um número correio de voz armazenado no chip."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"Adicionar número"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"Usar o <xliff:g id="NEW_APP">%s</xliff:g> como seu app de telefone padrão?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"Definir padrão"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"Cancelar"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"O <xliff:g id="NEW_APP">%s</xliff:g> poderá ligar e controlar todos os aspectos das chamadas. Defina como aplicativo Telefone padrão somente aqueles em que você confia."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"Usar o <xliff:g id="NEW_APP">%s</xliff:g> como seu app de seleção de chamadas padrão?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"O <xliff:g id="OLD_APP">%s</xliff:g> não selecionará mais as chamadas."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"O <xliff:g id="NEW_APP">%s</xliff:g> poderá ver as informações sobre os autores das chamadas que não estão entre seus contatos e bloqueá-los. Defina como app de seleção de chamadas padrão somente aqueles em que você confia."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"Definir padrão"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"Cancelar"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"Números bloqueados"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"Você não receberá chamadas nem mensagens de texto dos números bloqueados."</string>
+ <string name="block_number" msgid="3784343046852802722">"Adicionar um número"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"Desbloquear <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"Desbloquear"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"Bloquear chamadas e mensagens de:"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"Nº de telefone"</string>
+ <string name="block_button" msgid="485080149164258770">"Bloquear"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"Apenas o proprietário do dispositivo pode ver e gerenciar os números bloqueados."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"Desbloquear"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"Bloqueio temporariamente desativado"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"Após discar ou enviar uma mensagem de texto para um telefone de emergência, o bloqueio é desativado para garantir o contato do serviço de emergência."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"Reativar agora"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"O número <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> está bloqueado."</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"O número <xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> está desbloqueado."</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"Não é possível bloquear o telefone de emergência."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"O número <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> já está bloqueado."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"Usando o discador pessoal para fazer a chamada"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"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="5795968314037063900">"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="8653544281903986641">"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="3702302838456922535">"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="8572022039304239958">"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="4031778317409881805">"Se você atender, a chamada em andamento será encerrada"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"Se você atender, as chamadas em andamento serão encerradas"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"Se você atender, a videochamada em andamento será encerrada"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"Atender"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"Recusar"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"Não é possível ligar porque não há contas compatíveis com chamadas deste tipo."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"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="6379163795277824868">"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="8243532328969433172">"Não é possível ligar com uma chamada em andamento em outro aplicativo."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"Chamadas recebidas"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"Chamadas perdidas"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"Bloqueio de chamadas"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"Se você ligar agora, sua chamada será encerrada no <xliff:g id="OTHER_APP">%1$s</xliff:g>."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Escolha como fazer esta chamada"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Redirecionar a chamada usando o <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"Ligar usando meu número de telefone"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"Não é possível fazer uma chamada com o <xliff:g id="OTHER_APP">%1$s</xliff:g>. Use um app de redirecionamento de chamadas diferente ou entre em contato com o desenvolvedor para receber ajuda."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"Bloqueio de chamadas"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"Números que não estão nos contatos"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"Bloquear os números que não estão nos seus contatos"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"Particular"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"Bloquear os autores das chamadas que não divulgam o número"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"Orelhão"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"Bloquear chamadas de orelhão"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"Desconhecido"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"Bloquear chamadas de autores não identificados"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"Bloqueio de chamadas"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"Bloqueio de chamadas desativado"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"A chamada de emergência foi feita"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"O bloqueio de chamadas foi desativado para permitir que a equipe de emergência entre em contato com você."</string>
+ <string name="developer_title" msgid="9146088855661672353">"Menu do desenvolvedor de telecomunicação"</string>
</resources>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index ae17707..831cc46 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"Gestionarea apelurilor"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"Telefon"</string>
- <string name="unknown" msgid="6878797917991465859">"Necunoscut"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"Apel nepreluat"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"Apel de serviciu nepreluat"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Apeluri nepreluate"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> apeluri nepreluate"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"Apel nepreluat de la <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Sunați"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"Mesaj"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"Apel cu sunet dezactivat."</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"Difuzor activat."</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"Nu pot acum. Despre ce e vorba?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"Sun eu imediat."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Sun eu mai târziu."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Nu pot acum. Vorbim mai târziu?"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Răspunsuri rapide"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Editați răspunsurile rapide"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"Răspuns rapid"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"Mesajul a fost trimis la <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"Conturi pentru apelare"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"Sunt permise doar apelurile de urgență."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"Această aplicație nu poate efectua apeluri fără permisiunea Telefon."</string>
- <string name="outgoing_call_error_no_phone_number_supplied" msgid="1940125199802007505">"Pentru a apela, introduceți un număr valid."</string>
- <string name="duplicate_video_call_not_allowed" msgid="3749211605014548386">"Apelul nu poate fi adăugat în acest moment."</string>
- <string name="no_vm_number" msgid="4164780423805688336">"Lipsește numărul mesageriei vocale"</string>
- <string name="no_vm_number_msg" msgid="1300729501030053828">"Niciun număr de mesagerie vocală nu este stocat pe cardul SIM."</string>
- <string name="add_vm_number_str" msgid="4676479471644687453">"Adăugați numărul"</string>
- <string name="change_default_dialer_dialog_title" msgid="9101655962941740507">"Setați <xliff:g id="NEW_APP">%s</xliff:g> ca aplicație prestabilită a telefonului?"</string>
- <string name="change_default_dialer_dialog_affirmative" msgid="8606546663509166276">"Setați ca prestabilită"</string>
- <string name="change_default_dialer_dialog_negative" msgid="9078144617060173845">"Anulați"</string>
- <string name="change_default_dialer_warning_message" msgid="1417671460801684999">"<xliff:g id="NEW_APP">%s</xliff:g> va putea iniția apeluri și va putea controla toate aspectele acestora. E recomandat să setați ca aplicație prestabilită a telefonului numai aplicații în care aveți încredere."</string>
- <string name="blocked_numbers" msgid="2751843139572970579">"Numere blocate"</string>
- <string name="blocked_numbers_msg" msgid="1045015186124965643">"Nu veți primi apeluri sau mesaje text de la numerele blocate."</string>
- <string name="block_number" msgid="1101252256321306179">"Adăugați un număr"</string>
- <string name="unblock_dialog_body" msgid="1614238499771862793">"Deblocați <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
- <string name="unblock_button" msgid="3078048901972674170">"Deblocați"</string>
- <string name="add_blocked_dialog_body" msgid="9030243212265516828">"Blocați apelurile și mesajele text de la"</string>
- <string name="add_blocked_number_hint" msgid="6847675097085433553">"Număr de telefon"</string>
- <string name="block_button" msgid="8822290682524373357">"Blocați"</string>
- <string name="non_primary_user" msgid="5180129233352533459">"Numai proprietarul dispozitivului poate vedea și gestiona numerele blocate."</string>
- <string name="delete_icon_description" msgid="8903995728252556724">"Deblocați"</string>
- <string name="blocked_numbers_butter_bar_title" msgid="438170866438793182">"Blocarea este dezactivată temporar"</string>
- <string name="blocked_numbers_butter_bar_body" msgid="2223244484319442431">"După ce formați un număr de urgență sau trimiteți un mesaj la acesta, blocarea este dezactivată pentru ca serviciile de urgență să vă poată contacta."</string>
- <string name="blocked_numbers_butter_bar_button" msgid="2197943354922010696">"Reactivați acum"</string>
- <string name="blocked_numbers_number_blocked_message" msgid="7678509606805029540">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> este blocat"</string>
- <string name="blocked_numbers_number_unblocked_message" msgid="977894647366750418">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> este deblocat"</string>
- <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">"Respingeț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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"Apeluri primite"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"Apeluri nepreluate"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"Blocarea apelurilor"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"Dacă inițiați acest apel, cel din <xliff:g id="OTHER_APP">%1$s</xliff:g> va fi încheiat."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"Blocarea apelurilor"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"Numere care nu sunt în Agendă"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"Blocați numerele care nu sunt înregistrate în Agendă"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"Privat"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"Blocați apelanții care nu își afișează numărul"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"Telefon public"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"Blocați apelurile de la telefoane publice"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"Necunoscut"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"Blocați apelurile de la apelanți neidentificați"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"Blocarea apelurilor"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"Blocarea apelurilor este dezactivată."</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"S-a efectuat un apel de urgență."</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"Blocarea apelurilor a fost dezactivată pentru a permite serviciilor de urgență să vă contacteze."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"Gestionarea apelurilor"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"Telefon"</string>
+ <string name="unknown" msgid="6993977514360123431">"Necunoscut"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"Apel nepreluat"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"Apel de serviciu nepreluat"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"Apeluri nepreluate"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> apeluri nepreluate"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"Apel nepreluat de la <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"Sunați"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"Mesaj"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"Apel cu sunet dezactivat."</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Difuzor activat."</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Nu pot acum. Despre ce e vorba?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"Sun eu imediat."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"Sun eu mai târziu."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"Nu pot acum. Vorbim mai târziu?"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"Răspunsuri rapide"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"Editați răspunsurile rapide"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"Răspuns rapid"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"Mesajul a fost trimis la <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"Mesajul nu a fost trimis la <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"Conturi pentru apelare"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"Sunt permise doar apelurile de urgență."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"Această aplicație nu poate efectua apeluri fără permisiunea Telefon."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"Pentru a apela, introduceți un număr valid."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"Apelul nu poate fi adăugat în acest moment."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"Lipsește numărul mesageriei vocale"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"Niciun număr de mesagerie vocală nu este stocat pe cardul SIM."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"Adăugați numărul"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"Setați <xliff:g id="NEW_APP">%s</xliff:g> ca aplicație prestabilită a telefonului?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"Setați ca prestabilită"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"Anulați"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> va putea iniția apeluri și va putea controla toate aspectele acestora. E recomandat să setați ca aplicație prestabilită a telefonului numai aplicații în care aveți încredere."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"Setați <xliff:g id="NEW_APP">%s</xliff:g> ca aplicație prestabilită de filtrare apeluri?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> nu va mai putea să filtreze apelurile."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> va putea să vadă informațiile despre apelanții care nu sunt în agenda dvs. și va putea să blocheze apelurile respective. E recomandat să setați ca aplicație prestabilită de filtrare a apelurilor numai aplicații în care aveți încredere."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"Setați ca prestabilită"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"Anulați"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"Numere blocate"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"Nu veți primi apeluri sau mesaje text de la numerele blocate."</string>
+ <string name="block_number" msgid="3784343046852802722">"Adăugați un număr"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"Deblocați <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"Deblocați"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"Blocați apelurile și mesajele text de la"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"Număr de telefon"</string>
+ <string name="block_button" msgid="485080149164258770">"Blocați"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"Numai proprietarul dispozitivului poate vedea și gestiona numerele blocate."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"Deblocați"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"Blocarea este dezactivată temporar"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"După ce formați un număr de urgență sau trimiteți un mesaj la acesta, blocarea este dezactivată pentru ca serviciile de urgență să vă poată contacta."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"Reactivați acum"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> este blocat"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> este deblocat"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"Numărul de urgență nu poate fi blocat."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> este deja blocat."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"Utilizarea telefonului personal pentru a apela"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"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="5795968314037063900">"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="8653544281903986641">"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="3702302838456922535">"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="8572022039304239958">"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="4031778317409881805">"Dacă răspundeți, apelul în curs va fi încheiat."</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"Dacă răspundeți, apelurile în curs vor fi încheiate."</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"Dacă răspundeți, apelul video în curs va fi încheiat."</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"Răspundeți"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"Respingeți"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"Apelul nu poate fi inițiat deoarece nu există conturi pentru apelare compatibile cu apeluri de acest tip."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"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="6379163795277824868">"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="8243532328969433172">"Apelul nu poate fi inițiat din cauza unui apel din altă aplicație."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"Apeluri primite"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"Apeluri nepreluate"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"Blocarea apelurilor"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"Dacă inițiați acest apel, cel din <xliff:g id="OTHER_APP">%1$s</xliff:g> va fi încheiat."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Alegeți cum vreți să inițiați apelul"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Redirecționați apelul folosind <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"Apelează folosind numărul meu"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"Apelul nu poate fi inițiat de <xliff:g id="OTHER_APP">%1$s</xliff:g>. Încercați să folosiți o aplicație de redirecționare a apelurilor sau să contactați dezvoltatorul pentru a solicita ajutorul."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"Blocarea apelurilor"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"Numere care nu sunt în Agendă"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"Blocați numerele care nu sunt înregistrate în Agendă"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"Privat"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"Blocați apelanții care nu își afișează numărul"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"Telefon public"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"Blocați apelurile de la telefoane publice"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"Necunoscut"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"Blocați apelurile de la apelanți neidentificați"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"Blocarea apelurilor"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"Blocarea apelurilor este dezactivată."</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"S-a efectuat un apel de urgență."</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"Blocarea apelurilor a fost dezactivată pentru a permite serviciilor de urgență să vă contacteze."</string>
+ <string name="developer_title" msgid="9146088855661672353">"Meniu pentru dezvoltatori de telecomunicații"</string>
</resources>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index cd55aaa..f6fc583 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"Управление звонками"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"Телефон"</string>
- <string name="unknown" msgid="6878797917991465859">"Неизвестный абонент"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"Пропущенный вызов"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"Пропущенный звонок (работа)"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Пропущенные вызовы"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"Пропущенных вызовов: <xliff:g id="NUM_MISSED_CALLS">%s</xliff:g>"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"Пропущенные вызовы от абонента <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Позвонить"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"Написать"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"Звук выключен."</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"Громкая связь включена."</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"Не могу говорить. Что случилось?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"Я сейчас вам перезвоню."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Я перезвоню вам позже."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Не могу говорить. Позвоните позже."</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Быстрые ответы"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Быстрые ответы"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"Быстрый ответ"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"Сообщение отправлено на номер <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"Аккаунты для звонков"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"Только экстренные вызовы"</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"Приложение не может совершать звонки без соответствующего разрешения."</string>
- <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">"На SIM-карте нет ни одного номера голосовой почты."</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>
- <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="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_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>
- <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_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_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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"Входящие вызовы"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"Пропущенные вызовы"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"Блокировка вызовов"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"Если вы начнете этот звонок, вызов в <xliff:g id="OTHER_APP">%1$s</xliff:g> будет завершен."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"Блокировка вызовов"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"Незнакомые номера"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"Блокировать номера, которых нет в ваших контактах"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"Скрытые номера"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"Блокировать вызовы со скрытых номеров"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"Телефоны-автоматы"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"Блокировать вызовы с телефонов-автоматов"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"Неизвестные номера"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"Блокировать вызовы с неопределяемых номеров"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"Блокировка вызовов"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"Блокировка вызовов отключена"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"Выполнен экстренный вызов"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"Блокировка вызовов отключена, чтобы у экстренных служб была возможность позвонить вам."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"Управление звонками"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"Телефон"</string>
+ <string name="unknown" msgid="6993977514360123431">"Неизвестный абонент"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"Пропущенный вызов"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"Пропущенный звонок (работа)"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"Пропущенные вызовы"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"Пропущенных вызовов: <xliff:g id="NUM_MISSED_CALLS">%s</xliff:g>"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"Пропущенные вызовы от абонента <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"Позвонить"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"Написать"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"Звук выключен."</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Громкая связь включена."</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Не могу говорить. Что случилось?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"Я сейчас вам перезвоню."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"Я перезвоню вам позже."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"Не могу говорить. Позвоните позже."</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"Быстрые ответы"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"Быстрые ответы"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"Быстрый ответ"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"Сообщение отправлено на номер <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"Не удалось отправить сообщение на номер <xliff:g id="PHONE_NUMBER">%s</xliff:g>"</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"Аккаунты для звонков"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"Только экстренные вызовы"</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"Приложение не может совершать звонки без соответствующего разрешения."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"Недействительный номер."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"Невозможно позвонить в данный момент"</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"Не указан номер голосовой почты"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"На SIM-карте нет ни одного номера голосовой почты."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"Добавить номер"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"Сделать <xliff:g id="NEW_APP">%s</xliff:g> приложением по умолчанию для звонков?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"Использовать по умолчанию"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"Отмена"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> будет отвечать за выполнение всех вызовов и настройку их параметров. Только надежные приложения следует использовать для звонков по умолчанию."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"Сделать \"<xliff:g id="NEW_APP">%s</xliff:g>\" прил. по умолчанию для упр. вход. вызовами?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"Приложение \"<xliff:g id="OLD_APP">%s</xliff:g>\" больше не сможет управлять входящими вызовами."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"Приложение \"<xliff:g id="NEW_APP">%s</xliff:g>\" получит разрешение на просмотр информации об абонентах, не входящих в список контактов, и сможет блокировать вызовы от них. Используйте только надежные приложения для управления входящими вызовами."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"Использовать по умолчанию"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"Отмена"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"Заблокированные номера"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"Звонки и сообщения с заблокированных номеров поступать не будут."</string>
+ <string name="block_number" msgid="3784343046852802722">"Добавить номер"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"Разблокировать номер <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"Разблокировать"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"Блокировать звонки и сообщения от"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"Номер телефона"</string>
+ <string name="block_button" msgid="485080149164258770">"Заблокировать"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"Просматривать и изменять список заблокированных номеров может только владелец устройства."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"Разблокировать"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"Блокировка временно снята"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"После набора или отправки сообщения на номер экстренной службы блокировка будет выключена, чтобы специалисты могли связаться с вами."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"Включить блокировку"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"Номер <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> заблокирован."</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"Номер <xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> разблокирован."</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"Невозможно заблокировать номер экстренной службы."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"Номер <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> уже заблокирован."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"Набор номера с помощью персонализированной панели"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"<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="5795968314037063900">"<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="8653544281903986641">"Если вы ответите, вызов в <xliff:g id="CALL_VIA">%1$s</xliff:g> будет завершен."</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"Если вы ответите, вызовы в <xliff:g id="CALL_VIA">%1$s</xliff:g> будут завершены."</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"Если вы ответите, видеовызов в <xliff:g id="CALL_VIA">%1$s</xliff:g> будет завершен."</string>
+ <string name="answering_ends_other_managed_call" msgid="4031778317409881805">"Если вы ответите, текущий вызов будет завершен."</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"Если вы ответите, текущие вызовы будут завершены."</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"Если вы ответите, текущий видеовызов будет завершен."</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"Ответить"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"Отклонить"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"Невозможно позвонить, так как нет аккаунтов, которые поддерживают вызовы этого типа."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"Вы не можете отправить вызов, пока не завершите другой в приложении <xliff:g id="OTHER_CALL">%1$s</xliff:g>"</string>
+ <string name="cant_call_due_to_ongoing_calls" msgid="6379163795277824868">"Вы не можете отправить вызов, пока не завершите другие в приложении <xliff:g id="OTHER_CALL">%1$s</xliff:g>"</string>
+ <string name="cant_call_due_to_ongoing_unknown_call" msgid="8243532328969433172">"Вы не можете отправить новый вызов, пока не завершите текущий в другом приложении"</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"Входящие вызовы"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"Пропущенные вызовы"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"Блокировка вызовов"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"Если вы начнете этот звонок, вызов в <xliff:g id="OTHER_APP">%1$s</xliff:g> будет завершен."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Выберите, как хотите позвонить."</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Перенаправить вызов с использованием <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"Позвонить с использованием моего номера телефона"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"Невозможно использовать для звонка приложение \"<xliff:g id="OTHER_APP">%1$s</xliff:g>\". Попробуйте воспользоваться другим приложением для перенаправления звонков или обратитесь за помощью к разработчику."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"Блокировка вызовов"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"Незнакомые номера"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"Блокировать номера, которых нет в ваших контактах"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"Скрытые номера"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"Блокировать вызовы со скрытых номеров"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"Телефоны-автоматы"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"Блокировать вызовы с телефонов-автоматов"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"Неизвестные номера"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"Блокировать вызовы с неопределяемых номеров"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"Блокировка вызовов"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"Блокировка вызовов отключена"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"Выполнен экстренный вызов"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"Блокировка вызовов отключена, чтобы у экстренных служб была возможность позвонить вам."</string>
+ <string name="developer_title" msgid="9146088855661672353">"Меню разработчика Telecom"</string>
</resources>
diff --git a/res/values-si/strings.xml b/res/values-si/strings.xml
index 538f96d..1923458 100644
--- a/res/values-si/strings.xml
+++ b/res/values-si/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"ඇමතුම් කළමනාකරණය"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"දුරකථනය"</string>
- <string name="unknown" msgid="6878797917991465859">"නොදනී"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"මඟ හැරුණු ඇමතුම"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"මග හැරුණ කාර්යාල ඇමතුම"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"මඟ හැරුණු ඇමතුම්"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"මඟ හැරුණු ඇමතුම් <xliff:g id="NUM_MISSED_CALLS">%s</xliff:g>"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g> වෙතින් මඟ හැරුණු ඇමතුම්"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"නැවත අමතන්න"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"පණිවිඩය"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"ඇමතුම නිශ්ශබ්දයි."</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"ස්පිකර්ෆෝන් සබලයි."</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"දැන් කතාකරන්න බැහැ. මොකද වෙලා තියෙන්නෙ?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"මම ඔබට දැන්ම ඇමතුමක් ගන්න."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"මම ඔබට පසුව අමතන්නම්."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"දැන් කථා කරන්න බෑ. පසුව අමතන්නද?"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"ක්ෂණික ප්රතිචාර"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"ක්ෂණික ප්රතිචාර සංස්කරණය"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"ක්ෂණික ප්රතිචාරය"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"<xliff:g id="PHONE_NUMBER">%s</xliff:g> හට පණිවිඩය යවන්න."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"ඇමතීමේ ගිණුම්"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"හදිසි ඇමතුම්වලට පමණක් ඉඩ දේ."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"දුරකථන අවසරයෙන් තොරව මෙම යෙදුමට පිටතට යන ඇමතුම් සිදු කළ නොහැකිය."</string>
- <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">"SIM කාඩ් පතෙහි හඬ තැපැල් අංකයක් ආචිත වී නැත."</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>
- <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="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_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>
- <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_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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"එන ඇමතුම්"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"මඟ හැරුණු ඇමතුම්"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"ඇමතුම් අවහිර කිරීම"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"මෙම ඇමතුම ගැනීම ඔබේ <xliff:g id="OTHER_APP">%1$s</xliff:g> ඇමතුම අවසන් කරනු ඇත."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"ඇමතුම් අවහිර කිරීම"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"සම්බන්ධතා තුළ නොමැති අංක"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"ඔබගේ සම්බන්ධතා තුළ ලැයිස්තුගත නොකරන ලද අංක අවහිර කරන්න"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"පෞද්ගලික"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"ඔවුන්ගේ අංකය අනාවරණය නොකරන අමතන්නන් අවහිර කරන්න"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"ගෙවුම් දුරකථනය"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"ගෙවුම් දුරකථන වෙතින් වන ඇමතුම් අවහිර කරන්න"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"නොදනී"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"නොහඳුනන අමතන්නන් වෙතින් වන ඇමතුම් අවහිර කරන්න"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"ඇමතුම් අවහිර කිරීම"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"ඇමතුම් අවහිර කිරීම අබල කර ඇත"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"හදිසි ඇමතුම් ගැනීම"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"හදිසි අමතන්නන්ට ඔබව සම්බන්ධ කර ගැනීමට ඉඩ දීමට ඇමතුම් අවහිර කිරීම අබල කර ඇත."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"ඇමතුම් කළමනාකරණය"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"දුරකථනය"</string>
+ <string name="unknown" msgid="6993977514360123431">"නොදනී"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"මඟ හැරුණු ඇමතුම"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"මග හැරුණ කාර්යාල ඇමතුම"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"මඟ හැරුණු ඇමතුම්"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"මඟ හැරුණු ඇමතුම් <xliff:g id="NUM_MISSED_CALLS">%s</xliff:g>"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g> වෙතින් මඟ හැරුණු ඇමතුම්"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"නැවත අමතන්න"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"පණිවිඩය"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"ඇමතුම නිශ්ශබ්දයි."</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"ස්පිකර්ෆෝන් සබලයි."</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"දැන් කතාකරන්න බැහැ. මොකද වෙලා තියෙන්නෙ?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"මම ඔබට දැන්ම ඇමතුමක් ගන්න."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"මම ඔබට පසුව අමතන්නම්."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"දැන් කථා කරන්න බෑ. පසුව අමතන්නද?"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"ක්ෂණික ප්රතිචාර"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"ක්ෂණික ප්රතිචාර සංස්කරණය"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"ක්ෂණික ප්රතිචාරය"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"<xliff:g id="PHONE_NUMBER">%s</xliff:g> හට පණිවිඩය යවන්න."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"පණිවිඩය <xliff:g id="PHONE_NUMBER">%s</xliff:g> වෙත යැවීමට අසමත් විය."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"ඇමතීමේ ගිණුම්"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"හදිසි ඇමතුම්වලට පමණක් ඉඩ දේ."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"දුරකථන අවසරයෙන් තොරව මෙම යෙදුමට පිටතට යන ඇමතුම් සිදු කළ නොහැකිය."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"ඇමතුමක් ලබාගැනීමට, වලංගු අංකයක් ලබාගන්න."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"මේ වේලාවේ ඇමතුම එකතු කළ නොහැක."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"හඬ තැපැල් අංකය නැත"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"SIM කාඩ් පතෙහි හඬ තැපැල් අංකයක් ආචිත වී නැත."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"අංකයක් එක් කරන්න"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"<xliff:g id="NEW_APP">%s</xliff:g> ඔබේ පෙරනිමි දුරකථන යෙදුම කරන්නද?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"පෙරනිමිය සකසන්න"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"අවලංගු කරන්න"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> ඇමතුම් ලබා ගැනීමට සහ එවායේ සියලු අංග පාලනය කිරීමට හැකි වනු ඇත. ඔබ විශ්වාස කරන යෙදුම් පමණක් පෙරනිමි දුරකථන යෙදුම ලෙස සැකසිය යුතුය."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"<xliff:g id="NEW_APP">%s</xliff:g> ඔබේ පෙරනිමි ඇමතුම් තිර යෙදුම කරන්නද?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g>ට තවදුටත් ඇමතුම් නිරීක්ෂණය කිරීමට නොහැකි වනු ඇත."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g>ට ඔබේ සම්බන්ධතාවල නැති අමතන්නන් පිළිබඳ තොරතුරු බැලීමට සහ මෙම ඇමතුම් අවහිර කිරීමට හැකියාව ලැබෙනු ඇත. ඔබ විශ්වාස කරන යෙදුම් පමණක් පෙරනිමි ඇමතුම් තිර යෙදුම ලෙස සැකසිය යුතුය."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"පෙරනිමිය සකසන්න"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"අවලංගු කරන්න"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"අවහිර කළ අංක"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"ඔබට අවහිර කළ අංකවලින් ඇමතුම් හෝ පෙළ නොලැබෙනු ඇත."</string>
+ <string name="block_number" msgid="3784343046852802722">"අංකයක් එක් කරන්න"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"<xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g> අවහිර නොකරන්නද?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"අවහිර නොකරන්න"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"ඇමතුම් හා පෙළ අවහිර කරන්න"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"දුරකථන අංකය"</string>
+ <string name="block_button" msgid="485080149164258770">"අවහිර කරන්න"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"උපාංගය හිමිකරුට පමණක් අවහිර අංක බැලීමට සහ කළමනාකරණය කිරීමට හැකිය."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"අවහිර කිරීමෙන් ඉවත් කරන්න"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"අවහිර කිරීම තාවකාලිකව අක්රියයි"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"ඔබ හදිසි ඇමතුම් අංකයක් ඩයල් කිරීමෙන් හෝ පෙළ පණිවිඩයක් යැවීමෙන් පසු, හදිසි අවස්ථා සේවාවලට ඔබට ඇමතිය හැකි බව තහවුරු කිරීමට අවහිර කිරීම අක්රිය කරයි."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"දැන් නැවත-සබල කරන්න"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> අවහිර කරන ලදී"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> අවහිර කිරීමෙන් ඉවත් කරන ලදී"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"හදිසි අවස්ථා අංකය අවහිර කිරීමට නොහැකිය."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> දැනටමත් අවහිර කර ඇත."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"ඇමතුම ගැනීමට පුද්ගලික අමතනය භාවිත කරමින්"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"<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="5795968314037063900">"<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="8653544281903986641">"පිළිතුරු දීම ඔබේ <xliff:g id="CALL_VIA">%1$s</xliff:g> ඇමතුම අවසන් කරනු ඇත"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"පිළිතුරු දීම ඔබේ <xliff:g id="CALL_VIA">%1$s</xliff:g> ඇමතුම් අවසන් කරනු ඇත"</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"පිළිතුරු දීම ඔබේ <xliff:g id="CALL_VIA">%1$s</xliff:g> වීඩියෝ අැමතුම අවසන් කරනු ඇත"</string>
+ <string name="answering_ends_other_managed_call" msgid="4031778317409881805">"පිළිතුරු දීම ඔබේ යන ඇමතුම අවසන් කරනු ඇත"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"පිළිතුරු දීම ඔබේ යන ඇමතුම් අවසන් කරනු ඇත"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"පිළිතුරු දීම ඔබේ යන වීඩියෝ ඇමතුම අවසන් කරනු ඇත"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"පිළිතුරු දෙන්න"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"ප්රතික්ෂේප කරන්න"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"මෙම වර්ගයේ ඇමතුම්වලට සහාය දක්වන ඇමතීමේ ගිණුම් නොමැති නිසා ඇමතුම ගැනීමට නොහැකිය."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"ඔබේ <xliff:g id="OTHER_CALL">%1$s</xliff:g> ඇමතුම හේතුවෙන් ඇමතුම ගැනීමට නොහැකිය."</string>
+ <string name="cant_call_due_to_ongoing_calls" msgid="6379163795277824868">"ඔබේ <xliff:g id="OTHER_CALL">%1$s</xliff:g> ඇමතුම් හේතුවෙන් ඇමතුම ගැනීමට නොහැකිය."</string>
+ <string name="cant_call_due_to_ongoing_unknown_call" msgid="8243532328969433172">"වෙනත් යෙදුමක ඇමතුමක් හේතුවෙන් ඇමතුම ගැනීමට නොහැකිය."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"එන ඇමතුම්"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"මඟ හැරුණු ඇමතුම්"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"ඇමතුම් අවහිර කිරීම"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"මෙම ඇමතුම ගැනීම ඔබේ <xliff:g id="OTHER_APP">%1$s</xliff:g> ඇමතුම අවසන් කරනු ඇත."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"මෙම ඇමතුම ගන්නා ආකාරය තෝරන්න"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"<xliff:g id="OTHER_APP">%1$s</xliff:g> භාවිතයෙන් ඇමතුම ප්රතියොමු කරන්න"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"මගේ දුරකථන අංකය භාවිතයෙන් ඇමතුම"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"ඇමතුම <xliff:g id="OTHER_APP">%1$s</xliff:g> මගින් ගැනීමට නොහැකිය. වෙනස් ඇමතුම ප්රතියොමු කිරීමේ යෙදුමක් භාවිත කිරීමට හෝ සහාය සඳහා සංවර්ධකයා අැමතීමට උත්සාහ කරන්න."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"ඇමතුම් අවහිර කිරීම"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"සම්බන්ධතා තුළ නොමැති අංක"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"ඔබගේ සම්බන්ධතා තුළ ලැයිස්තුගත නොකරන ලද අංක අවහිර කරන්න"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"පෞද්ගලික"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"ඔවුන්ගේ අංකය අනාවරණය නොකරන අමතන්නන් අවහිර කරන්න"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"ගෙවුම් දුරකථනය"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"ගෙවුම් දුරකථන වෙතින් වන ඇමතුම් අවහිර කරන්න"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"නොදනී"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"නොහඳුනන අමතන්නන් වෙතින් වන ඇමතුම් අවහිර කරන්න"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"ඇමතුම් අවහිර කිරීම"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"ඇමතුම් අවහිර කිරීම අබල කර ඇත"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"හදිසි ඇමතුම් ගැනීම"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"හදිසි අමතන්නන්ට ඔබව සම්බන්ධ කර ගැනීමට ඉඩ දීමට ඇමතුම් අවහිර කිරීම අබල කර ඇත."</string>
+ <string name="developer_title" msgid="9146088855661672353">"ටෙලිකොම් සංවර්ධක මෙනුව"</string>
</resources>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index a9d4940..62f273c 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"Správa hovorov"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"Telefón"</string>
- <string name="unknown" msgid="6878797917991465859">"Neznáme"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"Zmeškaný hovor"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"Zmeškaný pracovný hovor"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Zmeškané hovory"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"Zmeškané hovory: <xliff:g id="NUM_MISSED_CALLS">%s</xliff:g>."</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"Zmeškaný hovor od volajúceho <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Zavolať"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"Napísať"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"Zvuk hovoru bol vypnutý."</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"Reproduktor je povolený."</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"Teraz nemôžem hovoriť, o čo ide?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"Zavolám späť."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Zavolám neskôr."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Nemôžem hovoriť, zavoláte neskôr?"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Rýchle odpovede"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Upraviť rýchle odpovede"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"Rýchla odpoveď"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"Správa bola odoslaná na číslo <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"Telefónne účty"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"Povolené sú len tiesňové volania."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"V tejto aplikácii nie je možné uskutočňovať odchádzajúce hovory bez povolenia Telefón"</string>
- <string name="outgoing_call_error_no_phone_number_supplied" msgid="1940125199802007505">"Ak chcete volať, zadajte platné číslo"</string>
- <string name="duplicate_video_call_not_allowed" msgid="3749211605014548386">"Hovor momentálne nie je možné pridať."</string>
- <string name="no_vm_number" msgid="4164780423805688336">"Chýba číslo hlasovej schránky"</string>
- <string name="no_vm_number_msg" msgid="1300729501030053828">"Na SIM karte nie je uložené žiadne číslo hlasovej schránky."</string>
- <string name="add_vm_number_str" msgid="4676479471644687453">"Pridať číslo"</string>
- <string name="change_default_dialer_dialog_title" msgid="9101655962941740507">"Nastaviť <xliff:g id="NEW_APP">%s</xliff:g> ako predvolanú aplikáciu na telefonovanie?"</string>
- <string name="change_default_dialer_dialog_affirmative" msgid="8606546663509166276">"Nastaviť ako predvolené"</string>
- <string name="change_default_dialer_dialog_negative" msgid="9078144617060173845">"Zrušiť"</string>
- <string name="change_default_dialer_warning_message" msgid="1417671460801684999">"<xliff:g id="NEW_APP">%s</xliff:g> bude môcť uskutočňovať hovory a ovládať všetky aspekty hovorov. Ako predvolenú aplikáciu na telefonovanie by ste si mali nastaviť len aplikáciu, ktorej dôverujete."</string>
- <string name="blocked_numbers" msgid="2751843139572970579">"Blokované čísla"</string>
- <string name="blocked_numbers_msg" msgid="1045015186124965643">"Z blokovaných čísel nebudete prijímať hovory ani textové správy."</string>
- <string name="block_number" msgid="1101252256321306179">"Pridať číslo"</string>
- <string name="unblock_dialog_body" msgid="1614238499771862793">"Chcete odblokovať číslo <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
- <string name="unblock_button" msgid="3078048901972674170">"Odblokovať"</string>
- <string name="add_blocked_dialog_body" msgid="9030243212265516828">"Blokovať hovory a textové správy"</string>
- <string name="add_blocked_number_hint" msgid="6847675097085433553">"Telefónne číslo"</string>
- <string name="block_button" msgid="8822290682524373357">"Blokovať"</string>
- <string name="non_primary_user" msgid="5180129233352533459">"Iba vlastník zariadenia môže zobrazovať a spravovať blokované čísla."</string>
- <string name="delete_icon_description" msgid="8903995728252556724">"Odblokovať"</string>
- <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 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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"Prichádzajúce hovory"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"Zmeškané hovory"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"Blokovanie hovorov"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"Ak uskutočníte tento hovor, hovor cez <xliff:g id="OTHER_APP">%1$s</xliff:g> bude ukončený."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"Blokovanie hovorov"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"Čísla, ktoré nie sú v kontaktoch"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"Blokovať čísla, ktoré nemáte v kontaktoch"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"Skryté čísla"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"Blokovať volajúcich, ktorí skrývajú svoje číslo"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"Verejný telefón"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"Blokovať hovory z verejných telefónov"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"Neznáme číslo"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"Blokovať hovory od nerozpoznaných volajúcich"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"Blokovanie hovorov"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"Blokovanie hovorov je vypnuté"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"Bolo uskutočnené tiesňové volanie"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"Blokovanie hovorov bolo vypnuté, aby vás mohli kontaktovať pracovníci tiesňových služieb."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"Správa hovorov"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"Telefón"</string>
+ <string name="unknown" msgid="6993977514360123431">"Neznáme"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"Zmeškaný hovor"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"Zmeškaný pracovný hovor"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"Zmeškané hovory"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"Zmeškané hovory: <xliff:g id="NUM_MISSED_CALLS">%s</xliff:g>."</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"Zmeškaný hovor od volajúceho <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"Zavolať"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"Napísať"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"Zvuk hovoru bol vypnutý."</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Reproduktor je povolený."</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Teraz nemôžem hovoriť, o čo ide?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"Zavolám späť."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"Zavolám neskôr."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"Nemôžem hovoriť, zavoláte neskôr?"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"Rýchle odpovede"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"Upraviť rýchle odpovede"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"Rýchla odpoveď"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"Správa bola odoslaná na číslo <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"Správu sa nepodarilo odoslať na číslo <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"Telefónne účty"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"Povolené sú len tiesňové volania."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"V tejto aplikácii nie je možné uskutočňovať odchádzajúce hovory bez povolenia Telefón"</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"Ak chcete volať, zadajte platné číslo"</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"Hovor momentálne nie je možné pridať."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"Chýba číslo hlasovej schránky"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"Na SIM karte nie je uložené žiadne číslo hlasovej schránky."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"Pridať číslo"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"Nastaviť <xliff:g id="NEW_APP">%s</xliff:g> ako predvolanú aplikáciu na telefonovanie?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"Nastaviť ako predvolené"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"Zrušiť"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> bude môcť uskutočňovať hovory a ovládať všetky aspekty hovorov. Ako predvolenú aplikáciu na telefonovanie by ste si mali nastaviť len aplikáciu, ktorej dôverujete."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"Nastaviť <xliff:g id="NEW_APP">%s</xliff:g> ako predv. aplik. na preverovanie volajúcich?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"Aplikácia <xliff:g id="OLD_APP">%s</xliff:g> už nebude môcť preverovať volajúcich."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"Aplikácia <xliff:g id="NEW_APP">%s</xliff:g> bude môcť zobraziť informácie o volajúcich, ktorých nemáte v kontaktoch, a bude tieto hovory môcť zablokovať. Ako predvolenú aplikáciu na preverovanie volajúcich by ste mali nastaviť len aplikáciu, ktorej dôverujete."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"Nastaviť ako predvolené"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"Zrušiť"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"Blokované čísla"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"Z blokovaných čísel nebudete prijímať hovory ani textové správy."</string>
+ <string name="block_number" msgid="3784343046852802722">"Pridať číslo"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"Chcete odblokovať číslo <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"Odblokovať"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"Blokovať hovory a textové správy"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"Telefónne číslo"</string>
+ <string name="block_button" msgid="485080149164258770">"Blokovať"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"Iba vlastník zariadenia môže zobrazovať a spravovať blokované čísla."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"Odblokovať"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"Blokovanie je dočasne vypnuté"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"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="2704456308072489793">"Znova zapnúť"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"Číslo <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> je blokované"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"Číslo <xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> je odblokované"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"Číslo tiesňového volania sa nedá zablokovať."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"Číslo <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> je už zablokované."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"Na volanie sa používa osobné vytáčanie"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"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="5795968314037063900">"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="8653544281903986641">"Prijatím hovoru ukončíte hovor <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"Prijatím hovoru ukončíte hovory <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"Prijatím hovoru ukončíte videohovor <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+ <string name="answering_ends_other_managed_call" msgid="4031778317409881805">"Prijatím hovoru ukončíte prebiehajúci hovor"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"Prijatím hovoru ukončíte prebiehajúce hovory"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"Prijatím hovoru ukončíte prebiehajúci videohovor"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"Prijať"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"Odmietnuť"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"Hovor sa nedá uskutočniť, pretože nie je k dispozícii žiaden účet, ktorý by tento typ hovorov podporoval."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"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="6379163795277824868">"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="8243532328969433172">"Hovor sa nedá uskutočniť, pretože prebieha hovor v inej aplikácii."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"Prichádzajúce hovory"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"Zmeškané hovory"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"Blokovanie hovorov"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"Ak uskutočníte tento hovor, hovor cez <xliff:g id="OTHER_APP">%1$s</xliff:g> bude ukončený."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Vyberte, ako chcete tento hovor uskutočniť"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Presmerovať hovor cez aplikáciu <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"Zavolať pomocou môjho telefónneho čísla"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"Aplikácia <xliff:g id="OTHER_APP">%1$s</xliff:g> nemôže uskutočniť hovor. Skúste použiť inú aplikáciu na presmerovanie hovorov alebo kontaktujte vývojára a požiadajte o pomoc."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"Blokovanie hovorov"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"Čísla, ktoré nie sú v kontaktoch"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"Blokovať čísla, ktoré nemáte v kontaktoch"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"Skryté čísla"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"Blokovať volajúcich, ktorí skrývajú svoje číslo"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"Verejný telefón"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"Blokovať hovory z verejných telefónov"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"Neznáme číslo"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"Blokovať hovory od nerozpoznaných volajúcich"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"Blokovanie hovorov"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"Blokovanie hovorov je vypnuté"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"Bolo uskutočnené tiesňové volanie"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"Blokovanie hovorov bolo vypnuté, aby vás mohli kontaktovať pracovníci tiesňových služieb."</string>
+ <string name="developer_title" msgid="9146088855661672353">"Ponuka pre vývojárov Telecomu"</string>
</resources>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index 083a7c5..8c8c89f 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"Upravljanje klicev"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"Telefon"</string>
- <string name="unknown" msgid="6878797917991465859">"Neznano"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"Neodgovorjeni klic"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"Zgrešen delovni klic"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Neodgovorjeni klici"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> neodgovorjenih klicev"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"Neodgovorjeni klic od <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Povratni klic"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"Sporočilo"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"Klic izključen."</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"Zvočnik omogočen."</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"Zdaj ne morem govoriti. Za kaj gre?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"Pokličem takoj."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Pokličem pozneje."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Zdaj ne morem govoriti. Pozneje?"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Hitri odgovori"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Urejanje hitrih odgovorov"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"Hiter odgovor"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"SMS poslan na številko <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"Računi za klicanje"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"Dovoljeno je samo opravljanje klicev v sili."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"Ta aplikacija lahko opravlja odhodne klice brez dovoljenja za telefon."</string>
- <string name="outgoing_call_error_no_phone_number_supplied" msgid="1940125199802007505">"Če želite opraviti klic, vnesite veljavno številko."</string>
- <string name="duplicate_video_call_not_allowed" msgid="3749211605014548386">"Klica trenutno ni mogoče dodati."</string>
- <string name="no_vm_number" msgid="4164780423805688336">"Manjkajoča številka glasovne pošte"</string>
- <string name="no_vm_number_msg" msgid="1300729501030053828">"Na kartici SIM ni shranjena številka glasovne pošte."</string>
- <string name="add_vm_number_str" msgid="4676479471644687453">"Dodaj številko"</string>
- <string name="change_default_dialer_dialog_title" msgid="9101655962941740507">"Želite, da je <xliff:g id="NEW_APP">%s</xliff:g> privzeta aplikacija za klicanje?"</string>
- <string name="change_default_dialer_dialog_affirmative" msgid="8606546663509166276">"Nastavi za privzeto"</string>
- <string name="change_default_dialer_dialog_negative" msgid="9078144617060173845">"Prekliči"</string>
- <string name="change_default_dialer_warning_message" msgid="1417671460801684999">"V aplikaciji <xliff:g id="NEW_APP">%s</xliff:g> bo mogoče opravljati klice in nadzirati vse vidike klicev. Kot privzeto aplikacijo za klicanje nastavite samo aplikacije, ki jim zaupate."</string>
- <string name="blocked_numbers" msgid="2751843139572970579">"Blokirane številke"</string>
- <string name="blocked_numbers_msg" msgid="1045015186124965643">"Z blokiranih številk ne boste prejemali klicev ali sporočil SMS."</string>
- <string name="block_number" msgid="1101252256321306179">"Dodaj številko"</string>
- <string name="unblock_dialog_body" msgid="1614238499771862793">"Želite odblokirati številko <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
- <string name="unblock_button" msgid="3078048901972674170">"Odblokiraj"</string>
- <string name="add_blocked_dialog_body" msgid="9030243212265516828">"Blokiranje klicev in SMS-jev s številke"</string>
- <string name="add_blocked_number_hint" msgid="6847675097085433553">"Telefonska številka"</string>
- <string name="block_button" msgid="8822290682524373357">"Blokiraj"</string>
- <string name="non_primary_user" msgid="5180129233352533459">"Samo lastnik naprave si lahko ogleda blokirane številke in jih upravlja."</string>
- <string name="delete_icon_description" msgid="8903995728252556724">"Odblokiraj"</string>
- <string name="blocked_numbers_butter_bar_title" msgid="438170866438793182">"Blokiranje je začasno izklopljeno"</string>
- <string name="blocked_numbers_butter_bar_body" msgid="2223244484319442431">"Ko izberete številko za klic v sili ali nanjo pošljete sporočilo SMS, se blokiranje izklopi, s čimer se zagotovi, da vas lahko pokličejo iz služb za pomoč v sili."</string>
- <string name="blocked_numbers_butter_bar_button" msgid="2197943354922010696">"Znova omogoči"</string>
- <string name="blocked_numbers_number_blocked_message" msgid="7678509606805029540">"Številka <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> je blokirana"</string>
- <string name="blocked_numbers_number_unblocked_message" msgid="977894647366750418">"Številka <xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> je odblokirana"</string>
- <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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"Dohodni klici"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"Neodgovorjeni klici"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"Blokiranje klicev"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"Če opravite ta klic, bo končan klic prek aplikacije <xliff:g id="OTHER_APP">%1$s</xliff:g>."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"Blokiranje klicev"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"Številke, ki niso v stikih"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"Blokirajte številke, ki niso na seznamu vaših stikov"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"Zasebno"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"Blokirajte klicatelje, ki ne razkrijejo številke"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"Telefonska govorilnica"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"Blokirajte klice iz telefonskih govorilnic"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"Neznano"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"Blokirajte klice neznanih klicateljev"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"Blokiranje klicev"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"Blokiranje klicev je onemogočeno"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"Opravljen je klic v sili"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"Blokiranje klicev je onemogočeno, da lahko stik z vami vzpostavijo uslužbenci služb za klic v sili."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"Upravljanje klicev"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"Telefon"</string>
+ <string name="unknown" msgid="6993977514360123431">"Neznano"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"Neodgovorjeni klic"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"Zgrešen delovni klic"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"Neodgovorjeni klici"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> neodgovorjenih klicev"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"Neodgovorjeni klic od <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"Povratni klic"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"Sporočilo"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"Klic izključen."</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Zvočnik omogočen."</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Zdaj ne morem govoriti. Za kaj gre?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"Pokličem takoj."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"Pokličem pozneje."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"Zdaj ne morem govoriti. Pozneje?"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"Hitri odgovori"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"Urejanje hitrih odgovorov"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"Hiter odgovor"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"SMS poslan na številko <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"Sporočilo ni bilo poslano na številko <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"Računi za klicanje"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"Dovoljeno je samo opravljanje klicev v sili."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"Ta aplikacija lahko opravlja odhodne klice brez dovoljenja za telefon."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"Če želite opraviti klic, vnesite veljavno številko."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"Klica trenutno ni mogoče dodati."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"Manjkajoča številka glasovne pošte"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"Na kartici SIM ni shranjena številka glasovne pošte."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"Dodaj številko"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"Želite, da je <xliff:g id="NEW_APP">%s</xliff:g> privzeta aplikacija za klicanje?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"Nastavi za privzeto"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"Prekliči"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"V aplikaciji <xliff:g id="NEW_APP">%s</xliff:g> bo mogoče opravljati klice in nadzirati vse vidike klicev. Kot privzeto aplikacijo za klicanje nastavite samo aplikacije, ki jim zaupate."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"Želite, da je <xliff:g id="NEW_APP">%s</xliff:g> privzeta aplikacija za pregled klicev?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"V aplikaciji <xliff:g id="OLD_APP">%s</xliff:g> ne bo več mogoč predhodni pregled klicev."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"V aplikaciji <xliff:g id="NEW_APP">%s</xliff:g> si bo mogoče ogledati podatke o klicateljih, ki niso na vašem seznamu stikov, in bo mogoče blokirati te klice. Kot privzeto aplikacijo za predhodni pregled klicev nastavite samo aplikacije, ki jim zaupate."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"Nastavi za privzeto"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"Prekliči"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"Blokirane številke"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"Z blokiranih številk ne boste prejemali klicev ali sporočil SMS."</string>
+ <string name="block_number" msgid="3784343046852802722">"Dodaj številko"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"Želite odblokirati številko <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"Odblokiraj"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"Blokiranje klicev in SMS-jev s številke"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"Telefonska številka"</string>
+ <string name="block_button" msgid="485080149164258770">"Blokiraj"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"Samo lastnik naprave si lahko ogleda blokirane številke in jih upravlja."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"Odblokiraj"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"Blokiranje je začasno izklopljeno"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"Ko izberete številko za klic v sili ali nanjo pošljete sporočilo SMS, se blokiranje izklopi, s čimer se zagotovi, da vas lahko pokličejo iz služb za pomoč v sili."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"Znova omogoči"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"Številka <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> je blokirana"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"Številka <xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> je odblokirana"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"Številke za klic v sili ni mogoče blokirati."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"Številka <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> je že blokirana."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"Uporaba osebnega klicalnika za klic"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"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="5795968314037063900">"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="8653544281903986641">"Č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="3702302838456922535">"Č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="8572022039304239958">"Č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="4031778317409881805">"Če sprejmete, bo končan aktivni klic"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"Če sprejmete, bodo končani aktivni klici"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"Če sprejmete, bo končan aktivni videoklic"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"Sprejmi"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"Zavrni"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"Klica ni mogoče vzpostaviti, ker ni računov za klicanje, ki podpirajo tovrstne klice."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"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="6379163795277824868">"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="8243532328969433172">"Klica ni mogoče vzpostaviti zaradi klica prek druge aplikacije."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"Dohodni klici"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"Neodgovorjeni klici"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"Blokiranje klicev"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"Če opravite ta klic, bo končan klic prek aplikacije <xliff:g id="OTHER_APP">%1$s</xliff:g>."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Izberite, kako želite opraviti klic"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Preusmeri klic z aplikacijo <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"Kliči z mojo telefonsko številko"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"V aplikaciji <xliff:g id="OTHER_APP">%1$s</xliff:g> ni mogoče opraviti klica. Uporabite drugo aplikacijo za preusmerjanje klicev ali se za pomoč obrnite na razvijalca."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"Blokiranje klicev"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"Številke, ki niso v stikih"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"Blokirajte številke, ki niso na seznamu vaših stikov"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"Zasebno"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"Blokirajte klicatelje, ki ne razkrijejo številke"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"Telefonska govorilnica"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"Blokirajte klice iz telefonskih govorilnic"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"Neznano"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"Blokiranje klicev neznanih klicateljev"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"Blokiranje klicev"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"Blokiranje klicev je onemogočeno"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"Opravljen je klic v sili"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"Blokiranje klicev je onemogočeno, da lahko stik z vami vzpostavijo uslužbenci služb za klic v sili."</string>
+ <string name="developer_title" msgid="9146088855661672353">"Meni za razvijalce Telecom"</string>
</resources>
diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml
index 325f62b..2ad6576 100644
--- a/res/values-sq/strings.xml
+++ b/res/values-sq/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"Menaxhimi i thirrjes"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"Telefoni"</string>
- <string name="unknown" msgid="6878797917991465859">"I panjohur"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"Telefonatë e humbur"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"Telefonatë pune e humbur"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Telefonata të humbura"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> telefonata të humbura"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"Telefonatë e humbur nga <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Telefono"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"Mesazh"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"Telefonata kaloi në heshtje."</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"Altoparlanti u aktivizua."</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"Nuk flas dot tani. Si është puna?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"Do të të telefonoj menjëherë."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Do të të telefonoj më vonë."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Nuk mund të flas tani. Do më telefonosh më vonë?"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Përgjigje të shpejta"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Redakto përgjigjet e shpejta"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"Përgjigje e shpejtë"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"Mesazhi u dërgua te <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"Llogaritë e telefonatave"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"Lejohen vetëm telefonatat e urgjencës."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"Ky aplikacion nuk mund të kryejë telefonata dalëse pa lejen e Telefonit."</string>
- <string name="outgoing_call_error_no_phone_number_supplied" msgid="1940125199802007505">"Për të kryer një telefonatë, fut një numër të vlefshëm."</string>
- <string name="duplicate_video_call_not_allowed" msgid="3749211605014548386">"Telefonata nuk mund të shtohet këtë herë."</string>
- <string name="no_vm_number" msgid="4164780423805688336">"Mungon numri i postës zanore"</string>
- <string name="no_vm_number_msg" msgid="1300729501030053828">"Nuk ka numër të ruajtur në kartën SIM."</string>
- <string name="add_vm_number_str" msgid="4676479471644687453">"Shto numër"</string>
- <string name="change_default_dialer_dialog_title" msgid="9101655962941740507">"Të bëhet <xliff:g id="NEW_APP">%s</xliff:g> aplikacioni yt i parazgjedhur në telefon?"</string>
- <string name="change_default_dialer_dialog_affirmative" msgid="8606546663509166276">"Vendos të parazgjedhurën"</string>
- <string name="change_default_dialer_dialog_negative" msgid="9078144617060173845">"Anulo"</string>
- <string name="change_default_dialer_warning_message" msgid="1417671460801684999">"<xliff:g id="NEW_APP">%s</xliff:g> do të mund të bëjë dhe kontrollojë të gjitha aspektet e telefonatave. Vetëm aplikacionet të cilave u beson duhet të caktohen si aplikacioni Telefon i parazgjedhur."</string>
- <string name="blocked_numbers" msgid="2751843139572970579">"Numrat e bllokuar"</string>
- <string name="blocked_numbers_msg" msgid="1045015186124965643">"Nuk do të marrësh telefonata ose mesazhe me tekst nga numrat e bllokuar."</string>
- <string name="block_number" msgid="1101252256321306179">"Shto një numër"</string>
- <string name="unblock_dialog_body" msgid="1614238499771862793">"Zhblloko <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
- <string name="unblock_button" msgid="3078048901972674170">"Zhblloko"</string>
- <string name="add_blocked_dialog_body" msgid="9030243212265516828">"Blloko telefonatat dhe mesazhet me tekst nga"</string>
- <string name="add_blocked_number_hint" msgid="6847675097085433553">"Numri i telefonit"</string>
- <string name="block_button" msgid="8822290682524373357">"Blloko"</string>
- <string name="non_primary_user" msgid="5180129233352533459">"Vetëm zotëruesi i pajisjes mund të shikojë dhe të menaxhojë numrat e bllokuar."</string>
- <string name="delete_icon_description" msgid="8903995728252556724">"Zhblloko"</string>
- <string name="blocked_numbers_butter_bar_title" msgid="438170866438793182">"Bllokimi përkohësisht joaktiv"</string>
- <string name="blocked_numbers_butter_bar_body" msgid="2223244484319442431">"Pasi shtypet ose dërgohet mesazh me tekst te një numër i urgjencës, bllokimi është çaktivizuar për të siguruar që shërbimet e emergjencës të mund të të kontaktojnë."</string>
- <string name="blocked_numbers_butter_bar_button" msgid="2197943354922010696">"Riaktivizo tani"</string>
- <string name="blocked_numbers_number_blocked_message" msgid="7678509606805029540">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> u bllokua"</string>
- <string name="blocked_numbers_number_unblocked_message" msgid="977894647366750418">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> u zhbllokua"</string>
- <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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"Telefonatat hyrëse"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"Telefonatat e humbura"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"Bllokimi i telefonatave"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"Kryerja e kësaj telefonate do të mbyllë telefonatën tënde në <xliff:g id="OTHER_APP">%1$s</xliff:g>."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"Bllokimi i telefonatave"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"Numrat që nuk janë te \"Kontaktet\""</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"Blloko numrat që nuk janë të listuar te \"Kontaktet\" e tua"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"Private"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"Blloko telefonuesit që nuk e zbulojnë numrin e tyre"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"Telefon me pagesë"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"Blloko telefonatat nga telefonat me pagesë"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"E panjohur"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"Blloko telefonatat nga telefonuesit e paidentifikuar"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"Bllokimi i telefonatave"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"Bllokimi i telefonatave u çaktivizua"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"Telefonata e urgjencës u krye"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"Bllokimi i telefonatave është çaktivizuar për të lejuar që personat që përgjigjen në rast urgjence të kontaktojnë me ty."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"Menaxhimi i thirrjes"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"Telefoni"</string>
+ <string name="unknown" msgid="6993977514360123431">"I panjohur"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"Telefonatë e humbur"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"Telefonatë pune e humbur"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"Telefonata të humbura"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> telefonata të humbura"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"Telefonatë e humbur nga <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"Telefono"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"Mesazh"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"Telefonata kaloi në heshtje."</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Altoparlanti u aktivizua."</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Nuk flas dot tani. Si është puna?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"Do të të telefonoj menjëherë."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"Do të të telefonoj më vonë."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"Nuk mund të flas tani. Do më telefonosh më vonë?"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"Përgjigje të shpejta"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"Redakto përgjigjet e shpejta"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"Përgjigje e shpejtë"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"Mesazhi u dërgua te <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"Dërgimi i mesazhit te <xliff:g id="PHONE_NUMBER">%s</xliff:g> dështoi."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"Llogaritë e telefonatave"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"Lejohen vetëm telefonatat e urgjencës."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"Ky aplikacion nuk mund të kryejë telefonata dalëse pa lejen e Telefonit."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"Për të kryer një telefonatë, fut një numër të vlefshëm."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"Telefonata nuk mund të shtohet këtë herë."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"Mungon numri i postës zanore"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"Nuk ka numër të ruajtur në kartën SIM."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"Shto numër"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"Të bëhet <xliff:g id="NEW_APP">%s</xliff:g> aplikacioni yt i parazgjedhur në telefon?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"Vendos të parazgjedhurën"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"Anulo"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> do të mund të bëjë dhe kontrollojë të gjitha aspektet e telefonatave. Vetëm aplikacionet të cilave u beson duhet të caktohen si aplikacioni Telefon i parazgjedhur."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"Të bëhet <xliff:g id="NEW_APP">%s</xliff:g> aplikacioni i parazgjedhur për filtrimin?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> nuk do të mund të filtrojë më telefonatat."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> do të mund të shikojë informacione për telefonuesit që nuk janë në kontaktet e tua dhe do të mund t\'i bllokojë këto telefonata. Vetëm aplikacionet që i beson duhet të caktohen si aplikacioni i parazgjedhur për filtrimin e telefonatave."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"Cakto parazgjedhjen"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"Anulo"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"Numrat e bllokuar"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"Nuk do të marrësh telefonata ose mesazhe me tekst nga numrat e bllokuar."</string>
+ <string name="block_number" msgid="3784343046852802722">"Shto një numër"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"Zhblloko <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"Zhblloko"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"Blloko telefonatat dhe mesazhet me tekst nga"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"Numri i telefonit"</string>
+ <string name="block_button" msgid="485080149164258770">"Blloko"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"Vetëm zotëruesi i pajisjes mund të shikojë dhe të menaxhojë numrat e bllokuar."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"Zhblloko"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"Bllokimi përkohësisht joaktiv"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"Pasi shtypet ose dërgohet mesazh me tekst te një numër i urgjencës, bllokimi është çaktivizuar për të siguruar që shërbimet e emergjencës të mund të të kontaktojnë."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"Riaktivizo tani"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> u bllokua"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> u zhbllokua"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"Numri i urgjencës nuk mund të bllokohet."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> është i bllokuar tashmë."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"Po përdor formuesin personal të numrave për të kryer telefonatën"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"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="5795968314037063900">"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="8653544281903986641">"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="3702302838456922535">"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="8572022039304239958">"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="4031778317409881805">"Përgjigjja do ta mbyllë telefonatën tënde në vazhdim"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"Përgjigjja do t\'i mbyllë telefonatat e tua në vazhdim"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"Përgjigjja do ta mbyllë telefonatën me video në vazhdim"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"Përgjigju"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"Refuzo"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"Telefonata nuk mund të kryhet pasi nuk ka asnjë llogari telefonatash që i mbështet telefonatat e këtij lloji."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"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="6379163795277824868">"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="8243532328969433172">"Telefonata nuk mund të kryhet për shkak të një telefonate në një aplikacion tjetër."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"Telefonatat hyrëse"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"Telefonatat e humbura"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"Bllokimi i telefonatave"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"Kryerja e kësaj telefonate do të mbyllë telefonatën tënde në <xliff:g id="OTHER_APP">%1$s</xliff:g>."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Zgjidh se si do ta kryesh këtë telefonatë"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Ridrejtoje telefonatën duke përdorur <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"Telefono duke përdorur numrin tim të telefonit"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"Telefonata nuk mund të kryhet nga <xliff:g id="OTHER_APP">%1$s</xliff:g>. Provo të përdorësh një aplikacion tjetër për ridrejtimin e telefonatave ose kontakto me zhvilluesin për ndihmë."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"Bllokimi i telefonatave"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"Numrat që nuk janë te \"Kontaktet\""</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"Blloko numrat që nuk janë të listuar te \"Kontaktet\" e tua"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"Private"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"Blloko telefonuesit që nuk e zbulojnë numrin e tyre"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"Telefon me pagesë"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"Blloko telefonatat nga telefonat me pagesë"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"E panjohur"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"Blloko telefonatat nga telefonuesit e paidentifikuar"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"Bllokimi i telefonatave"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"Bllokimi i telefonatave u çaktivizua"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"Telefonata e urgjencës u krye"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"Bllokimi i telefonatave është çaktivizuar për të lejuar që personat që përgjigjen në rast urgjence të kontaktojnë me ty."</string>
+ <string name="developer_title" msgid="9146088855661672353">"Menyja e zhvilluesit të telekomunikimit"</string>
</resources>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index de2a758..a5a32cd 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"Управљање позивима"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"Телефон"</string>
- <string name="unknown" msgid="6878797917991465859">"Непознато"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"Пропуштен позив"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"Пропуштен позив за Work"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Пропуштени позиви"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"Број пропуштених позива: <xliff:g id="NUM_MISSED_CALLS">%s</xliff:g>"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"Пропуштен позив од: <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Узврати позив"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"Порука"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"Звук позива је искључен."</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"Спикерфон је омогућен."</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"У гужви сам. О чему се ради?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"Позваћу те ускоро."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Позваћу те касније."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"У гужви сам. Зовеш ме касније?"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Брзи одговори"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Измена брзих одговора"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"Брзи одговор"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"Порука је послата на број <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"Налози за позивање"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"Дозвољени су само хитни позиви."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"Ова апликација не може да позива без дозволе за телефонирање."</string>
- <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">"Није ускладиштен ниједан број говорне поште на SIM картици."</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>
- <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="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">"Блокирајте позиве и SMS-ове од"</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>
- <string name="blocked_numbers_butter_bar_title" msgid="438170866438793182">"Блокирање је привремено искључено"</string>
- <string name="blocked_numbers_butter_bar_body" msgid="2223244484319442431">"Кад позовете број хитне службе или на тај број пошаљете SMS, блокирање се искључује да би хитне службе могле да вас контактирају."</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_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_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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"Долазни позиви"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"Пропуштени позиви"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"Блокирање позива"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"Ако упутите овај позив, завршићете <xliff:g id="OTHER_APP">%1$s</xliff:g> позив."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"Блокирање позива"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"Бројеви који нису у контактима"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"Блокирајте бројеве који вам нису у контактима"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"Скривени бројеви"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"Блокирајте позиваоце који скривају број"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"Телефонска говорница"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"Блокирајте позиве са телефонских говорница"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"Непознати бројеви"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"Блокирајте позиве неидентификованих позивалаца"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"Блокирање позива"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"Блокирање позива је онемогућено"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"Упућен је хитни позив"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"Блокирање позива је онемогућено да би хитне службе могле да вас контактирају."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"Управљање позивима"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"Телефон"</string>
+ <string name="unknown" msgid="6993977514360123431">"Непознато"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"Пропуштен позив"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"Пропуштен позив за Work"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"Пропуштени позиви"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"Број пропуштених позива: <xliff:g id="NUM_MISSED_CALLS">%s</xliff:g>"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"Пропуштен позив од: <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"Узврати позив"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"Порука"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"Звук позива је искључен."</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Спикерфон је омогућен."</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"У гужви сам. О чему се ради?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"Позваћу те ускоро."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"Позваћу те касније."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"У гужви сам. Зовеш ме касније?"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"Брзи одговори"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"Измена брзих одговора"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"Брзи одговор"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"Порука је послата на број <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"Слање поруке на <xliff:g id="PHONE_NUMBER">%s</xliff:g> није успело."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"Налози за позивање"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"Дозвољени су само хитни позиви."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"Ова апликација не може да позива без дозволе за телефонирање."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"Да бисте упутили позив, унесите важећи број."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"Тренутно није могуће додати позив."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"Недостаје број за говорну пошту"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"Није ускладиштен ниједан број говорне поште на SIM картици."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"Додај број"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"Желите ли да <xliff:g id="NEW_APP">%s</xliff:g> постане подразумевана апликација Телефон?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"Постави као подразумевано"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"Откажи"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> ће моћи да упућује позиве и контролише све њихове аспекте. Апликацију подесите као подразумевану за телефонирање само ако је сматрате поузданом."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"Подесити <xliff:g id="NEW_APP">%s</xliff:g> као подраз. апликацију за управљање позивима?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> више неће моћи да управља долазним позивима."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> ће моћи да види информације о позиваоцима који вам нису у контактима и да блокира њихове позиве. Апликацију подесите као подразумевану за управљање долазним позивима само ако је сматрате поузданом."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"Подеси као подразумевану"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"Откажи"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"Блокирани бројеви"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"Нећете примати позиве ни SMS-ове са блокираних бројева."</string>
+ <string name="block_number" msgid="3784343046852802722">"Додајте број"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"Желите ли да деблокирате <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"Деблокирај"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"Блокирајте позиве и SMS-ове од"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"Број телефона"</string>
+ <string name="block_button" msgid="485080149164258770">"Блокирај"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"Само власник уређаја може да прегледа блокиране бројеве и управља њима."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"Деблокирајте"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"Блокирање је привремено искључено"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"Кад позовете број хитне службе или на тај број пошаљете SMS, блокирање се искључује да би хитне службе могле да вас контактирају."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"Поново омогући"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> је блокиран"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> је деблокиран"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"Није могуће блокирати број хитне службе."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> је већ блокиран."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"Коришћење бројчаника из личног профила за упућивање позива"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"<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="5795968314037063900">"<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="8653544281903986641">"Ако одговорите, завршићете <xliff:g id="CALL_VIA">%1$s</xliff:g> позив"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"Ако одговорите, завршићете <xliff:g id="CALL_VIA">%1$s</xliff:g> позиве"</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"Ако одговорите, завршићете <xliff:g id="CALL_VIA">%1$s</xliff:g> видео позив"</string>
+ <string name="answering_ends_other_managed_call" msgid="4031778317409881805">"Ако одговорите, завршићете позив који је у току"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"Ако одговорите, завршићете позиве који су у току"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"Ако одговорите, завршићете видео позив који је у току"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"Одговори"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"Одбиј"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"Упућивање позива није могуће јер немате ниједан налог за позивање који подржава позиве овог типа."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"Не можете да упутите позив због <xliff:g id="OTHER_CALL">%1$s</xliff:g> позива."</string>
+ <string name="cant_call_due_to_ongoing_calls" msgid="6379163795277824868">"Не можете да упутите позив због <xliff:g id="OTHER_CALL">%1$s</xliff:g> позива."</string>
+ <string name="cant_call_due_to_ongoing_unknown_call" msgid="8243532328969433172">"Не можете да упутите позив због позива у другој апликацији."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"Долазни позиви"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"Пропуштени позиви"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"Блокирање позива"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"Ако упутите овај позив, завршићете <xliff:g id="OTHER_APP">%1$s</xliff:g> позив."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Изаберите како желите да упутите овај позив"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Преусмери позив помоћу: <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"Позови помоћу мог броја телефона"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"<xliff:g id="OTHER_APP">%1$s</xliff:g> не може да упути позив. Пробајте помоћу друге апликације за преусмеравање позива или затражите помоћ од програмера."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"Блокирање позива"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"Бројеви који нису у контактима"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"Блокирајте бројеве који вам нису у контактима"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"Скривени бројеви"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"Блокирајте позиваоце који скривају број"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"Телефонска говорница"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"Блокирајте позиве са телефонских говорница"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"Непознати бројеви"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"Блокирајте позиве неидентификованих позивалаца"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"Блокирање позива"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"Блокирање позива је онемогућено"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"Упућен је хитни позив"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"Блокирање позива је онемогућено да би хитне службе могле да вас контактирају."</string>
+ <string name="developer_title" msgid="9146088855661672353">"Мени за програмере Telecom-а"</string>
</resources>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 216f5b0..896fb92 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"Samtalshantering"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"Telefon"</string>
- <string name="unknown" msgid="6878797917991465859">"Okänd"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"Missat samtal"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"Missat jobbsamtal"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Missade samtal"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> missade samtal"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"Missat samtal från <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Ring upp"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"Sms:a"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"Samtalets ljud avstängt."</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"Högtalartelefon aktiverad."</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"Kan inte prata nu. Läget?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"Jag ringer tillbaka alldeles strax."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Jag ringer dig senare."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Kan inte prata nu. Ring senare!"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Snabbsvar"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Redigera snabbsvar"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"Snabbsvar"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"Meddelandet har skickats till <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"Konton för samtal"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"Det går bara att ringa nödsamtal."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"Den här appen kan inte göra utgående samtal utan behörigheten Telefon."</string>
- <string name="outgoing_call_error_no_phone_number_supplied" msgid="1940125199802007505">"Ange ett giltigt nummer om du vill ringa ett samtal."</string>
- <string name="duplicate_video_call_not_allowed" msgid="3749211605014548386">"Det går inte att lägga till samtalet just nu."</string>
- <string name="no_vm_number" msgid="4164780423805688336">"Nummer till röstbrevlåda saknas"</string>
- <string name="no_vm_number_msg" msgid="1300729501030053828">"Det finns inget nummer till röstbrevlådan sparat på SIM-kortet."</string>
- <string name="add_vm_number_str" msgid="4676479471644687453">"Lägg till nummer"</string>
- <string name="change_default_dialer_dialog_title" msgid="9101655962941740507">"Gör <xliff:g id="NEW_APP">%s</xliff:g> till standardtelefonapp?"</string>
- <string name="change_default_dialer_dialog_affirmative" msgid="8606546663509166276">"Ange standard"</string>
- <string name="change_default_dialer_dialog_negative" msgid="9078144617060173845">"Avbryt"</string>
- <string name="change_default_dialer_warning_message" msgid="1417671460801684999">"<xliff:g id="NEW_APP">%s</xliff:g> kan ringa och styra allt omkring samtal. Endast appar du litar på bör ställas in som standardtelefonapp."</string>
- <string name="blocked_numbers" msgid="2751843139572970579">"Blockerade nummer"</string>
- <string name="blocked_numbers_msg" msgid="1045015186124965643">"Du kommer inte ta emot samtal eller sms från blockerade nummer."</string>
- <string name="block_number" msgid="1101252256321306179">"Lägg till ett telefonnummer"</string>
- <string name="unblock_dialog_body" msgid="1614238499771862793">"Vill du häva blockeringen av <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
- <string name="unblock_button" msgid="3078048901972674170">"Häv blockering"</string>
- <string name="add_blocked_dialog_body" msgid="9030243212265516828">"Blockera samtal och sms från"</string>
- <string name="add_blocked_number_hint" msgid="6847675097085433553">"Telefonnummer"</string>
- <string name="block_button" msgid="8822290682524373357">"Blockera"</string>
- <string name="non_primary_user" msgid="5180129233352533459">"Bara enhetens ägare kan se och hantera blockerade nummer."</string>
- <string name="delete_icon_description" msgid="8903995728252556724">"Avblockera"</string>
- <string name="blocked_numbers_butter_bar_title" msgid="438170866438793182">"Blockeringen har inaktiverats tillfälligt"</string>
- <string name="blocked_numbers_butter_bar_body" msgid="2223244484319442431">"När du ringer eller sms:ar ett nödnummer inaktiveras blockering för att säkerställa att räddningstjänsten kan kontakta dig."</string>
- <string name="blocked_numbers_butter_bar_button" msgid="2197943354922010696">"Återaktivera nu"</string>
- <string name="blocked_numbers_number_blocked_message" msgid="7678509606805029540">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> blockerade"</string>
- <string name="blocked_numbers_number_unblocked_message" msgid="977894647366750418">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> avblockerat"</string>
- <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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"Inkommande samtal"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"Missade samtal"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"Samtalsblockering"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"Ringer du det här samtalet avslutas samtalet i <xliff:g id="OTHER_APP">%1$s</xliff:g>."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"Samtalsblockering"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"Nummer inte i Kontakter"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"Blockera nummer som inte finns i Kontakter"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"Privat"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"Blockera uppringare som inte visar sitt nummer"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"Telefonautomat"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"Blockera samtal från telefonautomater"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"Okänd"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"Blockera samtal från oidentifierade uppringare"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"Samtalsblockering"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"Samtalsblockering inaktiverad"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"Nödsamtal ringt"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"Samtalsblockering har inaktiverats för att tillåta att räddningstjänsten kontaktar dig."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"Samtalshantering"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"Telefon"</string>
+ <string name="unknown" msgid="6993977514360123431">"Okänd"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"Missat samtal"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"Missat jobbsamtal"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"Missade samtal"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> missade samtal"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"Missat samtal från <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"Ring upp"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"Sms:a"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"Samtalets ljud avstängt."</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Högtalartelefon aktiverad."</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Kan inte prata nu. Läget?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"Jag ringer tillbaka alldeles strax."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"Jag ringer dig senare."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"Kan inte prata nu. Ring senare!"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"Snabbsvar"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"Redigera snabbsvar"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"Snabbsvar"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"Meddelandet har skickats till <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"Meddelande till <xliff:g id="PHONE_NUMBER">%s</xliff:g> inte skickat."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"Konton för samtal"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"Det går bara att ringa nödsamtal."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"Den här appen kan inte göra utgående samtal utan behörigheten Telefon."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"Ange ett giltigt nummer om du vill ringa ett samtal."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"Det går inte att lägga till samtalet just nu."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"Nummer till röstbrevlåda saknas"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"Det finns inget nummer till röstbrevlådan sparat på SIM-kortet."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"Lägg till nummer"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"Gör <xliff:g id="NEW_APP">%s</xliff:g> till standardtelefonapp?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"Ange standard"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"Avbryt"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> kan ringa och styra allt omkring samtal. Endast appar du litar på bör ställas in som standardtelefonapp."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"Vill du göra <xliff:g id="NEW_APP">%s</xliff:g> till din standardapp för samtalsspärr?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> kommer inte längre att användas för samtalsspärr."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> kommer att kunna se information om uppringare som inte finns i dina kontakter och blockera dessa samtal. Endast appar du litar på bör ställas in som standardapp för samtalsspärr."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"Ange standard"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"Avbryt"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"Blockerade nummer"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"Du kommer inte ta emot samtal eller sms från blockerade nummer."</string>
+ <string name="block_number" msgid="3784343046852802722">"Lägg till ett telefonnummer"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"Vill du avblockera <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"Avblockera"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"Blockera samtal och sms från"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"Telefonnummer"</string>
+ <string name="block_button" msgid="485080149164258770">"Blockera"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"Bara enhetens ägare kan se och hantera blockerade nummer."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"Avblockera"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"Blockeringen har inaktiverats tillfälligt"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"När du ringer eller sms:ar ett nödnummer inaktiveras blockering för att säkerställa att räddningstjänsten kan kontakta dig."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"Återaktivera nu"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> blockerade"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> avblockerat"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"Det går inte att blockera nödnummer."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> är redan blockerat."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"Ringer med den egna uppringningsfunktionen"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"<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="5795968314037063900">"<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="8653544281903986641">"Samtalet via <xliff:g id="CALL_VIA">%1$s</xliff:g> avslutas om du svarar"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"Samtalen via <xliff:g id="CALL_VIA">%1$s</xliff:g> avslutas om du svarar"</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"Videosamtalet via <xliff:g id="CALL_VIA">%1$s</xliff:g> avslutas om du svarar"</string>
+ <string name="answering_ends_other_managed_call" msgid="4031778317409881805">"Det pågående samtalet avslutas om du svarar"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"De pågående samtalen avslutas om du svarar"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"Det pågående videosamtalet avslutas om du svarar"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"Svara"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"Avvisa"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"Det går inte att ringa på grund av att det inte finns uppringningskonton som stöder den här samtalstypen."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"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="6379163795277824868">"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="8243532328969433172">"Det går inte att ringa på grund av ett samtal via en annan app."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"Inkommande samtal"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"Missade samtal"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"Samtalsblockering"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"Ringer du det här samtalet avslutas samtalet i <xliff:g id="OTHER_APP">%1$s</xliff:g>."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Välj hur du vill ringa samtalet"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Omdirigera samtal med <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"Ring med mitt telefonnummer"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"Det går inte att ringa med <xliff:g id="OTHER_APP">%1$s</xliff:g>. Försök att omdirigera samtalet med en annan app eller kontakta utvecklaren för hjälp."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"Samtalsblockering"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"Nummer inte i Kontakter"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"Blockera nummer som inte finns i Kontakter"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"Privat"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"Blockera uppringare som inte visar sitt nummer"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"Telefonautomat"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"Blockera samtal från telefonautomater"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"Okänd"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"Blockera samtal från oidentifierade uppringare"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"Samtalsblockering"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"Samtalsblockering inaktiverad"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"Nödsamtal ringt"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"Samtalsblockering har inaktiverats för att tillåta att räddningstjänsten kontaktar dig."</string>
+ <string name="developer_title" msgid="9146088855661672353">"Meny för telekomutvecklare"</string>
</resources>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index 86b83a5..d6d8adc 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"Kudhibiti Simu"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"Simu"</string>
- <string name="unknown" msgid="6878797917991465859">"Haijulikani"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"Simu uliyokosa"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"Simu ya kazini ambayo hukujibu"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Simu zisizojibiwa"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> simu ambazo hazijajibiwa"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"Ulikosa simu kutoka kwa <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Mpigie"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"Ujumbe"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"Simu imezimwa."</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"Spika za simu zimewezeshwa"</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"Siwezi kuongea sasa. Kuna nini?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"Nitakupigia baada ya dakika chache."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Nitakupigia baadaye."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Siwezi kuongea sasa. Nipigie baadaye"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Majibu ya haraka"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Hariri majibu ya haraka"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"Majibu ya haraka"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"Ujumbe uliotumwa kwa <xliff:g id="PHONE_NUMBER">%s</xliff:g> ."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"Akaunti za simu"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"Piga simu za dharura pekee."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"Programu hii haiwezi kupiga simu bila ruhusa ya Simu."</string>
- <string name="outgoing_call_error_no_phone_number_supplied" msgid="1940125199802007505">"Ili upige simu, weka nambari sahihi."</string>
- <string name="duplicate_video_call_not_allowed" msgid="3749211605014548386">"Hangout ya video haiwezi kuongezwa kwa wakati huu."</string>
- <string name="no_vm_number" msgid="4164780423805688336">"Nambari ya sauti inayokosekana"</string>
- <string name="no_vm_number_msg" msgid="1300729501030053828">"Hakuna nambari ya ujumbe wa sauti iliyohifadhiwa katika SIM kadi."</string>
- <string name="add_vm_number_str" msgid="4676479471644687453">"Ongeza nambari"</string>
- <string name="change_default_dialer_dialog_title" msgid="9101655962941740507">"Unataka kufanya <xliff:g id="NEW_APP">%s</xliff:g> iwe programu chaguomsingi ya simu?"</string>
- <string name="change_default_dialer_dialog_affirmative" msgid="8606546663509166276">"Fanya iwe Chaguo-Msingi"</string>
- <string name="change_default_dialer_dialog_negative" msgid="9078144617060173845">"Ghairi"</string>
- <string name="change_default_dialer_warning_message" msgid="1417671460801684999">"<xliff:g id="NEW_APP">%s</xliff:g> itaweza kupiga simu na kudhibiti kila kipengele cha simu. Unastahili kuweka programu unazoziamini tu kama programu chaguomsingi ya kupiga simu."</string>
- <string name="blocked_numbers" msgid="2751843139572970579">"Nambari zilizozuiwa"</string>
- <string name="blocked_numbers_msg" msgid="1045015186124965643">"Hutapokea simu au SMS kutoka kwa nambari zilizozuiwa."</string>
- <string name="block_number" msgid="1101252256321306179">"Ongeza nambari"</string>
- <string name="unblock_dialog_body" msgid="1614238499771862793">"Ungependa kuacha kuzuia <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
- <string name="unblock_button" msgid="3078048901972674170">"Acha kuzuia"</string>
- <string name="add_blocked_dialog_body" msgid="9030243212265516828">"Zuia simu na SMS kutoka kwa"</string>
- <string name="add_blocked_number_hint" msgid="6847675097085433553">"Nambari ya simu"</string>
- <string name="block_button" msgid="8822290682524373357">"Zuia"</string>
- <string name="non_primary_user" msgid="5180129233352533459">"Ni mmiliki wa kifaa pekee anayeweza kuangalia na kuthibiti nambari zilizozuiwa."</string>
- <string name="delete_icon_description" msgid="8903995728252556724">"Acha kuzuia"</string>
- <string name="blocked_numbers_butter_bar_title" msgid="438170866438793182">"Kipengele cha kuzuia kimezimwa kwa muda"</string>
- <string name="blocked_numbers_butter_bar_body" msgid="2223244484319442431">"Ukishapiga au kutuma ujumbe kwa nambari ya dharura, kipengele cha kuzuia anwani huzimwa ili watoa huduma za dharura waweze kuwasiliana nawe."</string>
- <string name="blocked_numbers_butter_bar_button" msgid="2197943354922010696">"Kiwashe tena sasa"</string>
- <string name="blocked_numbers_number_blocked_message" msgid="7678509606805029540">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> imezuiwa"</string>
- <string name="blocked_numbers_number_unblocked_message" msgid="977894647366750418">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> imeacha kuzuiwa"</string>
- <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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"Simu zinazoingia"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"Simu ambazo hukujibu"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"Kuzuia Simu"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"Ukipiga simu hii, simu yako kwenye <xliff:g id="OTHER_APP">%1$s</xliff:g> itakatwa."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"Kuzuia Simu"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"Nambari ambazo haziko kwenye Anwani"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"Zuia nambari ambazo hazipo kwenye orodha ya Anwani zako"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"Faragha"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"Zuia wapigaji ambao wameficha nambari zao za simu"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"Simu ya kulipia"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"Zuia simu kutoka kwa nambari ya simu za kulipia"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"Zisizojulikani"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"Zuia simu kutoka kwa wapigaji wasiojulikana"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"Kuzuia Simu"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"Kipengele cha Kuzuia Simu kimezimwa"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"Simu ya dharura imepigwa"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"Kipengele cha Kuzuia Simu kimezimwa ili kuruhusu wapigaji simu za dharura kuwasiliana nawe."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"Kudhibiti Simu"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"Simu"</string>
+ <string name="unknown" msgid="6993977514360123431">"Haijulikani"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"Simu uliyokosa"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"Simu ya kazini ambayo hukujibu"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"Simu zisizojibiwa"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> simu ambazo hazijajibiwa"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"Ulikosa simu kutoka kwa <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"Mpigie"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"Ujumbe"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"Simu imezimwa."</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Spika za simu zimewezeshwa"</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Siwezi kuongea sasa. Kuna nini?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"Nitakupigia baada ya dakika chache."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"Nitakupigia baadaye."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"Siwezi kuongea sasa. Nipigie baadaye"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"Majibu ya haraka"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"Hariri majibu ya haraka"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"Majibu ya haraka"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"Ujumbe uliotumwa kwa <xliff:g id="PHONE_NUMBER">%s</xliff:g> ."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"Imeshindwa kutuma SMS kwa <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"Akaunti za simu"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"Piga simu za dharura pekee."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"Programu hii haiwezi kupiga simu bila ruhusa ya Simu."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"Ili upige simu, weka nambari sahihi."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"Hangout ya video haiwezi kuongezwa kwa wakati huu."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"Nambari ya sauti inayokosekana"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"Hakuna nambari ya ujumbe wa sauti iliyohifadhiwa katika SIM kadi."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"Ongeza nambari"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"Unataka kufanya <xliff:g id="NEW_APP">%s</xliff:g> iwe programu chaguomsingi ya simu?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"Fanya iwe Chaguo-Msingi"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"Ghairi"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> itaweza kupiga simu na kudhibiti kila kipengele cha simu. Unastahili kuweka programu unazoziamini tu kama programu chaguomsingi ya kupiga simu."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"Je, unaweka <xliff:g id="NEW_APP">%s</xliff:g> iwe programu chaguomsingi ya kuchuja simu?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> haitaweza tena kuchuja simu."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> itaweza kuona maelezo kuhusu wapigaji simu ambao hawako kwenye anwani zako na kuzuia simu zao. Unapaswa kuweka programu unazoamini pekee kuwa programu chaguomsingi ya kuchuja simu."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"Weka iwe Chaguomsingi"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"Ghairi"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"Nambari zilizozuiwa"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"Hutapokea simu au SMS kutoka kwa nambari zilizozuiwa."</string>
+ <string name="block_number" msgid="3784343046852802722">"Ongeza nambari"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"Ungependa kuacha kuzuia <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"Acha kuzuia"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"Zuia simu na SMS kutoka kwa"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"Nambari ya simu"</string>
+ <string name="block_button" msgid="485080149164258770">"Zuia"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"Ni mmiliki wa kifaa pekee anayeweza kuangalia na kuthibiti nambari zilizozuiwa."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"Acha kuzuia"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"Kipengele cha kuzuia kimezimwa kwa muda"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"Ukishapiga au kutuma ujumbe kwa nambari ya dharura, kipengele cha kuzuia anwani huzimwa ili watoa huduma za dharura waweze kuwasiliana nawe."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"Kiwashe tena sasa"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> imezuiwa"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> imeacha kuzuiwa"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"Huwezi kuzuia nambari ya dharura."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> tayari imezuiwa."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"Kupiga simu kwa kutumia kipiga simu cha binafsi"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"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="5795968314037063900">"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="8653544281903986641">"Ukijibu utakata simu yako ya <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"Ukijibu utakata simu zako za <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"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="4031778317409881805">"Ukijibu utakata simu yako inayoendelea"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"Ukijibu utakata simu zako zinazoendelea"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"Ukijibu utakata simu yako ya video inayoendelea"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"Jibu"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"Kataa"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"Haiwezi kupiga simu kwa sababu hakuna akaunti za kupiga simu zinazoweza kupiga aina hii ya simu."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"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="6379163795277824868">"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="8243532328969433172">"Haiwezekani kwa sababu kuna simu inayoendelea kwenye programu nyingine."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"Simu zinazoingia"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"Simu ambazo hukujibu"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"Kuzuia Simu"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"Ukipiga simu hii, simu yako kwenye <xliff:g id="OTHER_APP">%1$s</xliff:g> itakatwa."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Chagua jinsi utakavyopiga simu hii"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Elekeza simu ukitumia <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"Piga simu ukitumia nambari yangu ya simu"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"<xliff:g id="OTHER_APP">%1$s</xliff:g> imeshindwa kupiga simu. Jaribu kutumia programu nyingine inayoelekeza simu kwingine au uwasiliane na msanidi programu kwa usaidizi."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"Kuzuia Simu"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"Nambari ambazo haziko kwenye Anwani"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"Zuia nambari ambazo hazipo kwenye orodha ya Anwani zako"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"Faragha"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"Zuia wapigaji ambao wameficha nambari zao za simu"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"Simu ya kulipia"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"Zuia simu kutoka kwa nambari ya simu za kulipia"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"Zisizojulikani"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"Zuia simu kutoka kwa wapigaji wasiojulikana"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"Kuzuia Simu"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"Kipengele cha Kuzuia Simu kimezimwa"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"Simu ya dharura imepigwa"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"Kipengele cha Kuzuia Simu kimezimwa ili kuruhusu wapigaji simu za dharura kuwasiliana nawe."</string>
+ <string name="developer_title" msgid="9146088855661672353">"Menyu ya Msanidi programu wa Telecom"</string>
</resources>
diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml
index 8c2d3a1..c613091 100644
--- a/res/values-ta/strings.xml
+++ b/res/values-ta/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"அழைப்பு நிர்வாகம்"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"ஃபோன்"</string>
- <string name="unknown" msgid="6878797917991465859">"தெரியாதவர்"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"தவறிய அழைப்பு"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"தவறிய அழைப்பு (பணி)"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"தவறிய அழைப்புகள்"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> தவறிய அழைப்புகள்"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g> இடமிருந்து தவறிய அழைப்பு"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"அழை"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"செய்தி"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"அழைப்பு முடக்கப்பட்டது."</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"ஸ்பீக்கர்ஃபோன் இயக்கப்பட்டது."</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"இப்போது பேசமுடியாது. என்ன விசேஷம்?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"சிறிதுநேரம் கழித்து நான் அழைக்கிறேன்."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"பிறகு அழைக்கிறேன்."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"இப்போது பேசமுடியாது, பிறகு அழைக்கிறீர்களா?"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"விரைவு பதில்கள்"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"விரைவு பதில்களை மாற்று"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"விரைவு பதில்"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"<xliff:g id="PHONE_NUMBER">%s</xliff:g> க்குச் செய்தி அனுப்பப்பட்டது."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"அழைப்புக் கணக்குகள்"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"அவசர அழைப்புகள் மட்டுமே அனுமதிக்கப்படும்."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"ஃபோன் அனுமதியில்லாமல், பயன்பாட்டினால் வெளிச்செல்லும் அழைப்புகளைச் செய்ய முடியாது."</string>
- <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="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>
- <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="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_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>
- <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_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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"உள்வரும் அழைப்புகள்"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"தவறிய அழைப்புகள்"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"அழைப்புத் தடுப்பு"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"புதிய அழைப்பைச் செய்தால், செயலில் உள்ள <xliff:g id="OTHER_APP">%1$s</xliff:g> அழைப்பு துண்டிக்கப்படும்."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"அழைப்புத் தடுப்பு"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"தொடர்புகளில் இல்லாத எண்கள்"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"உங்கள் தொடர்புகளில் பட்டியலிடப்படாத எண்களைத் தடுக்கும்"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"தனிப்பட்ட எண்கள்"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"எண்ணை வெளிப்படுத்தாத அழைப்பாளர்களைத் தடுக்கும்"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"கட்டண ஃபோன்"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"கட்டண ஃபோன்களில் இருந்து வரும் அழைப்புகளைத் தடுக்கும்"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"தெரியாத அழைப்புகள்"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"அடையாளம் தெரியாத அழைப்பாளர்களின் அழைப்புகளைத் தடுக்கும்"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"அழைப்புத் தடுப்பு"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"அழைப்புத் தடுப்பு முடக்கப்பட்டுள்ளது"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"அவசர அழைப்பு செய்யப்பட்டது"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"அவசரநிலையில் பதிலளிப்பவர்களை உங்களைத் தொடர்புகொள்வதற்கு அனுமதிக்க, அழைப்புத் தடுப்பு முடக்கப்பட்டுள்ளது."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"அழைப்பு நிர்வாகம்"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"ஃபோன்"</string>
+ <string name="unknown" msgid="6993977514360123431">"தெரியாதவர்"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"தவறிய அழைப்பு"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"தவறிய அழைப்பு (பணி)"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"தவறிய அழைப்புகள்"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> தவறிய அழைப்புகள்"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g> இடமிருந்து தவறிய அழைப்பு"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"அழை"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"செய்தி"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"அழைப்பு முடக்கப்பட்டது."</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"ஸ்பீக்கர்ஃபோன் இயக்கப்பட்டது."</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"இப்போது பேசமுடியாது. என்ன விஷயம்?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"சிறிதுநேரம் கழித்து நான் அழைக்கிறேன்."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"பிறகு அழைக்கிறேன்."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"இப்போது பேசமுடியாது, பிறகு அழைக்கிறீர்களா?"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"விரைவு பதில்கள்"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"விரைவு பதில்களை மாற்று"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"விரைவு பதில்"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"<xliff:g id="PHONE_NUMBER">%s</xliff:g> க்குச் செய்தி அனுப்பப்பட்டது."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"செய்தியை <xliff:g id="PHONE_NUMBER">%s</xliff:g>க்கு அனுப்ப முடியவில்லை."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"அழைப்புக் கணக்குகள்"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"அவசர அழைப்புகள் மட்டுமே அனுமதிக்கப்படும்."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"ஃபோன் அனுமதியில்லாமல், பயன்பாட்டினால் வெளிச்செல்லும் அழைப்புகளைச் செய்ய முடியாது."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"அழைக்க, சரியான எண்ணை உள்ளிடவும்."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"இப்போது அழைக்க முடியாது."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"குரலஞ்சல் எண் இல்லை"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"சிம் கார்டில் குரலஞ்சலுக்கான எண் எதுவும் சேமிக்கப்படவில்லை."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"எண்ணைச் சேர்"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"<xliff:g id="NEW_APP">%s</xliff:g>ஐ இயல்புநிலை ஃபோன் பயன்பாடாக அமைக்கவா?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"இயல்புநிலையாக அமை"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"ரத்துசெய்"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"அழைப்புகளின் எல்லா அம்சங்களையும் <xliff:g id="NEW_APP">%s</xliff:g> ஆல் செயல்படுத்தவும் கட்டுப்படுத்தவும் முடியும். நீங்கள் நம்பகமானது என கருதும் ஆப்ஸை மட்டுமே இயல்புநிலை ஃபோன் பயன்பாடாக அமைக்க வேண்டும்."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"<xliff:g id="NEW_APP">%s</xliff:g>ஐ இயல்பு அழைப்புச் சோதனை ஆப்ஸாக அமைக்கவா?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> ஆப்ஸால் இனி அழைப்புகளைச் சோதனைச் செய்ய முடியாது."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> ஆப்ஸால் உங்கள் தொடர்புகளில் இல்லாத அழைப்பாளர்களைப் பற்றிய தகவலைப் பார்க்க முடியும், மேலும் அவர்கள் செய்யும் அழைப்புகளைத் தடுக்கவும் முடியும். நீங்கள் நம்பும் ஆப்ஸை மட்டுமே இயல்பு அழைப்புச் சோதனை ஆப்ஸாக அமைக்க வேண்டும்."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"இயல்பானதாக அமை"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"ரத்துசெய்"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"தடுக்கப்பட்ட எண்கள்"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"தடுக்கப்பட்ட எண்களிலிருந்து அழைப்புகள் அல்லது உரைச் செய்திகளைப் பெறமாட்டீர்கள்."</string>
+ <string name="block_number" msgid="3784343046852802722">"எண்ணைச் சேர்"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"<xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>ஐ அனுமதிக்கவா?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"அனுமதி"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"இந்த எண்ணிலிருந்து வரும் அழைப்புகளையும் உரைச்செய்திகளையும் தடு:"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"மொபைல் எண்"</string>
+ <string name="block_button" msgid="485080149164258770">"தடு"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"சாதன உரிமையாளர் மட்டுமே தடுக்கப்பட்ட எண்களைப் பார்க்கவும் நிர்வகிக்கவும் முடியும்."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"அனுமதிக்கும்"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"அழைப்புத் தடுப்பு அம்சம் தற்காலிகமாக முடக்கப்பட்டுள்ளது"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"அவசர அழைப்பு எண்ணை அழைத்த பிறகு அல்லது அதற்கு உரைச் செய்தியை அனுப்பிய பிறகு, அவசர அழைப்புச் சேவைகள் உங்களைத் தொடர்புகொள்வதற்காக அழைப்புத் தடுப்பு அம்சம் முடக்கப்படுகிறது."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"இப்போதே மீண்டும் இயக்கு"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> தடுக்கப்பட்டது"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> அனுமதிக்கப்பட்டது"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"அவசர அழைப்பு எண்ணைத் தடுக்க முடியவில்லை."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> ஏற்கனவே தடுக்கப்பட்டது."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"தனிப்பட்ட டயலரைப் பயன்படுத்தி அழைக்கவும்"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"<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="5795968314037063900">"<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="8653544281903986641">"பதிலளித்தால், <xliff:g id="CALL_VIA">%1$s</xliff:g> அழைப்பு துண்டிக்கப்படும்"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"பதிலளித்தால், <xliff:g id="CALL_VIA">%1$s</xliff:g> அழைப்புகள் துண்டிக்கப்படும்"</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"பதிலளித்தால், <xliff:g id="CALL_VIA">%1$s</xliff:g> வீடியோ அழைப்பு துண்டிக்கப்படும்"</string>
+ <string name="answering_ends_other_managed_call" msgid="4031778317409881805">"பதிலளித்தால், செயலில் உள்ள அழைப்பு துண்டிக்கப்படும்"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"பதிலளித்தால், செயலில் உள்ள அழைப்புகள் துண்டிக்கப்படும்"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"பதிலளித்தால், செயலில் உள்ள வீடியோ அழைப்பு துண்டிக்கப்படும்"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"பதிலளி"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"நிராகரி"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"இந்த வகை அழைப்புகளை ஆதரிக்கும் அழைப்புக் கணக்குகள் இல்லாததால், அழைப்பை மேற்கொள்ள முடியாது."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"<xliff:g id="OTHER_CALL">%1$s</xliff:g> அழைப்பு செயலில் உள்ளதால், புதிய அழைப்பைச் செய்ய முடியாது."</string>
+ <string name="cant_call_due_to_ongoing_calls" msgid="6379163795277824868">"<xliff:g id="OTHER_CALL">%1$s</xliff:g> அழைப்புகள் செயலில் உள்ளதால், புதிய அழைப்பைச் செய்ய முடியாது."</string>
+ <string name="cant_call_due_to_ongoing_unknown_call" msgid="8243532328969433172">"மற்றொரு பயன்பாட்டில் அழைப்பு செயலில் உள்ளதால், புதிய அழைப்பைச் செய்ய முடியாது."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"உள்வரும் அழைப்புகள்"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"தவறிய அழைப்புகள்"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"அழைப்புத் தடுப்பு"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"புதிய அழைப்பைச் செய்தால், செயலில் உள்ள <xliff:g id="OTHER_APP">%1$s</xliff:g> அழைப்பு துண்டிக்கப்படும்."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"இந்த அழைப்பை எவ்வாறு மேற்கொள்ள வேண்டும் எனத் தேர்ந்தெடுக்கவும்"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"<xliff:g id="OTHER_APP">%1$s</xliff:g>ஐப் பயன்படுத்தி அழைப்பைத் திருப்பி விடு"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"எனது மொபைல் எண்ணைப் பயன்படுத்தி அழை"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"<xliff:g id="OTHER_APP">%1$s</xliff:g> மூலம் அழைக்க முடியாது. அழைப்பைத் திருப்பிவிடுவதற்கான வேறொரு ஆப்ஸைப் பயன்படுத்திப் பார்க்கவும் அல்லது டெவெலப்பரைத் தொடர்பு கொண்டு, உதவி பெறவும்."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"அழைப்புத் தடுப்பு"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"தொடர்புகளில் இல்லாத எண்கள்"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"உங்கள் தொடர்புகளில் பட்டியலிடப்படாத எண்களைத் தடுக்கும்"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"தனிப்பட்ட எண்கள்"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"எண்ணை வெளிப்படுத்தாத அழைப்பாளர்களைத் தடுக்கும்"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"கட்டண ஃபோன்"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"கட்டண ஃபோன்களில் இருந்து வரும் அழைப்புகளைத் தடுக்கும்"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"தெரியாத அழைப்புகள்"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"அடையாளம் தெரியாத அழைப்பாளர்களின் அழைப்புகளைத் தடுக்கும்"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"அழைப்புத் தடுப்பு"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"அழைப்புத் தடுப்பு முடக்கப்பட்டுள்ளது"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"அவசர அழைப்பு செய்யப்பட்டது"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"அவசரநிலையில் பதிலளிப்பவர்களை உங்களைத் தொடர்புகொள்வதற்கு அனுமதிக்க, அழைப்புத் தடுப்பு முடக்கப்பட்டுள்ளது."</string>
+ <string name="developer_title" msgid="9146088855661672353">"டெலிகாம் டெவெலப்பர் மெனு"</string>
</resources>
diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml
index d6cd091..930416d 100644
--- a/res/values-te/strings.xml
+++ b/res/values-te/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"కాల్ నిర్వహణ"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"ఫోన్"</string>
- <string name="unknown" msgid="6878797917991465859">"తెలియదు"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"సమాధానం ఇవ్వని కాల్"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"మిస్డ్ కార్యాలయ కాల్"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"సమాధానం ఇవ్వని కాల్లు"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> సమాధానం ఇవ్వని కాల్లు"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g> నుండి సమాధానం ఇవ్వని కాల్"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"కాల్ చేయి"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"సందేశం"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"కాల్ మ్యూట్ చేయబడింది."</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"స్పీకర్ ఫోన్ ప్రారంభించబడింది."</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"ఇప్పుడు మాట్లాడలేను. విషయం ఏమిటి?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"నేను ఇప్పుడే మీకు కాల్ చేస్తాను."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"నేను మీకు తర్వాత కాల్ చేస్తాను."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"ఇప్పుడు మాట్లాడలేను. నాకు తర్వాత కాల్ చేస్తారా?"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"శీఘ్ర ప్రతిస్పందనలు"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"శీఘ్ర ప్రతిస్పందనల సవరణ"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"శీఘ్ర ప్రతిస్పందన"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"<xliff:g id="PHONE_NUMBER">%s</xliff:g>కు సందేశం పంపబడింది."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"కాలింగ్ ఖాతాలు"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"కేవలం అత్యవసర కాల్లు మాత్రమే అనుమతించబడతాయి."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"ఈ అనువర్తనం ఫోన్ అనుమతి లేకుండా అవుట్గోయింగ్ కాల్లను చేయలేదు."</string>
- <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="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>
- <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="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_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>
- <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_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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"ఇన్కమింగ్ కాల్లు"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"సమాధానం ఇవ్వని కాల్లు"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"కాల్ బ్లాక్ చేయడం"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"ఈ కాల్ చేయడం వలన మీ <xliff:g id="OTHER_APP">%1$s</xliff:g> కాల్ ముగుస్తుంది."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"కాల్ బ్లాక్ చేయడం"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"పరిచయాలలో లేని నంబర్లు"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"మీ పరిచయాలలో లేని నంబర్లను బ్లాక్ చేయండి"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"ప్రైవేట్"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"తమ నంబర్ను కనిపించకుండా చేసే కాలర్లను బ్లాక్ చేయండి"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"పే ఫోన్"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"పే ఫోన్ల నుండి కాల్లను బ్లాక్ చేయండి"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"తెలియని"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"తెలియని కాలర్ల నుండి కాల్లను బ్లాక్ చేయండి"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"కాల్ బ్లాక్ చేయడం"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"కాల్ బ్లాక్ చేయడం నిలిపివేయబడింది"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"అత్యవసర కాల్ చేయబడింది"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"మిమ్మల్ని సంప్రదించడానికి అత్యవసర ప్రతిస్పందనదారులను అనుమతించడానికి కాల్ బ్లాక్ చేయడం నిలిపివేయబడింది."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"కాల్ నిర్వహణ"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"ఫోన్"</string>
+ <string name="unknown" msgid="6993977514360123431">"తెలియదు"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"సమాధానం ఇవ్వని కాల్"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"మిస్డ్ కార్యాలయ కాల్"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"సమాధానం ఇవ్వని కాల్లు"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> సమాధానం ఇవ్వని కాల్లు"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g> నుండి సమాధానం ఇవ్వని కాల్"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"కాల్ చేయి"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"సందేశం"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"కాల్ మ్యూట్ చేయబడింది."</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"స్పీకర్ ఫోన్ ప్రారంభించబడింది."</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"ఇప్పుడు మాట్లాడలేను. విషయం ఏమిటి?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"నేను ఇప్పుడే మీకు కాల్ చేస్తాను."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"నేను మీకు తర్వాత కాల్ చేస్తాను."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"ఇప్పుడు మాట్లాడలేను. నాకు తర్వాత కాల్ చేస్తారా?"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"శీఘ్ర ప్రతిస్పందనలు"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"శీఘ్ర ప్రతిస్పందనల సవరణ"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"శీఘ్ర ప్రతిస్పందన"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"<xliff:g id="PHONE_NUMBER">%s</xliff:g>కు సందేశం పంపబడింది."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"<xliff:g id="PHONE_NUMBER">%s</xliff:g>కు సందేశాన్ని పంపడం విఫలమైంది."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"కాలింగ్ ఖాతాలు"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"కేవలం అత్యవసర కాల్లు మాత్రమే అనుమతించబడతాయి."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"ఈ అనువర్తనం ఫోన్ అనుమతి లేకుండా అవుట్గోయింగ్ కాల్లను చేయలేదు."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"కాల్ చేయడానికి, చెల్లుబాటు అయ్యే నంబర్ను నమోదు చేయండి."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"ఈ సమయంలో కాల్ను జోడించడం సాధ్యపడదు."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"వాయిస్ మెయిల్ నంబర్ లేదు"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"సిమ్ కార్డులో వాయిస్ మెయిల్ నంబర్ ఏదీ నిల్వ చేయబడలేదు."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"నంబర్ను జోడించు"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"<xliff:g id="NEW_APP">%s</xliff:g>ని మీ డిఫాల్ట్ ఫోన్ అనువర్తనంగా చేయాలా?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"డిఫాల్ట్గా సెట్ చేయండి"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"రద్దు చేయి"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> అన్ని రకాల కాల్లను చేయగలదు మరియు సంబంధిత అన్ని అంశాలను నియంత్రించగలదు. మీరు విశ్వసించే అనువర్తనాలను మాత్రమే డిఫాల్ట్ ఫోన్ అనువర్తనంగా సెట్ చేయాలి."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"<xliff:g id="NEW_APP">%s</xliff:g>ని మీ డిఫాల్ట్ కాల్ స్క్రీనింగ్ యాప్గా సెట్ చేయాలా?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> ఇకపై స్క్రీన్ కాల్లను చేయలేదు."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> మీ పరిచయాలలో లేని కాలర్ల గురించిన సమాచారాన్ని చూడగలుగుతుంది మరియు ఈ కాల్లను బ్లాక్ చేయగలుగుతుంది. మీరు విశ్వసించే యాప్లను మాత్రమే డిఫాల్ట్ కాల్ స్క్రీన్ యాప్గా సెట్ చేయాలి."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"డిఫాల్ట్గా సెట్ చేయి"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"రద్దు చేయి"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"బ్లాక్ చేయబడిన నంబర్లు"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"మీరు బ్లాక్ చేయబడిన నంబర్ల నుండి కాల్లు లేదా వచన సందేశాలను స్వీకరించరు."</string>
+ <string name="block_number" msgid="3784343046852802722">"నంబర్ను జోడించండి"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"<xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>ని అన్బ్లాక్ చేయాలా?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"అన్బ్లాక్ చేయి"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"దీని నుండి కాల్లు మరియు సందేశాలను బ్లాక్ చేయండి"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"ఫోన్ నంబర్"</string>
+ <string name="block_button" msgid="485080149164258770">"బ్లాక్ చేయి"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"కేవలం పరికర యజమాని మాత్రమే బ్లాక్ చేసిన నంబర్లను వీక్షించగలరు మరియు నిర్వహించగలరు."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"అన్బ్లాక్ చేస్తుంది"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"బ్లాకింగ్ తాత్కాలికంగా ఆఫ్ చేయబడింది"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"మీరు అత్యవసర నంబర్కి డయల్ చేసాక లేదా వచన సందేశం పంపాక, అత్యవసర సేవలు తిరిగి మిమ్మల్ని సంప్రదించగలిగేలా చేయడానికి బ్లాకింగ్ ఆఫ్ చేయబడుతుంది."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"ఇప్పుడే మళ్లీ ప్రారంభించు"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> బ్లాక్ చేయబడింది"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> అన్బ్లాక్ చేయబడింది"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"అత్యవసర నంబర్ను బ్లాక్ చేయడం సాధ్యపడలేదు."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> ఇప్పటికే బ్లాక్ చేయబడింది."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"కాల్ చేయడానికి వ్యక్తిగత డయలర్ను ఉపయోగిస్తోంది"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"<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="5795968314037063900">"<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="8653544281903986641">"సమాధానమివ్వడం వలన మీ <xliff:g id="CALL_VIA">%1$s</xliff:g> కాల్ ముగుస్తుంది"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"సమాధానమివ్వడం వలన మీ <xliff:g id="CALL_VIA">%1$s</xliff:g> కాల్లు ముగుస్తాయి"</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"సమాధానమివ్వడం వలన మీ <xliff:g id="CALL_VIA">%1$s</xliff:g> వీడియో కాల్ ముగుస్తుంది"</string>
+ <string name="answering_ends_other_managed_call" msgid="4031778317409881805">"సమాధానమివ్వడం వలన మీ కొనసాగుతున్న కాల్ ముగుస్తుంది"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"సమాధానమివ్వడం వలన మీ కొనసాగుతున్న కాల్లు ముగుస్తాయి"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"సమాధానమివ్వడం వలన మీ కొనసాగుతున్న వీడియో కాల్ ముగుస్తుంది"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"సమాధానమివ్వండి"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"తిరస్కరించు"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"కాల్ చేయడం సాధ్యపడదు ఎందుకంటే, ఈ రకమైన కాల్లకు మద్దతిచ్చే కాల్ చేయడానికి ఉపయోగించే ఖాతాలు లేవు."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"మీ <xliff:g id="OTHER_CALL">%1$s</xliff:g> కాల్ కొనసాగుతున్నందున కాల్ చేయడం సాధ్యపడదు."</string>
+ <string name="cant_call_due_to_ongoing_calls" msgid="6379163795277824868">"మీ <xliff:g id="OTHER_CALL">%1$s</xliff:g> కాల్లు కొనసాగుతున్నందున కాల్ చేయడం సాధ్యపడదు."</string>
+ <string name="cant_call_due_to_ongoing_unknown_call" msgid="8243532328969433172">"వేరొక అనువర్తనంలో కాల్ కొనసాగుతున్నందున కాల్ చేయడం సాధ్యపడదు."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"ఇన్కమింగ్ కాల్లు"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"సమాధానం ఇవ్వని కాల్లు"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"కాల్ బ్లాక్ చేయడం"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"ఈ కాల్ చేయడం వలన మీ <xliff:g id="OTHER_APP">%1$s</xliff:g> కాల్ ముగుస్తుంది."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"ఈ కాల్ ఎలా చేయాలో ఎంచుకోండి"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"<xliff:g id="OTHER_APP">%1$s</xliff:g> ఉపయోగించి కాల్ మళ్లించు"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"నా ఫోన్ నంబర్ ఉపయోగించి కాల్ చేయి"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"<xliff:g id="OTHER_APP">%1$s</xliff:g> ద్వారా కాల్ చేయలేము. వేరే కాల్ మళ్లింపు యాప్ ఉపయోగించండి లేదా సహాయం కోసం డెవలపర్ను సంప్రదించడానికి ప్రయత్నించండి."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"కాల్ బ్లాక్ చేయడం"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"పరిచయాలలో లేని నంబర్లు"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"మీ పరిచయాలలో లేని నంబర్లను బ్లాక్ చేయండి"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"ప్రైవేట్"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"తమ నంబర్ను కనిపించకుండా చేసే కాలర్లను బ్లాక్ చేయండి"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"పే ఫోన్"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"పే ఫోన్ల నుండి కాల్లను బ్లాక్ చేయండి"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"తెలియని"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"తెలియని కాలర్ల నుండి కాల్లను బ్లాక్ చేయండి"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"కాల్ బ్లాక్ చేయడం"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"కాల్ బ్లాక్ చేయడం నిలిపివేయబడింది"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"అత్యవసర కాల్ చేయబడింది"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"మిమ్మల్ని సంప్రదించడానికి అత్యవసర ప్రతిస్పందనదారులను అనుమతించడానికి కాల్ బ్లాక్ చేయడం నిలిపివేయబడింది."</string>
+ <string name="developer_title" msgid="9146088855661672353">"టెలికామ్ డెవలపర్ మెను"</string>
</resources>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index 913d1da..8addec3 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"การจัดการการโทร"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"โทรศัพท์"</string>
- <string name="unknown" msgid="6878797917991465859">"ไม่ทราบ"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"สายที่ไม่ได้รับ"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"มีสายจากที่ทำงานที่ไม่ได้รับ"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"สายที่ไม่ได้รับ"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> สายที่ไม่ได้รับ"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"สายที่ไม่ได้รับจาก <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"โทรกลับ"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"ข้อความ"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"ปิดเสียงการโทร"</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"เปิดใช้งานลำโพงแล้ว"</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"ตอนนี้คุยไม่ได้ มีอะไรหรือเปล่า"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"เดี๋ยวจะโทรกลับทันที"</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"เดี๋ยวจะโทรหาทีหลัง"</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"ตอนนี้คุยไม่ได้ โทรมาใหม่ได้ไหม"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"คำตอบด่วน"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"แก้ไขคำตอบด่วน"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"คำตอบด่วน"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"ส่งข้อความไปยัง <xliff:g id="PHONE_NUMBER">%s</xliff:g> แล้ว"</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"บัญชีการโทร"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"อนุญาตเฉพาะหมายเลขฉุกเฉิน"</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"แอปพลิเคชันนี้ไม่สามารถโทรออกโดยไม่มีสิทธิ์ใช้โทรศัพท์"</string>
- <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="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>
- <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="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_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>
- <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_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_VIA">%1$s</xliff:g> จาก <xliff:g id="CALL_FROM">%2$s</xliff:g>"</string>
- <string name="notification_incoming_video_call" msgid="6638486071698373893">" Hangouts วิดีโอเรียกเข้าใน <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">"การรับสายนี้จะวางสาย Hangouts วิดีโอใน <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">"การรับสายนี้จะวางสาย Hangouts วิดีโอที่สนทนาอยู่"</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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"สายโทรเข้า"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"สายที่ไม่ได้รับ"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"การบล็อกสาย"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"การโทรออกนี้จะวางสายใน <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"การบล็อกสาย"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"หมายเลขที่ไม่อยู่ในรายชื่อติดต่อ"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"บล็อกหมายเลขที่ไม่อยู่ในรายชื่อติดต่อของคุณ"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"ส่วนตัว"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"บล็อกผู้โทรที่ไม่เปิดเผยหมายเลขโทรศัพท์"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"โทรศัพท์สาธารณะ"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"บล็อกสายจากโทรศัพท์สาธารณะ"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"ไม่ทราบ"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"บล็อกสายจากผู้โทรที่ไม่สามารถระบุได้"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"การบล็อกสาย"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"ปิดใช้การบล็อกสาย"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"โทรหมายเลขฉุกเฉินแล้ว"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"ปิดใช้การบล็อกสายแล้วเพื่อให้ทีมฉุกเฉินติดต่อคุณ"</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"การจัดการการโทร"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"โทรศัพท์"</string>
+ <string name="unknown" msgid="6993977514360123431">"ไม่ทราบ"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"สายที่ไม่ได้รับ"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"มีสายจากที่ทำงานที่ไม่ได้รับ"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"สายที่ไม่ได้รับ"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> สายที่ไม่ได้รับ"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"สายที่ไม่ได้รับจาก <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"โทรกลับ"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"ข้อความ"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"ปิดเสียงการโทร"</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"เปิดใช้งานลำโพงแล้ว"</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"ตอนนี้คุยไม่ได้ มีอะไรหรือเปล่า"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"เดี๋ยวจะโทรกลับทันที"</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"เดี๋ยวจะโทรหาทีหลัง"</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"ตอนนี้คุยไม่ได้ โทรมาใหม่ได้ไหม"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"คำตอบด่วน"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"แก้ไขคำตอบด่วน"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"คำตอบด่วน"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"ส่งข้อความไปยัง <xliff:g id="PHONE_NUMBER">%s</xliff:g> แล้ว"</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"ส่งข้อความไปยัง <xliff:g id="PHONE_NUMBER">%s</xliff:g> ไม่สำเร็จ"</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"บัญชีการโทร"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"อนุญาตเฉพาะหมายเลขฉุกเฉิน"</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"แอปพลิเคชันนี้ไม่สามารถโทรออกโดยไม่มีสิทธิ์ใช้โทรศัพท์"</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"หากต้องการโทรออก โปรดป้อนหมายเลขที่ถูกต้อง"</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"ไม่สามารถเพิ่มสายได้ในขณะนี้"</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"ไม่มีหมายเลขข้อความเสียง"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"ไม่มีหมายเลขข้อความเสียงจัดเก็บอยู่ในซิมการ์ด"</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"เพิ่มหมายเลข"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"ต้องการตั้งค่าให้ <xliff:g id="NEW_APP">%s</xliff:g> เป็นแอปโทรศัพท์เริ่มต้นหรือไม่"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"ตั้งเป็นค่าเริ่มต้น"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"ยกเลิก"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> จะจัดการการโทรและควบคุมการติดต่อทุกด้าน โปรดติดตั้งเฉพาะแอปที่คุณไว้วางใจให้เป็นแอปโทรศัพท์เริ่มต้น"</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"ต้องการตั้ง <xliff:g id="NEW_APP">%s</xliff:g> เป็นแอปสกรีนสายเรียกเข้าเริ่มต้นหรือไม่"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> จะสกรีนสายเรียกเข้าไม่ได้อีก"</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> จะดูข้อมูลเกี่ยวกับผู้โทรที่ไม่ได้อยู่ในรายชื่อติดต่อของคุณและจะบล็อกการโทรเหล่านี้ได้ คุณควรตั้งเฉพาะแอปที่คุณเชื่อถือเป็นแอปสกรีนสายเรียกเข้าเริ่มต้นเท่านั้น"</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"ตั้งเป็นค่าเริ่มต้น"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"ยกเลิก"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"หมายเลขที่ถูกบล็อก"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"คุณจะไม่สามารถรับสายหรือข้อความจากหมายเลขที่บล็อก"</string>
+ <string name="block_number" msgid="3784343046852802722">"เพิ่มหมายเลข"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"เลิกบล็อก <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g> ใช่ไหม"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"เลิกบล็อก"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"บล็อกสายเรียกเข้าและข้อความจาก"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"หมายเลขโทรศัพท์"</string>
+ <string name="block_button" msgid="485080149164258770">"บล็อก"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"มีเพียงเจ้าของอุปกรณ์เท่านั้นที่สามารถดูและจัดการหมายเลขที่ถูกบล็อก"</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"เลิกบล็อก"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"ปิดการบล็อกไว้ชั่วคราว"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"หลังจากส่งข้อความถึงหรือกดหมายเลขโทรศัพท์ฉุกเฉิน ระบบจะปิดการบล็อกเพื่อให้บริการฉุกเฉินติดต่อคุณได้"</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"เปิดใช้งานอีกครั้งเลย"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"บล็อก <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> แล้ว"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"เลิกบล็อก <xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> แล้ว"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"ไม่สามารถบล็อกหมายเลขฉุกเฉินได้"</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> ถูกบล็อกอยู่แล้ว"</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"การใช้โทรศัพท์ส่วนตัวเพื่อทำการโทร"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"สายเรียกเข้าใน <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="5795968314037063900">" Hangouts วิดีโอเรียกเข้าใน <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="8653544281903986641">"การรับสายนี้จะวางสายใน <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"การรับสายนี้จะวางสายใน <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"การรับสายนี้จะวางสาย Hangouts วิดีโอใน <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+ <string name="answering_ends_other_managed_call" msgid="4031778317409881805">"การรับสายนี้จะวางสายที่สนทนาอยู่"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"การรับสายนี้จะวางสายที่สนทนาอยู่"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"การรับสายนี้จะวางสาย Hangouts วิดีโอที่สนทนาอยู่"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"รับสาย"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"ปฏิเสธ"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"การโทรไม่สำเร็จเนื่องจากไม่มีบัญชีการโทรที่รองรับการโทรประเภทนี้"</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"ไม่สามารถโทรออกได้เนื่องจากกำลังใช้สายอยู่ใน <xliff:g id="OTHER_CALL">%1$s</xliff:g>"</string>
+ <string name="cant_call_due_to_ongoing_calls" msgid="6379163795277824868">"ไม่สามารถโทรออกได้เนื่องจากกำลังใช้สายอยู่ใน <xliff:g id="OTHER_CALL">%1$s</xliff:g>"</string>
+ <string name="cant_call_due_to_ongoing_unknown_call" msgid="8243532328969433172">"ไม่สามารถโทรออกได้เนื่องจากกำลังใช้สายอยู่ในแอปอื่น"</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"สายโทรเข้า"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"สายที่ไม่ได้รับ"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"การบล็อกสาย"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"การโทรออกนี้จะวางสายใน <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"เลือกวิธีโทรออก"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"โอนสายโดยใช้ <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"โทรออกโดยใช้หมายเลขโทรศัพท์ของฉัน"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"<xliff:g id="OTHER_APP">%1$s</xliff:g> จะไม่รองรับการโทรออก ลองใช้แอปการเปลี่ยนเส้นทางการโทรอื่นหรือติดต่อนักพัฒนาซอฟต์แวร์เพื่อขอความช่วยเหลือ"</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"การบล็อกสาย"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"หมายเลขที่ไม่อยู่ในรายชื่อติดต่อ"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"บล็อกหมายเลขที่ไม่อยู่ในรายชื่อติดต่อของคุณ"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"ส่วนตัว"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"บล็อกผู้โทรที่ไม่เปิดเผยหมายเลขโทรศัพท์"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"โทรศัพท์สาธารณะ"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"บล็อกสายจากโทรศัพท์สาธารณะ"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"ไม่ทราบ"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"บล็อกสายจากผู้โทรที่ไม่สามารถระบุได้"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"การบล็อกสาย"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"ปิดใช้การบล็อกสาย"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"โทรหมายเลขฉุกเฉินแล้ว"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"ปิดใช้การบล็อกสายแล้วเพื่อให้ทีมฉุกเฉินติดต่อคุณ"</string>
+ <string name="developer_title" msgid="9146088855661672353">"เมนูนักพัฒนาโทรคมนาคม"</string>
</resources>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index d4182da..a16f2a3 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"Pamamahala sa Tawag"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"Telepono"</string>
- <string name="unknown" msgid="6878797917991465859">"Di-kilala"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"Hindi nasagot na tawag"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"Hindi nasagot na tawag sa trabaho"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Mga hindi nasagot na tawag"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> (na) hindi nasagot na tawag"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"Hindi nasagot na tawag mula kay <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Tawagan"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"Padalhan ng mensahe"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"Naka-mute ang tawag."</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"Pinapagana ang speakerphone."</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"Di masagot ngayon. Ano\'ng meron?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"Tawagan kita muli."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Tawagan kita mamaya."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Di masagot ngayon. Tawag ka mamaya?"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Mga mabilisang tugon"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"I-edit ang mga quick response"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"Mabilisang tugon"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"Naipadala ang mensahe sa <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"Account sa pagtawag"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"Ang mga pang-emergency na tawag lang ang pinapayagan."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"Hindi makakapagsagawa ng mga papalabas na tawag ang application na ito nang wala ang pahintulot ng Telepono."</string>
- <string name="outgoing_call_error_no_phone_number_supplied" msgid="1940125199802007505">"Upang tumawag, maglagay ng wastong numero."</string>
- <string name="duplicate_video_call_not_allowed" msgid="3749211605014548386">"Hindi maidadagdag ang tawag sa oras na ito."</string>
- <string name="no_vm_number" msgid="4164780423805688336">"Nawawala ang numero ng voicemail"</string>
- <string name="no_vm_number_msg" msgid="1300729501030053828">"Walang nakaimbak na numero ng voicemail sa SIM card."</string>
- <string name="add_vm_number_str" msgid="4676479471644687453">"Magdagdag ng numero"</string>
- <string name="change_default_dialer_dialog_title" msgid="9101655962941740507">"Gawing iyong default na app na Telepono ang <xliff:g id="NEW_APP">%s</xliff:g>?"</string>
- <string name="change_default_dialer_dialog_affirmative" msgid="8606546663509166276">"Magtakda ng Default"</string>
- <string name="change_default_dialer_dialog_negative" msgid="9078144617060173845">"Kanselahin"</string>
- <string name="change_default_dialer_warning_message" msgid="1417671460801684999">"Ang <xliff:g id="NEW_APP">%s</xliff:g> ay magagawang tumawag at kontrolin ang lahat ng aspeto ng tawag. Mga app na pinagkakatiwalaan mo lang ang dapat itakda bilang default na app na Telepono."</string>
- <string name="blocked_numbers" msgid="2751843139572970579">"Mga naka-block na numero"</string>
- <string name="blocked_numbers_msg" msgid="1045015186124965643">"Hindi ka makakatanggap ng mga tawag o mga text mula sa mga naka-block na numero."</string>
- <string name="block_number" msgid="1101252256321306179">"Magdagdag ng numero"</string>
- <string name="unblock_dialog_body" msgid="1614238499771862793">"Ia-unblock ba ang <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
- <string name="unblock_button" msgid="3078048901972674170">"I-unblock"</string>
- <string name="add_blocked_dialog_body" msgid="9030243212265516828">"I-block ang mga tawag at text mula sa"</string>
- <string name="add_blocked_number_hint" msgid="6847675097085433553">"Numero ng telepono"</string>
- <string name="block_button" msgid="8822290682524373357">"I-block"</string>
- <string name="non_primary_user" msgid="5180129233352533459">"Ang may-ari ng device lang ang makakakita at makakapamahala sa mga naka-block na numero."</string>
- <string name="delete_icon_description" msgid="8903995728252556724">"Na-unblock"</string>
- <string name="blocked_numbers_butter_bar_title" msgid="438170866438793182">"Pansamantalang naka-off ang pag-block"</string>
- <string name="blocked_numbers_butter_bar_body" msgid="2223244484319442431">"Pagkatapos mong i-dial o i-text ang isang pang-emergency na numero, ino-off ang pag-block upang matiyak na maaaring makipag-ugnayan sa iyo ang mga serbisyong pang-emergency."</string>
- <string name="blocked_numbers_butter_bar_button" msgid="2197943354922010696">"I-enable muli ngayon"</string>
- <string name="blocked_numbers_number_blocked_message" msgid="7678509606805029540">"Naka-block ang <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g>"</string>
- <string name="blocked_numbers_number_unblocked_message" msgid="977894647366750418">"Na-unblock ang <xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g>"</string>
- <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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"Mga papasok na tawag"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"Mga hindi nasagot na tawag"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"Pag-block ng Tawag"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"Tatapusin ng pagtawag na ito ang iyong tawag sa <xliff:g id="OTHER_APP">%1$s</xliff:g>."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"Pag-block ng Tawag"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"Mga numerong wala sa Mga Contact"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"I-block ang mga numero na hindi nakalista sa iyong Mga Contact"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"Pribado"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"Bina-block ang mga tumatawag na hindi hinahayag ang kanilang numero"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"Pay phone"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"Bina-block ang mga tawag mula sa mga pay phone"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"Hindi Alam"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"Bina-block ang mga tumatawag mula sa mga hindi kilalang tumatawag"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"Pag-block ng Tawag"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"Naka-disable ang Pag-block ng Tawag"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"Ginawang emergency na tawag"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"Na-disable ang Pag-block ng Tawag para payagan ang mga tumutugon sa emergency na kontakin ka."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"Pamamahala sa Tawag"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"Telepono"</string>
+ <string name="unknown" msgid="6993977514360123431">"Di-kilala"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"Hindi nasagot na tawag"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"Hindi nasagot na tawag sa trabaho"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"Mga hindi nasagot na tawag"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> (na) hindi nasagot na tawag"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"Hindi nasagot na tawag mula kay <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"Tawagan"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"Padalhan ng mensahe"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"Naka-mute ang tawag."</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Pinapagana ang speakerphone."</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Di masagot ngayon. Ano\'ng meron?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"Ako na lang ang tatawag sa \'yo."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"Tawagan kita mamaya."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"Di masagot ngayon. Tawag ka mamaya?"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"Mga mabilisang tugon"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"I-edit ang mga quick response"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"Mabilisang tugon"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"Naipadala ang mensahe sa <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"Hindi naipadala ang mensahe sa <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"Account sa pagtawag"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"Ang mga pang-emergency na tawag lang ang pinapayagan."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"Hindi makakapagsagawa ng mga papalabas na tawag ang application na ito nang wala ang pahintulot ng Telepono."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"Upang tumawag, maglagay ng wastong numero."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"Hindi maidadagdag ang tawag sa oras na ito."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"Nawawala ang numero ng voicemail"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"Walang nakaimbak na numero ng voicemail sa SIM card."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"Magdagdag ng numero"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"Gawing iyong default na app na Telepono ang <xliff:g id="NEW_APP">%s</xliff:g>?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"Magtakda ng Default"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"Kanselahin"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"Ang <xliff:g id="NEW_APP">%s</xliff:g> ay magagawang tumawag at kontrolin ang lahat ng aspeto ng tawag. Mga app na pinagkakatiwalaan mo lang ang dapat itakda bilang default na app na Telepono."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"Itakda ang <xliff:g id="NEW_APP">%s</xliff:g> na default mong app ng pag-screen sa tawag?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"Hindi na makakapag-screen ng mga tawag ang <xliff:g id="OLD_APP">%s</xliff:g>."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"Makakakita ang <xliff:g id="NEW_APP">%s</xliff:g> ng impormasyon tungkol sa mga tumatawag na wala sa iyong mga contact at maba-block nito ang mga tawag na ito. Ang mga app lang na pinagkakatiwalaan mo ang dapat itakda bilang default na app ng pag-screen sa tawag."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"Itakda ang Default"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"Kanselahin"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"Mga naka-block na numero"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"Hindi ka makakatanggap ng mga tawag o mga text mula sa mga naka-block na numero."</string>
+ <string name="block_number" msgid="3784343046852802722">"Magdagdag ng numero"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"Ia-unblock ba ang <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"I-unblock"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"I-block ang mga tawag at text mula sa"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"Numero ng telepono"</string>
+ <string name="block_button" msgid="485080149164258770">"I-block"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"Ang may-ari ng device lang ang makakakita at makakapamahala sa mga naka-block na numero."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"Na-unblock"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"Pansamantalang naka-off ang pag-block"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"Pagkatapos mong i-dial o i-text ang isang pang-emergency na numero, ino-off ang pag-block upang matiyak na maaaring makipag-ugnayan sa iyo ang mga serbisyong pang-emergency."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"I-enable muli ngayon"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"Naka-block ang <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g>"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"Na-unblock ang <xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g>"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"Hindi ma-block ang numerong pang-emergency."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"Naka-block na ang <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g>."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"Ginagamit ang personal na dialer upang tumawag"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"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="5795968314037063900">"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="8653544281903986641">"Kung sasagutin, matatapos ang iyong tawag sa <xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"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="8572022039304239958">"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="4031778317409881805">"Kung sasagutin, matatapos ang iyong kasalukuyang tawag"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"Kung sasagutin, matatapos ang iyong mga kasalukuyang tawag"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"Kung sasagutin, matatapos ang iyong kasalukuyang video call"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"Sagutin"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"Tanggihan"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"Hindi maisasagawa ang tawag dahil walang account sa pagtawag na sumusuporta sa ganitong uri ng mga tawag."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"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="6379163795277824868">"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="8243532328969433172">"Hindi makakatawag dahil sa isang tawag sa isa pang app."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"Mga papasok na tawag"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"Mga hindi nasagot na tawag"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"Pag-block ng Tawag"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"Tatapusin ng pagtawag na ito ang iyong tawag sa <xliff:g id="OTHER_APP">%1$s</xliff:g>."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Piliin kung paano gagawin ang tawag na ito"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"I-redirect ang tawag gamit ang <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"Tumawag gamit ang aking numero ng telepono"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"Hindi makatawag sa pamamagitan ng <xliff:g id="OTHER_APP">%1$s</xliff:g>. Subukang gumamit ng ibang app sa pag-redirect ng tawag o makipag-ugnayan sa developer para sa tulong."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"Pag-block ng Tawag"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"Mga numerong wala sa Mga Contact"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"I-block ang mga numero na hindi nakalista sa iyong Mga Contact"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"Pribado"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"Bina-block ang mga tumatawag na hindi hinahayag ang kanilang numero"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"Pay phone"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"Bina-block ang mga tawag mula sa mga pay phone"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"Hindi Alam"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"Bina-block ang mga tumatawag mula sa mga hindi kilalang tumatawag"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"Pag-block ng Tawag"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"Naka-disable ang Pag-block ng Tawag"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"Ginawang emergency na tawag"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"Na-disable ang Pag-block ng Tawag para payagan ang mga tumutugon sa emergency na kontakin ka."</string>
+ <string name="developer_title" msgid="9146088855661672353">"Menu ng Telecom Developer"</string>
</resources>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index efccc27..86843c2 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"Çağrı Yönetimi"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"Telefon"</string>
- <string name="unknown" msgid="6878797917991465859">"Bilinmiyor"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"Cevapsız çağrı"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"İşle ilgili cevapsız çağrı"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Cevapsız çağrılar"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> cevapsız çağrı"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"Cevapsız çağrı: <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Geri ara"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"Mesaj gönder"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"Çağrı sesi kapatıldı."</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"Hoparlör etkin."</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"Şimdi konuşamam. Konu nedir?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"Seni hemen geri arayacağım."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Seni daha sonra ararım."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Şimdi konuşamam. Daha sonra arar mısın?"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Hızlı yanıtlar"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Hızlı yanıtları düzenle"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"Hızlı yanıt"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"Mesaj, <xliff:g id="PHONE_NUMBER">%s</xliff:g> numaralı telefona gönderildi."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"Çağrı hesapları"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"Yalnızca acil durum çağrılarına izin veriliyor."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"Bu uygulama, Telefonun izni olmadan giden çağrılar yapamaz."</string>
- <string name="outgoing_call_error_no_phone_number_supplied" msgid="1940125199802007505">"Telefon etmek için geçerli bir numara girin."</string>
- <string name="duplicate_video_call_not_allowed" msgid="3749211605014548386">"Çağrı şu anda eklenemiyor."</string>
- <string name="no_vm_number" msgid="4164780423805688336">"Eksik sesli mesaj numarası"</string>
- <string name="no_vm_number_msg" msgid="1300729501030053828">"SIM kartta depolanan sesli mesaj numarası yok."</string>
- <string name="add_vm_number_str" msgid="4676479471644687453">"Numara ekle"</string>
- <string name="change_default_dialer_dialog_title" msgid="9101655962941740507">"<xliff:g id="NEW_APP">%s</xliff:g> varsayılan Telefon uygulamanız yapılsın mı?"</string>
- <string name="change_default_dialer_dialog_affirmative" msgid="8606546663509166276">"Varsayılan Uygulamayı Ayarla"</string>
- <string name="change_default_dialer_dialog_negative" msgid="9078144617060173845">"İptal"</string>
- <string name="change_default_dialer_warning_message" msgid="1417671460801684999">"<xliff:g id="NEW_APP">%s</xliff:g> uygulaması üzerinden çağrı yapabilecek ve çağrıları her yönüyle kontrol edebileceksiniz. Yalnızca güvendiğiniz uygulamalar varsayılan Telefon uygulaması olarak ayarlanmalıdır."</string>
- <string name="blocked_numbers" msgid="2751843139572970579">"Engellenen numaralar"</string>
- <string name="blocked_numbers_msg" msgid="1045015186124965643">"Engellenen numaralardan gelen telefon aramalarını veya kısa mesajları almayacaksınız."</string>
- <string name="block_number" msgid="1101252256321306179">"Numara ekle"</string>
- <string name="unblock_dialog_body" msgid="1614238499771862793">"<xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g> numaralı telefonun engellemesi kaldırılsın mı?"</string>
- <string name="unblock_button" msgid="3078048901972674170">"Engellemeyi kaldır"</string>
- <string name="add_blocked_dialog_body" msgid="9030243212265516828">"Şu numaradan gelen aramaları ve kısa mesajları engelle:"</string>
- <string name="add_blocked_number_hint" msgid="6847675097085433553">"Telefon numarası"</string>
- <string name="block_button" msgid="8822290682524373357">"Engelle"</string>
- <string name="non_primary_user" msgid="5180129233352533459">"Yalnızca cihaz sahibi engellenen numaraları görüntüleyebilir ve yönetebilir."</string>
- <string name="delete_icon_description" msgid="8903995728252556724">"Engellemeyi kaldır"</string>
- <string name="blocked_numbers_butter_bar_title" msgid="438170866438793182">"Engelleme geçici olarak kapalı"</string>
- <string name="blocked_numbers_butter_bar_body" msgid="2223244484319442431">"Bir acil durum numarasını çevirmenizin veya acil durum numarasına kısa mesaj göndermenizin ardından acil durum hizmetlerinin size ulaşabilmesi için engelleme kapatılır."</string>
- <string name="blocked_numbers_butter_bar_button" msgid="2197943354922010696">"Şimdi yeniden etkinleştir"</string>
- <string name="blocked_numbers_number_blocked_message" msgid="7678509606805029540">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> engellendi"</string>
- <string name="blocked_numbers_number_unblocked_message" msgid="977894647366750418">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> numaralı telefonun engellemesi kaldırıldı"</string>
- <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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"Gelen çağrılar"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"Cevapsız çağrılar"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"Çağrı Engelleme"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"Bu çağrıyı yaptığınızda <xliff:g id="OTHER_APP">%1$s</xliff:g> çağrınız sona erecek."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"Çağrı Engelleme"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"Kişiler arasında bulunmayan numaralar"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"Kişileriniz arasında bulunmayan numaralar engellenir"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"Gizli"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"Gizli numaradan arayanlar engellenir"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"Ankesörlü telefon"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"Ankesörlü telefonlardan gelen çağrılar engellenir"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"Bilinmeyen numaralar"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"Tanımlanamayan arayanlardan gelen aramaları engelle"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"Çağrı Engelleme"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"Çağrı Engelleme devre dışı bırakıldı"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"Acil durum çağrısı yapıldı"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"Acil durum müdahale ekibinin sizinle iletişime geçmesine olanak tanımak için Çağrı Engelleme devre dışı bırakıldı."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"Çağrı Yönetimi"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"Telefon"</string>
+ <string name="unknown" msgid="6993977514360123431">"Bilinmiyor"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"Cevapsız çağrı"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"İşle ilgili cevapsız çağrı"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"Cevapsız çağrılar"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> cevapsız çağrı"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"Cevapsız çağrı: <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"Geri ara"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"Mesaj gönder"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"Çağrı sesi kapatıldı."</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Hoparlör etkin."</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Şimdi konuşamam. Konu nedir?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"Seni hemen geri arayacağım."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"Seni daha sonra ararım."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"Şimdi konuşamam. Daha sonra arar mısın?"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"Hızlı yanıtlar"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"Hızlı yanıtları düzenle"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"Hızlı yanıt"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"Mesaj, <xliff:g id="PHONE_NUMBER">%s</xliff:g> numaralı telefona gönderildi."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"<xliff:g id="PHONE_NUMBER">%s</xliff:g> numaralı telefona mesaj gönderilemedi."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"Çağrı hesapları"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"Yalnızca acil durum çağrılarına izin veriliyor."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"Bu uygulama, Telefonun izni olmadan giden çağrılar yapamaz."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"Telefon etmek için geçerli bir numara girin."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"Çağrı şu anda eklenemiyor."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"Eksik sesli mesaj numarası"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"SIM kartta depolanan sesli mesaj numarası yok."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"Numara ekle"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"<xliff:g id="NEW_APP">%s</xliff:g> varsayılan Telefon uygulamanız yapılsın mı?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"Varsayılan Uygulamayı Ayarla"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"İptal"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> uygulaması üzerinden çağrı yapabilecek ve çağrıları her yönüyle kontrol edebileceksiniz. Yalnızca güvendiğiniz uygulamalar varsayılan Telefon uygulaması olarak ayarlanmalıdır."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"<xliff:g id="NEW_APP">%s</xliff:g> varsayılan arama filtreleme uygulamanız yapılsın mı?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> artık aramaları filtreleyemeyecek."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g>, kişileriniz arasında bulunmayan arayanlarla ilgili bilgileri görebilecek ve bu aramaları engelleyebilecek. Yalnızca güvendiğiniz uygulamalar varsayılan arama filtreleme uygulaması olarak ayarlanmalıdır."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"Varsayılan Olarak Ayarla"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"İptal"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"Engellenen numaralar"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"Engellenen numaralardan gelen telefon aramalarını veya kısa mesajları almayacaksınız."</string>
+ <string name="block_number" msgid="3784343046852802722">"Numara ekle"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"<xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g> numaralı telefonun engellemesi kaldırılsın mı?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"Engellemeyi kaldır"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"Şu numaradan gelen aramaları ve kısa mesajları engelle:"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"Telefon numarası"</string>
+ <string name="block_button" msgid="485080149164258770">"Engelle"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"Yalnızca cihaz sahibi engellenen numaraları görüntüleyebilir ve yönetebilir."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"Engellemeyi kaldır"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"Engelleme geçici olarak kapalı"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"Bir acil durum numarasını çevirmenizin veya acil durum numarasına kısa mesaj göndermenizin ardından acil durum hizmetlerinin size ulaşabilmesi için engelleme kapatılır."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"Şimdi yeniden etkinleştir"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> engellendi"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> numaralı telefonun engellemesi kaldırıldı"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"Acil durum numarası engellenemedi."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> zaten engellenmiş durumda."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"Telefon etmek için kişisel numara çeviriciyi kullanma"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"<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="5795968314037063900">"<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="8653544281903986641">"Ç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="3702302838456922535">"Ç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="8572022039304239958">"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="4031778317409881805">"Çağrıyı cevapladığınızda, devam eden çağrı sona erecek"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"Çağrıyı cevapladığınızda, devam eden çağrılar sona erecek"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"Cevapladığınızda, devam eden görüntülü görüşme sona erecek"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"Cevapla"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"Reddet"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"Bu tür görüşmeleri destekleyen bir arama hesabı olmadığı için arama yapılamıyor."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"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="6379163795277824868">"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="8243532328969433172">"Başka bir uygulamada devam eden çağrınız nedeniyle telefon araması yapılamıyor."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"Gelen çağrılar"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"Cevapsız çağrılar"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"Çağrı Engelleme"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"Bu çağrıyı yaptığınızda <xliff:g id="OTHER_APP">%1$s</xliff:g> çağrınız sona erecek."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Bu aramanın nasıl yapılacağını seçin"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"<xliff:g id="OTHER_APP">%1$s</xliff:g> uygulamasını kullanarak aramayı yönlendir"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"Telefon numaramı kullanarak ara"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"Arama <xliff:g id="OTHER_APP">%1$s</xliff:g> ile yapılamaz. Farklı bir arama yönlendirme uygulaması kullanmayı veya yardım almak için geliştirici ile iletişime geçmeyi deneyin."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"Çağrı Engelleme"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"Kişiler arasında bulunmayan numaralar"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"Kişileriniz arasında bulunmayan numaralar engellenir"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"Gizli"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"Gizli numaradan arayanlar engellenir"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"Ankesörlü telefon"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"Ankesörlü telefonlardan gelen çağrılar engellenir"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"Bilinmeyen numaralar"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"Tanımlanamayan arayanlardan gelen aramaları engelle"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"Çağrı Engelleme"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"Çağrı Engelleme devre dışı bırakıldı"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"Acil durum çağrısı yapıldı"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"Acil durum müdahale ekibinin sizinle iletişime geçmesine olanak tanımak için Çağrı Engelleme devre dışı bırakıldı."</string>
+ <string name="developer_title" msgid="9146088855661672353">"Telekomünikasyon Geliştirici Menüsü"</string>
</resources>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index a9c1a06..0604c99 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"Керування дзвінками"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"Телефон"</string>
- <string name="unknown" msgid="6878797917991465859">"Невідомий"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"Пропущений виклик"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"Пропущений дзвінок на робочий телефон"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Пропущ. дзвінки"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"Пропущ. дзвінк: <xliff:g id="NUM_MISSED_CALLS">%s</xliff:g>"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"Пропущ. виклик від <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Передзвонити"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"Повідомлення"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"Звук виклику вимкнено."</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"Гучний зв’язок увімкнено."</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"Не можу говорити. У чому справа?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"Я зараз передзвоню."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Я передзвоню пізніше."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Не можу говорити. Передзвоніть."</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Швидкі відповіді"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Редагувати швидкі відповіді"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"Швидка відповідь"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"Повідомлення надіслано на номер <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"Облікові записи для дзвінків"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"Дозволено лише екстрені виклики."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"Цей додаток не може телефонувати без відповідного дозволу."</string>
- <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">"На SIM-карті немає збереж. номерів голос. пошти."</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>
- <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="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">"Заблокувати виклики та SMS із"</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>
- <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_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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"Вхідні виклики"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"Пропущені виклики"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"Блокування викликів"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"Якщо здійснити цей виклик, буде завершено виклик у додатку <xliff:g id="OTHER_APP">%1$s</xliff:g>."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"Блокування викликів"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"Номери, які не входять до списку контактів"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"Блокування номерів, які не входять до вашого списку контактів"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"Приватно"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"Блокування абонентів, які не розкривають свої номери"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"Таксофон"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"Блокування викликів із таксофонів"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"Невідомі"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"Блокувати виклики від невизначених абонентів"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"Блокування викликів"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"Блокування викликів вимкнено"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"Здійснено екстрений виклик"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"Блокування викликів вимкнено, щоб ви могли отримувати екстрені сповіщення."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"Керування дзвінками"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"Телефон"</string>
+ <string name="unknown" msgid="6993977514360123431">"Невідомий"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"Пропущений виклик"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"Пропущений дзвінок на робочий телефон"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"Пропущ. дзвінки"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"Пропущ. дзвінк: <xliff:g id="NUM_MISSED_CALLS">%s</xliff:g>"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"Пропущ. виклик від <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"Передзвонити"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"Повідомлення"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"Звук виклику вимкнено."</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Гучний зв’язок увімкнено."</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Не можу говорити. У чому справа?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"Я зараз передзвоню."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"Я передзвоню пізніше."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"Не можу говорити. Передзвоніть."</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"Швидкі відповіді"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"Редагувати швидкі відповіді"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"Швидка відповідь"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"Повідомлення надіслано на номер <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"Повідомлення не надіслано на номер <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"Облікові записи для дзвінків"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"Дозволено лише екстрені виклики."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"Цей додаток не може телефонувати без відповідного дозволу."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"Щоб зателефонувати, введіть дійсний номер."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"Зараз не можна почати дзвінок."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"Відстуній номер голосової пошти"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"На SIM-карті немає збереж. номерів голос. пошти."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"Додати номер"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"Зробити <xliff:g id="NEW_APP">%s</xliff:g> додатком для викликів за умовчанням?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"Установити за умовчанням"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"Скасувати"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"За допомогою додатка <xliff:g id="NEW_APP">%s</xliff:g> ви зможете здійснювати та контролювати виклики. Лише довірені додатки можна встановлювати як додатки для викликів за умовчанням."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"Використовувати <xliff:g id="NEW_APP">%s</xliff:g> для керування викликами за умовчанням?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> більше не керуватиме викликами."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> знатиме, коли вам телефонуватимуть люди, яких немає у вашому списку контактів, і зможе блокувати такі виклики. Для керування викликами за умовчанням слід вибирати лише додатки, яким ви довіряєте."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"Установити за умовчанням"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"Скасувати"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"Заблоковані номери"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"Ви не отримуватимете виклики й повідомлення із заблокованих номерів."</string>
+ <string name="block_number" msgid="3784343046852802722">"Додати номер"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"Розблокувати <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"Розблокувати"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"Заблокувати виклики та SMS із"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"Номер телефону"</string>
+ <string name="block_button" msgid="485080149164258770">"Заблокувати"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"Лише власник пристрою може переглядати заблоковані номери та керувати ними."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"Розблокувати"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"Блокування тимчасово вимкнено"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"Після набору або введення екстреного номеру блокування вимикається, щоб із вами могли зв’язатися представники екстрених служб."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"Відновити"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"Номер <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> заблоковано"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"Номер <xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> розблоковано"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"Неможливо заблокувати номер екстреної служби."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"Номер <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> уже заблоковано."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"Для дзвінків використовується особистий додаток набору номерів"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"<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="5795968314037063900">"<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="8653544281903986641">"Якщо відповісти на виклик, дзвінок у <xliff:g id="CALL_VIA">%1$s</xliff:g> буде завершено"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"Якщо відповісти на виклик, дзвінки в <xliff:g id="CALL_VIA">%1$s</xliff:g> буде завершено"</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"Якщо відповісти на виклик, відеодзвінок у <xliff:g id="CALL_VIA">%1$s</xliff:g> завершиться"</string>
+ <string name="answering_ends_other_managed_call" msgid="4031778317409881805">"Якщо відповісти на виклик, поточний дзвінок буде завершено"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"Якщо відповісти на виклик, поточні дзвінки буде завершено"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"Якщо відповісти на виклик, поточний відеодзвінок завершиться"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"Відповісти"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"Відхилити"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"Такі виклики не підтримуються. Немає потрібного облікового запису чи сервісу."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"Неможливо зателефонувати через поточний виклик у <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+ <string name="cant_call_due_to_ongoing_calls" msgid="6379163795277824868">"Неможливо зателефонувати через поточні виклики в <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
+ <string name="cant_call_due_to_ongoing_unknown_call" msgid="8243532328969433172">"Неможливо зателефонувати через поточний виклик в іншому додатку."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"Вхідні виклики"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"Пропущені виклики"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"Блокування викликів"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"Якщо здійснити цей виклик, буде завершено виклик у додатку <xliff:g id="OTHER_APP">%1$s</xliff:g>."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Виберіть, як здійснити цей виклик"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Переспрямувати через додаток <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"Телефонувати зі свого номера"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"Не вдається здійснити виклик у додатку <xliff:g id="OTHER_APP">%1$s</xliff:g>. Спробуйте інший додаток для переспрямування викликів або зверніться по допомогу до розробника."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"Блокування викликів"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"Номери, які не входять до списку контактів"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"Блокування номерів, які не входять до вашого списку контактів"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"Приватно"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"Блокування абонентів, які не розкривають свої номери"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"Таксофон"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"Блокування викликів із таксофонів"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"Невідомі"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"Блокувати виклики від невизначених абонентів"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"Блокування викликів"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"Блокування викликів вимкнено"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"Здійснено екстрений виклик"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"Блокування викликів вимкнено, щоб ви могли отримувати екстрені сповіщення."</string>
+ <string name="developer_title" msgid="9146088855661672353">"Меню розробника Telecom"</string>
</resources>
diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml
index f47de6c..1c1074e 100644
--- a/res/values-ur/strings.xml
+++ b/res/values-ur/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"کال مینجمنٹ"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"فون"</string>
- <string name="unknown" msgid="6878797917991465859">"نامعلوم"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"چھوٹی ہوئی کال"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"کام سے متعلق چھوٹی ہوئی کال"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"چھوٹی ہوئی کالیں"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> چھوٹی ہوئی کالیں"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g> کی جانب سے چھوٹی ہوئی کال"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"واپس کال کریں"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"پیغام"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"کال خاموش کر دی گئی۔"</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"اسپیکر فون فعال ہوگیا۔"</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"ابھی بات نہیں کرسکتے۔ کیا ہو رہا ہے؟"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"میں ابھی آپ کو واپسی کال کروں گا۔"</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"میں آپ کو بعد میں کال کروں گا۔"</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"ابھی بات نہیں کرسکتے۔ مجھے بعد میں کال کریں؟"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"فوری جوابات"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"فوری جوابات میں ترمیم کریں"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"فوری جواب"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"پیغام <xliff:g id="PHONE_NUMBER">%s</xliff:g> کو بھیج دیا گیا۔"</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"کالنگ اکاؤنٹس"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"صرف ہنگامی کالز کی اجازت ہے۔"</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"یہ ایپلی کیشن فون کی اجازت کے بغیر باہر جانے والی کالیں نہیں کر سکتی۔"</string>
- <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">"SIM کارڈ پر کوئی بھی صوتی میل نمبر اسٹور نہیں ہے۔"</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>
- <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="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_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>
- <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_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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"آنے والی کالیں"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"چھوٹی ہوئی کالیں"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"کال مسدود کرنا"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"یہ کال کرنے سے <xliff:g id="OTHER_APP">%1$s</xliff:g> کال ختم ہو جائے گی۔"</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"کال مسدود کرنا"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"وہ نمبرز جو رابطوں میں نہیں ہیں"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"ان نمبرز کو مسدود کریں جو آپ کے رابطوں میں مندرج نہیں ہیں"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"نجی"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"ان کالرز کو مسدود کریں جو اپنے نمبرز کا افشاء نہیں کرتے ہیں"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"پے فون"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"پے فونز سے آنے والی کالز کو مسدود کریں"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"نامعلوم"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"غیر شناخت کردہ کالرز سے آنے والی کالز کو مسدود کریں"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"کال مسدود کرنا"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"کال مسدود کرنا غیر فعال ہو گیا ہے"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"ہنگامی کال کی گئی"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"ہنگامی حالت میں جواب دہندگان کو آپ سے رابطہ کرنے کی اجازت دینے کیلئے کال مسدود کرنا غیر فعال ہو گیا ہے۔"</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"کال مینجمنٹ"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"فون"</string>
+ <string name="unknown" msgid="6993977514360123431">"نامعلوم"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"چھوٹی ہوئی کال"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"کام سے متعلق چھوٹی ہوئی کال"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"چھوٹی ہوئی کالیں"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> چھوٹی ہوئی کالیں"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g> کی جانب سے چھوٹی ہوئی کال"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"واپس کال کریں"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"پیغام"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"کال خاموش کر دی گئی۔"</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"اسپیکر فون فعال ہوگیا۔"</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"ابھی بات نہیں کرسکتے۔ کیا ہو رہا ہے؟"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"میں ابھی آپ کو واپسی کال کروں گا۔"</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"میں آپ کو بعد میں کال کروں گا۔"</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"ابھی بات نہیں کرسکتے۔ مجھے بعد میں کال کریں؟"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"فوری جوابات"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"فوری جوابات میں ترمیم کریں"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"فوری جواب"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"پیغام <xliff:g id="PHONE_NUMBER">%s</xliff:g> کو بھیج دیا گیا۔"</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"<xliff:g id="PHONE_NUMBER">%s</xliff:g> پر پیغام نہیں بھیجا جا سکا۔"</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"کالنگ اکاؤنٹس"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"صرف ہنگامی کالز کی اجازت ہے۔"</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"یہ ایپلی کیشن فون کی اجازت کے بغیر باہر جانے والی کالیں نہیں کر سکتی۔"</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"کال کرنے کیلئے، ایک درست نمبر درج کریں۔"</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"اس وقت کال شامل نہیں کی جا سکتی ہے۔"</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"صوتی میل نمبر درج نہیں ہے"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"SIM کارڈ پر کوئی بھی صوتی میل نمبر اسٹور نہیں ہے۔"</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"نمبر شامل کریں"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"<xliff:g id="NEW_APP">%s</xliff:g> کو اپنی ڈیفالٹ فون ایپ بنائیں؟"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"ڈیفالٹ سیٹ کریں"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"منسوخ کریں"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> کال کرنے اور اس کے باقی تمام پہلوؤں کو کنٹرول کر پائے گی۔ صرف ان ایپس کو بطور ڈیفالٹ فون ایپ سیٹ کرنا چاہئیے جن پر آپ کو اعتماد ہے۔"</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"<xliff:g id="NEW_APP">%s</xliff:g> کو آپ کی ڈیفالٹ کال اسکریننگ ایپ بنائيں؟"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> اب آپ کی کالز نہیں دیکھ سکے گی۔"</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> ان کالرز کی معلومات دیکھ سکے گی جو آپ کے رابطوں میں نہیں ہیں اور ان کالز کو مسدود کر سکے گی۔ صرف وہی ایپس ڈیفالٹ کال اسکریننگ ایپ کے طور پر سیٹ کی جائیں گی جن پر آپ کو اعتماد ہے۔"</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"ڈیفالٹ سیٹ کریں"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"منسوخ کریں"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"مسدود کردہ نمبرز"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"آپ مسدود کردہ نمبروں سے کالیں یا متنی پیغامات وصول نہیں کریں گے۔"</string>
+ <string name="block_number" msgid="3784343046852802722">"ایک نمبر شامل کریں"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"<xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g> غیر مسدود کریں؟"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"غیر مسدود کریں"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"اس نمبر سے کالز اور پیغامات مسدود کریں"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"فون نمبر"</string>
+ <string name="block_button" msgid="485080149164258770">"مسدود کریں"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"صرف آلہ کا مالک مسدود کردہ نمبرز کو دیکھ سکتا ہے اور ان کا نظم کر سکتا ہے۔"</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"غیر مسدود کریں"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"مسدود کرنا عارضی طور پر آف ہے"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"جب آپ کوئی ایمرجنسی نمبر ڈائل کرتے یا اسے متن بھیجتے ہیں تو انسداد کو آف کر دیا جاتا ہے تاکہ ہنگامی سروسز آپ سے رابطہ کر سکیں۔"</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"اب دوبارہ فعال کریں"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> مسدود کر دیا گیا"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> غیر مسدود کر دیا گیا"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"ہنگامی نمبر مسدود کرنے سے قاصر۔"</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> پہلے ہی مسدود ہے۔"</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"کال کرنے کیلئے ذاتی ڈائلر استعمال ہو رہا ہے"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"<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="5795968314037063900">"<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="8653544281903986641">"جواب دینا آپ کی <xliff:g id="CALL_VIA">%1$s</xliff:g> کال کو ختم کر دے گا"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"جواب دینا آپ کی <xliff:g id="CALL_VIA">%1$s</xliff:g> کالز کو ختم کر دے گا"</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"جواب دینا آپ کی <xliff:g id="CALL_VIA">%1$s</xliff:g> ویڈیو کال کو ختم کر دے گا"</string>
+ <string name="answering_ends_other_managed_call" msgid="4031778317409881805">"جواب دینا آپ کی جاری کال کو ختم کر دے گا"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"جواب دینا آپ کی جاری کالز کو ختم کر دے گا"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"جواب دینا آپ کی جاری ویڈیو کال کو ختم کر دے گا"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"جواب دیں"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"مسترد کریں"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"کال نہیں کی جا سکی کیونکہ اس قسم کی کالز کو سپورٹ کرنے والا کوئی کالنگ اکاؤنٹ نہیں ہے۔"</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"آپ کی <xliff:g id="OTHER_CALL">%1$s</xliff:g> کال کی وجہ سے کال نہیں کی جاسکتی۔"</string>
+ <string name="cant_call_due_to_ongoing_calls" msgid="6379163795277824868">"آپ کی <xliff:g id="OTHER_CALL">%1$s</xliff:g> کالز کی وجہ سے کالز نہیں کی جاسکتیں۔"</string>
+ <string name="cant_call_due_to_ongoing_unknown_call" msgid="8243532328969433172">"کسی دوسری ایپ میں موجود کال کی کی وجہ سے کال نہیں کی جا سکتی۔"</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"آنے والی کالیں"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"چھوٹی ہوئی کالیں"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"کال مسدود کرنا"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"یہ کال کرنے سے <xliff:g id="OTHER_APP">%1$s</xliff:g> کال ختم ہو جائے گی۔"</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"یہ کال کرنے کا طریقہ منتخب کریں"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"<xliff:g id="OTHER_APP">%1$s</xliff:g> کے ذریعے کال کو ریڈائریکٹ کریں"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"میرا فون نمبر استعمال کر کے کال کريں"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"<xliff:g id="OTHER_APP">%1$s</xliff:g> کے ذریعے کال نہیں کی جا سکتی۔ کال آگے بڑھانے والی کوئی دوسری ایپ آزما کر یا مدد کے لیے ڈیولپر سے رابطہ کر کے دیکھیں۔"</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"کال مسدود کرنا"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"وہ نمبرز جو رابطوں میں نہیں ہیں"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"ان نمبرز کو مسدود کریں جو آپ کے رابطوں میں مندرج نہیں ہیں"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"نجی"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"ان کالرز کو مسدود کریں جو اپنے نمبرز کا افشاء نہیں کرتے ہیں"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"پے فون"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"پے فونز سے آنے والی کالز کو مسدود کریں"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"نامعلوم"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"غیر شناخت کردہ کالرز سے آنے والی کالز کو مسدود کریں"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"کال مسدود کرنا"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"کال مسدود کرنا غیر فعال ہو گیا ہے"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"ہنگامی کال کی گئی"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"ہنگامی حالت میں جواب دہندگان کو آپ سے رابطہ کرنے کی اجازت دینے کیلئے کال مسدود کرنا غیر فعال ہو گیا ہے۔"</string>
+ <string name="developer_title" msgid="9146088855661672353">"ٹیلی کام ڈیولپر مینو"</string>
</resources>
diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml
index 65aca28..52d3276 100644
--- a/res/values-uz/strings.xml
+++ b/res/values-uz/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <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 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>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"Karnaychalar yoqildi."</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"Hozir gaplasholmayman. Tinchlikmi?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"Hozir telefon qilaman."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Keyinroq telefon qilaman."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Bandman, keyinroq telefon qiling."</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Tezkor javoblar"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Tezkor javoblar"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"Tezkor javob"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"Xabar <xliff:g id="PHONE_NUMBER">%s</xliff:g>ga jo‘natildi."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"Chaqiruv uchun hisoblar"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"Faqat favqulodda qo‘ng‘iroqlarga ruxsat berilgan."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"Bu ilova Telefon ruxsatnomasisiz chiquvchi qo‘ng‘iroqlarni amalga oshira olmaydi."</string>
- <string name="outgoing_call_error_no_phone_number_supplied" msgid="1940125199802007505">"Qo‘ng‘iroq qilish uchun raqamni to‘g‘ri kiriting."</string>
- <string name="duplicate_video_call_not_allowed" msgid="3749211605014548386">"Hozirgi vaqtda qo‘ng‘iroq qo‘shib bo‘lmaydi."</string>
- <string name="no_vm_number" msgid="4164780423805688336">"Ovozli pochta raqami ko‘rsatilmagan"</string>
- <string name="no_vm_number_msg" msgid="1300729501030053828">"SIM kartada birorta ham ovozli pochta raqami yo‘q."</string>
- <string name="add_vm_number_str" msgid="4676479471644687453">"Raqam qo‘shish"</string>
- <string name="change_default_dialer_dialog_title" msgid="9101655962941740507">"Qo‘ng‘iroq. uchun <xliff:g id="NEW_APP">%s</xliff:g> asosiy ilova sifatida o‘rnatilsinmi?"</string>
- <string name="change_default_dialer_dialog_affirmative" msgid="8606546663509166276">"Asosiy ilova sifatida o‘rnatish"</string>
- <string name="change_default_dialer_dialog_negative" msgid="9078144617060173845">"Bekor qilish"</string>
- <string name="change_default_dialer_warning_message" msgid="1417671460801684999">"<xliff:g id="NEW_APP">%s</xliff:g> ilovasi qo‘ng‘iroq qilishga yodam beradi va qo‘ng‘iroqlarga tegishli boshqa barcha parametrlarni boshqaradi. Qo‘ng‘iroqlar uchun faqat ishonarli ilovani asosiy ilova qilib o‘rnatish lozim."</string>
- <string name="blocked_numbers" msgid="2751843139572970579">"Bloklangan raqamlar"</string>
- <string name="blocked_numbers_msg" msgid="1045015186124965643">"Bloklangan raqamlardan keladigan chaqiruv yoki SMS xabarlar qabul qilinmaydi."</string>
- <string name="block_number" msgid="1101252256321306179">"Biror raqamni bloklash"</string>
- <string name="unblock_dialog_body" msgid="1614238499771862793">"<xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g> raqami blokdan chiqarilsinmi?"</string>
- <string name="unblock_button" msgid="3078048901972674170">"Blokdan chiqarish"</string>
- <string name="add_blocked_dialog_body" msgid="9030243212265516828">"Quyidagi raqamdan keladigan chaqiruv va SMS xabarlar bloklansin"</string>
- <string name="add_blocked_number_hint" msgid="6847675097085433553">"Telefon raqami"</string>
- <string name="block_button" msgid="8822290682524373357">"Bloklash"</string>
- <string name="non_primary_user" msgid="5180129233352533459">"Faqat qurilma egasi bloklangan raqamlarni ko‘rishi va boshqarishi mumkin."</string>
- <string name="delete_icon_description" msgid="8903995728252556724">"Blokdan chiqarish"</string>
- <string name="blocked_numbers_butter_bar_title" msgid="438170866438793182">"Telefon raqamini bloklash xususiyati vaqtinchalik o‘chirib qo‘yilgan"</string>
- <string name="blocked_numbers_butter_bar_body" msgid="2223244484319442431">"Favqulodda chaqiruv raqamiga qo‘ng‘iroq qilganda yoki unga matnli xabar yuborganingizda, favqulodda holatlar xizmati xodimlari siz bilan bog‘lana olishlari uchun telefoningizda telefon raqamlarini bloklash xususiyati o‘chirib qo‘yiladi."</string>
- <string name="blocked_numbers_butter_bar_button" msgid="2197943354922010696">"Qayta faollashtirish"</string>
- <string name="blocked_numbers_number_blocked_message" msgid="7678509606805029540">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> raqami bloklandi"</string>
- <string name="blocked_numbers_number_unblocked_message" msgid="977894647366750418">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> raqami blokdan chiqarildi"</string>
- <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 chaqiruv"</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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"Kiruvchi chaqiruvlar"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"Javobsiz chaqiruvlar"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"Chaqiruvlarni bloklash"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"Bu qo‘ng‘iroqni amalga oshirsangiz, <xliff:g id="OTHER_APP">%1$s</xliff:g> qo‘ng‘irog‘i tugatiladi."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"Chaqiruvlarni bloklash"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"Notanish raqamlar"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"Kontaktlaringizga kiritilmagan notanish raqamlarni bloklash"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"Yashirin raqamlar"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"Yashirin raqamlardan keluvchi chaqiruvlarni bloklash"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"Taksofon"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"Taksofondan keluvchi chaqiruvlarni bloklash"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"Notanish raqamlar"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"Aniqlanmagan raqamlardan keluvchi chaqiruvlarni bloklash"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"Chaqiruvlarni bloklash"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"Chaqiruvlarni bloklash funksiyasi yoqilmagan"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"Favqulodda chaqiruv qilindi"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"Sizga favqulodda chiqiruv qilish imkoni bo‘lishi uchun chaqiruvlarni bloklash funksiyasi o‘chirib qo‘yilgan."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"Qo‘ng‘iroqlar boshqaruvi"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"Telefon"</string>
+ <string name="unknown" msgid="6993977514360123431">"Noma’lum"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"Javobsiz chaqiruv"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"Javobsiz chaqiruv (ish)"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"Javobsiz chaqiruvlar"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> ta javobsiz chaqiruv"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g> chaqiruvi javobsiz qoldi"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"Telefon"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"SMS"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"Qo‘ng‘iroq ovozi o‘chirildi."</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Karnaychalar yoqildi."</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Hozir gaplasholmayman. Tinchlikmi?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"Hozir telefon qilaman."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"Keyinroq telefon qilaman."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"Bandman, keyinroq telefon qiling."</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"Tezkor javoblar"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"Tezkor javoblar"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"Tezkor javob"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"Xabar <xliff:g id="PHONE_NUMBER">%s</xliff:g>ga jo‘natildi."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"Xabar <xliff:g id="PHONE_NUMBER">%s</xliff:g> raqamiga yuborilmadi."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"Chaqiruv uchun hisoblar"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"Faqat favqulodda qo‘ng‘iroqlarga ruxsat berilgan."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"Bu ilova Telefon ruxsatnomasisiz chiquvchi qo‘ng‘iroqlarni amalga oshira olmaydi."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"Qo‘ng‘iroq qilish uchun raqamni to‘g‘ri kiriting."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"Hozirgi vaqtda qo‘ng‘iroq qo‘shib bo‘lmaydi."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"Ovozli pochta raqami ko‘rsatilmagan"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"SIM kartada birorta ham ovozli pochta raqami yo‘q."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"Raqam qo‘shish"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"Qo‘ng‘iroq. uchun <xliff:g id="NEW_APP">%s</xliff:g> asosiy ilova sifatida o‘rnatilsinmi?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"Asosiy ilova sifatida o‘rnatish"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"Bekor qilish"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> ilovasi qo‘ng‘iroq qilishga yodam beradi va qo‘ng‘iroqlarga tegishli boshqa barcha parametrlarni boshqaradi. Qo‘ng‘iroqlar uchun faqat ishonarli ilovani asosiy ilova qilib o‘rnatish lozim."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"<xliff:g id="NEW_APP">%s</xliff:g> chaqiruv nazorati uchunn birlamchi ilova qilinsinmi?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> kiruvchi chaqiruvlarni boshqa boshqara olmay qoladi."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> kontaktlaringizga kiritilmagan abonentlar haqidagi axborotni ko‘rish ruxsatiga ega bo‘ladi va ulardan keladigan chaqiruvlarni bloklay oladi. Chaqiruv nazorati uchun faqat ishonchli ilovalarni ishlating."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"Asosiy qilib belgilash"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"Bekor qilish"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"Bloklangan raqamlar"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"Bloklangan raqamlardan keladigan chaqiruv yoki SMS xabarlar qabul qilinmaydi."</string>
+ <string name="block_number" msgid="3784343046852802722">"Biror raqamni bloklash"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"<xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g> raqami blokdan chiqarilsinmi?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"Blokdan chiqarish"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"Quyidagi raqamdan keladigan chaqiruv va SMS xabarlar bloklansin"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"Telefon raqami"</string>
+ <string name="block_button" msgid="485080149164258770">"Bloklash"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"Faqat qurilma egasi bloklangan raqamlarni ko‘rishi va boshqarishi mumkin."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"Blokdan chiqarish"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"Telefon raqamini bloklash xususiyati vaqtinchalik o‘chirib qo‘yilgan"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"Favqulodda chaqiruv raqamiga qo‘ng‘iroq qilganda yoki unga matnli xabar yuborganingizda, favqulodda holatlar xizmati xodimlari siz bilan bog‘lana olishlari uchun telefoningizda telefon raqamlarini bloklash xususiyati o‘chirib qo‘yiladi."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"Qayta faollashtirish"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> raqami bloklandi"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> raqami blokdan chiqarildi"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"Favqulodda qo‘ng‘iroq raqamini bloklab bo‘lmadi."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> raqami allaqachon bloklangan."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"Qo‘ng‘iroq qilish uchun shaxsiy raqam tergichdan foydalanilmoqda"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"<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="5795968314037063900">"<xliff:g id="CALL_FROM">%2$s</xliff:g> <xliff:g id="CALL_VIA">%1$s</xliff:g> orqali video chaqiruv"</string>
+ <string name="answering_ends_other_call" msgid="8653544281903986641">"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="3702302838456922535">"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="8572022039304239958">"Chaqiruvga javob berilsa, <xliff:g id="CALL_VIA">%1$s</xliff:g> video suhbati tugatiladi."</string>
+ <string name="answering_ends_other_managed_call" msgid="4031778317409881805">"Chaqiruvga javob berilsa, joriy qo‘ng‘iroq tugatiladi."</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"Chaqiruvga javob berilsa, joriy qo‘ng‘iroqlar tugatiladi."</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"Chaqiruvga javob berilsa, joriy video suhbat tugatiladi."</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"Javob berish"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"Rad etish"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"Telefon qilish imkonsiz, chunki bunday turdagi chaqiruvni qo‘llab-quvvatlaydigan hisob yo‘q."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"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="6379163795277824868">"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="8243532328969433172">"Boshqa ilovadagi joriy qo‘ng‘iroq tufayli boshqa raqamni chaqirib bo‘lmaydi."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"Kiruvchi chaqiruvlar"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"Javobsiz chaqiruvlar"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"Chaqiruvlarni bloklash"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"Bu qo‘ng‘iroqni amalga oshirsangiz, <xliff:g id="OTHER_APP">%1$s</xliff:g> qo‘ng‘irog‘i tugatiladi."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Telefon qilish usulini tanlang"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Chaqiruv <xliff:g id="OTHER_APP">%1$s</xliff:g> orqali qayta uzatilsin"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"Mening raqamim orqali telefon qilinsin"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"Chaqiruvlar uchun <xliff:g id="OTHER_APP">%1$s</xliff:g> ilovasidan foydalanish imkonsiz. Chaqiruvlarni uzatish uchun boshqa ilovadan foydalaning yoki dasturchiga yordam uchun murojaat qiling."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"Chaqiruvlarni bloklash"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"Notanish raqamlar"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"Kontaktlaringizga kiritilmagan notanish raqamlarni bloklash"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"Yashirin raqamlar"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"Yashirin raqamlardan keluvchi chaqiruvlarni bloklash"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"Taksofon"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"Taksofondan keluvchi chaqiruvlarni bloklash"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"Notanish raqamlar"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"Aniqlanmagan raqamlardan keluvchi chaqiruvlarni bloklash"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"Chaqiruvlarni bloklash"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"Chaqiruvlarni bloklash funksiyasi yoqilmagan"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"Favqulodda chaqiruv qilindi"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"Sizga favqulodda chiqiruv qilish imkoni bo‘lishi uchun chaqiruvlarni bloklash funksiyasi o‘chirib qo‘yilgan."</string>
+ <string name="developer_title" msgid="9146088855661672353">"Telecom dasturchisi menyusi"</string>
</resources>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index b0f6560..aa6849f 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"Quản lý cuộc gọi"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"Điện thoại"</string>
- <string name="unknown" msgid="6878797917991465859">"Không xác định"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"Cuộc gọi nhỡ"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"Cuộc gọi nhỡ về công việc"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Cuộc gọi nhỡ"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> cuộc gọi nhỡ"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"Cuộc gọi nhỡ từ <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Gọi lại"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"Tin nhắn"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"Đã tắt tiếng cuộc gọi."</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"Đã bật loa ngoài."</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"Giờ tôi ko thể nói chuyện. Gì vậy?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"Tôi sẽ gọi lại ngay."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Tôi sẽ gọi lại sau."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Giờ tôi ko thể nói chuyện. Gọi sau nhé?"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Trả lời nhanh"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Chỉnh sửa trả lời nhanh"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"Trả lời nhanh"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"Đã gửi tin nhắn tới <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"Tài khoản gọi"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"Chỉ được phép thực hiện cuộc gọi khẩn cấp."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"Ứng dụng này không thể thực hiện cuộc gọi đi mà không có quyền của Điện thoại."</string>
- <string name="outgoing_call_error_no_phone_number_supplied" msgid="1940125199802007505">"Để thực hiện cuộc gọi, hãy nhập một số hợp lệ."</string>
- <string name="duplicate_video_call_not_allowed" msgid="3749211605014548386">"Không thể thêm cuộc gọi tại thời điểm này."</string>
- <string name="no_vm_number" msgid="4164780423805688336">"Thiếu số thư thoại"</string>
- <string name="no_vm_number_msg" msgid="1300729501030053828">"Không có số thư thoại nào được lưu trữ trên thẻ SIM."</string>
- <string name="add_vm_number_str" msgid="4676479471644687453">"Thêm số điện thoại"</string>
- <string name="change_default_dialer_dialog_title" msgid="9101655962941740507">"Đặt <xliff:g id="NEW_APP">%s</xliff:g> làm ứng dụng Điện thoại mặc định của bạn?"</string>
- <string name="change_default_dialer_dialog_affirmative" msgid="8606546663509166276">"Đặt làm mặc định"</string>
- <string name="change_default_dialer_dialog_negative" msgid="9078144617060173845">"Hủy"</string>
- <string name="change_default_dialer_warning_message" msgid="1417671460801684999">"<xliff:g id="NEW_APP">%s</xliff:g> sẽ có thể đặt và kiểm soát mọi khía cạnh của cuộc gọi. Chỉ nên đặt những ứng dụng mà bạn tin cậy làm ứng dụng Điện thoại mặc định."</string>
- <string name="blocked_numbers" msgid="2751843139572970579">"Số bị chặn"</string>
- <string name="blocked_numbers_msg" msgid="1045015186124965643">"Bạn sẽ không nhận được cuộc gọi hoặc tin nhắn từ các số bị chặn."</string>
- <string name="block_number" msgid="1101252256321306179">"Thêm số điện thoại"</string>
- <string name="unblock_dialog_body" msgid="1614238499771862793">"Bỏ chặn <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
- <string name="unblock_button" msgid="3078048901972674170">"Bỏ chặn"</string>
- <string name="add_blocked_dialog_body" msgid="9030243212265516828">"Chặn cuộc gọi và tin nhắn từ"</string>
- <string name="add_blocked_number_hint" msgid="6847675097085433553">"Số điện thoại"</string>
- <string name="block_button" msgid="8822290682524373357">"Chặn"</string>
- <string name="non_primary_user" msgid="5180129233352533459">"Chỉ chủ sở hữu thiết bị mới có thể xem và quản lý các số bị chặn."</string>
- <string name="delete_icon_description" msgid="8903995728252556724">"Bỏ chặn"</string>
- <string name="blocked_numbers_butter_bar_title" msgid="438170866438793182">"Chế độ chặn tạm thời tắt"</string>
- <string name="blocked_numbers_butter_bar_body" msgid="2223244484319442431">"Sau khi bạn quay số hoặc gửi tin nhắn tới số khẩn cấp, chế độ chặn sẽ bị tắt để đảm bảo dịch vụ khẩn cấp có thể liên hệ với bạn."</string>
- <string name="blocked_numbers_butter_bar_button" msgid="2197943354922010696">"Bật lại ngay bây giờ"</string>
- <string name="blocked_numbers_number_blocked_message" msgid="7678509606805029540">"Đã chặn <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g>"</string>
- <string name="blocked_numbers_number_unblocked_message" msgid="977894647366750418">"Đã bỏ chặn <xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g>"</string>
- <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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"Cuộc gọi đến"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"Cuộc gọi nhỡ"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"Chặn cuộc gọi"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"Thực hiện cuộc gọi này sẽ kết thúc cuộc gọi <xliff:g id="OTHER_APP">%1$s</xliff:g> của bạn."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"Chặn cuộc gọi"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"Các số không có trong Danh bạ"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"Chặn các số không có trong Danh bạ của bạn"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"Riêng tư"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"Chặn người gọi không tiết lộ số của họ"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"Điện thoại công cộng"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"Chặn các cuộc gọi từ điện thoại công cộng"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"Không xác định"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"Chặn cuộc gọi từ người gọi không xác định"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"Chặn cuộc gọi"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"Đã tắt tính năng Chặn cuộc gọi"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"Đã thực hiện cuộc gọi khẩn cấp"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"Đã tắt tính năng Chặn cuộc gọi để cho phép người trả lời khẩn cấp liên hệ với bạn."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"Quản lý cuộc gọi"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"Điện thoại"</string>
+ <string name="unknown" msgid="6993977514360123431">"Không xác định"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"Cuộc gọi nhỡ"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"Cuộc gọi nhỡ về công việc"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"Cuộc gọi nhỡ"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> cuộc gọi nhỡ"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"Cuộc gọi nhỡ từ <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"Gọi lại"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"Tin nhắn"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"Đã tắt tiếng cuộc gọi."</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Đã bật loa ngoài."</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Giờ tôi không nói chuyện được. Có việc gì không?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"Tôi sẽ gọi lại ngay."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"Tôi sẽ gọi lại sau."</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"Giờ tôi không nói chuyện được. Bạn gọi lại sau nhé?"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"Trả lời nhanh"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"Chỉnh sửa tin nhắn trả lời nhanh"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"Trả lời nhanh"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"Đã gửi tin nhắn tới <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"Không gửi được tin nhắn đến <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"Tài khoản gọi"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"Chỉ được phép thực hiện cuộc gọi khẩn cấp."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"Ứng dụng này không thể thực hiện cuộc gọi đi mà không có quyền của Điện thoại."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"Để thực hiện cuộc gọi, hãy nhập một số hợp lệ."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"Không thể thêm cuộc gọi tại thời điểm này."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"Thiếu số thư thoại"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"Không có số thư thoại nào được lưu trữ trên thẻ SIM."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"Thêm số điện thoại"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"Đặt <xliff:g id="NEW_APP">%s</xliff:g> làm ứng dụng Điện thoại mặc định của bạn?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"Đặt làm mặc định"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"Hủy"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> sẽ có thể đặt và kiểm soát mọi khía cạnh của cuộc gọi. Chỉ nên đặt những ứng dụng mà bạn tin cậy làm ứng dụng Điện thoại mặc định."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"Đặt <xliff:g id="NEW_APP">%s</xliff:g> làm ứng dụng sàng lọc cuộc gọi mặc định?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> sẽ không thể sàng lọc cuộc gọi nữa."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> có thể thấy thông tin về người gọi không có trong danh bạ của bạn và chặn những cuộc gọi này. Chỉ nên đặt những ứng dụng mà bạn tin cậy làm ứng dụng sàng lọc cuộc gọi mặc định."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"Đặt làm mặc định"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"Hủy"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"Số bị chặn"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"Bạn sẽ không nhận được cuộc gọi hoặc tin nhắn từ các số bị chặn."</string>
+ <string name="block_number" msgid="3784343046852802722">"Thêm số điện thoại"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"Bỏ chặn <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"Bỏ chặn"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"Chặn cuộc gọi và tin nhắn từ"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"Số điện thoại"</string>
+ <string name="block_button" msgid="485080149164258770">"Chặn"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"Chỉ chủ sở hữu thiết bị mới có thể xem và quản lý các số bị chặn."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"Bỏ chặn"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"Chế độ chặn tạm thời tắt"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"Sau khi bạn quay số hoặc gửi tin nhắn tới số khẩn cấp, chế độ chặn sẽ bị tắt để đảm bảo dịch vụ khẩn cấp có thể liên hệ với bạn."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"Bật lại ngay bây giờ"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"Đã chặn <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g>"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"Đã bỏ chặn <xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g>"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"Không thể chặn số khẩn cấp."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> đã bị chặn."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"Sử dụng trình quay số cá nhân để gọi điện"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"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="5795968314037063900">"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="8653544281903986641">"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="3702302838456922535">"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="8572022039304239958">"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="4031778317409881805">"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="3974069768615307659">"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="1988508241432031327">"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="2045888814782215326">"Trả lời"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"Từ chối"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"Không thể thực hiện cuộc gọi do không có tài khoản hỗ trợ loại cuộc gọi này."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"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="6379163795277824868">"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="8243532328969433172">"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>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"Cuộc gọi đến"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"Cuộc gọi nhỡ"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"Chặn cuộc gọi"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"Thực hiện cuộc gọi này sẽ kết thúc cuộc gọi <xliff:g id="OTHER_APP">%1$s</xliff:g> của bạn."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Chọn cách thực hiện cuộc gọi này"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Chuyển hướng cuộc gọi bằng cách sử dụng <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"Gọi bằng số điện thoại của bạn"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"Không thể thực hiện cuộc gọi bằng <xliff:g id="OTHER_APP">%1$s</xliff:g>. Hãy thử dùng ứng dụng chuyển hướng cuộc gọi khác hoặc liên hệ với nhà phát triển để nhận trợ giúp."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"Chặn cuộc gọi"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"Các số không có trong Danh bạ"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"Chặn các số không có trong Danh bạ của bạn"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"Riêng tư"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"Chặn người gọi không tiết lộ số của họ"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"Điện thoại công cộng"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"Chặn các cuộc gọi từ điện thoại công cộng"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"Không xác định"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"Chặn cuộc gọi từ người gọi không xác định"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"Chặn cuộc gọi"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"Đã tắt tính năng Chặn cuộc gọi"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"Đã thực hiện cuộc gọi khẩn cấp"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"Đã tắt tính năng Chặn cuộc gọi để cho phép người trả lời khẩn cấp liên hệ với bạn."</string>
+ <string name="developer_title" msgid="9146088855661672353">"Menu nhà phát triển dịch vụ viễn thông"</string>
</resources>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 370b718..e8c2282 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"通话管理"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"电话"</string>
- <string name="unknown" msgid="6878797917991465859">"未知"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"未接电话"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"未接工作来电"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"未接电话"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> 个未接电话"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"来自<xliff:g id="MISSED_CALL_FROM">%s</xliff:g>的未接电话"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"回拨"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"发短信"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"通话已静音。"</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"扬声器已启用。"</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"现在无法接听。有什么事吗?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"我马上会打给你。"</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"我稍后会再打给你。"</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"现在无法接听。能稍后再打给我吗?"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"快速回复"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"修改快速回复"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"快速回复"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"讯息已发送至 <xliff:g id="PHONE_NUMBER">%s</xliff:g>。"</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"通话帐号"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"只能拨打紧急呼救电话。"</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"此应用没有电话权限,无法拨出电话。"</string>
- <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">"SIM卡上未存储语音信箱号码。"</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>
- <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="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_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>
- <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_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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"来电"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"未接电话"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"来电屏蔽"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"拨打此电话将导致<xliff:g id="OTHER_APP">%1$s</xliff:g>通话结束。"</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"来电屏蔽"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"不在通讯录中的号码"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"屏蔽未列在您通讯录中的号码"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"不显示号码"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"屏蔽不显示号码的来电者"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"公用电话"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"屏蔽公用电话来电"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"未知"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"屏蔽身份不明的来电者的电话"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"来电屏蔽"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"来电屏蔽功能已停用"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"已拨打紧急呼救电话"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"系统已停用来电屏蔽功能,以便急救人员与您联系。"</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"通话管理"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"电话"</string>
+ <string name="unknown" msgid="6993977514360123431">"未知"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"未接电话"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"未接工作来电"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"未接电话"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> 个未接电话"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"来自<xliff:g id="MISSED_CALL_FROM">%s</xliff:g>的未接电话"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"回拨"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"发短信"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"通话已静音。"</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"扬声器已启用。"</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"现在无法接听。有什么事吗?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"我马上会打给你。"</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"我稍后给你回电。"</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"现在无法接听。能稍后再打给我吗?"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"快速回复"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"修改快速回复"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"快速回复"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"讯息已发送至 <xliff:g id="PHONE_NUMBER">%s</xliff:g>。"</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"未能将信息发送到 <xliff:g id="PHONE_NUMBER">%s</xliff:g>。"</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"通话帐号"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"只能拨打紧急呼救电话。"</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"此应用没有电话权限,无法拨出电话。"</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"要拨打电话,请输入有效的电话号码。"</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"目前无法添加通话。"</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"缺少语音信箱号码"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"SIM卡上未存储语音信箱号码。"</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"添加号码"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"要将 <xliff:g id="NEW_APP">%s</xliff:g> 设为默认电话应用吗?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"设为默认电话应用"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"取消"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> 将可用于拨打电话和全面管理通话。请务必仅将您信任的应用设为默认电话应用。"</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"要将<xliff:g id="NEW_APP">%s</xliff:g>设为默认选接电话应用吗?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g>将无法再选接电话。"</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g>将能查看不在通讯录内的来电者信息,并屏蔽这些通话。您应仅将受信应用设为默认选接电话应用。"</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"设为默认"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"取消"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"已屏蔽的号码"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"您不会收到来自已屏蔽的号码的来电或短信。"</string>
+ <string name="block_number" msgid="3784343046852802722">"添加电话号码"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"要取消屏蔽 <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g> 吗?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"取消屏蔽"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"屏蔽以下号码的来电和短信:"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"电话号码"</string>
+ <string name="block_button" msgid="485080149164258770">"屏蔽"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"只有机主才能查看和管理已屏蔽的号码。"</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"取消屏蔽"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"已暂时关闭来电拦截功能"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"您拨打紧急服务电话或向其发送短信后,系统会关闭来电拦截功能,以确保紧急服务人员能与您联系。"</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"立即重新启用"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"已屏蔽 <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g>"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"已取消屏蔽 <xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g>"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"无法屏蔽紧急服务号码。"</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> 已被屏蔽。"</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"使用个人拨号器拨打电话"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"<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="5795968314037063900">"接到来自<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="8653544281903986641">"如果接听此来电,您的 <xliff:g id="CALL_VIA">%1$s</xliff:g> 通话会中断。"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"如果接听此来电,您的 <xliff:g id="CALL_VIA">%1$s</xliff:g> 通话会中断。"</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"如果接听此来电,您的 <xliff:g id="CALL_VIA">%1$s</xliff:g> 视频通话会中断"</string>
+ <string name="answering_ends_other_managed_call" msgid="4031778317409881805">"如果接听此来电,您当前的通话会中断。"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"如果接听此来电,您当前的通话会中断。"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"如果接听此来电,您当前的视频通话会中断。"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"接听"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"拒绝"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"无法拨出电话,因为没有通话帐号支持拨打这类电话。"</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"由于当前正在进行 <xliff:g id="OTHER_CALL">%1$s</xliff:g> 通话,因此无法拨打电话。"</string>
+ <string name="cant_call_due_to_ongoing_calls" msgid="6379163795277824868">"由于当前正在进行 <xliff:g id="OTHER_CALL">%1$s</xliff:g> 通话,因此无法拨打电话。"</string>
+ <string name="cant_call_due_to_ongoing_unknown_call" msgid="8243532328969433172">"由于当前正在通过其他应用通话,因此无法拨打电话。"</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"来电"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"未接电话"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"来电屏蔽"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"拨打此电话将导致<xliff:g id="OTHER_APP">%1$s</xliff:g>通话结束。"</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"选择拨打此电话的方式"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"使用<xliff:g id="OTHER_APP">%1$s</xliff:g>转移呼叫"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"使用我的电话号码拨打电话"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"无法使用<xliff:g id="OTHER_APP">%1$s</xliff:g>拨打电话。请尝试使用其他通话重定向应用,或联系开发者获取帮助。"</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"来电屏蔽"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"不在通讯录中的号码"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"屏蔽未列在您通讯录中的号码"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"不显示号码"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"屏蔽不显示号码的来电者"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"公用电话"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"屏蔽公用电话来电"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"未知"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"屏蔽不明身份人员的来电"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"来电屏蔽"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"来电屏蔽功能已停用"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"已拨打紧急呼救电话"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"系统已停用来电屏蔽功能,以便急救人员与您联系。"</string>
+ <string name="developer_title" msgid="9146088855661672353">"电信开发者菜单"</string>
</resources>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index 1d2dd46..f56c99c 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"通話管理"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"電話"</string>
- <string name="unknown" msgid="6878797917991465859">"未知"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"未接來電"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"未接工作來電"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"未接來電"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> 未接電話"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g>打來的未接來電"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"回撥"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"短訊"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"通話已靜音。"</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"擴音器已啟用"</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"我現在不方便通話,有什麼事呢?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"我很快會打電話給你。"</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"我遲些打電話給你。"</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"我現在不方便通話,遲些再打來好嗎?"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"快速回應"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"編輯快速回應"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"快速回應"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"訊息已傳送至 <xliff:g id="PHONE_NUMBER">%s</xliff:g>。"</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"通話帳戶"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"只限緊急電話。"</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"此應用程式沒有電話權限,無法撥出電話。"</string>
- <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">"SIM 卡中沒有儲存任何留言信箱號碼。"</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>
- <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="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_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>
- <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_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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"來電"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"未接來電"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"來電封鎖"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"如果撥打此電話,您的 <xliff:g id="OTHER_APP">%1$s</xliff:g> 通話將會結束。"</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"來電封鎖"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"不在通訊錄中的號碼"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"封鎖不在通訊錄中的號碼"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"私人"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"封鎖不透露號碼的來電者"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"公共電話"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"封鎖公共電話來電"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"不明"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"封鎖不明來電者的來電"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"來電封鎖"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"已停用來電封鎖功能"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"已撥緊急電話"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"已停用來電封鎖功能,以便救援人員與您聯絡。"</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"通話管理"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"電話"</string>
+ <string name="unknown" msgid="6993977514360123431">"未知"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"未接來電"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"未接工作來電"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"未接來電"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> 未接電話"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g>打來的未接來電"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"回撥"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"短訊"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"通話已靜音。"</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"擴音器已啟用"</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"我現在不方便通話,有什麼事呢?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"我很快會打電話給你。"</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"我遲些打電話給你。"</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"我現在不方便通話,遲些再打來好嗎?"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"快速回應"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"編輯快速回應"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"快速回應"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"訊息已傳送至 <xliff:g id="PHONE_NUMBER">%s</xliff:g>。"</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"無法將訊息傳送至 <xliff:g id="PHONE_NUMBER">%s</xliff:g>。"</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"通話帳戶"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"只限緊急電話。"</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"此應用程式沒有電話權限,無法撥出電話。"</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"要撥打電話,請輸入有效的號碼。"</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"目前無法新增視像通話。"</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"未填留言信箱號碼"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"SIM 卡中沒有儲存任何留言信箱號碼。"</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"新增電話號碼"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"要將<xliff:g id="NEW_APP">%s</xliff:g>設為預設電話應用程式嗎?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"設為預設"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"取消"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"「<xliff:g id="NEW_APP">%s</xliff:g>」將可撥打電話並控制所有相關功能。只有您信任的應用程式,才應設為預設手機應用程式。"</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"要將「<xliff:g id="NEW_APP">%s</xliff:g>」設為預設來電篩選應用程式嗎?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"「<xliff:g id="OLD_APP">%s</xliff:g>」無法再篩選來電。"</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"「<xliff:g id="NEW_APP">%s</xliff:g>」將可查看通訊錄以外來電者的相關資訊,並封鎖這些來電。只有您信任的應用程式才適合設為預設來電篩選應用程式。"</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"設為預設"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"取消"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"已封鎖的號碼"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"您不會收到已封鎖號碼的來電或短訊。"</string>
+ <string name="block_number" msgid="3784343046852802722">"新增號碼"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"要解除封鎖 <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g> 嗎?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"解除封鎖"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"封鎖下列號碼的來電和短訊:"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"電話號碼"</string>
+ <string name="block_button" msgid="485080149164258770">"封鎖"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"只有裝置擁有者可查看和管理已封鎖的號碼。"</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"解除封鎖"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"暫時關閉封鎖功能"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"在您撥打或發短訊至緊急號碼後,封鎖功能會停用,以確保緊急服務可與您聯絡。"</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"立即重新啟用"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"已封鎖 <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g>"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"已解除對 <xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> 的封鎖"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"無法封鎖緊急電話號碼。"</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"已封鎖 <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g>。"</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"使用個人撥號器撥打電話"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"來自<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="5795968314037063900">"來自<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="8653544281903986641">"如果接聽,您的 <xliff:g id="CALL_VIA">%1$s</xliff:g> 通話將會結束"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"如果接聽,您的 <xliff:g id="CALL_VIA">%1$s</xliff:g> 通話將會結束"</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"如果接聽,您的 <xliff:g id="CALL_VIA">%1$s</xliff:g> 視像通話將會結束"</string>
+ <string name="answering_ends_other_managed_call" msgid="4031778317409881805">"如果接聽,您進行中的通話將會結束"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"如果接聽,您進行中的通話將會結束"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"如果接聽,您進行中的視像通話將會結束"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"接聽"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"拒絕"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"沒有通話帳戶支援這類通話,因此無法撥打電話。"</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"由於您已在進行 <xliff:g id="OTHER_CALL">%1$s</xliff:g> 通話,因此無法撥打電話。"</string>
+ <string name="cant_call_due_to_ongoing_calls" msgid="6379163795277824868">"由於您已在進行 <xliff:g id="OTHER_CALL">%1$s</xliff:g> 通話,因此無法撥打電話。"</string>
+ <string name="cant_call_due_to_ongoing_unknown_call" msgid="8243532328969433172">"由於已在另一個應用程式中進行通話,因此無法撥打電話。"</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"來電"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"未接來電"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"來電封鎖"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"如果撥打此電話,您的 <xliff:g id="OTHER_APP">%1$s</xliff:g> 通話將會結束。"</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"選擇如何撥打此電話"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"使用「<xliff:g id="OTHER_APP">%1$s</xliff:g>」將通話重新導向"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"使用我的電話號碼撥打"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"<xliff:g id="OTHER_APP">%1$s</xliff:g>無法撥打電話。建議您使用其他通話重新導向應用程式,或向開發人員求助。"</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"來電封鎖"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"不在通訊錄中的號碼"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"封鎖不在通訊錄中的號碼"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"私人"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"封鎖不透露號碼的來電者"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"公共電話"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"封鎖公共電話來電"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"不明"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"封鎖不明來電者的來電"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"來電封鎖"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"已停用來電封鎖功能"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"已撥緊急電話"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"已停用來電封鎖功能,以便救援人員與您聯絡。"</string>
+ <string name="developer_title" msgid="9146088855661672353">"電信開發商選單"</string>
</resources>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 007adeb..dba94c5 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"通話管理"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"電話"</string>
- <string name="unknown" msgid="6878797917991465859">"不明"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"未接來電"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"未接公司來電"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"未接來電"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> 通未接來電"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"來自 <xliff:g id="MISSED_CALL_FROM">%s</xliff:g> 的未接來電"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"回撥"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"簡訊"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"通話已靜音。"</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"喇叭已啟用"</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"我現在不方便講話,有什麼事?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"我待會就回電。"</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"我晚點回電。"</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"我現在不方便講話,晚點再打來好嗎?"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"應答短訊"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"編輯快速回應"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"快速回應"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"訊息已傳送至 <xliff:g id="PHONE_NUMBER">%s</xliff:g>。"</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"通話帳戶"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"只能撥打緊急電話。"</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"這個應用程式不具備電話應用程式存取權限,無法撥出電話。"</string>
- <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">"SIM 卡中未儲存語音信箱號碼。"</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>
- <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="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_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>
- <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_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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"來電"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"未接來電"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"來電封鎖"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"撥打這通電話將結束你的「<xliff:g id="OTHER_APP">%1$s</xliff:g>」通話。"</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"來電封鎖"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"不屬於聯絡人的號碼"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"封鎖不屬於聯絡人的號碼"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"不顯示號碼"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"封鎖不顯示號碼的來電者"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"公共電話"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"封鎖公共電話來電"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"不明"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"封鎖不明來電者的來電"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"來電封鎖"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"已停用來電封鎖"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"已撥打緊急電話"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"系統已停用來電封鎖功能,以便緊急應變人員與你聯絡。"</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"通話管理"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"電話"</string>
+ <string name="unknown" msgid="6993977514360123431">"不明"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"未接來電"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"未接公司來電"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"未接來電"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> 通未接來電"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"來自 <xliff:g id="MISSED_CALL_FROM">%s</xliff:g> 的未接來電"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"回撥"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"簡訊"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"通話已靜音。"</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"喇叭已啟用"</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"我現在不方便講話,有什麼事?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"我待會就回電。"</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"我晚點回電。"</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"我現在不方便講話,晚點再打來好嗎?"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"快速回應"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"編輯快速回應"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"快速回應"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"訊息已傳送至 <xliff:g id="PHONE_NUMBER">%s</xliff:g>。"</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"無法將訊息傳送到 <xliff:g id="PHONE_NUMBER">%s</xliff:g>。"</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"通話帳戶"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"只能撥打緊急電話。"</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"這個應用程式不具備電話應用程式存取權限,無法撥出電話。"</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"如要撥打電話,請輸入有效的號碼。"</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"目前無法新增通話。"</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"遺失語音信箱號碼"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"SIM 卡中未儲存語音信箱號碼。"</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"新增號碼"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"確定要將 <xliff:g id="NEW_APP">%s</xliff:g> 設為預設電話應用程式嗎?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"設為預設電話應用程式"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"取消"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"這樣一來,<xliff:g id="NEW_APP">%s</xliff:g> 將能撥打電話及控管所有通話設定。請務必只將您信任的應用程式設為預設電話應用程式。"</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"要將「<xliff:g id="NEW_APP">%s</xliff:g>」設為預設來電過濾應用程式嗎?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"「<xliff:g id="OLD_APP">%s</xliff:g>」將無法再過濾來電。"</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"「<xliff:g id="NEW_APP">%s</xliff:g>」將可查看聯絡人以外的來電者資訊及封鎖這些人的來電。請務必只將你信任的應用程式設為預設來電過濾應用程式。"</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"設為預設來電過濾應用程式"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"取消"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"已封鎖的號碼"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"你不會收到已封鎖號碼的來電或簡訊。"</string>
+ <string name="block_number" msgid="3784343046852802722">"新增號碼"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"要解除封鎖 <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g> 嗎?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"解除封鎖"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"封鎖以下號碼的來電和簡訊:"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"電話號碼"</string>
+ <string name="block_button" msgid="485080149164258770">"封鎖"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"只有裝置擁有者能夠查看及管理已封鎖的號碼。"</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"解除封鎖"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"已暫時停用來電封鎖功能"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"當您撥打或傳送簡訊到緊急服務電話後,系統就會停用來電封鎖功能,以確保緊急服務人員能夠與您聯絡。"</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"立即重新啟用"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"已封鎖 <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g>"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"已解除封鎖 <xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g>"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"無法封鎖緊急服務電話號碼。"</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> 已在封鎖清單中。"</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"使用個人撥號程式撥打電話"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"<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="5795968314037063900">"<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="8653544281903986641">"接聽之後,你的 <xliff:g id="CALL_VIA">%1$s</xliff:g> 通話就會結束"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"接聽之後,你的 <xliff:g id="CALL_VIA">%1$s</xliff:g> 通話就會結束"</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"接聽之後,你的 <xliff:g id="CALL_VIA">%1$s</xliff:g> 視訊通話就會結束"</string>
+ <string name="answering_ends_other_managed_call" msgid="4031778317409881805">"接聽之後,你正在進行的通話就會結束"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"接聽之後,你正在進行的通話就會結束"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"接聽之後,你正在進行的視訊通話就會結束"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"接聽"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"拒接"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"你尚未設定支援這類通話的通話帳戶,因此無法撥打電話。"</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"你正在進行 <xliff:g id="OTHER_CALL">%1$s</xliff:g> 通話,因此無法撥打電話。"</string>
+ <string name="cant_call_due_to_ongoing_calls" msgid="6379163795277824868">"你正在進行 <xliff:g id="OTHER_CALL">%1$s</xliff:g> 通話,所以無法撥打電話。"</string>
+ <string name="cant_call_due_to_ongoing_unknown_call" msgid="8243532328969433172">"你正在使用其他應用程式進行通話,因此無法撥打電話。"</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"來電"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"未接來電"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"來電封鎖"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"撥打這通電話將結束你的「<xliff:g id="OTHER_APP">%1$s</xliff:g>」通話。"</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"選擇撥打這通電話的方式"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"使用「<xliff:g id="OTHER_APP">%1$s</xliff:g>」轉接電話"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"使用我的電話號碼撥打電話"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"無法使用「<xliff:g id="OTHER_APP">%1$s</xliff:g>」撥打電話。請嘗試使用其他的通話轉接應用程式,或向開發人員尋求協助。"</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"來電封鎖"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"不屬於聯絡人的號碼"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"封鎖不屬於聯絡人的號碼"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"不顯示號碼"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"封鎖不顯示號碼的來電者"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"公共電話"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"封鎖公共電話來電"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"不明"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"封鎖不明來電者的來電"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"來電封鎖"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"已停用來電封鎖"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"已撥打緊急電話"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"系統已停用來電封鎖功能,以便緊急應變人員與你聯絡。"</string>
+ <string name="developer_title" msgid="9146088855661672353">"電信開發人員選單"</string>
</resources>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index 79e5846..18b697a 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -16,85 +16,97 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="telecommAppLabel" product="default" msgid="382363169988504520">"Ukuphathwa kwekholi"</string>
- <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"Ifoni"</string>
- <string name="unknown" msgid="6878797917991465859">"Akwaziwa"</string>
- <string name="notification_missedCallTitle" msgid="7554385905572364535">"Ikholi ekulahlekele"</string>
- <string name="notification_missedWorkCallTitle" msgid="6242489980390803090">"Ugeje ikholi yomsebenzi"</string>
- <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Amakholi akuphuthele"</string>
- <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> amakholi akulahlekele"</string>
- <string name="notification_missedCallTicker" msgid="504686252427747209">"Uphuthelwe ikholi ephuma ku-<xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
- <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Phinda ushaye"</string>
- <string name="notification_missedCall_message" msgid="3049928912736917988">"Umlayezo"</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"Ikholu ithulisiwe"</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"Isipikha sefoni sinikwe amandla"</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"Angikwazi ukukhuluma okwamanje. Kwenzenjani?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">" Ngizophinde ngikushayele ucingo."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Ngizokushayela ucingo emva kwesikhathi"</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Angikwazi ukukhuluma okwamanje. Ngicela uphinde ungishayele ucingo kamuva?"</string>
- <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Izimpendulo ezisheshayo"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Hlela izimpendulo ezisheshayo"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"Izimpendulo ezisheshayo"</string>
- <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"Umlayezo othunyelwe ku <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
- <string name="enable_account_preference_title" msgid="2021848090086481720">"Ama-akhawunti wokushaya"</string>
- <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"Amakholi aphuthumayo kuphela avunyelwe."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"Lolu hlelo lokusebenza alikwazi ukwenza amakhli aphumayo ngaphandle kwemvume yefoni."</string>
- <string name="outgoing_call_error_no_phone_number_supplied" msgid="1940125199802007505">"Ukuze wenze ikholi, faka inombolo evumelekile."</string>
- <string name="duplicate_video_call_not_allowed" msgid="3749211605014548386">"Ikholi ayikwazi ukungezwa ngalesi sikhathi."</string>
- <string name="no_vm_number" msgid="4164780423805688336">"Inombolo engekho yomyalezo wezwi"</string>
- <string name="no_vm_number_msg" msgid="1300729501030053828">"Ayikho inombolo yomlayezo wezwi egcinwe ekhadini le-SIM."</string>
- <string name="add_vm_number_str" msgid="4676479471644687453">"Engeza inombolo"</string>
- <string name="change_default_dialer_dialog_title" msgid="9101655962941740507">"Yenza i-<xliff:g id="NEW_APP">%s</xliff:g> uhlelo lwakho lwefoni oluzenzakalelayo?"</string>
- <string name="change_default_dialer_dialog_affirmative" msgid="8606546663509166276">"Setha okuzenzakalelayo"</string>
- <string name="change_default_dialer_dialog_negative" msgid="9078144617060173845">"Khansela"</string>
- <string name="change_default_dialer_warning_message" msgid="1417671460801684999">"<xliff:g id="NEW_APP">%s</xliff:g> Uzokwazi ukubeka nokulawula zonke izinto zamakholi. Izinhlelo zokusebenza kuphela ozithembayo ezingasethwa njengohlelo lokusebenza oluzenzakalelayo lefoni."</string>
- <string name="blocked_numbers" msgid="2751843139572970579">"Izinombolo ezivinjiwe"</string>
- <string name="blocked_numbers_msg" msgid="1045015186124965643">"Ngeke uthole amakholi noma imibhalo kusuka kuzinombolo ezivinjelwe."</string>
- <string name="block_number" msgid="1101252256321306179">"Engeza inombolo"</string>
- <string name="unblock_dialog_body" msgid="1614238499771862793">"Vulela i-<xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
- <string name="unblock_button" msgid="3078048901972674170">"Vulela"</string>
- <string name="add_blocked_dialog_body" msgid="9030243212265516828">"Vimba amakholi nemibhalo kusukela ku-"</string>
- <string name="add_blocked_number_hint" msgid="6847675097085433553">"Inombolo yefoni"</string>
- <string name="block_button" msgid="8822290682524373357">"Vimba"</string>
- <string name="non_primary_user" msgid="5180129233352533459">"Umnikazi wedivayisi kuphela ongabuka aphinde aphathe izinombolo ezivinjelwe."</string>
- <string name="delete_icon_description" msgid="8903995728252556724">"Vulela"</string>
- <string name="blocked_numbers_butter_bar_title" msgid="438170866438793182">"Ukuvimbela kuvaliwe okwesikhashana"</string>
- <string name="blocked_numbers_butter_bar_body" msgid="2223244484319442431">"Ngemuva kokudayela noma ubhalele inombolo yesimo esiphuthumayo, ukuvimbela kuvaliwe ukuqinisekisa amasevisi esimo esiphuthumayo angakwazi ukuxhumana nawe."</string>
- <string name="blocked_numbers_butter_bar_button" msgid="2197943354922010696">"Nika amandla manje"</string>
- <string name="blocked_numbers_number_blocked_message" msgid="7678509606805029540">"I-<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> ivinjiwe"</string>
- <string name="blocked_numbers_number_unblocked_message" msgid="977894647366750418">"I-<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> ayivinjiwe"</string>
- <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>
- <string name="notification_channel_incoming_call" msgid="3513761697082968084">"Amakholi angenayo"</string>
- <string name="notification_channel_missed_call" msgid="8727062678632713146">"Amakholi akuphuthile"</string>
- <string name="notification_channel_call_blocking" msgid="2943358779746676070">"Ukuvimbela ikholi"</string>
- <string name="alert_outgoing_call" msgid="982908156825958001">"Ukwenza le kholi kuzoqeda enye ikholi yakho ye-<xliff:g id="OTHER_APP">%1$s</xliff:g>."</string>
- <string name="phone_settings_call_blocking_txt" msgid="3976004073043846733">"Ukuvimbela ikholi"</string>
- <string name="phone_settings_number_not_in_contact_txt" msgid="3126829421867168652">"Inombolo ayikho koxhumana nabo"</string>
- <string name="phone_settings_number_not_in_contact_summary_txt" msgid="9043147855140079119">"Vimbela izinombolo ezingafakiwe kuhlu loxhumana nabo"</string>
- <string name="phone_settings_private_num_txt" msgid="8623574188879134262">"Kuyimfihlo"</string>
- <string name="phone_settings_private_num_summary_txt" msgid="7516314821207782191">"Vimbela abashayayo abangayidaluli inombolo yabo"</string>
- <string name="phone_settings_payphone_txt" msgid="2493356957416981318">"Ifoni ekhokhelwayo"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="6126709946103814653">"Vimbela amakholi kusukela kumafoni akhokhelwayo"</string>
- <string name="phone_settings_unknown_txt" msgid="5836407031508172721">"Akwaziwa"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="3457690230497753233">"Vimbela amakholi kusukela kwabashayayo abangaziwa"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="628536625775266096">"Ukuvimbela ikholi"</string>
- <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="6264230048947693941">"Ukuvimbela ikholi kukhutshaziwe"</string>
- <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="7421611725400166580">"Ikholi ephuthumayo yenziwe"</string>
- <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="4083285098613193052">"Ukuvimbela ikholi kukhutshaziwe ukuze kuvunyelwe abaphenduli besimo esiphuthumayo ukuthi baxhumane nawe."</string>
+ <string name="telecommAppLabel" product="default" msgid="3077225713817780583">"Ukuphathwa kwekholi"</string>
+ <string name="userCallActivityLabel" product="default" msgid="3605391260292846248">"Ifoni"</string>
+ <string name="unknown" msgid="6993977514360123431">"Akwaziwa"</string>
+ <string name="notification_missedCallTitle" msgid="5060387047205532974">"Ikholi ekulahlekele"</string>
+ <string name="notification_missedWorkCallTitle" msgid="6965463282259034953">"Ugeje ikholi yomsebenzi"</string>
+ <string name="notification_missedCallsTitle" msgid="3910479625507893809">"Amakholi akuphuthele"</string>
+ <string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> amakholi akulahlekele"</string>
+ <string name="notification_missedCallTicker" msgid="6731461957487087769">"Uphuthelwe ikholi ephuma ku-<xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"Phinda ushaye"</string>
+ <string name="notification_missedCall_message" msgid="4054698824390076431">"Umlayezo"</string>
+ <string name="accessibility_call_muted" msgid="2968461092554300779">"Ikholu ithulisiwe"</string>
+ <string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"Isipikha sefoni sinikwe amandla"</string>
+ <string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"Angikwazi ukukhuluma okwamanje. Kwenzenjani?"</string>
+ <string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">" Ngizophinde ngikushayele ucingo."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"Ngizokushayela ucingo emva kwesikhathi"</string>
+ <string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"Angikwazi ukukhuluma okwamanje. Ngicela uphinde ungishayele ucingo kamuva?"</string>
+ <string name="respond_via_sms_setting_title" msgid="4762275482898830160">"Izimpendulo ezisheshayo"</string>
+ <string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"Hlela izimpendulo ezisheshayo"</string>
+ <string name="respond_via_sms_setting_summary" msgid="8054571501085436868"></string>
+ <string name="respond_via_sms_edittext_dialog_title" msgid="6579353156073272157">"Izimpendulo ezisheshayo"</string>
+ <string name="respond_via_sms_confirmation_format" msgid="2932395476561267842">"Umlayezo othunyelwe ku <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
+ <string name="respond_via_sms_failure_format" msgid="5198680980054596391">"Umlayezo uhlulekile ukuthunyelwa ku-<xliff:g id="PHONE_NUMBER">%s</xliff:g>"</string>
+ <string name="enable_account_preference_title" msgid="6949224486748457976">"Ama-akhawunti wokushaya"</string>
+ <string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"Amakholi aphuthumayo kuphela avunyelwe."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"Lolu hlelo lokusebenza alikwazi ukwenza amakhli aphumayo ngaphandle kwemvume yefoni."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"Ukuze wenze ikholi, faka inombolo evumelekile."</string>
+ <string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"Ikholi ayikwazi ukungezwa ngalesi sikhathi."</string>
+ <string name="no_vm_number" msgid="2179959110602180844">"Inombolo engekho yomyalezo wezwi"</string>
+ <string name="no_vm_number_msg" msgid="1339245731058529388">"Ayikho inombolo yomlayezo wezwi egcinwe ekhadini le-SIM."</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"Engeza inombolo"</string>
+ <string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"Yenza i-<xliff:g id="NEW_APP">%s</xliff:g> uhlelo lwakho lwefoni oluzenzakalelayo?"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"Setha okuzenzakalelayo"</string>
+ <string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"Khansela"</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> Uzokwazi ukubeka nokulawula zonke izinto zamakholi. Izinhlelo zokusebenza kuphela ozithembayo ezingasethwa njengohlelo lokusebenza oluzenzakalelayo lefoni."</string>
+ <string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"Yenza i-<xliff:g id="NEW_APP">%s</xliff:g> uhlelo lwakho lokusebenza lokuhlola ikholi?"</string>
+ <string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"<xliff:g id="OLD_APP">%s</xliff:g> ngeke isakwazi ukuhlola amakholi."</string>
+ <string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"<xliff:g id="NEW_APP">%s</xliff:g> izokwazi ukubona ulwazi mayelana nabashayayo abangekho koxhumana nabo futhi izokwai ukuvimbela lawo makholi. Izinhlelo zokusebenza kuphela ozethembayo okufanele zisethwe njengohlelo lokusebenza lokulola oluzenzakalelayo."</string>
+ <string name="change_default_call_screening_dialog_affirmative" msgid="7162433828280058647">"Setha okuzenzakalelayo"</string>
+ <string name="change_default_call_screening_dialog_negative" msgid="1839266125623106342">"Khansela"</string>
+ <string name="blocked_numbers" msgid="8322134197039865180">"Izinombolo ezivinjiwe"</string>
+ <string name="blocked_numbers_msg" msgid="2797422132329662697">"Ngeke uthole amakholi noma imibhalo kusuka kuzinombolo ezivinjelwe."</string>
+ <string name="block_number" msgid="3784343046852802722">"Engeza inombolo"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"Vulela i-<xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"Vulela"</string>
+ <string name="add_blocked_dialog_body" msgid="8599974422407139255">"Vimba amakholi nemibhalo kusukela ku-"</string>
+ <string name="add_blocked_number_hint" msgid="8769422085658041097">"Inombolo yefoni"</string>
+ <string name="block_button" msgid="485080149164258770">"Vimba"</string>
+ <string name="non_primary_user" msgid="315564589279622098">"Umnikazi wedivayisi kuphela ongabuka aphinde aphathe izinombolo ezivinjelwe."</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"Vulela"</string>
+ <string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"Ukuvimbela kuvaliwe okwesikhashana"</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"Ngemuva kokudayela noma ubhalele inombolo yesimo esiphuthumayo, ukuvimbela kuvaliwe ukuqinisekisa amasevisi esimo esiphuthumayo angakwazi ukuxhumana nawe."</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"Nika amandla manje"</string>
+ <string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"I-<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> ivinjiwe"</string>
+ <string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"I-<xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> ayivinjiwe"</string>
+ <string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"Ayikwazi ukuvimba inombolo yesimo esiphuthumayo."</string>
+ <string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"I-<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> isivele ivinjiwe."</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"Ukusebenzisa okokudayila komuntu siqu ukwenza ikholi"</string>
+ <string name="notification_incoming_call" msgid="1233481138362230894">"<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="5795968314037063900">"<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="8653544281903986641">"Ukuphendula kuzoqeda ikholi yakho ye-<xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+ <string name="answering_ends_other_calls" msgid="3702302838456922535">"Ukuphendula kuzoqeda amakholi akho e-<xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+ <string name="answering_ends_other_video_call" msgid="8572022039304239958">"Ukuphendula kuzoqeda ikholi yakho yevidiyo ye-<xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
+ <string name="answering_ends_other_managed_call" msgid="4031778317409881805">"Ukuphendula kuzoqeda ikholi yakho eqhubekayo"</string>
+ <string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"Ukuphendula kuzoqeda amakholi akho aqhubekayo"</string>
+ <string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"Ukuphendula kuzoqeda ikholi yakho yevidiyo eqhubekayo"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"Phendula"</string>
+ <string name="decline_incoming_call" msgid="922147089348451310">"Yenqaba"</string>
+ <string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"Ikholi ayikwazi ukubekwa ngoba awasekho ama-akhawunti okushaya asekela amakholi walolu hlobo."</string>
+ <string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"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="6379163795277824868">"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="8243532328969433172">"Ikholi ayikwazi ukwenziwa ngenxa yekholi kolunye uhlelo lokusebenza."</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"Amakholi angenayo"</string>
+ <string name="notification_channel_missed_call" msgid="7168893015283909012">"Amakholi akuphuthile"</string>
+ <string name="notification_channel_call_blocking" msgid="2028807677868598710">"Ukuvimbela ikholi"</string>
+ <string name="alert_outgoing_call" msgid="5319895109298927431">"Ukwenza le kholi kuzoqeda enye ikholi yakho ye-<xliff:g id="OTHER_APP">%1$s</xliff:g>."</string>
+ <string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Khetha ukuthi uyibeka kanjani le kholi"</string>
+ <string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Qondisa kabusha ikholi usebenzisa i-<xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
+ <string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"Shaya usebenzisa inombolo yami yefoni"</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"Ikholi ayikwazi ukwenziwa i-<xliff:g id="OTHER_APP">%1$s</xliff:g>. Zama ukusebenzisa uhlelo lokusebenza oluhlukile lokuqondisa kabusha ikholi noma uxhumane nonjiniyela ukuze uthole usizo."</string>
+ <string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"Ukuvimbela ikholi"</string>
+ <string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"Inombolo ayikho koxhumana nabo"</string>
+ <string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"Vimbela izinombolo ezingafakiwe kuhlu loxhumana nabo"</string>
+ <string name="phone_settings_private_num_txt" msgid="6339272760338475619">"Kuyimfihlo"</string>
+ <string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"Vimbela abashayayo abangayidaluli inombolo yabo"</string>
+ <string name="phone_settings_payphone_txt" msgid="5003987966052543965">"Ifoni ekhokhelwayo"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"Vimbela amakholi kusukela kumafoni akhokhelwayo"</string>
+ <string name="phone_settings_unknown_txt" msgid="3577926178354772728">"Akwaziwa"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"Vimbela amakholi kusukela kwabashayayo abangaziwa"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"Ukuvimbela ikholi"</string>
+ <string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"Ukuvimbela ikholi kukhutshaziwe"</string>
+ <string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"Ikholi ephuthumayo yenziwe"</string>
+ <string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt" msgid="3140411733995271126">"Ukuvimbela ikholi kukhutshaziwe ukuze kuvunyelwe abaphenduli besimo esiphuthumayo ukuthi baxhumane nawe."</string>
+ <string name="developer_title" msgid="9146088855661672353">"Imenyu yonjiniyela we-Telecom"</string>
</resources>
diff --git a/res/values/colors.xml b/res/values/colors.xml
index 8ff0b8e..144f699 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -15,17 +15,21 @@
-->
<resources>
+ <!--follows the dialer theme color-->
<color name="theme_color">#2a56c6</color>
+ <color name="background_color">#fafafa</color>
- <color name="dialer_settings_actionbar_text_color">#ffffff</color>
- <color name="dialer_settings_actionbar_background_color">@color/theme_color</color>
- <color name="dialer_settings_color_dark">#1c3aa9</color>
+ <!--Use the one consistence with dialer-->
+ <color name="blocked_numbers_divider_color">#d8d8d8</color>
+ <color name="blocked_numbers_primary_text_color">#202124</color>
+ <color name="blocked_numbers_secondary_text_color">#5f6368</color>
- <color name="blocked_numbers_divider_color">#e5e5e5</color>
- <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>
-
+ <!--follows dialer color-->
<color name="notification_action_answer">#097138</color>
<color name="notification_action_decline">#A52714</color>
+
+ <color name="call_redirection_dialog_icon_tint_color">#4089F4</color>
+ <color name="call_redirection_dialog_text_color">#212121</color>
+ <color name="call_redirection_dialog_view_divider_color">#B8B8B8</color>
+
</resources>
diff --git a/res/values/config.xml b/res/values/config.xml
index 8c84688..5b9636d 100644
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -27,9 +27,6 @@
handle playing of the tones. -->
<bool name="allow_local_dtmf_tones">true</bool>
- <!-- Package name for the default in-call UI and dialer [DO NOT TRANSLATE] -->
- <string name="ui_default_package" translatable="false">com.android.dialer</string>
-
<!-- Class name for the default in-call UI Service [DO NOT TRANSLATE] -->
<string name="incall_default_class" translatable="false">com.android.incallui.InCallServiceImpl</string>
@@ -60,4 +57,21 @@
between repeats of the ringtone.
When false, the ringtone will be looping with no pause. -->
<bool name="should_pause_between_ringtone_repeats">true</bool>
+
+ <!-- Threshold for the X+Y component of gravity needed for the device orientation to be
+ classified as being on a user's ear. -->
+ <item name="device_on_ear_xy_gravity_threshold" format="float" type="dimen">5.5</item>
+
+ <!-- Lower threshold for the Y-component of gravity needed for the device orientation to be
+ classified as being on a user's ear. If the Y-component is less than this negative value,
+ the device is probably upside-down and therefore not on a ear -->
+ <item name="device_on_ear_y_gravity_negative_threshold" format="float" type="dimen">-1</item>
+
+ <!-- When true, an option is shown in the call blocking screen which allows the user to block
+ all incoming calls from callers not in their contacts. -->
+ <bool name="show_option_to_block_callers_not_in_contacts">false</bool>
+
+ <!-- When true, the options in the call blocking settings to block restricted and unknown
+ callers are combined into a single toggle. -->
+ <bool name="combine_options_to_block_restricted_and_unknown_callers">true</bool>
</resources>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 7b085ad..52b688c 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -27,9 +27,19 @@
<dimen name="blocked_numbers_dialog_padding">24dp</dimen>
<dimen name="blocked_numbers_delete_icon_padding">12dp</dimen>
<dimen name="blocked_numbers_progress_bar_padding">100dp</dimen>
- <dimen name="blocked_numbers_font_size">16sp</dimen>
+ <dimen name="blocked_numbers_head1_font_size">18sp</dimen>
+ <dimen name="blocked_numbers_primary2_font_size">16sp</dimen>
<dimen name="blocked_numbers_secondary_font_size">14sp</dimen>
<dimen name="blocked_numbers_line_spacing">8sp</dimen>
<dimen name="blocked_numbers_secondary_line_spacing">6sp</dimen>
<dimen name="blocked_numbers_divider_stroke">1dp</dimen>
+
+ <dimen name="call_redirection_dialog_title_font_size">18sp</dimen>
+ <dimen name="call_redirection_dialog_button_font_size">16sp</dimen>
+ <dimen name="call_redirection_dialog_image_upper_margin">16dp</dimen>
+ <dimen name="call_redirection_dialog_image_bottom_margin">10dp</dimen>
+ <dimen name="call_redirection_dialog_title_bottom_margin">26dp</dimen>
+ <dimen name="call_redirection_dialog_button_text_upper_bottom_margin">15dp</dimen>
+ <dimen name="call_redirection_dialog_button_text_left_margin">15dp</dimen>
+
</resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index bb63ad2..e4e588c 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -79,6 +79,10 @@
a text response. [CHAR LIMIT=40] -->
<string name="respond_via_sms_confirmation_format">Message sent to <xliff:g id="phone_number">%s</xliff:g>.</string>
+ <!-- "Respond via SMS": Error toast shown after failing to send
+ a text response. [CHAR LIMIT=40] -->
+ <string name="respond_via_sms_failure_format">Message failed to send to <xliff:g id="phone_number">%s</xliff:g>.</string>
+
<!-- Title of settings screen that allows user to enable and disable phone-accounts.
Each method for placing a call (SIM1, SIM2, SIP account, etc) has a phone-account.
Phone-accounts that are created by third party apps can be disabled and enabled by user.
@@ -107,7 +111,7 @@
<!-- Button label on the "Missing voicemail number" dialog -->
<string name="add_vm_number_str">Add number</string>
- <!-- Title of dialog used to comfirm whether the user intends to change the default dialer
+ <!-- Title of dialog used to confirm whether the user intends to change the default dialer
application [CHAR LIMIT=55]-->
<string name="change_default_dialer_dialog_title">Make <xliff:g id="new_app">%s</xliff:g> your default Phone app?</string>
<!-- Confirmation text that a user taps on to change the Default Phone App-->
@@ -117,6 +121,18 @@
<!-- Warning message indicating what may happen if a user allows a 3rd party app to become the default dialer.-->
<string name="change_default_dialer_warning_message"><xliff:g id="new_app">%s</xliff:g> will be able to place and control all aspects of calls. Only apps you trust should be set as the default Phone app.</string>
+ <!-- Title of dialog used to confirm whether the user intends to change the default call screening
+ application [CHAR LIMIT=55]-->
+ <string name="change_default_call_screening_dialog_title">Make <xliff:g id="new_app">%s</xliff:g> your default call screening app?</string>
+ <!-- Warning message indicating the old call screening app will no longer be able to screen calls.-->
+ <string name="change_default_call_screening_warning_message_for_disable_old_app"><xliff:g id="old_app">%s</xliff:g> will no longer be able to screen calls.</string>
+ <!-- Warning message indicating what may happen if a user allows a 3rd party app to become the default call screening.-->
+ <string name="change_default_call_screening_warning_message"><xliff:g id="new_app">%s</xliff:g> will be able to see information about callers not in your contacts and will be able to block these calls. Only apps you trust should be set as the default call screening app.</string>
+ <!-- Confirmation text that a user taps on to change the Default call screening App-->
+ <string name="change_default_call_screening_dialog_affirmative">Set Default</string>
+ <!-- Cancel text that a user taps on to not change the Default call screening App-->
+ <string name="change_default_call_screening_dialog_negative">Cancel</string>
+
<!-- Blocked numbers -->
<string name="blocked_numbers">Blocked numbers</string>
<!-- Text shown at the beginning of the blocked numbers screen to explain what the screen is about. -->
@@ -233,6 +249,12 @@
<!-- 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 because there no
+ calling service is present on the device which supports this call type.
+ This is typically encountered when the user tries to dial a SIP/VOIP call, but there are
+ no calling services present which support SIP calling. [CHAR LIMIT=none] -->
+ <string name="cant_call_due_to_no_supported_service">Call cannot be placed because there are no calling accounts which support calls of this type.</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] -->
@@ -259,6 +281,18 @@
ongoing call in the app "other_app". -->
<string name="alert_outgoing_call">Placing this call will end your <xliff:g id="other_app">%1$s</xliff:g> call.</string>
+ <!-- Alert dialog content used to ask the user to confirm if they want to place a new outgoing call redirected by the app "other_app". -->
+ <string name="alert_redirect_outgoing_call_or_not">Choose how to place this call</string>
+
+ <!-- A button in the alert dialog "alert_redirect_outgoing_call" to place the call with the redirected number provided by App. -->
+ <string name="alert_place_outgoing_call_with_redirection">Redirect call using <xliff:g id="other_app">%1$s</xliff:g></string>
+
+ <!-- A button in the alert dialog "alert_redirect_outgoing_call" to place the call without the redirected number provided by App. -->
+ <string name="alert_place_unredirect_outgoing_call">Call using my phone number</string>
+
+ <!-- Alert dialog content used to tell the user the call is canceled because no response from the call redirection app "other_app". -->
+ <string name="alert_redirect_outgoing_call_timeout">Call can\'t be placed by <xliff:g id="other_app">%1$s</xliff:g>. Try using a different call redirecting app or contacting the developer for help.</string>
+
<!-- The name of a feature available under the Call settings. -->
<string name="phone_settings_call_blocking_txt">Call Blocking</string>
<!-- Call type to be blocked. See the explanatory text "phone_settings_number_not_in_contact_summary_txt". -->
@@ -285,4 +319,10 @@
<string name="phone_strings_emergency_call_made_dialog_title_txt">Emergency call made</string>
<!-- Notification details that appear when the user taps the notification "phone_strings_call_blocking_turned_off_notification_text_txt". -->
<string name="phone_strings_emergency_call_made_dialog_call_blocking_text_txt">Call Blocking has been disabled to allow emergency responders to contact you.</string>
+ <!-- Window title used for the Telecom Developer Menu -->
+ <string name="developer_title">Telecom Developer Menu</string>
+ <!-- Label for a switch in the Telecom Developer Menu which is used to enable the enhanced call
+ blocking functionality (for test purposes).
+ DO NOT TRANSLATE -->
+ <string name="developer_enhanced_call_blocking" translatable="false">Enhanced Call Blocking</string>
</resources>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 3216719..187086b 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -15,7 +15,8 @@
-->
<resources>
- <style name="Theme.Telecomm.Transparent" parent="@android:style/Theme.Material.Light">
+ <style name="Theme.Telecomm.Transparent" parent="@android:style/Theme.DeviceDefault.Light">
+ <item name="android:forceDarkAllowed">true</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowContentOverlay">@null</item>
@@ -25,59 +26,69 @@
<item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
</style>
- <style name="Theme.Telecom.DialerSettings" parent="@android:style/Theme.Material.Light">
+ <style name="Theme.Telecom.DialerSettings" parent="@android:style/Theme.DeviceDefault.Light">
+ <item name="android:forceDarkAllowed">true</item>
+ <item name="android:tint">@color/blocked_numbers_secondary_text_color</item>
<item name="android:actionBarStyle">@style/TelecomDialerSettingsActionBarStyle</item>
<item name="android:actionOverflowButtonStyle">@style/TelecomDialerSettingsActionOverflowButtonStyle</item>
- <item name="android:colorPrimaryDark">@color/dialer_settings_color_dark</item>
- <item name="android:homeAsUpIndicator">@drawable/ic_back_arrow</item>
+ <item name="android:colorPrimaryDark">@color/background_color</item>
+ <item name="android:windowLightStatusBar">true</item>
+ <item name="android:navigationBarColor">@color/background_color</item>
+ <item name="android:navigationBarDividerColor">@color/blocked_numbers_divider_color</item>
+ <item name="android:windowLightNavigationBar">true</item>
<item name="android:windowContentOverlay">@null</item>
</style>
- <style name="Theme.Telecom.BlockedNumbers" parent="@android:style/Theme.Material.Light">
+ <style name="Theme.Telecom.BlockedNumbers" parent="@android:style/Theme.DeviceDefault.Light">
+ <item name="android:forceDarkAllowed">true</item>
+ <item name="android:tint">@color/blocked_numbers_secondary_text_color</item>
<item name="android:actionBarStyle">@style/TelecomDialerSettingsActionBarStyle</item>
- <item name="android:colorPrimaryDark">@color/dialer_settings_color_dark</item>
- <item name="android:homeAsUpIndicator">@drawable/ic_back_arrow</item>
+ <item name="android:colorPrimaryDark">@color/background_color</item>
+ <item name="android:windowLightStatusBar">true</item>
+ <item name="android:navigationBarColor">@color/background_color</item>
+ <item name="android:navigationBarDividerColor">@color/blocked_numbers_divider_color</item>
+ <item name="android:windowLightNavigationBar">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:colorAccent">@color/theme_color</item>
<item name="android:listDivider">@null</item>
</style>
- <style name="TelecomDialerSettingsActionBarStyle" parent="android:Widget.Material.ActionBar">
- <item name="android:background">@color/dialer_settings_actionbar_background_color</item>
- <item name="android:titleTextStyle">@style/TelecomDialerSettingsActionBarTitleText</item>
+ <style name="TelecomDialerSettingsActionBarStyle" parent="android:Widget.DeviceDefault.ActionBar">
+ <item name="android:background">@color/background_color</item>
+ <item name="android:titleTextStyle">@style/BlockedNumbersTextHead1</item>
<item name="android:elevation">@dimen/dialer_settings_actionbar_elevation</item>
<!-- Empty icon -->
<item name="android:icon">@android:color/transparent</item>
</style>
- <style name="TelecomDialerSettingsActionBarTitleText"
- parent="@android:style/TextAppearance.Material.Widget.ActionBar.Title">
- <item name="android:textColor">@color/dialer_settings_actionbar_text_color</item>
- </style>
-
<style name="TelecomDialerSettingsActionOverflowButtonStyle"
- parent="@android:style/Widget.Material.Light.ActionButton.Overflow">
+ parent="@android:style/Widget.DeviceDefault.Light.ActionButton.Overflow">
<item name="android:src">@drawable/ic_more_vert_24dp</item>
</style>
- <style name="BlockedNumbersButton">
+ <style name="BlockedNumbersButton" parent="BlockedNumbersTextPrimary2">
<item name="android:textColor">@color/theme_color</item>
- <item name="android:textSize">@dimen/blocked_numbers_font_size</item>
<item name="android:textAllCaps">true</item>
</style>
- <style name="BlockedNumbersText">
- <item name="android:textSize">@dimen/blocked_numbers_font_size</item>
+ <style name="BlockedNumbersTextHead1"
+ parent="@android:style/TextAppearance.DeviceDefault.Widget.ActionBar.Title">
+ <item name="android:textColor">@color/blocked_numbers_primary_text_color</item>
+ <item name="android:textSize">@dimen/blocked_numbers_head1_font_size</item>
+ <item name="android:fontFamily">sans-serif-regular</item>
+ </style>
+
+ <style name="BlockedNumbersTextPrimary2">
+ <item name="android:textColor">@color/blocked_numbers_primary_text_color</item>
+ <item name="android:textSize">@dimen/blocked_numbers_primary2_font_size</item>
+ <item name="android:fontFamily">sans-serif-regular</item>
<item name="android:lineSpacingExtra">@dimen/blocked_numbers_line_spacing</item>
</style>
- <style name="BlockedNumbersTitleText" parent="BlockedNumbersText">
- <item name="android:textColor">@color/blocked_numbers_title_text_color</item>
- </style>
-
- <style name="BlockedNumbersSecondaryText">
+ <style name="BlockedNumbersTextSecondary">
<item name="android:textColor">@color/blocked_numbers_secondary_text_color</item>
<item name="android:textSize">@dimen/blocked_numbers_secondary_font_size</item>
+ <item name="android:fontFamily">sans-serif-regular</item>
<item name="android:lineSpacingExtra">@dimen/blocked_numbers_secondary_line_spacing</item>
</style>
</resources>
diff --git a/res/xml/activity_blocked_numbers.xml b/res/xml/activity_blocked_numbers.xml
index 15e1859..e137313 100644
--- a/res/xml/activity_blocked_numbers.xml
+++ b/res/xml/activity_blocked_numbers.xml
@@ -43,7 +43,7 @@
android:paddingTop="@dimen/blocked_numbers_large_padding"
android:paddingLeft="@dimen/blocked_numbers_large_padding"
android:paddingRight="@dimen/blocked_numbers_large_padding"
- style="@style/BlockedNumbersTitleText"
+ style="@style/BlockedNumbersTextPrimary2"
android:visibility="gone" />
<LinearLayout
@@ -70,7 +70,7 @@
android:layout_height="wrap_content"
android:text="@string/blocked_numbers_msg"
android:paddingBottom="@dimen/blocked_numbers_extra_large_padding"
- style="@style/BlockedNumbersTitleText" />
+ style="@style/BlockedNumbersTextPrimary2" />
<TextView
android:id="@+id/add_blocked"
diff --git a/res/xml/add_blocked_number_dialog.xml b/res/xml/add_blocked_number_dialog.xml
index ed7d507..35ab633 100644
--- a/res/xml/add_blocked_number_dialog.xml
+++ b/res/xml/add_blocked_number_dialog.xml
@@ -20,18 +20,22 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
+ android:gravity="start"
android:padding="@dimen/blocked_numbers_dialog_padding">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/add_blocked_dialog_body"
android:paddingBottom="@dimen/blocked_numbers_large_padding"
- style="@style/BlockedNumbersTitleText" />
+ android:gravity="start"
+ style="@style/BlockedNumbersTextPrimary2" />
<EditText
android:id="@+id/add_blocked_number"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="@dimen/blocked_numbers_large_padding"
+ android:textDirection="locale"
+ android:textAlignment="viewStart"
android:hint="@string/add_blocked_number_hint"
android:inputType="phone" />
-</LinearLayout>
\ No newline at end of file
+</LinearLayout>
diff --git a/res/xml/blocking_suppressed_butterbar.xml b/res/xml/blocking_suppressed_butterbar.xml
index d6a8472..8b941b9 100644
--- a/res/xml/blocking_suppressed_butterbar.xml
+++ b/res/xml/blocking_suppressed_butterbar.xml
@@ -19,7 +19,7 @@
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:background="@color/blocked_numbers_butter_bar_color">
+ android:background="@color/background_color">
<ImageView
android:id="@+id/icon"
@@ -39,7 +39,7 @@
android:paddingTop="@dimen/blocked_numbers_large_padding"
android:paddingRight="@dimen/blocked_numbers_large_padding"
android:text="@string/blocked_numbers_butter_bar_title"
- style="@style/BlockedNumbersTitleText" />
+ style="@style/BlockedNumbersTextPrimary2" />
<TextView
android:id="@+id/description"
@@ -51,7 +51,7 @@
android:paddingBottom="@dimen/blocked_numbers_large_padding"
android:paddingRight="@dimen/blocked_numbers_large_padding"
android:text="@string/blocked_numbers_butter_bar_body"
- style="@style/BlockedNumbersSecondaryText" />
+ style="@style/BlockedNumbersTextSecondary" />
<TextView
android:id="@+id/reenable_button"
diff --git a/res/xml/layout_blocked_number.xml b/res/xml/layout_blocked_number.xml
index fbd7de3..720d71a 100644
--- a/res/xml/layout_blocked_number.xml
+++ b/res/xml/layout_blocked_number.xml
@@ -20,7 +20,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:focusable="true"
- style="@style/BlockedNumbersText"
+ style="@style/BlockedNumbersTextPrimary2"
android:gravity="start">
<TextView
diff --git a/scripts/telecom_testing.sh b/scripts/telecom_testing.sh
index 779f449..788597b 100644
--- a/scripts/telecom_testing.sh
+++ b/scripts/telecom_testing.sh
@@ -58,12 +58,12 @@
build_dir="packages/services/Telecomm/tests"
apk_loc="data/app/TelecomUnitTests/TelecomUnitTests.apk"
package_prefix="com.android.server.telecom.tests"
- instrumentation="android.support.test.runner.AndroidJUnitRunner";;
+ instrumentation="androidx.test.runner.AndroidJUnitRunner";;
"telephony")
build_dir="frameworks/opt/telephony/tests/"
apk_loc="data/app/FrameworksTelephonyTests/FrameworksTelephonyTests.apk"
package_prefix="com.android.frameworks.telephonytests"
- instrumentation="android.support.test.runner.AndroidJUnitRunner";;
+ instrumentation="androidx.test.runner.AndroidJUnitRunner";;
esac
local T=$(gettop)
@@ -121,7 +121,7 @@
if [ $coverage = true ] && [ $project =~ "telecom" ] ; then
e_options="${e_options} -e coverage 'true'"
fi
- adb shell am instrument ${e_options} -w "$package_prefix/$instrumentation"
+ adb shell am instrument --no-hidden-api-checks ${e_options} -w "$package_prefix/$instrumentation"
# Code coverage only enabled for Telecom.
if [ $coverage = true ] && [ $project =~ "telecom" ] ; then
diff --git a/src/com/android/server/telecom/Analytics.java b/src/com/android/server/telecom/Analytics.java
index d2cdeca..1d3a90e 100644
--- a/src/com/android/server/telecom/Analytics.java
+++ b/src/com/android/server/telecom/Analytics.java
@@ -31,6 +31,9 @@
import com.android.server.telecom.nano.TelecomLogClass;
import java.io.PrintWriter;
+import java.time.Instant;
+import java.time.ZoneOffset;
+import java.time.ZonedDateTime;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@@ -39,6 +42,7 @@
import java.util.List;
import java.util.Map;
import java.util.PriorityQueue;
+import java.util.concurrent.LinkedBlockingDeque;
import java.util.stream.Collectors;
import static android.telecom.ParcelableCallAnalytics.AnalyticsEvent;
@@ -165,6 +169,9 @@
public void setCallIsAdditional(boolean isAdditional) {
}
+ public void setCallIsEmergency(boolean isEmergency) {
+ }
+
public void setCallIsInterrupted(boolean isInterrupted) {
}
@@ -305,6 +312,12 @@
}
@Override
+ public void setCallIsEmergency(boolean isEmergency) {
+ Log.d(TAG, "setting call as emergency: " + isEmergency);
+ this.isEmergency = isEmergency;
+ }
+
+ @Override
public void setCallDisconnectCause(DisconnectCause disconnectCause) {
Log.d(TAG, "setting disconnectCause for call " + callId + " to " + disconnectCause);
this.callTerminationReason = disconnectCause;
@@ -376,6 +389,7 @@
+ " direction: " + getCallDirectionString() + '\n'
+ " isAdditionalCall: " + isAdditionalCall + '\n'
+ " isInterrupted: " + isInterrupted + '\n'
+ + " isEmergency: " + isEmergency + '\n'
+ " callTechnologies: " + getCallTechnologiesAsString() + '\n'
+ " callTerminationReason: " + getCallDisconnectReasonString() + '\n'
+ " connectionService: " + connectionService + '\n'
@@ -568,8 +582,11 @@
public static final long MILLIS_IN_1_SECOND = ParcelableCallAnalytics.MILLIS_IN_1_SECOND;
public static final int MAX_NUM_CALLS_TO_STORE = 100;
+ public static final int MAX_NUM_DUMP_TIMES_TO_STORE = 100;
private static final Object sLock = new Object(); // Coarse lock for all of analytics
+ private static final LinkedBlockingDeque<Long> sDumpTimes =
+ new LinkedBlockingDeque<>(MAX_NUM_DUMP_TIMES_TO_STORE);
private static final Map<String, CallInfoImpl> sCallIdToInfo = new HashMap<>();
private static final LinkedList<String> sActiveCallIds = new LinkedList<>();
private static final List<SessionTiming> sSessionTimings = new LinkedList<>();
@@ -615,6 +632,7 @@
TelecomLogClass.TelecomLog result = new TelecomLogClass.TelecomLog();
synchronized (sLock) {
+ noteDumpTime();
result.callLogs = sCallIdToInfo.values().stream()
.map(CallInfoImpl::toProto)
.toArray(TelecomLogClass.CallLog[]::new);
@@ -670,6 +688,12 @@
.forEach(e -> writer.printf("%s: %.2f\n",
sSessionIdToLogSession.get(e.getKey()), e.getValue()));
writer.println("Hardware Version: " + SystemProperties.get("ro.boot.revision", ""));
+ writer.println("Past analytics dumps: ");
+ writer.increaseIndent();
+ for (long time : sDumpTimes) {
+ writer.println(Instant.ofEpochMilli(time).atZone(ZoneOffset.UTC));
+ }
+ writer.decreaseIndent();
}
}
@@ -679,6 +703,17 @@
}
}
+ public static void noteDumpTime() {
+ if (sDumpTimes.remainingCapacity() == 0) {
+ sDumpTimes.removeLast();
+ }
+ try {
+ sDumpTimes.addFirst(System.currentTimeMillis());
+ } catch (IllegalStateException e) {
+ Log.w(TAG, "Failed to note dump time -- full");
+ }
+ }
+
/**
* Returns a copy of callIdToInfo. Use only for testing.
*/
diff --git a/src/com/android/server/telecom/AsyncRingtonePlayer.java b/src/com/android/server/telecom/AsyncRingtonePlayer.java
index 0940429..3745bc5 100644
--- a/src/com/android/server/telecom/AsyncRingtonePlayer.java
+++ b/src/com/android/server/telecom/AsyncRingtonePlayer.java
@@ -16,7 +16,11 @@
package com.android.server.telecom;
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.media.AudioAttributes;
import android.media.Ringtone;
+import android.media.VolumeShaper;
import android.net.Uri;
import android.os.Handler;
import android.os.HandlerThread;
@@ -27,6 +31,8 @@
import com.android.internal.os.SomeArgs;
import com.android.internal.util.Preconditions;
+import java.util.concurrent.CompletableFuture;
+
/**
* Plays the default ringtone. Uses {@link Ringtone} in a separate thread so that this class can be
* used from the main thread.
@@ -48,6 +54,12 @@
private Ringtone mRingtone;
/**
+ * CompletableFuture which signals a caller when we know whether a ringtone will play haptics
+ * or not.
+ */
+ private CompletableFuture<Boolean> mHapticsFuture = null;
+
+ /**
* Determines if the {@link AsyncRingtonePlayer} should pause between repeats of the ringtone.
* When {@code true}, the system will check if the ringtone has stopped every
* {@link #RESTART_RINGER_MILLIS} and restart the ringtone if it has stopped. This does not
@@ -67,13 +79,36 @@
mShouldPauseBetweenRepeat = shouldPauseBetweenRepeat;
}
- /** Plays the ringtone. */
- public void play(RingtoneFactory factory, Call incomingCall) {
+ /**
+ * Plays the appropriate ringtone for the specified call.
+ * If {@link VolumeShaper.Configuration} is specified, it is applied to the ringtone to change
+ * the volume of the ringtone as it plays.
+ *
+ * @param factory The {@link RingtoneFactory}.
+ * @param incomingCall The ringing {@link Call}.
+ * @param volumeShaperConfig An optional {@link VolumeShaper.Configuration} which is applied to
+ * the ringtone to change its volume while it rings.
+ * @param isVibrationEnabled {@code true} if the settings and DND configuration of the device
+ * is such that the vibrator should be used, {@code false} otherwise.
+ * @return A {@link CompletableFuture} which on completion indicates whether or not the ringtone
+ * has a haptic track. {@code True} indicates that a haptic track is present on the
+ * ringtone; in this case the default vibration in {@link Ringer} should not be played.
+ * {@code False} indicates that a haptic track is NOT present on the ringtone;
+ * in this case the default vibration in {@link Ringer} should be trigger if needed.
+ */
+ public @NonNull CompletableFuture<Boolean> play(RingtoneFactory factory, Call incomingCall,
+ @Nullable VolumeShaper.Configuration volumeShaperConfig, boolean isVibrationEnabled) {
Log.d(this, "Posting play.");
+ if (mHapticsFuture == null) {
+ mHapticsFuture = new CompletableFuture<>();
+ }
SomeArgs args = SomeArgs.obtain();
args.arg1 = factory;
args.arg2 = incomingCall;
+ args.arg3 = volumeShaperConfig;
+ args.arg4 = isVibrationEnabled;
postMessage(EVENT_PLAY, true /* shouldCreateHandler */, args);
+ return mHapticsFuture;
}
/** Stops playing the ringtone. */
@@ -136,9 +171,13 @@
private void handlePlay(SomeArgs args) {
RingtoneFactory factory = (RingtoneFactory) args.arg1;
Call incomingCall = (Call) args.arg2;
+ VolumeShaper.Configuration volumeShaperConfig = (VolumeShaper.Configuration) args.arg3;
+ boolean isVibrationEnabled = (boolean) args.arg4;
args.recycle();
// don't bother with any of this if there is an EVENT_STOP waiting.
if (mHandler.hasMessages(EVENT_STOP)) {
+ mHapticsFuture.complete(false /* ringtoneHasHaptics */);
+ mHapticsFuture = null;
return;
}
@@ -146,22 +185,47 @@
// anything.
if(Uri.EMPTY.equals(incomingCall.getRingtone())) {
mRingtone = null;
+ mHapticsFuture.complete(false /* ringtoneHasHaptics */);
+ mHapticsFuture = null;
return;
}
ThreadUtil.checkNotOnMainThread();
- Log.i(this, "Play ringtone.");
+ Log.i(this, "handlePlay: Play ringtone.");
if (mRingtone == null) {
- mRingtone = factory.getRingtone(incomingCall);
+ mRingtone = factory.getRingtone(incomingCall, volumeShaperConfig);
if (mRingtone == null) {
Uri ringtoneUri = incomingCall.getRingtone();
String ringtoneUriString = (ringtoneUri == null) ? "null" :
ringtoneUri.toSafeString();
Log.addEvent(null, LogUtils.Events.ERROR_LOG, "Failed to get ringtone from " +
"factory. Skipping ringing. Uri was: " + ringtoneUriString);
+ mHapticsFuture.complete(false /* ringtoneHasHaptics */);
+ mHapticsFuture = null;
return;
}
+
+ // With the ringtone to play now known, we can determine if it has haptic channels or
+ // not; we will complete the haptics future so the default vibration code in Ringer
+ // can know whether to trigger the vibrator.
+ if (mHapticsFuture != null && !mHapticsFuture.isDone()) {
+ boolean hasHaptics = factory.hasHapticChannels(mRingtone);
+
+ Log.i(this, "handlePlay: hasHaptics=%b, isVibrationEnabled=%b", hasHaptics,
+ isVibrationEnabled);
+ if (hasHaptics) {
+ AudioAttributes attributes = mRingtone.getAudioAttributes();
+ Log.d(this, "handlePlay: %s haptic channel",
+ (isVibrationEnabled ? "unmuting" : "muting"));
+ mRingtone.setAudioAttributes(
+ new AudioAttributes.Builder(attributes)
+ .setHapticChannelsMuted(!isVibrationEnabled)
+ .build());
+ }
+ mHapticsFuture.complete(hasHaptics);
+ mHapticsFuture = null;
+ }
}
if (mShouldPauseBetweenRepeat) {
@@ -170,6 +234,10 @@
handleRepeat();
} else {
mRingtone.setLooping(true);
+ if (mRingtone.isPlaying()) {
+ Log.d(this, "Ringtone already playing.");
+ return;
+ }
mRingtone.play();
Log.i(this, "Play ringtone, looping.");
}
@@ -179,7 +247,6 @@
if (mRingtone == null) {
return;
}
-
if (mRingtone.isPlaying()) {
Log.d(this, "Ringtone already playing.");
} else {
diff --git a/src/com/android/server/telecom/BluetoothHeadsetProxy.java b/src/com/android/server/telecom/BluetoothHeadsetProxy.java
index 0f492df..a43b3cd 100644
--- a/src/com/android/server/telecom/BluetoothHeadsetProxy.java
+++ b/src/com/android/server/telecom/BluetoothHeadsetProxy.java
@@ -43,9 +43,10 @@
}
public void phoneStateChanged(int numActive, int numHeld, int callState, String number,
- int type) {
+ int type, String name) {
- mBluetoothHeadset.phoneStateChanged(numActive, numHeld, callState, number, type);
+ mBluetoothHeadset.phoneStateChanged(numActive, numHeld, callState, number, type,
+ name);
}
public List<BluetoothDevice> getConnectedDevices() {
@@ -83,4 +84,4 @@
public boolean isInbandRingingEnabled() {
return mBluetoothHeadset.isInbandRingingEnabled();
}
-}
\ No newline at end of file
+}
diff --git a/src/com/android/server/telecom/BluetoothPhoneServiceImpl.java b/src/com/android/server/telecom/BluetoothPhoneServiceImpl.java
index 804909c..33dddbd 100644
--- a/src/com/android/server/telecom/BluetoothPhoneServiceImpl.java
+++ b/src/com/android/server/telecom/BluetoothPhoneServiceImpl.java
@@ -514,8 +514,6 @@
mCallsManager.disconnectCall(activeCall);
if (ringingCall != null) {
mCallsManager.answerCall(ringingCall, VideoProfile.STATE_AUDIO_ONLY);
- } else if (heldCall != null) {
- mCallsManager.unholdCall(heldCall);
}
return true;
}
@@ -585,7 +583,7 @@
*/
private void sendClccForCall(Call call, boolean shouldLog) {
boolean isForeground = mCallsManager.getForegroundCall() == call;
- int state = convertCallState(call.getState(), isForeground);
+ int state = getBtCallState(call, isForeground);
boolean isPartOfConference = false;
boolean isConferenceWithNoChildren = call.isConference() && call
.can(Connection.CAPABILITY_CONFERENCE_HAS_NO_CHILDREN);
@@ -708,11 +706,17 @@
String ringingAddress = null;
int ringingAddressType = 128;
- if (ringingCall != null && ringingCall.getHandle() != null) {
+ String ringingName = null;
+ if (ringingCall != null && ringingCall.getHandle() != null
+ && !ringingCall.isSilentRingingRequested()) {
ringingAddress = ringingCall.getHandle().getSchemeSpecificPart();
if (ringingAddress != null) {
ringingAddressType = PhoneNumberUtils.toaFromString(ringingAddress);
}
+ ringingName = ringingCall.getCallerDisplayName();
+ if (TextUtils.isEmpty(ringingName)) {
+ ringingName = ringingCall.getName();
+ }
}
if (ringingAddress == null) {
ringingAddress = "";
@@ -784,18 +788,21 @@
"numHeld %s, " +
"callState %s, " +
"ringing number %s, " +
- "ringing type %s",
+ "ringing type %s, " +
+ "ringing name %s",
mNumActiveCalls,
mNumHeldCalls,
CALL_STATE_DIALING,
Log.pii(mRingingAddress),
- mRingingAddressType);
+ mRingingAddressType,
+ Log.pii(ringingName));
mBluetoothHeadset.phoneStateChanged(
mNumActiveCalls,
mNumHeldCalls,
CALL_STATE_DIALING,
mRingingAddress,
- mRingingAddressType);
+ mRingingAddressType,
+ ringingName);
}
Log.i(TAG, "updateHeadsetWithCallState " +
@@ -803,26 +810,28 @@
"numHeld %s, " +
"callState %s, " +
"ringing number %s, " +
- "ringing type %s",
+ "ringing type %s, " +
+ "ringing name %s",
mNumActiveCalls,
mNumHeldCalls,
mBluetoothCallState,
Log.pii(mRingingAddress),
- mRingingAddressType);
+ mRingingAddressType,
+ Log.pii(ringingName));
mBluetoothHeadset.phoneStateChanged(
mNumActiveCalls,
mNumHeldCalls,
mBluetoothCallState,
mRingingAddress,
- mRingingAddressType);
+ mRingingAddressType,
+ ringingName);
mHeadsetUpdatedRecently = true;
}
}
private int getBluetoothCallStateForUpdate() {
- CallsManager callsManager = mCallsManager;
Call ringingCall = mCallsManager.getRingingCall();
Call dialingCall = mCallsManager.getOutgoingCall();
boolean hasOnlyDisconnectedCalls = mCallsManager.hasOnlyDisconnectedCalls();
@@ -837,7 +846,7 @@
// bluetooth devices (like not getting out of ringing state after answering a call).
//
int bluetoothCallState = CALL_STATE_IDLE;
- if (ringingCall != null) {
+ if (ringingCall != null && !ringingCall.isSilentRingingRequested()) {
bluetoothCallState = CALL_STATE_INCOMING;
} else if (dialingCall != null) {
bluetoothCallState = CALL_STATE_ALERTING;
@@ -848,8 +857,8 @@
return bluetoothCallState;
}
- private int convertCallState(int callState, boolean isForegroundCall) {
- switch (callState) {
+ private int getBtCallState(Call call, boolean isForeground) {
+ switch (call.getState()) {
case CallState.NEW:
case CallState.ABORTED:
case CallState.DISCONNECTED:
@@ -875,7 +884,10 @@
return CALL_STATE_HELD;
case CallState.RINGING:
- if (isForegroundCall) {
+ case CallState.ANSWERED:
+ if (call.isSilentRingingRequested()) {
+ return CALL_STATE_IDLE;
+ } else if (isForeground) {
return CALL_STATE_INCOMING;
} else {
return CALL_STATE_WAITING;
diff --git a/src/com/android/server/telecom/Call.java b/src/com/android/server/telecom/Call.java
index bc20d1c..ecc6359 100644
--- a/src/com/android/server/telecom/Call.java
+++ b/src/com/android/server/telecom/Call.java
@@ -50,6 +50,7 @@
import android.text.TextUtils;
import android.util.StatsLog;
import android.os.UserHandle;
+import android.widget.Toast;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.telecom.IVideoProvider;
@@ -130,8 +131,10 @@
void onConnectionManagerPhoneAccountChanged(Call call);
void onPhoneAccountChanged(Call call);
void onConferenceableCallsChanged(Call call);
+ void onConferenceStateChanged(Call call, boolean isConference);
boolean onCanceledViaNewOutgoingCallBroadcast(Call call, long disconnectionTimeout);
void onHoldToneRequested(Call call);
+ void onCallHoldFailed(Call call);
void onConnectionEvent(Call call, String event, Bundle extras);
void onExternalCallChanged(Call call, boolean isExternalCall);
void onRttInitiationFailure(Call call, int reason);
@@ -198,12 +201,16 @@
@Override
public void onConferenceableCallsChanged(Call call) {}
@Override
+ public void onConferenceStateChanged(Call call, boolean isConference) {}
+ @Override
public boolean onCanceledViaNewOutgoingCallBroadcast(Call call, long disconnectionTimeout) {
return false;
}
@Override
public void onHoldToneRequested(Call call) {}
@Override
+ public void onCallHoldFailed(Call call) {}
+ @Override
public void onConnectionEvent(Call call, String event, Bundle extras) {}
@Override
public void onExternalCallChanged(Call call, boolean isExternalCall) {}
@@ -246,7 +253,7 @@
/**
* The post-dial digits that were dialed after the network portion of the number
*/
- private final String mPostDialDigits;
+ private String mPostDialDigits;
/**
* The secondary line number that an incoming call has been received on if the SIM subscription
@@ -378,6 +385,9 @@
/** Whether this call is requesting that Telecom play the ringback tone on its behalf. */
private boolean mRingbackRequested = false;
+ /** Whether this call is requesting to be silently ringing. */
+ private boolean mSilentRingingRequested = false;
+
/** Whether direct-to-voicemail query is pending. */
private boolean mDirectToVoicemailQueryPending;
@@ -389,6 +399,8 @@
private boolean mIsConference = false;
+ private boolean mHadChildren = false;
+
private final boolean mShouldAttachToExistingConnection;
private Call mParentCall = null;
@@ -414,7 +426,7 @@
private final TelecomSystem.SyncRoot mLock;
private final String mId;
private String mConnectionId;
- private Analytics.CallInfo mAnalytics;
+ private Analytics.CallInfo mAnalytics = new Analytics.CallInfo();
private char mPlayingDtmfTone;
private boolean mWasConferencePreviouslyMerged = false;
@@ -461,7 +473,7 @@
* Indicates whether the {@link PhoneAccount} associated with this call supports video calling.
* {@code True} if the phone account supports video calling, {@code false} otherwise.
*/
- private boolean mIsVideoCallingSupported = false;
+ private boolean mIsVideoCallingSupportedByPhoneAccount = false;
private PhoneNumberUtilsAdapter mPhoneNumberUtilsAdapter;
@@ -523,18 +535,24 @@
private int mHandoverState = HandoverState.HANDOVER_NONE;
/**
+ * Indicates whether this call is using one of the
+ * {@link com.android.server.telecom.callfiltering.IncomingCallFilter.CallFilter} modules.
+ */
+ private boolean mIsUsingCallFiltering = false;
+
+ /**
* Persists the specified parameters and initializes the new instance.
- * @param context The context.
+ * @param context The context.
* @param repository The connection service repository.
* @param handle The handle to dial.
* @param gatewayInfo Gateway information to use for the call.
* @param connectionManagerPhoneAccountHandle Account to use for the service managing the call.
-* This account must be one that was registered with the
-* {@link PhoneAccount#CAPABILITY_CONNECTION_MANAGER} flag.
+ * This account must be one that was registered with the
+ * {@link PhoneAccount#CAPABILITY_CONNECTION_MANAGER} flag.
* @param targetPhoneAccountHandle Account information to use for the call. This account must be
-* one that was registered with the {@link PhoneAccount#CAPABILITY_CALL_PROVIDER} flag.
+ * one that was registered with the {@link PhoneAccount#CAPABILITY_CALL_PROVIDER} flag.
* @param callDirection one of CALL_DIRECTION_INCOMING, CALL_DIRECTION_OUTGOING,
-* or CALL_DIRECTION_UNKNOWN.
+ * or CALL_DIRECTION_UNKNOWN.
* @param shouldAttachToExistingConnection Set to true to attach the call to an existing
* @param clockProxy
*/
@@ -544,8 +562,6 @@
CallsManager callsManager,
TelecomSystem.SyncRoot lock,
ConnectionServiceRepository repository,
- ContactsAsyncHelper contactsAsyncHelper,
- CallerInfoAsyncQueryFactory callerInfoAsyncQueryFactory,
PhoneNumberUtilsAdapter phoneNumberUtilsAdapter,
Uri handle,
GatewayInfo gatewayInfo,
@@ -574,14 +590,13 @@
mShouldAttachToExistingConnection = shouldAttachToExistingConnection
|| callDirection == CALL_DIRECTION_INCOMING;
maybeLoadCannedSmsResponses();
- mAnalytics = new Analytics.CallInfo();
mClockProxy = clockProxy;
mCreationTimeMillis = mClockProxy.currentTimeMillis();
}
/**
* Persists the specified parameters and initializes the new instance.
- * @param context The context.
+ * @param context The context.
* @param repository The connection service repository.
* @param handle The handle to dial.
* @param gatewayInfo Gateway information to use for the call.
@@ -603,8 +618,6 @@
CallsManager callsManager,
TelecomSystem.SyncRoot lock,
ConnectionServiceRepository repository,
- ContactsAsyncHelper contactsAsyncHelper,
- CallerInfoAsyncQueryFactory callerInfoAsyncQueryFactory,
PhoneNumberUtilsAdapter phoneNumberUtilsAdapter,
Uri handle,
GatewayInfo gatewayInfo,
@@ -616,8 +629,8 @@
long connectTimeMillis,
long connectElapsedTimeMillis,
ClockProxy clockProxy) {
- this(callId, context, callsManager, lock, repository, contactsAsyncHelper,
- callerInfoAsyncQueryFactory, phoneNumberUtilsAdapter, handle, gatewayInfo,
+ this(callId, context, callsManager, lock, repository,
+ phoneNumberUtilsAdapter, handle, gatewayInfo,
connectionManagerPhoneAccountHandle, targetPhoneAccountHandle, callDirection,
shouldAttachToExistingConnection, isConference, clockProxy);
@@ -637,6 +650,10 @@
}
public void initAnalytics() {
+ initAnalytics(null);
+ }
+
+ public void initAnalytics(String callingPackage) {
int analyticsDirection;
switch (mCallDirection) {
case CALL_DIRECTION_OUTGOING:
@@ -651,7 +668,8 @@
analyticsDirection = Analytics.UNKNOWN_DIRECTION;
}
mAnalytics = Analytics.initiateCallAnalytics(mId, analyticsDirection);
- Log.addEvent(this, LogUtils.Events.CREATED);
+ mAnalytics.setCallIsEmergency(mIsEmergencyCall);
+ Log.addEvent(this, LogUtils.Events.CREATED, callingPackage);
}
public Analytics.CallInfo getAnalytics() {
@@ -666,6 +684,7 @@
mCallerInfo.cachedPhotoIcon = null;
mCallerInfo.cachedPhoto = null;
}
+ closeRttStreams();
Log.addEvent(this, LogUtils.Events.DESTROYED);
}
@@ -869,15 +888,22 @@
* (see {@link CallState}), in practice those expectations break down when cellular systems
* misbehave and they do this very often. The result is that we do not enforce state transitions
* and instead keep the code resilient to unexpected state changes.
+ * @return true indicates if setState succeeded in setting the state to newState,
+ * else it is failed, and the call is still in its original state.
*/
- public void setState(int newState, String tag) {
+ public boolean setState(int newState, String tag) {
if (mState != newState) {
- Log.v(this, "setState %s -> %s", mState, newState);
+ Log.v(this, "setState %s -> %s", CallState.toString(mState),
+ CallState.toString(newState));
if (newState == CallState.DISCONNECTED && shouldContinueProcessingAfterDisconnect()) {
Log.w(this, "continuing processing disconnected call with another service");
mCreateConnectionProcessor.continueProcessingIfPossible(this, mDisconnectCause);
- return;
+ return false;
+ } else if (newState == CallState.ANSWERED && mState == CallState.ACTIVE) {
+ Log.w(this, "setState %s -> %s; call already active.", CallState.toString(mState),
+ CallState.toString(newState));
+ return false;
}
updateVideoHistoryViaState(mState, newState);
@@ -938,6 +964,9 @@
case CallState.RINGING:
event = LogUtils.Events.SET_RINGING;
break;
+ case CallState.ANSWERED:
+ event = LogUtils.Events.SET_ANSWERED;
+ break;
}
if (event != null) {
// The string data should be just the tag.
@@ -953,6 +982,7 @@
StatsLog.write(StatsLog.CALL_STATE_CHANGED, newState, statsdDisconnectCause,
isSelfManaged(), isExternalCall());
}
+ return true;
}
void setRingbackRequested(boolean ringbackRequested) {
@@ -966,11 +996,30 @@
return mRingbackRequested;
}
+ public void setSilentRingingRequested(boolean silentRingingRequested) {
+ mSilentRingingRequested = silentRingingRequested;
+ Bundle bundle = new Bundle();
+ bundle.putBoolean(android.telecom.Call.EXTRA_SILENT_RINGING_REQUESTED,
+ silentRingingRequested);
+ putExtras(SOURCE_CONNECTION_SERVICE, bundle);
+ }
+
+ public boolean isSilentRingingRequested() {
+ return mSilentRingingRequested;
+ }
+
@VisibleForTesting
public boolean isConference() {
return mIsConference;
}
+ /**
+ * @return {@code true} if this call had children at some point, {@code false} otherwise.
+ */
+ public boolean hadChildren() {
+ return mHadChildren;
+ }
+
public Uri getHandle() {
return mHandle;
}
@@ -979,6 +1028,10 @@
return mPostDialDigits;
}
+ public void clearPostDialDigits() {
+ mPostDialDigits = null;
+ }
+
public String getViaNumber() {
return mViaNumber;
}
@@ -1021,6 +1074,7 @@
mIsEmergencyCall = mHandle != null &&
mPhoneNumberUtilsAdapter.isLocalEmergencyNumber(mContext,
mHandle.getSchemeSpecificPart());
+ mAnalytics.setCallIsEmergency(mIsEmergencyCall);
}
startCallerInfoLookup();
for (Listener l : mListeners) {
@@ -1079,12 +1133,23 @@
return mDisconnectCause;
}
+ /**
+ * @return {@code true} if this is an outgoing call to emergency services. An outgoing call is
+ * identified as an emergency call by the dialer phone number.
+ */
@VisibleForTesting
public boolean isEmergencyCall() {
return mIsEmergencyCall;
}
/**
+ * @return {@code true} if the network has identified this call as an emergency call.
+ */
+ public boolean isNetworkIdentifiedEmergencyCall() {
+ return hasProperty(Connection.PROPERTY_NETWORK_IDENTIFIED_EMERGENCY_CALL);
+ }
+
+ /**
* @return The original handle this call is associated with. In-call services should use this
* handle when indicating in their UI the handle that is being called.
*/
@@ -1205,8 +1270,36 @@
return mUseCallRecordingTone;
}
- public boolean isVideoCallingSupported() {
- return mIsVideoCallingSupported;
+ /**
+ * @return {@code true} if the {@link Call}'s {@link #getTargetPhoneAccount()} supports video.
+ */
+ public boolean isVideoCallingSupportedByPhoneAccount() {
+ return mIsVideoCallingSupportedByPhoneAccount;
+ }
+
+ /**
+ * Sets whether video calling is supported by the current phone account. Since video support
+ * can change during a call, this method facilitates updating call video state.
+ * @param isVideoCallingSupported Sets whether video calling is supported.
+ */
+ public void setVideoCallingSupportedByPhoneAccount(boolean isVideoCallingSupported) {
+ if (mIsVideoCallingSupportedByPhoneAccount == isVideoCallingSupported) {
+ return;
+ }
+ Log.i(this, "setVideoCallingSupportedByPhoneAccount: isSupp=%b", isVideoCallingSupported);
+ mIsVideoCallingSupportedByPhoneAccount = isVideoCallingSupported;
+
+ // Force an update of the connection capabilities so that the dialer is informed of the new
+ // video capabilities based on the phone account's support for video.
+ setConnectionCapabilities(getConnectionCapabilities(), true /* force */);
+ }
+
+ /**
+ * @return {@code true} if the {@link Call} locally supports video.
+ */
+ public boolean isLocallyVideoCapable() {
+ return (getConnectionCapabilities() & Connection.CAPABILITY_SUPPORTS_VT_LOCAL_BIDIRECTIONAL)
+ == Connection.CAPABILITY_SUPPORTS_VT_LOCAL_BIDIRECTIONAL;
}
public boolean isSelfManaged() {
@@ -1308,16 +1401,16 @@
if (mTargetPhoneAccountHandle == null) {
// If no target phone account handle is specified, assume we can potentially perform a
// video call; once the phone account is set, we can confirm that it is video capable.
- mIsVideoCallingSupported = true;
+ mIsVideoCallingSupportedByPhoneAccount = true;
Log.d(this, "checkIfVideoCapable: no phone account selected; assume video capable.");
return;
}
PhoneAccount phoneAccount =
phoneAccountRegistrar.getPhoneAccountUnchecked(mTargetPhoneAccountHandle);
- mIsVideoCallingSupported = phoneAccount != null && phoneAccount.hasCapabilities(
- PhoneAccount.CAPABILITY_VIDEO_CALLING);
+ mIsVideoCallingSupportedByPhoneAccount = phoneAccount != null &&
+ phoneAccount.hasCapabilities(PhoneAccount.CAPABILITY_VIDEO_CALLING);
- if (!mIsVideoCallingSupported && VideoProfile.isVideo(getVideoState())) {
+ if (!mIsVideoCallingSupportedByPhoneAccount && VideoProfile.isVideo(getVideoState())) {
// The PhoneAccount for the Call was set to one which does not support video calling,
// and the current call is configured to be a video call; downgrade to audio-only.
setVideoState(VideoProfile.STATE_AUDIO_ONLY);
@@ -1398,7 +1491,15 @@
return mConnectTimeMillis;
}
- int getConnectionCapabilities() {
+ public void setConnectTimeMillis(long connectTimeMillis) {
+ mConnectTimeMillis = connectTimeMillis;
+ }
+
+ public void setConnectElapsedTimeMillis(long connectElapsedTimeMillis) {
+ mConnectElapsedTimeMillis = connectElapsedTimeMillis;
+ }
+
+ public int getConnectionCapabilities() {
return mConnectionCapabilities;
}
@@ -1406,7 +1507,7 @@
return mConnectionProperties;
}
- void setConnectionCapabilities(int connectionCapabilities) {
+ public void setConnectionCapabilities(int connectionCapabilities) {
setConnectionCapabilities(connectionCapabilities, false /* forceUpdate */);
}
@@ -1416,12 +1517,12 @@
if (forceUpdate || mConnectionCapabilities != connectionCapabilities) {
// If the phone account does not support video calling, and the connection capabilities
// passed in indicate that the call supports video, remove those video capabilities.
- if (!isVideoCallingSupported() && doesCallSupportVideo(connectionCapabilities)) {
+ if (!isVideoCallingSupportedByPhoneAccount()
+ && doesCallSupportVideo(connectionCapabilities)) {
Log.w(this, "setConnectionCapabilities: attempt to set connection as video " +
"capable when not supported by the phone account.");
connectionCapabilities = removeVideoCapabilities(connectionCapabilities);
}
-
int previousCapabilities = mConnectionCapabilities;
mConnectionCapabilities = connectionCapabilities;
for (Listener l : mListeners) {
@@ -1437,7 +1538,7 @@
}
}
- void setConnectionProperties(int connectionProperties) {
+ public void setConnectionProperties(int connectionProperties) {
Log.v(this, "setConnectionProperties: %s", Connection.propertiesToString(
connectionProperties));
@@ -1852,7 +1953,7 @@
// Check to verify that the call is still in the ringing state. A call can change states
// between the time the user hits 'answer' and Telecom receives the command.
if (isRinging("answer")) {
- if (!isVideoCallingSupported() && VideoProfile.isVideo(videoState)) {
+ if (!isVideoCallingSupportedByPhoneAccount() && VideoProfile.isVideo(videoState)) {
// Video calling is not supported, yet the InCallService is attempting to answer as
// video. We will simply answer as audio-only.
videoState = VideoProfile.STATE_AUDIO_ONLY;
@@ -1979,6 +2080,7 @@
switch (mState) {
case CallState.NEW:
case CallState.RINGING:
+ case CallState.ANSWERED:
case CallState.DISCONNECTED:
case CallState.ABORTED:
return false;
@@ -2007,7 +2109,7 @@
* @param source The source of the extras addition.
* @param extras The extras.
*/
- void putExtras(int source, Bundle extras) {
+ public void putExtras(int source, Bundle extras) {
if (extras == null) {
return;
}
@@ -2231,10 +2333,20 @@
public void sendCallEvent(String event, int targetSdkVer, Bundle extras) {
if (mConnectionService != null) {
if (android.telecom.Call.EVENT_REQUEST_HANDOVER.equals(event)) {
- if (targetSdkVer > Build.VERSION_CODES.O_MR1) {
+ if (targetSdkVer > Build.VERSION_CODES.P) {
Log.e(this, new Exception(), "sendCallEvent failed. Use public api handoverTo" +
- " for API > 27(O-MR1)");
- // TODO: Add "return" after DUO team adds new API support for handover
+ " for API > 28(P)");
+ // Event-based Handover APIs are deprecated, so inform the user.
+ mHandler.post(new Runnable() {
+ @Override
+ public void run() {
+ Toast.makeText(mContext, "WARNING: Event-based handover APIs are deprecated "
+ + "and will no longer function in Android Q.",
+ Toast.LENGTH_LONG).show();
+ }
+ });
+
+ // Uncomment and remove toast at feature complete: return;
}
// Handover requests are targeted at Telecom, not the ConnectionService.
@@ -2373,6 +2485,7 @@
private void addChildCall(Call call) {
if (!mChildCalls.contains(call)) {
+ mHadChildren = true;
// Set the pseudo-active call to the latest child added to the conference.
// See definition of mConferenceLevelActiveCall for more detail.
mConferenceLevelActiveCall = call;
@@ -2415,7 +2528,7 @@
* networks at least), so we still enable this feature even though
* SMSes to that number will silently fail.
*/
- boolean isRespondViaSmsCapable() {
+ public boolean isRespondViaSmsCapable() {
if (mState != CallState.RINGING) {
return false;
}
@@ -2755,7 +2868,7 @@
public void setVideoState(int videoState) {
// If the phone account associated with this call does not support video calling, then we
// will automatically set the video state to audio-only.
- if (!isVideoCallingSupported()) {
+ if (!isVideoCallingSupportedByPhoneAccount()) {
Log.d(this, "setVideoState: videoState=%s defaulted to audio (video not supported)",
VideoProfile.videoStateToString(videoState));
videoState = VideoProfile.STATE_AUDIO_ONLY;
@@ -2954,6 +3067,10 @@
for (Listener l : mListeners) {
l.onHoldToneRequested(this);
}
+ } else if (Connection.EVENT_CALL_HOLD_FAILED.equals(event)) {
+ for (Listener l : mListeners) {
+ l.onCallHoldFailed(this);
+ }
} else {
for (Listener l : mListeners) {
l.onConnectionEvent(this, event, extras);
@@ -3046,15 +3163,29 @@
}
/**
+ * Sets whether this {@link Call} is a conference or not.
+ * @param isConference
+ */
+ public void setConferenceState(boolean isConference) {
+ mIsConference = isConference;
+ Log.addEvent(this, LogUtils.Events.CONF_STATE_CHANGED, "isConference=" + isConference);
+ // Ultimately CallsManager needs to know so it can update the "add call" state and inform
+ // the UI to update itself.
+ for (Listener l : mListeners) {
+ l.onConferenceStateChanged(this, isConference);
+ }
+ }
+
+ /**
* Sets the video history based on the state and state transitions of the call. Always add the
* current video state to the video state history during a call transition except for the
- * transitions DIALING->ACTIVE and RINGING->ACTIVE. In these cases, clear the history. If a
+ * transitions DIALING->ACTIVE and RINGING->ANSWERED. In these cases, clear the history. If a
* call starts dialing/ringing as a VT call and gets downgraded to audio, we need to record
* the history as an audio call.
*/
private void updateVideoHistoryViaState(int oldState, int newState) {
- if ((oldState == CallState.DIALING || oldState == CallState.RINGING)
- && newState == CallState.ACTIVE) {
+ if ((oldState == CallState.DIALING && newState == CallState.ACTIVE)
+ || (oldState == CallState.RINGING && newState == CallState.ANSWERED)) {
mVideoStateHistory = mVideoState;
}
@@ -3069,4 +3200,41 @@
boolean wasHighDefAudio() {
return mWasHighDefAudio;
}
+
+ public void setIsUsingCallFiltering(boolean isUsingCallFiltering) {
+ mIsUsingCallFiltering = isUsingCallFiltering;
+ }
+
+ /**
+ * When upgrading a call to video via
+ * {@link VideoProviderProxy#onSendSessionModifyRequest(VideoProfile, VideoProfile)}, if the
+ * upgrade is from audio to video, potentially auto-engage the speakerphone.
+ * @param newVideoState The proposed new video state for the call.
+ */
+ public void maybeEnableSpeakerForVideoUpgrade(@VideoProfile.VideoState int newVideoState) {
+ if (mCallsManager.isSpeakerphoneAutoEnabledForVideoCalls(newVideoState)) {
+ Log.i(this, "maybeEnableSpeakerForVideoCall; callId=%s, auto-enable speaker for call"
+ + " upgraded to video.");
+ mCallsManager.setAudioRoute(CallAudioState.ROUTE_SPEAKER, null);
+ }
+ }
+
+ /**
+ * Remaps the call direction as indicated by an {@link android.telecom.Call.Details} direction
+ * constant to the constants (e.g. {@link #CALL_DIRECTION_INCOMING}) used in this call class.
+ * @param direction The android.telecom.Call direction.
+ * @return The direction using the constants in this class.
+ */
+ public static int getRemappedCallDirection(
+ @android.telecom.Call.Details.CallDirection int direction) {
+ switch(direction) {
+ case android.telecom.Call.Details.DIRECTION_INCOMING:
+ return CALL_DIRECTION_INCOMING;
+ case android.telecom.Call.Details.DIRECTION_OUTGOING:
+ return CALL_DIRECTION_OUTGOING;
+ case android.telecom.Call.Details.DIRECTION_UNKNOWN:
+ return CALL_DIRECTION_UNDEFINED;
+ }
+ return CALL_DIRECTION_UNDEFINED;
+ }
}
diff --git a/src/com/android/server/telecom/CallAudioManager.java b/src/com/android/server/telecom/CallAudioManager.java
index 56f8db9..7e4c3ba 100644
--- a/src/com/android/server/telecom/CallAudioManager.java
+++ b/src/com/android/server/telecom/CallAudioManager.java
@@ -105,11 +105,10 @@
Log.d(LOG_TAG, "Call state changed for TC@%s: %s -> %s", call.getId(),
CallState.toString(oldState), CallState.toString(newState));
- for (int i = 0; i < mCallStateToCalls.size(); i++) {
- mCallStateToCalls.valueAt(i).remove(call);
- }
- if (mCallStateToCalls.get(newState) != null) {
- mCallStateToCalls.get(newState).add(call);
+ removeCallFromAllBins(call);
+ HashSet<Call> newBinForCall = getBinForCall(call);
+ if (newBinForCall != null) {
+ newBinForCall.add(call);
}
updateForegroundCall();
@@ -148,8 +147,9 @@
Log.d(LOG_TAG, "Call added with id TC@%s in state %s", call.getId(),
CallState.toString(call.getState()));
- if (mCallStateToCalls.get(call.getState()) != null) {
- mCallStateToCalls.get(call.getState()).add(call);
+ HashSet<Call> newBinForCall = getBinForCall(call);
+ if (newBinForCall != null) {
+ newBinForCall.add(call);
}
updateForegroundCall();
mCalls.add(call);
@@ -168,9 +168,7 @@
Log.d(LOG_TAG, "Call removed with id TC@%s in state %s", call.getId(),
CallState.toString(call.getState()));
- for (int i = 0; i < mCallStateToCalls.size(); i++) {
- mCallStateToCalls.valueAt(i).remove(call);
- }
+ removeCallFromAllBins(call);
updateForegroundCall();
mCalls.remove(call);
@@ -226,24 +224,6 @@
return;
}
- // This is called after the UI answers the call, but before the connection service
- // sets the call to active. Only thing to handle for mode here is the audio speedup thing.
-
- if (call.can(android.telecom.Call.Details.CAPABILITY_SPEED_UP_MT_AUDIO)) {
- if (mForegroundCall == call) {
- Log.i(LOG_TAG, "Invoking the MT_AUDIO_SPEEDUP mechanism. Transitioning into " +
- "an active in-call audio state before connection service has " +
- "connected the call.");
- if (mCallStateToCalls.get(call.getState()) != null) {
- mCallStateToCalls.get(call.getState()).remove(call);
- }
- mActiveDialingOrConnectingCalls.add(call);
- mCallAudioModeStateMachine.sendMessageWithArgs(
- CallAudioModeStateMachine.MT_AUDIO_SPEEDUP_FOR_RINGING_CALL,
- makeArgsForModeStateMachine());
- }
- }
-
// Turn off mute when a new incoming call is answered iff it's not a handover.
if (!call.isHandoverInProgress()) {
mute(false /* shouldMute */);
@@ -325,10 +305,7 @@
onCallAdded(call);
} else {
// The call joined a conference, so stop tracking it.
- if (mCallStateToCalls.get(call.getState()) != null) {
- mCallStateToCalls.get(call.getState()).remove(call);
- }
-
+ removeCallFromAllBins(call);
updateForegroundCall();
mCalls.remove(call);
}
@@ -469,9 +446,9 @@
}
@VisibleForTesting
- public void startCallWaiting() {
+ public void startCallWaiting(String reason) {
if (mRingingCalls.size() == 1) {
- mRinger.startCallWaiting(mRingingCalls.iterator().next());
+ mRinger.startCallWaiting(mRingingCalls.iterator().next(), reason);
}
}
@@ -557,6 +534,7 @@
onCallLeavingActiveDialingOrConnecting();
break;
case CallState.RINGING:
+ case CallState.ANSWERED:
onCallLeavingRinging();
break;
case CallState.ON_HOLD:
@@ -591,6 +569,11 @@
onCallEnteringActiveDialingOrConnecting();
playRingbackForCall(call);
break;
+ case CallState.ANSWERED:
+ if (call.can(android.telecom.Call.Details.CAPABILITY_SPEED_UP_MT_AUDIO)) {
+ onCallEnteringActiveDialingOrConnecting();
+ }
+ break;
}
}
@@ -681,6 +664,24 @@
Log.createSubsession());
}
+ private HashSet<Call> getBinForCall(Call call) {
+ if (call.getState() == CallState.ANSWERED) {
+ // If the call has the speed-up-mt-audio capability, treat answered state as active
+ // for audio purposes.
+ if (call.can(android.telecom.Call.Details.CAPABILITY_SPEED_UP_MT_AUDIO)) {
+ return mActiveDialingOrConnectingCalls;
+ }
+ return mRingingCalls;
+ }
+ return mCallStateToCalls.get(call.getState());
+ }
+
+ private void removeCallFromAllBins(Call call) {
+ for (int i = 0; i < mCallStateToCalls.size(); i++) {
+ mCallStateToCalls.valueAt(i).remove(call);
+ }
+ }
+
private void playToneForDisconnectedCall(Call call) {
// If this call is being disconnected as a result of being handed over to another call,
// we will not play a disconnect tone.
@@ -727,9 +728,11 @@
Log.d(this, "Found a disconnected call with tone to play %d.", toneToPlay);
if (toneToPlay != InCallTonePlayer.TONE_INVALID) {
- mPlayerFactory.createPlayer(toneToPlay).startTone();
- mCallsManager.onDisconnectedTonePlaying(true);
- mIsDisconnectedTonePlaying = true;
+ boolean didToneStart = mPlayerFactory.createPlayer(toneToPlay).startTone();
+ if (didToneStart) {
+ mCallsManager.onDisconnectedTonePlaying(true);
+ mIsDisconnectedTonePlaying = true;
+ }
}
}
}
diff --git a/src/com/android/server/telecom/CallAudioModeStateMachine.java b/src/com/android/server/telecom/CallAudioModeStateMachine.java
index 716f23a..42a1d36 100644
--- a/src/com/android/server/telecom/CallAudioModeStateMachine.java
+++ b/src/com/android/server/telecom/CallAudioModeStateMachine.java
@@ -29,6 +29,13 @@
import com.android.internal.util.StateMachine;
public class CallAudioModeStateMachine extends StateMachine {
+ public static class Factory {
+ public CallAudioModeStateMachine create(SystemStateHelper systemStateHelper,
+ AudioManager am) {
+ return new CallAudioModeStateMachine(systemStateHelper, am);
+ }
+ }
+
public static class MessageArgs {
public boolean hasActiveOrDialingCalls;
public boolean hasRingingCalls;
@@ -80,7 +87,6 @@
public static final int NEW_ACTIVE_OR_DIALING_CALL = 2001;
public static final int NEW_RINGING_CALL = 2002;
public static final int NEW_HOLDING_CALL = 2003;
- public static final int MT_AUDIO_SPEEDUP_FOR_RINGING_CALL = 2004;
public static final int TONE_STARTED_PLAYING = 3001;
public static final int TONE_STOPPED_PLAYING = 3002;
@@ -103,7 +109,6 @@
put(NEW_ACTIVE_OR_DIALING_CALL, "NEW_ACTIVE_OR_DIALING_CALL");
put(NEW_RINGING_CALL, "NEW_RINGING_CALL");
put(NEW_HOLDING_CALL, "NEW_HOLDING_CALL");
- put(MT_AUDIO_SPEEDUP_FOR_RINGING_CALL, "MT_AUDIO_SPEEDUP_FOR_RINGING_CALL");
put(TONE_STARTED_PLAYING, "TONE_STARTED_PLAYING");
put(TONE_STOPPED_PLAYING, "TONE_STOPPED_PLAYING");
put(FOREGROUND_VOIP_MODE_CHANGE, "FOREGROUND_VOIP_MODE_CHANGE");
@@ -273,15 +278,6 @@
" Args are: " + args.toString());
transitionTo(mOtherFocusState);
return HANDLED;
- case MT_AUDIO_SPEEDUP_FOR_RINGING_CALL:
- // This happens when an IMS call is answered by the in-call UI. Special case
- // that we have to deal with for some reason.
-
- // The IMS audio routing may be via modem or via RTP stream. In case via RTP
- // stream, the state machine should transit to mVoipCallFocusState.
- transitionTo(args.foregroundCallIsVoip
- ? mVoipCallFocusState : mSimCallFocusState);
- return HANDLED;
case RINGER_MODE_CHANGE: {
Log.i(LOG_TAG, "RINGING state, received RINGER_MODE_CHANGE");
tryStartRinging();
@@ -338,7 +334,7 @@
return HANDLED;
case NEW_RINGING_CALL:
// Don't make a call ring over an active call, but do play a call waiting tone.
- mCallAudioManager.startCallWaiting();
+ mCallAudioManager.startCallWaiting("call already active");
return HANDLED;
case NEW_HOLDING_CALL:
// Don't do anything now. Putting an active call on hold will be handled when
@@ -393,7 +389,7 @@
return HANDLED;
case NEW_RINGING_CALL:
// Don't make a call ring over an active call, but do play a call waiting tone.
- mCallAudioManager.startCallWaiting();
+ mCallAudioManager.startCallWaiting("call already active");
return HANDLED;
case NEW_HOLDING_CALL:
// Don't do anything now. Putting an active call on hold will be handled when
@@ -447,8 +443,14 @@
? mVoipCallFocusState : mSimCallFocusState);
return HANDLED;
case NEW_RINGING_CALL:
- // Apparently this is current behavior. Should this be the case?
- transitionTo(mRingingFocusState);
+ // TODO: consider whether to move this into MessageArgs if more things start
+ // to use it.
+ if (args.hasHoldingCalls && mSystemStateHelper.isDeviceAtEar()) {
+ mCallAudioManager.startCallWaiting(
+ "Device is at ear with held call");
+ } else {
+ transitionTo(mRingingFocusState);
+ }
return HANDLED;
case NEW_HOLDING_CALL:
// Do nothing.
@@ -475,14 +477,17 @@
private final BaseState mOtherFocusState = new OtherFocusState();
private final AudioManager mAudioManager;
+ private final SystemStateHelper mSystemStateHelper;
private CallAudioManager mCallAudioManager;
private int mMostRecentMode;
private boolean mIsInitialized = false;
- public CallAudioModeStateMachine(AudioManager audioManager) {
+ public CallAudioModeStateMachine(SystemStateHelper systemStateHelper,
+ AudioManager audioManager) {
super(CallAudioModeStateMachine.class.getSimpleName());
mAudioManager = audioManager;
+ mSystemStateHelper = systemStateHelper;
mMostRecentMode = AudioManager.MODE_NORMAL;
addState(mUnfocusedState);
diff --git a/src/com/android/server/telecom/CallAudioRoutePeripheralAdapter.java b/src/com/android/server/telecom/CallAudioRoutePeripheralAdapter.java
index a871dfc..2b6ba64 100644
--- a/src/com/android/server/telecom/CallAudioRoutePeripheralAdapter.java
+++ b/src/com/android/server/telecom/CallAudioRoutePeripheralAdapter.java
@@ -75,6 +75,12 @@
CallAudioRouteStateMachine.BT_AUDIO_DISCONNECTED);
}
+ @Override
+ public void onUnexpectedBluetoothStateChange() {
+ mCallAudioRouteStateMachine.sendMessageWithSessionInfo(
+ CallAudioRouteStateMachine.UPDATE_SYSTEM_AUDIO_ROUTE);
+ }
+
/**
* Updates the audio route when the headset plugged in state changes. For example, if audio is
* being routed over speakerphone and a headset is plugged in then switch to wired headset.
diff --git a/src/com/android/server/telecom/CallAudioRouteStateMachine.java b/src/com/android/server/telecom/CallAudioRouteStateMachine.java
index 4274017..dcf1b27 100644
--- a/src/com/android/server/telecom/CallAudioRouteStateMachine.java
+++ b/src/com/android/server/telecom/CallAudioRouteStateMachine.java
@@ -71,6 +71,24 @@
*/
public class CallAudioRouteStateMachine extends StateMachine {
+ public static class Factory {
+ public CallAudioRouteStateMachine create(
+ Context context,
+ CallsManager callsManager,
+ BluetoothRouteManager bluetoothManager,
+ WiredHeadsetManager wiredHeadsetManager,
+ StatusBarNotifier statusBarNotifier,
+ CallAudioManager.AudioServiceFactory audioServiceFactory,
+ int earpieceControl) {
+ return new CallAudioRouteStateMachine(context,
+ callsManager,
+ bluetoothManager,
+ wiredHeadsetManager,
+ statusBarNotifier,
+ audioServiceFactory,
+ earpieceControl);
+ }
+ }
/** Values for CallAudioRouteStateMachine constructor's earPieceRouting arg. */
public static final int EARPIECE_FORCE_DISABLED = 0;
public static final int EARPIECE_FORCE_ENABLED = 1;
@@ -136,7 +154,7 @@
public static final int ACTIVE_FOCUS = 2;
public static final int RINGING_FOCUS = 3;
- /** Valid values for the argument for SWITCH_BASELINE_ROUTE */
+ /** Valid values for the first argument for SWITCH_BASELINE_ROUTE */
public static final int NO_INCLUDE_BLUETOOTH_IN_BASELINE = 0;
public static final int INCLUDE_BLUETOOTH_IN_BASELINE = 1;
@@ -290,6 +308,12 @@
mHasUserExplicitlyLeftBluetooth = false;
return NOT_HANDLED;
case SWITCH_FOCUS:
+ // Perform BT hearing aid active device caching/restoration
+ if (mAudioFocusType != NO_FOCUS && msg.arg1 == NO_FOCUS) {
+ mBluetoothRouteManager.restoreHearingAidDevice();
+ } else if (mAudioFocusType == NO_FOCUS && msg.arg1 != NO_FOCUS) {
+ mBluetoothRouteManager.cacheHearingAidDevice();
+ }
mAudioFocusType = msg.arg1;
return NOT_HANDLED;
default:
@@ -328,7 +352,6 @@
public void enter() {
super.enter();
setSpeakerphoneOn(false);
- setBluetoothOff();
CallAudioState newState = new CallAudioState(mIsMuted, ROUTE_EARPIECE,
mAvailableRoutes, null,
mBluetoothRouteManager.getConnectedDevices());
@@ -523,7 +546,6 @@
public void enter() {
super.enter();
setSpeakerphoneOn(false);
- setBluetoothOff();
CallAudioState newState = new CallAudioState(mIsMuted, ROUTE_WIRED_HEADSET,
mAvailableRoutes, null, mBluetoothRouteManager.getConnectedDevices());
setSystemAudioState(newState, true);
@@ -742,6 +764,32 @@
}
@Override
+ public void handleBtInitiatedDisconnect() {
+ // There's special-case state transitioning here -- if BT tells us that
+ // something got disconnected, we don't want to disconnect BT before
+ // transitioning, since BT might be trying to connect another device in the
+ // meantime.
+ int command = calculateBaselineRouteMessage(false, false);
+ switch (command) {
+ case SWITCH_EARPIECE:
+ transitionTo(mActiveEarpieceRoute);
+ break;
+ case SWITCH_HEADSET:
+ transitionTo(mActiveHeadsetRoute);
+ break;
+ case SWITCH_SPEAKER:
+ transitionTo(mActiveSpeakerRoute);
+ break;
+ default:
+ Log.w(this, "Got unexpected code " + command + " when processing a"
+ + " BT-initiated audio disconnect");
+ // Some fallback logic to make sure we make it off the bluetooth route.
+ super.handleBtInitiatedDisconnect();
+ break;
+ }
+ }
+
+ @Override
public boolean processMessage(Message msg) {
if (super.processMessage(msg) == HANDLED) {
return HANDLED;
@@ -752,6 +800,7 @@
// fall through
case SWITCH_EARPIECE:
if ((mAvailableRoutes & ROUTE_EARPIECE) != 0) {
+ setBluetoothOff();
transitionTo(mActiveEarpieceRoute);
} else {
Log.w(this, "Ignoring switch to earpiece command. Not available.");
@@ -775,6 +824,7 @@
// fall through
case SWITCH_HEADSET:
if ((mAvailableRoutes & ROUTE_WIRED_HEADSET) != 0) {
+ setBluetoothOff();
transitionTo(mActiveHeadsetRoute);
} else {
Log.w(this, "Ignoring switch to headset command. Not available.");
@@ -784,11 +834,13 @@
mHasUserExplicitlyLeftBluetooth = true;
// fall through
case SWITCH_SPEAKER:
+ setBluetoothOff();
transitionTo(mActiveSpeakerRoute);
return HANDLED;
case SWITCH_FOCUS:
if (msg.arg1 == NO_FOCUS) {
- setBluetoothOff();
+ // Only disconnect SCO audio here instead of routing away from BT entirely.
+ mBluetoothRouteManager.disconnectSco();
reinitialize();
} else if (msg.arg1 == RINGING_FOCUS
&& !mBluetoothRouteManager.isInbandRingingEnabled()) {
@@ -797,7 +849,7 @@
}
return HANDLED;
case BT_AUDIO_DISCONNECTED:
- sendInternalMessage(SWITCH_BASELINE_ROUTE, NO_INCLUDE_BLUETOOTH_IN_BASELINE);
+ handleBtInitiatedDisconnect();
return HANDLED;
default:
return NOT_HANDLED;
@@ -975,6 +1027,10 @@
return CallAudioState.ROUTE_BLUETOOTH;
}
+ public void handleBtInitiatedDisconnect() {
+ sendInternalMessage(SWITCH_BASELINE_ROUTE, NO_INCLUDE_BLUETOOTH_IN_BASELINE);
+ }
+
@Override
public boolean processMessage(Message msg) {
if (super.processMessage(msg) == HANDLED) {
@@ -989,7 +1045,7 @@
+ " have been null while we were in BT route.");
return HANDLED;
case BT_ACTIVE_DEVICE_GONE:
- sendInternalMessage(SWITCH_BASELINE_ROUTE, NO_INCLUDE_BLUETOOTH_IN_BASELINE);
+ handleBtInitiatedDisconnect();
mWasOnSpeaker = false;
return HANDLED;
case DISCONNECT_WIRED_HEADSET:
@@ -1023,7 +1079,6 @@
super.enter();
mWasOnSpeaker = true;
setSpeakerphoneOn(true);
- setBluetoothOff();
CallAudioState newState = new CallAudioState(mIsMuted, ROUTE_SPEAKER,
mAvailableRoutes, null, mBluetoothRouteManager.getConnectedDevices());
setSystemAudioState(newState, true);
@@ -1250,7 +1305,7 @@
*/
private int mDeviceSupportedRoutes;
private int mAvailableRoutes;
- private int mAudioFocusType;
+ private int mAudioFocusType = NO_FOCUS;
private boolean mWasOnSpeaker;
private boolean mIsMuted;
@@ -1417,6 +1472,7 @@
}
return;
case UPDATE_SYSTEM_AUDIO_ROUTE:
+ updateInternalCallAudioState();
updateRouteForForegroundCall();
resendSystemAudioState();
return;
@@ -1606,7 +1662,8 @@
int supportedRouteMask = calculateSupportedRoutes() & getCurrentCallSupportedRoutes();
final int route;
- if ((supportedRouteMask & ROUTE_BLUETOOTH) != 0) {
+ if ((supportedRouteMask & ROUTE_BLUETOOTH) != 0
+ && mBluetoothRouteManager.hasBtActiveDevice()) {
route = ROUTE_BLUETOOTH;
} else if ((supportedRouteMask & ROUTE_WIRED_HEADSET) != 0) {
route = ROUTE_WIRED_HEADSET;
diff --git a/src/com/android/server/telecom/CallIntentProcessor.java b/src/com/android/server/telecom/CallIntentProcessor.java
index ff3b7b2..4afa645 100644
--- a/src/com/android/server/telecom/CallIntentProcessor.java
+++ b/src/com/android/server/telecom/CallIntentProcessor.java
@@ -6,11 +6,13 @@
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
+import android.os.Looper;
import android.os.Trace;
import android.os.UserHandle;
import android.os.UserManager;
import android.telecom.DefaultDialerManager;
import android.telecom.Log;
+import android.telecom.Logging.Session;
import android.telecom.PhoneAccount;
import android.telecom.PhoneAccountHandle;
import android.telecom.TelecomManager;
@@ -19,6 +21,8 @@
import android.telephony.PhoneNumberUtils;
import android.widget.Toast;
+import java.util.concurrent.CompletableFuture;
+
/**
* Single point of entry for all outgoing and incoming calls.
* {@link com.android.server.telecom.components.UserCallIntentProcessor} serves as a trampoline that
@@ -28,7 +32,7 @@
public class CallIntentProcessor {
public interface Adapter {
void processOutgoingCallIntent(Context context, CallsManager callsManager,
- Intent intent);
+ Intent intent, String callingPackage);
void processIncomingCallIntent(CallsManager callsManager, Intent intent);
void processUnknownCallIntent(CallsManager callsManager, Intent intent);
}
@@ -36,8 +40,9 @@
public static class AdapterImpl implements Adapter {
@Override
public void processOutgoingCallIntent(Context context, CallsManager callsManager,
- Intent intent) {
- CallIntentProcessor.processOutgoingCallIntent(context, callsManager, intent);
+ Intent intent, String callingPackage) {
+ CallIntentProcessor.processOutgoingCallIntent(context, callsManager, intent,
+ callingPackage);
}
@Override
@@ -73,7 +78,7 @@
this.mCallsManager = callsManager;
}
- public void processIntent(Intent intent) {
+ public void processIntent(Intent intent, String callingPackage) {
final boolean isUnknownCall = intent.getBooleanExtra(KEY_IS_UNKNOWN_CALL, false);
Log.i(this, "onReceive - isUnknownCall: %s", isUnknownCall);
@@ -81,7 +86,7 @@
if (isUnknownCall) {
processUnknownCallIntent(mCallsManager, intent);
} else {
- processOutgoingCallIntent(mContext, mCallsManager, intent);
+ processOutgoingCallIntent(mContext, mCallsManager, intent, callingPackage);
}
Trace.endSection();
}
@@ -91,11 +96,13 @@
* Processes CALL, CALL_PRIVILEGED, and CALL_EMERGENCY intents.
*
* @param intent Call intent containing data about the handle to call.
+ * @param callingPackage The package which initiated the outgoing call (if known).
*/
static void processOutgoingCallIntent(
Context context,
CallsManager callsManager,
- Intent intent) {
+ Intent intent,
+ String callingPackage) {
Uri handle = intent.getData();
String scheme = handle.getScheme();
@@ -117,6 +124,12 @@
clientExtras = new Bundle();
}
+ if (intent.hasExtra(TelecomManager.EXTRA_IS_USER_INTENT_EMERGENCY_CALL)) {
+ clientExtras.putBoolean(TelecomManager.EXTRA_IS_USER_INTENT_EMERGENCY_CALL,
+ intent.getBooleanExtra(TelecomManager.EXTRA_IS_USER_INTENT_EMERGENCY_CALL,
+ false));
+ }
+
// Ensure call subject is passed on to the connection service.
if (intent.hasExtra(TelecomManager.EXTRA_CALL_SUBJECT)) {
String callsubject = intent.getStringExtra(TelecomManager.EXTRA_CALL_SUBJECT);
@@ -133,7 +146,9 @@
// Show the toast to warn user that it is a personal call though initiated in work
// profile.
if (fixedInitiatingUser) {
- Toast.makeText(context, R.string.toast_personal_call_msg, Toast.LENGTH_LONG).show();
+ Toast.makeText(context, Looper.getMainLooper(),
+ context.getString(R.string.toast_personal_call_msg),
+ Toast.LENGTH_LONG).show();
}
} else {
Log.i(CallIntentProcessor.class,
@@ -143,13 +158,21 @@
UserHandle initiatingUser = intent.getParcelableExtra(KEY_INITIATING_USER);
// Send to CallsManager to ensure the InCallUI gets kicked off before the broadcast returns
- Call call = callsManager
+ CompletableFuture<Call> callFuture = callsManager
.startOutgoingCall(handle, phoneAccountHandle, clientExtras, initiatingUser,
- intent);
+ intent, callingPackage);
- if (call != null) {
- sendNewOutgoingCallIntent(context, call, callsManager, intent);
- }
+ final Session logSubsession = Log.createSubsession();
+ callFuture.thenAccept((call) -> {
+ if (call != null) {
+ Log.continueSession(logSubsession, "CIP.sNOCI");
+ try {
+ sendNewOutgoingCallIntent(context, call, callsManager, intent);
+ } finally {
+ Log.endSession();
+ }
+ }
+ });
}
static void sendNewOutgoingCallIntent(Context context, Call call, CallsManager callsManager,
@@ -164,12 +187,15 @@
NewOutgoingCallIntentBroadcaster broadcaster = new NewOutgoingCallIntentBroadcaster(
context, callsManager, call, intent, callsManager.getPhoneNumberUtilsAdapter(),
isPrivilegedDialer);
- final int result = broadcaster.processIntent();
- final boolean success = result == DisconnectCause.NOT_DISCONNECTED;
- if (!success && call != null) {
- disconnectCallAndShowErrorDialog(context, call, result);
+ // If the broadcaster comes back with an immediate error, disconnect and show a dialog.
+ NewOutgoingCallIntentBroadcaster.CallDisposition disposition = broadcaster.evaluateCall();
+ if (disposition.disconnectCause != DisconnectCause.NOT_DISCONNECTED) {
+ disconnectCallAndShowErrorDialog(context, call, disposition.disconnectCause);
+ return;
}
+
+ broadcaster.processCall(disposition);
}
/**
diff --git a/src/com/android/server/telecom/CallLogManager.java b/src/com/android/server/telecom/CallLogManager.java
index 6e71b73..7c31bca 100755
--- a/src/com/android/server/telecom/CallLogManager.java
+++ b/src/com/android/server/telecom/CallLogManager.java
@@ -16,6 +16,8 @@
package com.android.server.telecom;
+import static android.telephony.CarrierConfigManager.KEY_SUPPORT_IMS_CONFERENCE_EVENT_PACKAGE_BOOL;
+
import android.annotation.Nullable;
import android.content.Context;
import android.content.Intent;
@@ -35,18 +37,17 @@
import android.telecom.VideoProfile;
import android.telephony.CarrierConfigManager;
import android.telephony.PhoneNumberUtils;
+import android.telephony.SubscriptionManager;
// TODO: Needed for move to system service: import com.android.internal.R;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.telephony.CallerInfo;
+import com.android.internal.telephony.SubscriptionController;
+import com.android.server.telecom.callfiltering.CallFilteringResult;
import java.util.Arrays;
-import java.util.HashSet;
-import java.util.LinkedHashSet;
import java.util.Locale;
import java.util.Objects;
-import java.util.Set;
-import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
@@ -83,7 +84,8 @@
String postDialDigits, String viaNumber, int presentation, int callType,
int features, PhoneAccountHandle accountHandle, long creationDate,
long durationInMillis, Long dataUsage, UserHandle initiatingUser, boolean isRead,
- @Nullable LogCallCompletedListener logCallCompletedListener) {
+ @Nullable LogCallCompletedListener logCallCompletedListener, int callBlockReason,
+ CharSequence callScreeningAppName, String callScreeningComponentName) {
this.context = context;
this.callerInfo = callerInfo;
this.number = number;
@@ -99,6 +101,9 @@
this.initiatingUser = initiatingUser;
this.isRead = isRead;
this.logCallCompletedListener = logCallCompletedListener;
+ this.callBockReason = callBlockReason;
+ this.callScreeningAppName = callScreeningAppName;
+ this.callScreeningComponentName = callScreeningComponentName;
}
// Since the members are accessed directly, we don't use the
// mXxxx notation.
@@ -119,11 +124,16 @@
@Nullable
public final LogCallCompletedListener logCallCompletedListener;
+
+ public final int callBockReason;
+ public final CharSequence callScreeningAppName;
+ public final String callScreeningComponentName;
}
private static final String TAG = CallLogManager.class.getSimpleName();
private final Context mContext;
+ private final CarrierConfigManager mCarrierConfigManager;
private final PhoneAccountRegistrar mPhoneAccountRegistrar;
private final MissedCallNotifier mMissedCallNotifier;
private static final String ACTION_CALLS_TABLE_ADD_ENTRY =
@@ -139,6 +149,8 @@
public CallLogManager(Context context, PhoneAccountRegistrar phoneAccountRegistrar,
MissedCallNotifier missedCallNotifier) {
mContext = context;
+ mCarrierConfigManager = (CarrierConfigManager) mContext
+ .getSystemService(Context.CARRIER_CONFIG_SERVICE);
mPhoneAccountRegistrar = phoneAccountRegistrar;
mMissedCallNotifier = missedCallNotifier;
mLock = new Object();
@@ -151,22 +163,11 @@
newState == CallState.DISCONNECTED || newState == CallState.ABORTED;
boolean isCallCanceled = isNewlyDisconnected && disconnectCause == DisconnectCause.CANCELED;
- // Log newly disconnected calls only if:
- // 1) It was not in the "choose account" phase when disconnected
- // 2) It is a conference call
- // 3) Call was not explicitly canceled
- // 4) Call is not an external call
- // 5) Call is not a self-managed call OR call is a self-managed call which has indicated it
- // should be logged in its PhoneAccount
- if (isNewlyDisconnected &&
- (oldState != CallState.SELECT_PHONE_ACCOUNT &&
- !call.isConference() &&
- !isCallCanceled) &&
- !call.isExternalCall() &&
- (!call.isSelfManaged() ||
- (call.isLoggedSelfManaged() &&
- (call.getHandoverState() == HandoverState.HANDOVER_NONE ||
- call.getHandoverState() == HandoverState.HANDOVER_COMPLETE)))) {
+ if (!isNewlyDisconnected) {
+ return;
+ }
+
+ if (shouldLogDisconnectedCall(call, oldState, isCallCanceled)) {
int type;
if (!call.isIncoming()) {
type = Calls.OUTGOING_TYPE;
@@ -182,22 +183,100 @@
// Always show the notification for managed calls. For self-managed calls, it is up to
// the app to show the notification, so suppress the notification when logging the call.
boolean showNotification = !call.isSelfManaged();
- logCall(call, type, showNotification);
+ logCall(call, type, showNotification, null /*result*/);
}
}
- void logCall(Call call, int type, boolean showNotificationForMissedCall) {
- if (type == Calls.MISSED_TYPE && showNotificationForMissedCall) {
- logCall(call, Calls.MISSED_TYPE,
- new LogCallCompletedListener() {
- @Override
- public void onLogCompleted(@Nullable Uri uri) {
- mMissedCallNotifier.showMissedCallNotification(
- new MissedCallNotifier.CallInfo(call));
- }
- });
+ /**
+ * Log newly disconnected calls only if all of below conditions are met:
+ * Call was NOT in the "choose account" phase when disconnected
+ * Call is NOT a conference call which had children (unless it was remotely hosted).
+ * Call is NOT a child call from a conference which was remotely hosted.
+ * Call is NOT simulating a single party conference.
+ * Call was NOT explicitly canceled, except for disconnecting from a conference.
+ * Call is NOT an external call
+ * Call is NOT disconnected because of merging into a conference.
+ * Call is NOT a self-managed call OR call is a self-managed call which has indicated it
+ * should be logged in its PhoneAccount
+ */
+ @VisibleForTesting
+ public boolean shouldLogDisconnectedCall(Call call, int oldState, boolean isCallCancelled) {
+ // "Choose account" phase when disconnected
+ if (oldState == CallState.SELECT_PHONE_ACCOUNT) {
+ return false;
+ }
+ // A conference call which had children should not be logged, unless it was remotely hosted.
+ if (call.isConference() && call.hadChildren() &&
+ !call.hasProperty(Connection.PROPERTY_REMOTELY_HOSTED)) {
+ return false;
+ }
+
+ // A child call of a conference which was remotely hosted; these didn't originate on this
+ // device and should not be logged.
+ if (call.getParentCall() != null && call.hasProperty(Connection.PROPERTY_REMOTELY_HOSTED)) {
+ return false;
+ }
+
+ DisconnectCause cause = call.getDisconnectCause();
+ if (isCallCancelled) {
+ // No log when disconnecting to simulate a single party conference.
+ if (cause != null
+ && DisconnectCause.REASON_EMULATING_SINGLE_CALL.equals(cause.getReason())) {
+ return false;
+ }
+ // Explicitly canceled
+ // Conference children connections only have CAPABILITY_DISCONNECT_FROM_CONFERENCE.
+ // Log them when they are disconnected from conference.
+ return Connection.can(call.getConnectionCapabilities(),
+ Connection.CAPABILITY_DISCONNECT_FROM_CONFERENCE);
+ }
+ // An external call
+ if (call.isExternalCall()) {
+ return false;
+ }
+
+ // Call merged into conferences and marked with IMS_MERGED_SUCCESSFULLY.
+ if (cause != null && android.telephony.DisconnectCause.toString(
+ android.telephony.DisconnectCause.IMS_MERGED_SUCCESSFULLY)
+ .equals(cause.getReason())) {
+ int subscriptionId = mPhoneAccountRegistrar
+ .getSubscriptionIdForPhoneAccount(call.getTargetPhoneAccount());
+ // By default, the conference should return a list of participants.
+ if (subscriptionId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
+ return false;
+ }
+
+ PersistableBundle b = mCarrierConfigManager.getConfigForSubId(subscriptionId);
+ if (b == null) {
+ return false;
+ }
+
+ if (b.getBoolean(KEY_SUPPORT_IMS_CONFERENCE_EVENT_PACKAGE_BOOL, true)) {
+ return false;
+ }
+ }
+
+ boolean shouldCallSelfManagedLogged = call.isLoggedSelfManaged()
+ && (call.getHandoverState() == HandoverState.HANDOVER_NONE
+ || call.getHandoverState() == HandoverState.HANDOVER_COMPLETE);
+ // Call is NOT a self-managed call OR call is a self-managed call which has indicated it
+ // should be logged in its PhoneAccount
+ return !call.isSelfManaged() || shouldCallSelfManagedLogged;
+ }
+
+ void logCall(Call call, int type, boolean showNotificationForMissedCall, CallFilteringResult
+ result) {
+ if ((type == Calls.MISSED_TYPE || type == Calls.BLOCKED_TYPE) &&
+ showNotificationForMissedCall) {
+ logCall(call, type, new LogCallCompletedListener() {
+ @Override
+ public void onLogCompleted(@Nullable Uri uri) {
+ mMissedCallNotifier.showMissedCallNotification(
+ new MissedCallNotifier.CallInfo(call));
+ }
+ }, result);
} else {
- logCall(call, type, null);
+ logCall(call, type, null, result);
}
}
@@ -209,10 +288,13 @@
* {@link android.provider.CallLog.Calls#INCOMING_TYPE}
* {@link android.provider.CallLog.Calls#OUTGOING_TYPE}
* {@link android.provider.CallLog.Calls#MISSED_TYPE}
+ * {@link android.provider.CallLog.Calls#BLOCKED_TYPE}
* @param logCallCompletedListener optional callback called after the call is logged.
+ * @param result is generated when call type is
+ * {@link android.provider.CallLog.Calls#BLOCKED_TYPE}.
*/
void logCall(Call call, int callLogType,
- @Nullable LogCallCompletedListener logCallCompletedListener) {
+ @Nullable LogCallCompletedListener logCallCompletedListener, CallFilteringResult result) {
final long creationTime = call.getCreationTimeMillis();
final long age = call.getAgeMillis();
@@ -242,10 +324,22 @@
(call.getConnectionProperties() & Connection.PROPERTY_ASSISTED_DIALING_USED) ==
Connection.PROPERTY_ASSISTED_DIALING_USED,
call.wasEverRttCall());
- logCall(call.getCallerInfo(), logNumber, call.getPostDialDigits(), formattedViaNumber,
- call.getHandlePresentation(), callLogType, callFeatures, accountHandle,
- creationTime, age, callDataUsage, call.isEmergencyCall(), call.getInitiatingUser(),
- call.isSelfManaged(), logCallCompletedListener);
+
+ if (callLogType == Calls.BLOCKED_TYPE) {
+ logCall(call.getCallerInfo(), logNumber, call.getPostDialDigits(), formattedViaNumber,
+ call.getHandlePresentation(), callLogType, callFeatures, accountHandle,
+ creationTime, age, callDataUsage, call.isEmergencyCall(),
+ call.getInitiatingUser(), call.isSelfManaged(), logCallCompletedListener,
+ result.mCallBlockReason, result.mCallScreeningAppName,
+ result.mCallScreeningComponentName);
+ } else {
+ logCall(call.getCallerInfo(), logNumber, call.getPostDialDigits(), formattedViaNumber,
+ call.getHandlePresentation(), callLogType, callFeatures, accountHandle,
+ creationTime, age, callDataUsage, call.isEmergencyCall(),
+ call.getInitiatingUser(), call.isSelfManaged(), logCallCompletedListener,
+ Calls.BLOCK_REASON_NOT_BLOCKED, null /*callScreeningAppName*/,
+ null /*callScreeningComponentName*/);
+ }
}
/**
@@ -265,6 +359,9 @@
* @param logCallCompletedListener optional callback called after the call is logged.
* @param initiatingUser The user the call was initiated under.
* @param isSelfManaged {@code true} if this is a self-managed call, {@code false} otherwise.
+ * @param callBlockReason The reason why the call is blocked.
+ * @param callScreeningAppName The call screening application name which block the call.
+ * @param callScreeningComponentName The call screening component name which block the call.
*/
private void logCall(
CallerInfo callerInfo,
@@ -281,7 +378,10 @@
boolean isEmergency,
UserHandle initiatingUser,
boolean isSelfManaged,
- @Nullable LogCallCompletedListener logCallCompletedListener) {
+ @Nullable LogCallCompletedListener logCallCompletedListener,
+ int callBlockReason,
+ CharSequence callScreeningAppName,
+ String callScreeningComponentName) {
// On some devices, to avoid accidental redialing of emergency numbers, we *never* log
// emergency calls to the Call Log. (This behavior is set on a per-product basis, based
@@ -314,7 +414,8 @@
}
AddCallArgs args = new AddCallArgs(mContext, callerInfo, number, postDialDigits,
viaNumber, presentation, callType, features, accountHandle, start, duration,
- dataUsage, initiatingUser, isRead, logCallCompletedListener);
+ dataUsage, initiatingUser, isRead, logCallCompletedListener, callBlockReason,
+ callScreeningAppName, callScreeningComponentName);
logCallAsync(args);
} else {
Log.d(TAG, "Not adding emergency call to call log.");
@@ -475,7 +576,8 @@
return Calls.addCall(c.callerInfo, c.context, c.number, c.postDialDigits, c.viaNumber,
c.presentation, c.callType, c.features, c.accountHandle, c.timestamp,
c.durationInSec, c.dataUsage, userToBeInserted == null,
- userToBeInserted, c.isRead);
+ userToBeInserted, c.isRead, c.callBockReason, c.callScreeningAppName,
+ c.callScreeningComponentName);
}
diff --git a/src/com/android/server/telecom/CallScreeningServiceHelper.java b/src/com/android/server/telecom/CallScreeningServiceHelper.java
new file mode 100644
index 0000000..a9341ab
--- /dev/null
+++ b/src/com/android/server/telecom/CallScreeningServiceHelper.java
@@ -0,0 +1,230 @@
+/*
+ * Copyright (C) 2018 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;
+
+import android.Manifest;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.ServiceConnection;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.os.Handler;
+import android.os.IBinder;
+import android.os.RemoteException;
+import android.os.UserHandle;
+import android.telecom.CallScreeningService;
+import android.telecom.Log;
+import android.telecom.Logging.Session;
+import android.text.TextUtils;
+
+import com.android.internal.telecom.ICallScreeningAdapter;
+import com.android.internal.telecom.ICallScreeningService;
+
+import java.util.List;
+import java.util.concurrent.CompletableFuture;
+
+/**
+ * Helper class for performing operations with {@link CallScreeningService}s.
+ */
+public class CallScreeningServiceHelper {
+ private static final String TAG = CallScreeningServiceHelper.class.getSimpleName();
+
+ /**
+ * Abstracts away dependency on the {@link PackageManager} required to fetch the label for an
+ * app.
+ */
+ public interface AppLabelProxy {
+ CharSequence getAppLabel(String packageName);
+ }
+
+ /**
+ * Implementation of {@link CallScreeningService} adapter AIDL; provides a means for responses
+ * from the call screening service to be handled.
+ */
+ private class CallScreeningAdapter extends ICallScreeningAdapter.Stub {
+ @Override
+ public void allowCall(String s) throws RemoteException {
+ // no-op; we don't allow this on outgoing calls.
+ }
+
+ @Override
+ public void silenceCall(String s) throws RemoteException {
+ // no-op; we don't allow this on outgoing calls.
+ }
+
+ @Override
+ public void disallowCall(String s, boolean b, boolean b1, boolean b2,
+ ComponentName componentName) throws RemoteException {
+ // no-op; we don't allow this on outgoing calls.
+ }
+ }
+
+ private final ParcelableCallUtils.Converter mParcelableCallUtilsConverter;
+ private final TelecomSystem.SyncRoot mTelecomLock;
+ private final Call mCall;
+ private final UserHandle mUserHandle;
+ private final Context mContext;
+ private final AppLabelProxy mAppLabelProxy;
+ private final Session mLoggingSession;
+ private CompletableFuture mFuture;
+ private String mPackageName;
+
+ public CallScreeningServiceHelper(Context context, TelecomSystem.SyncRoot telecomLock,
+ String packageName, ParcelableCallUtils.Converter converter,
+ UserHandle userHandle, Call call, AppLabelProxy appLabelProxy) {
+ mContext = context;
+ mTelecomLock = telecomLock;
+ mParcelableCallUtilsConverter = converter;
+ mCall = call;
+ mUserHandle = userHandle;
+ mPackageName = packageName;
+ mAppLabelProxy = appLabelProxy;
+ mLoggingSession = Log.createSubsession();
+ }
+
+ /**
+ * Builds a {@link CompletableFuture} which performs a bind to a {@link CallScreeningService}
+ * @return
+ */
+ public CompletableFuture process() {
+ Log.d(this, "process");
+ return bindAndGetCallIdentification();
+ }
+
+ public CompletableFuture bindAndGetCallIdentification() {
+ Log.d(this, "bindAndGetCallIdentification");
+ if (mPackageName == null) {
+ return CompletableFuture.completedFuture(null);
+ }
+
+ mFuture = new CompletableFuture();
+
+ ServiceConnection serviceConnection = new ServiceConnection() {
+ @Override
+ public void onServiceConnected(ComponentName name, IBinder service) {
+ ICallScreeningService screeningService =
+ ICallScreeningService.Stub.asInterface(service);
+ Log.continueSession(mLoggingSession, "CSSH.oSC");
+ try {
+ try {
+ // Note: for outgoing calls, never include the restricted extras.
+ screeningService.screenCall(new CallScreeningAdapter(),
+ mParcelableCallUtilsConverter.toParcelableCallForScreening(mCall,
+ false /* areRestrictedExtrasIncluded */));
+ } catch (RemoteException e) {
+ Log.w(CallScreeningServiceHelper.this,
+ "Cancelling call id due to remote exception");
+ mFuture.complete(null);
+ }
+ } finally {
+ Log.endSession();
+ }
+ }
+
+ @Override
+ public void onServiceDisconnected(ComponentName name) {
+ // No locking needed -- CompletableFuture only lets one thread call complete.
+ Log.continueSession(mLoggingSession, "CSSH.oSD");
+ try {
+ if (!mFuture.isDone()) {
+ Log.w(CallScreeningServiceHelper.this,
+ "Cancelling outgoing call screen due to service disconnect.");
+ }
+ mFuture.complete(null);
+ } finally {
+ Log.endSession();
+ }
+ }
+ };
+
+ if (!bindCallScreeningService(mContext, mUserHandle, mPackageName, serviceConnection)) {
+ Log.i(this, "bindAndGetCallIdentification - bind failed");
+ Log.addEvent(mCall, LogUtils.Events.BIND_SCREENING, mPackageName);
+ mFuture.complete(null);
+ }
+
+ // Set up a timeout so that we're not waiting forever for the caller ID information.
+ Handler handler = new Handler();
+ handler.postDelayed(() -> {
+ // No locking needed -- CompletableFuture only lets one thread call complete.
+ Log.continueSession(mLoggingSession, "CSSH.timeout");
+ try {
+ if (!mFuture.isDone()) {
+ Log.w(TAG, "Cancelling call id process due to timeout");
+ }
+ mFuture.complete(null);
+ } finally {
+ Log.endSession();
+ }
+ },
+ Timeouts.getCallScreeningTimeoutMillis(mContext.getContentResolver()));
+ return mFuture;
+ }
+
+ /**
+ * Binds to a {@link CallScreeningService}.
+ * @param context The current context.
+ * @param userHandle User to bind as.
+ * @param packageName Package name of the {@link CallScreeningService}.
+ * @param serviceConnection The {@link ServiceConnection} to be notified of binding.
+ * @return {@code true} if binding succeeds, {@code false} otherwise.
+ */
+ public static boolean bindCallScreeningService(Context context, UserHandle userHandle,
+ String packageName, ServiceConnection serviceConnection) {
+ if (TextUtils.isEmpty(packageName)) {
+ Log.i(TAG, "PackageName is empty. Not performing call screening.");
+ return false;
+ }
+
+ Intent intent = new Intent(CallScreeningService.SERVICE_INTERFACE)
+ .setPackage(packageName);
+ List<ResolveInfo> entries = context.getPackageManager().queryIntentServicesAsUser(
+ intent, 0, userHandle.getIdentifier());
+ if (entries.isEmpty()) {
+ Log.i(TAG, packageName + " has no call screening service defined.");
+ return false;
+ }
+
+ ResolveInfo entry = entries.get(0);
+ if (entry.serviceInfo == null) {
+ Log.w(TAG, packageName + " call screening service has invalid service info");
+ return false;
+ }
+
+ if (entry.serviceInfo.permission == null || !entry.serviceInfo.permission.equals(
+ Manifest.permission.BIND_SCREENING_SERVICE)) {
+ Log.w(TAG, "CallScreeningService must require BIND_SCREENING_SERVICE permission: " +
+ entry.serviceInfo.packageName);
+ return false;
+ }
+
+ ComponentName componentName =
+ new ComponentName(entry.serviceInfo.packageName, entry.serviceInfo.name);
+ intent.setComponent(componentName);
+ if (context.bindServiceAsUser(
+ intent,
+ serviceConnection,
+ Context.BIND_AUTO_CREATE | Context.BIND_FOREGROUND_SERVICE,
+ UserHandle.CURRENT)) {
+ Log.d(TAG, "bindService, found service, waiting for it to connect");
+ return true;
+ }
+
+ return false;
+ }
+}
diff --git a/src/com/android/server/telecom/CallState.java b/src/com/android/server/telecom/CallState.java
index 05ac38e..1e31732 100644
--- a/src/com/android/server/telecom/CallState.java
+++ b/src/com/android/server/telecom/CallState.java
@@ -114,6 +114,12 @@
*/
public static final int PULLING = TelecomProtoEnums.PULLING; // = 10
+ /**
+ * Indicates that an incoming call has been answered by the in-call UI, but Telephony hasn't yet
+ * set the call to active.
+ */
+ public static final int ANSWERED = 11;
+
public static String toString(int callState) {
switch (callState) {
case NEW:
@@ -138,6 +144,8 @@
return "DISCONNECTING";
case PULLING:
return "PULLING";
+ case ANSWERED:
+ return "ANSWERED";
default:
return "UNKNOWN";
}
diff --git a/src/com/android/server/telecom/CallerInfoLookupHelper.java b/src/com/android/server/telecom/CallerInfoLookupHelper.java
index f67a7f7..a919921 100644
--- a/src/com/android/server/telecom/CallerInfoLookupHelper.java
+++ b/src/com/android/server/telecom/CallerInfoLookupHelper.java
@@ -27,6 +27,7 @@
import android.telecom.Logging.Runnable;
import android.telecom.Logging.Session;
import android.text.TextUtils;
+import android.util.Pair;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.telephony.CallerInfo;
@@ -37,6 +38,7 @@
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
+import java.util.concurrent.CompletableFuture;
public class CallerInfoLookupHelper {
public interface OnQueryCompleteListener {
@@ -77,6 +79,47 @@
mLock = lock;
}
+ /**
+ * Generates a CompletableFuture which performs a contacts lookup asynchronously. The future
+ * returns a {@link Pair} containing the original handle which is being looked up and any
+ * {@link CallerInfo} which was found.
+ * @param handle
+ * @return {@link CompletableFuture} to perform the contacts lookup.
+ */
+ public CompletableFuture<Pair<Uri, CallerInfo>> startLookup(final Uri handle) {
+ // Create the returned future and
+ final CompletableFuture<Pair<Uri, CallerInfo>> callerInfoFuture = new CompletableFuture<>();
+
+ final String number = handle.getSchemeSpecificPart();
+ if (TextUtils.isEmpty(number)) {
+ // Nothing to do here, just finish.
+ Log.d(CallerInfoLookupHelper.this, "onCallerInfoQueryComplete - no number; end early");
+ callerInfoFuture.complete(new Pair<>(handle, null));
+ return callerInfoFuture;
+ }
+
+ // Setup a query complete listener which will get the results of the contacts lookup.
+ OnQueryCompleteListener listener = new OnQueryCompleteListener() {
+ @Override
+ public void onCallerInfoQueryComplete(Uri handle, CallerInfo info) {
+ Log.d(CallerInfoLookupHelper.this, "onCallerInfoQueryComplete - found info for %s",
+ Log.piiHandle(handle));
+ // Got something, so complete the future.
+ callerInfoFuture.complete(new Pair<>(handle, info));
+ }
+
+ @Override
+ public void onContactPhotoQueryComplete(Uri handle, CallerInfo info) {
+ // No-op for now; not something this future cares about.
+ }
+ };
+
+ // Start async lookup.
+ startLookup(handle, listener);
+
+ return callerInfoFuture;
+ }
+
public void startLookup(final Uri handle, OnQueryCompleteListener listener) {
if (handle == null) {
listener.onCallerInfoQueryComplete(handle, null);
@@ -108,8 +151,9 @@
Log.i(this, "There is a previously incomplete query for handle %s. Adding to " +
"listeners for this query.", Log.piiHandle(handle));
info.listeners.add(listener);
- return;
}
+ // Since we have a pending query for this handle already, don't re-query it.
+ return;
} else {
CallerInfoQueryInfo info = new CallerInfoQueryInfo();
info.listeners.add(listener);
@@ -117,7 +161,7 @@
}
}
- mHandler.post(new Runnable("CILH.sL", mLock) {
+ mHandler.post(new Runnable("CILH.sL", null) {
@Override
public void loggedRun() {
Session continuedSession = Log.createSubsession();
@@ -171,7 +215,7 @@
}
private void startPhotoLookup(final Uri handle, final Uri contactPhotoUri) {
- mHandler.post(new Runnable("CILH.sPL", mLock) {
+ mHandler.post(new Runnable("CILH.sPL", null) {
@Override
public void loggedRun() {
Session continuedSession = Log.createSubsession();
diff --git a/src/com/android/server/telecom/CallsManager.java b/src/com/android/server/telecom/CallsManager.java
index ad7c03d..0adfc41 100644
--- a/src/com/android/server/telecom/CallsManager.java
+++ b/src/com/android/server/telecom/CallsManager.java
@@ -16,16 +16,22 @@
package com.android.server.telecom;
+import android.annotation.NonNull;
import android.app.ActivityManager;
import android.app.KeyguardManager;
import android.content.BroadcastReceiver;
import android.content.Context;
-import android.content.pm.UserInfo;
import android.content.Intent;
import android.content.IntentFilter;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.UserInfo;
import android.media.AudioManager;
import android.media.AudioSystem;
+import android.media.ToneGenerator;
+import android.media.MediaPlayer;
import android.net.Uri;
+import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
@@ -45,20 +51,24 @@
import android.telecom.DisconnectCause;
import android.telecom.GatewayInfo;
import android.telecom.Log;
+import android.telecom.Logging.Runnable;
+import android.telecom.Logging.Session;
import android.telecom.ParcelableConference;
import android.telecom.ParcelableConnection;
import android.telecom.PhoneAccount;
import android.telecom.PhoneAccountHandle;
-import android.telecom.Logging.Runnable;
+import android.telecom.PhoneAccountSuggestion;
import android.telecom.TelecomManager;
import android.telecom.VideoProfile;
import android.telephony.CarrierConfigManager;
import android.telephony.PhoneNumberUtils;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
+import android.util.Pair;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.telephony.AsyncEmergencyContactNotifier;
+import com.android.internal.telephony.CallerInfo;
import com.android.internal.telephony.PhoneConstants;
import com.android.internal.telephony.TelephonyProperties;
import com.android.internal.util.IndentingPrintWriter;
@@ -68,11 +78,14 @@
import com.android.server.telecom.callfiltering.BlockCheckerAdapter;
import com.android.server.telecom.callfiltering.CallFilterResultCallback;
import com.android.server.telecom.callfiltering.CallFilteringResult;
-import com.android.server.telecom.callfiltering.CallScreeningServiceFilter;
+import com.android.server.telecom.callfiltering.CallScreeningServiceController;
import com.android.server.telecom.callfiltering.DirectToVoicemailCallFilter;
import com.android.server.telecom.callfiltering.IncomingCallFilter;
+import com.android.server.telecom.callredirection.CallRedirectionProcessor;
import com.android.server.telecom.components.ErrorDialogActivity;
import com.android.server.telecom.settings.BlockedNumbersUtil;
+import com.android.server.telecom.ui.CallRedirectionConfirmDialogActivity;
+import com.android.server.telecom.ui.CallRedirectionTimeoutDialogActivity;
import com.android.server.telecom.ui.ConfirmCallDialogActivity;
import com.android.server.telecom.ui.IncomingCallNotifier;
@@ -88,6 +101,7 @@
import java.util.Objects;
import java.util.Optional;
import java.util.Set;
+import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
@@ -128,6 +142,8 @@
void onHoldToneRequested(Call call);
void onExternalCallChanged(Call call, boolean isExternalCall);
void onDisconnectedTonePlaying(boolean isTonePlaying);
+ void onConnectionTimeChanged(Call call);
+ void onConferenceStateChanged(Call call, boolean isConference);
}
/** Interface used to define the action which is executed delay under some condition. */
@@ -191,12 +207,13 @@
*/
public static final int[] ONGOING_CALL_STATES =
{CallState.SELECT_PHONE_ACCOUNT, CallState.DIALING, CallState.PULLING, CallState.ACTIVE,
- CallState.ON_HOLD, CallState.RINGING};
+ CallState.ON_HOLD, CallState.RINGING, CallState.ANSWERED};
private static final int[] ANY_CALL_STATE =
{CallState.NEW, CallState.CONNECTING, CallState.SELECT_PHONE_ACCOUNT, CallState.DIALING,
CallState.RINGING, CallState.ACTIVE, CallState.ON_HOLD, CallState.DISCONNECTED,
- CallState.ABORTED, CallState.DISCONNECTING, CallState.PULLING};
+ CallState.ABORTED, CallState.DISCONNECTING, CallState.PULLING,
+ CallState.ANSWERED};
public static final String TELECOM_CALL_ID_PREFIX = "TC@";
@@ -225,9 +242,35 @@
/**
* A pending call is one which requires user-intervention in order to be placed.
- * Used by {@link #startCallConfirmation(Call)}.
+ * Used by {@link #startCallConfirmation}.
*/
private Call mPendingCall;
+ /**
+ * Cached latest pending redirected call which requires user-intervention in order to be placed.
+ * Used by {@link #onCallRedirectionComplete}.
+ */
+ private Call mPendingRedirectedOutgoingCall;
+ /**
+ * Cached latest pending redirected call information which require user-intervention in order
+ * to be placed. Used by {@link #onCallRedirectionComplete}.
+ */
+ private final Map<String, Runnable> mPendingRedirectedOutgoingCallInfo =
+ new ConcurrentHashMap<>();
+ /**
+ * Cached latest pending Unredirected call information which require user-intervention in order
+ * to be placed. Used by {@link #onCallRedirectionComplete}.
+ */
+ private final Map<String, Runnable> mPendingUnredirectedOutgoingCallInfo =
+ new ConcurrentHashMap<>();
+
+ private CompletableFuture<Call> mPendingCallConfirm;
+ private CompletableFuture<Pair<Call, PhoneAccountHandle>> mPendingAccountSelection;
+
+ // Instance variables for testing -- we keep the latest copy of the outgoing call futures
+ // here so that we can wait on them in tests
+ private CompletableFuture<Call> mLatestPostSelectionProcessingFuture;
+ private CompletableFuture<Pair<Call, List<PhoneAccountSuggestion>>>
+ mLatestPreAccountSelectionFuture;
/**
* The current telecom call ID. Used when creating new instances of {@link Call}. Should
@@ -256,6 +299,7 @@
new ConcurrentHashMap<CallsManagerListener, Boolean>(16, 0.9f, 1));
private final HeadsetMediaButton mHeadsetMediaButton;
private final WiredHeadsetManager mWiredHeadsetManager;
+ private final SystemStateHelper mSystemStateHelper;
private final BluetoothRouteManager mBluetoothRouteManager;
private final DockManager mDockManager;
private final TtyManager mTtyManager;
@@ -264,8 +308,6 @@
private final CallLogManager mCallLogManager;
private final Context mContext;
private final TelecomSystem.SyncRoot mLock;
- private final ContactsAsyncHelper mContactsAsyncHelper;
- private final CallerInfoAsyncQueryFactory mCallerInfoAsyncQueryFactory;
private final PhoneAccountRegistrar mPhoneAccountRegistrar;
private final MissedCallNotifier mMissedCallNotifier;
private IncomingCallNotifier mIncomingCallNotifier;
@@ -280,6 +322,7 @@
/* Handler tied to thread in which CallManager was initialized. */
private final Handler mHandler = new Handler(Looper.getMainLooper());
private final EmergencyCallHelper mEmergencyCallHelper;
+ private final RoleManagerAdapter mRoleManagerAdapter;
private final ConnectionServiceFocusManager.CallsManagerRequester mRequester =
new ConnectionServiceFocusManager.CallsManagerRequester() {
@@ -317,6 +360,12 @@
PhoneAccountHandle handle) {
broadcastUnregisterIntent(handle);
}
+
+ @Override
+ public void onPhoneAccountChanged(PhoneAccountRegistrar registrar,
+ PhoneAccount phoneAccount) {
+ handlePhoneAccountChanged(registrar, phoneAccount);
+ }
};
/**
@@ -328,15 +377,34 @@
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
+ Log.startSession("CM.CCCR");
String action = intent.getAction();
if (CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED.equals(action)
|| SystemContract.ACTION_BLOCK_SUPPRESSION_STATE_CHANGED.equals(action)) {
- BlockedNumbersUtil.updateEmergencyCallNotification(context,
- SystemContract.shouldShowEmergencyCallNotification(context));
- }
+ new UpdateEmergencyCallNotificationTask().doInBackground(
+ Pair.create(context, Log.createSubsession()));
+ }
}
};
+ private static class UpdateEmergencyCallNotificationTask
+ extends AsyncTask<Pair<Context, Session>, Void, Void> {
+ @SafeVarargs
+ @Override
+ protected final Void doInBackground(Pair<Context, Session>... args) {
+ if (args == null || args.length != 1 || args[0] == null) {
+ Log.e(this, new IllegalArgumentException(), "Incorrect invocation");
+ return null;
+ }
+ Log.continueSession(args[0].second, "CM.UECNT");
+ Context context = args[0].first;
+ BlockedNumbersUtil.updateEmergencyCallNotification(context,
+ SystemContract.shouldShowEmergencyCallNotification(context));
+ Log.endSession();
+ return null;
+ }
+ }
+
/**
* Initializes the required Telecom components.
*/
@@ -344,8 +412,7 @@
public CallsManager(
Context context,
TelecomSystem.SyncRoot lock,
- ContactsAsyncHelper contactsAsyncHelper,
- CallerInfoAsyncQueryFactory callerInfoAsyncQueryFactory,
+ CallerInfoLookupHelper callerInfoLookupHelper,
MissedCallNotifier missedCallNotifier,
PhoneAccountRegistrar phoneAccountRegistrar,
HeadsetMediaButtonFactory headsetMediaButtonFactory,
@@ -356,7 +423,7 @@
CallAudioManager.AudioServiceFactory audioServiceFactory,
BluetoothRouteManager bluetoothManager,
WiredHeadsetManager wiredHeadsetManager,
- SystemStateProvider systemStateProvider,
+ SystemStateHelper systemStateHelper,
DefaultDialerCache defaultDialerCache,
Timeouts.Adapter timeoutsAdapter,
AsyncRingtonePlayer asyncRingtonePlayer,
@@ -365,36 +432,38 @@
InCallTonePlayer.ToneGeneratorFactory toneGeneratorFactory,
ClockProxy clockProxy,
BluetoothStateReceiver bluetoothStateReceiver,
- InCallControllerFactory inCallControllerFactory) {
+ CallAudioRouteStateMachine.Factory callAudioRouteStateMachineFactory,
+ CallAudioModeStateMachine.Factory callAudioModeStateMachineFactory,
+ InCallControllerFactory inCallControllerFactory,
+ RoleManagerAdapter roleManagerAdapter) {
mContext = context;
mLock = lock;
mPhoneNumberUtilsAdapter = phoneNumberUtilsAdapter;
- mContactsAsyncHelper = contactsAsyncHelper;
- mCallerInfoAsyncQueryFactory = callerInfoAsyncQueryFactory;
mPhoneAccountRegistrar = phoneAccountRegistrar;
mPhoneAccountRegistrar.addListener(mPhoneAccountListener);
mMissedCallNotifier = missedCallNotifier;
StatusBarNotifier statusBarNotifier = new StatusBarNotifier(context, this);
mWiredHeadsetManager = wiredHeadsetManager;
+ mSystemStateHelper = systemStateHelper;
mDefaultDialerCache = defaultDialerCache;
mBluetoothRouteManager = bluetoothManager;
mDockManager = new DockManager(context);
mTimeoutsAdapter = timeoutsAdapter;
mEmergencyCallHelper = emergencyCallHelper;
- mCallerInfoLookupHelper = new CallerInfoLookupHelper(context, mCallerInfoAsyncQueryFactory,
- mContactsAsyncHelper, mLock);
+ mCallerInfoLookupHelper = callerInfoLookupHelper;
mDtmfLocalTonePlayer =
new DtmfLocalTonePlayer(new DtmfLocalTonePlayer.ToneGeneratorProxy());
- CallAudioRouteStateMachine callAudioRouteStateMachine = new CallAudioRouteStateMachine(
- context,
- this,
- bluetoothManager,
- wiredHeadsetManager,
- statusBarNotifier,
- audioServiceFactory,
- CallAudioRouteStateMachine.EARPIECE_AUTO_DETECT
- );
+ CallAudioRouteStateMachine callAudioRouteStateMachine =
+ callAudioRouteStateMachineFactory.create(
+ context,
+ this,
+ bluetoothManager,
+ wiredHeadsetManager,
+ statusBarNotifier,
+ audioServiceFactory,
+ CallAudioRouteStateMachine.EARPIECE_AUTO_DETECT
+ );
callAudioRouteStateMachine.initialize();
CallAudioRoutePeripheralAdapter callAudioRoutePeripheralAdapter =
@@ -404,27 +473,33 @@
wiredHeadsetManager,
mDockManager);
+ AudioManager audioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
+ InCallTonePlayer.MediaPlayerFactory mediaPlayerFactory =
+ (resourceId, attributes) ->
+ new InCallTonePlayer.MediaPlayerAdapterImpl(
+ MediaPlayer.create(mContext, resourceId, attributes,
+ audioManager.generateAudioSessionId()));
InCallTonePlayer.Factory playerFactory = new InCallTonePlayer.Factory(
- callAudioRoutePeripheralAdapter, lock, toneGeneratorFactory);
+ callAudioRoutePeripheralAdapter, lock, toneGeneratorFactory, mediaPlayerFactory,
+ () -> audioManager.getStreamVolume(AudioManager.STREAM_RING) > 0);
SystemSettingsUtil systemSettingsUtil = new SystemSettingsUtil();
RingtoneFactory ringtoneFactory = new RingtoneFactory(this, context);
SystemVibrator systemVibrator = new SystemVibrator(context);
mInCallController = inCallControllerFactory.create(context, mLock, this,
- systemStateProvider, defaultDialerCache, mTimeoutsAdapter,
+ systemStateHelper, defaultDialerCache, mTimeoutsAdapter,
emergencyCallHelper);
mRinger = new Ringer(playerFactory, context, systemSettingsUtil, asyncRingtonePlayer,
- ringtoneFactory, systemVibrator, mInCallController);
- mCallRecordingTonePlayer = new CallRecordingTonePlayer(mContext,
- (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE), mLock);
+ ringtoneFactory, systemVibrator,
+ new Ringer.VibrationEffectProxy(), mInCallController);
+ mCallRecordingTonePlayer = new CallRecordingTonePlayer(mContext, audioManager, mLock);
mCallAudioManager = new CallAudioManager(callAudioRouteStateMachine,
- this,new CallAudioModeStateMachine((AudioManager)
- mContext.getSystemService(Context.AUDIO_SERVICE)),
+ this, callAudioModeStateMachineFactory.create(systemStateHelper,
+ (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE)),
playerFactory, mRinger, new RingbackPlayer(playerFactory),
bluetoothStateReceiver, mDtmfLocalTonePlayer);
- mConnectionSvrFocusMgr = connectionServiceFocusManagerFactory.create(
- mRequester, Looper.getMainLooper());
+ mConnectionSvrFocusMgr = connectionServiceFocusManagerFactory.create(mRequester);
mHeadsetMediaButton = headsetMediaButtonFactory.create(context, this, mLock);
mTtyManager = new TtyManager(context, mWiredHeadsetManager);
mProximitySensorManager = proximitySensorManagerFactory.create(context, this);
@@ -434,6 +509,7 @@
new ConnectionServiceRepository(mPhoneAccountRegistrar, mContext, mLock, this);
mInCallWakeLockController = inCallWakeLockControllerFactory.create(context, this);
mClockProxy = clockProxy;
+ mRoleManagerAdapter = roleManagerAdapter;
mListeners.add(mInCallWakeLockController);
mListeners.add(statusBarNotifier);
@@ -483,6 +559,10 @@
return mCallerInfoLookupHelper;
}
+ public RoleManagerAdapter getRoleManagerAdapter() {
+ return mRoleManagerAdapter;
+ }
+
@Override
public void onSuccessfulOutgoingCall(Call call, int callState) {
Log.v(this, "onSuccessfulOutgoingCall, %s", call);
@@ -512,18 +592,47 @@
@Override
public void onSuccessfulIncomingCall(Call incomingCall) {
Log.d(this, "onSuccessfulIncomingCall");
- if (incomingCall.hasProperty(Connection.PROPERTY_EMERGENCY_CALLBACK_MODE)) {
- Log.i(this, "Skipping call filtering due to ECBM");
+ PhoneAccount phoneAccount = mPhoneAccountRegistrar.getPhoneAccountUnchecked(
+ incomingCall.getTargetPhoneAccount());
+ Bundle extras =
+ phoneAccount == null || phoneAccount.getExtras() == null
+ ? new Bundle()
+ : phoneAccount.getExtras();
+ if (incomingCall.hasProperty(Connection.PROPERTY_EMERGENCY_CALLBACK_MODE) ||
+ incomingCall.isSelfManaged() ||
+ extras.getBoolean(PhoneAccount.EXTRA_SKIP_CALL_FILTERING)) {
+ Log.i(this, "Skipping call filtering for %s (ecm=%b, selfMgd=%b, skipExtra=%b)",
+ incomingCall.getId(),
+ incomingCall.hasProperty(Connection.PROPERTY_EMERGENCY_CALLBACK_MODE),
+ incomingCall.isSelfManaged(),
+ extras.getBoolean(PhoneAccount.EXTRA_SKIP_CALL_FILTERING));
onCallFilteringComplete(incomingCall, new CallFilteringResult(true, false, true, true));
+ incomingCall.setIsUsingCallFiltering(false);
return;
}
+ incomingCall.setIsUsingCallFiltering(true);
List<IncomingCallFilter.CallFilter> filters = new ArrayList<>();
filters.add(new DirectToVoicemailCallFilter(mCallerInfoLookupHelper));
filters.add(new AsyncBlockCheckFilter(mContext, new BlockCheckerAdapter(),
- mCallerInfoLookupHelper));
- filters.add(new CallScreeningServiceFilter(mContext, this, mPhoneAccountRegistrar,
- mDefaultDialerCache, new ParcelableCallUtils.Converter(), mLock));
+ mCallerInfoLookupHelper, null));
+ filters.add(new CallScreeningServiceController(mContext, this, mPhoneAccountRegistrar,
+ new ParcelableCallUtils.Converter(), mLock,
+ new TelecomServiceImpl.SettingsSecureAdapterImpl(), mCallerInfoLookupHelper,
+ new CallScreeningServiceHelper.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;
+ }
+ }));
new IncomingCallFilter(mContext, this, incomingCall, mLock,
mTimeoutsAdapter, filters).performFiltering();
}
@@ -549,12 +658,21 @@
} else {
Log.i(this, "onCallFilteringCompleted: Call rejected! " +
"Exceeds maximum number of ringing calls.");
- rejectCallAndLog(incomingCall);
+ rejectCallAndLog(incomingCall, result);
}
} else if (hasMaximumManagedDialingCalls(incomingCall)) {
- Log.i(this, "onCallFilteringCompleted: Call rejected! Exceeds maximum number of " +
- "dialing calls.");
- rejectCallAndLog(incomingCall);
+ if (shouldSilenceInsteadOfReject(incomingCall)) {
+ incomingCall.silence();
+ } else {
+
+ Log.i(this, "onCallFilteringCompleted: Call rejected! Exceeds maximum number of " +
+ "dialing calls.");
+ rejectCallAndLog(incomingCall, result);
+ }
+ } else if (result.shouldSilence) {
+ Log.i(this, "onCallFilteringCompleted: setting the call to silent ringing state");
+ incomingCall.setSilentRingingRequested(true);
+ addCall(incomingCall);
} else {
addCall(incomingCall);
}
@@ -568,8 +686,8 @@
if (result.shouldShowNotification) {
Log.w(this, "onCallScreeningCompleted: blocked call, showing notification.");
}
- mCallLogManager.logCall(incomingCall, Calls.MISSED_TYPE,
- result.shouldShowNotification);
+ mCallLogManager.logCall(incomingCall, Calls.BLOCKED_TYPE,
+ result.shouldShowNotification, result);
} else if (result.shouldShowNotification) {
Log.i(this, "onCallScreeningCompleted: blocked call, showing notification.");
mMissedCallNotifier.showMissedCallNotification(
@@ -579,8 +697,10 @@
}
/**
- * 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.
+ * In the event that the maximum supported calls of a given type is reached, the
+ * default behavior is to reject any additional calls of that type. This checks
+ * if the device is configured to silence instead of reject the call, provided
+ * that the incoming call is from a different source (connection service).
*/
private boolean shouldSilenceInsteadOfReject(Call incomingCall) {
if (!mContext.getResources().getBoolean(
@@ -588,8 +708,6 @@
return false;
}
- Call ringingCall = null;
-
for (Call call : mCalls) {
// Only operate on top-level calls
if (call.getParentCall() != null) {
@@ -600,8 +718,7 @@
continue;
}
- if (CallState.RINGING == call.getState() &&
- call.getConnectionService() == incomingCall.getConnectionService()) {
+ if (call.getConnectionService() == incomingCall.getConnectionService()) {
return false;
}
}
@@ -696,6 +813,15 @@
}
@Override
+ public void onConferenceStateChanged(Call call, boolean isConference) {
+ // Conference changed whether it is treated as a conference or not.
+ updateCanAddCall();
+ for (CallsManagerListener listener : mListeners) {
+ listener.onConferenceStateChanged(call, isConference);
+ }
+ }
+
+ @Override
public void onIsVoipAudioModeChanged(Call call) {
for (CallsManagerListener listener : mListeners) {
listener.onIsVoipAudioModeChanged(call);
@@ -812,6 +938,18 @@
}
@Override
+ public void onCallHoldFailed(Call call) {
+ // Normally, we don't care whether a call hold has failed. However, if a call was held in
+ // order to answer an incoming call, that incoming call needs to be brought out of the
+ // ANSWERED state so that the user can try the operation again.
+ for (Call call1 : mCalls) {
+ if (call1 != call && call1.getState() == CallState.ANSWERED) {
+ setCallState(call1, CallState.RINGING, "hold failed on other call");
+ }
+ }
+ }
+
+ @Override
public UserHandle getCurrentUserHandle() {
return mCurrentUserHandle;
}
@@ -829,6 +967,11 @@
}
@VisibleForTesting
+ public PhoneAccountRegistrar.Listener getPhoneAccountListener() {
+ return mPhoneAccountListener;
+ }
+
+ @VisibleForTesting
public boolean hasEmergencyCall() {
for (Call call : mCalls) {
if (call.isEmergencyCall()) {
@@ -912,8 +1055,6 @@
this,
mLock,
mConnectionServiceRepository,
- mContactsAsyncHelper,
- mCallerInfoAsyncQueryFactory,
mPhoneNumberUtilsAdapter,
handle,
null /* gatewayInfo */,
@@ -1047,8 +1188,6 @@
this,
mLock,
mConnectionServiceRepository,
- mContactsAsyncHelper,
- mCallerInfoAsyncQueryFactory,
mPhoneNumberUtilsAdapter,
handle,
null /* gatewayInfo */,
@@ -1108,20 +1247,24 @@
* For self-managed connections, we don't expect the Incall UI to launch, but this is still a
* first step in getting the self-managed ConnectionService to create the connection.
* @param handle Handle to connect the call with.
- * @param phoneAccountHandle The phone account which contains the component name of the
+ * @param requestedAccountHandle The phone account which contains the component name of the
* connection service to use for this call.
* @param extras The optional extras Bundle passed with the intent used for the incoming call.
* @param initiatingUser {@link UserHandle} of user that place the outgoing call.
* @param originalIntent
+ * @param callingPackage the package name of the app which initiated the outgoing call.
*/
@VisibleForTesting
- public Call startOutgoingCall(Uri handle, PhoneAccountHandle phoneAccountHandle, Bundle extras,
- UserHandle initiatingUser, Intent originalIntent) {
- boolean isReusedCall = true;
+ public @NonNull
+ CompletableFuture<Call> startOutgoingCall(Uri handle,
+ PhoneAccountHandle requestedAccountHandle,
+ Bundle extras, UserHandle initiatingUser, Intent originalIntent,
+ String callingPackage) {
+ boolean isReusedCall;
Call call = reuseOutgoingCall(handle);
PhoneAccount account =
- mPhoneAccountRegistrar.getPhoneAccount(phoneAccountHandle, initiatingUser);
+ mPhoneAccountRegistrar.getPhoneAccount(requestedAccountHandle, initiatingUser);
boolean isSelfManaged = account != null && account.isSelfManaged();
// Create a call with original handle. The handle may be changed when the call is attached
@@ -1131,18 +1274,16 @@
this,
mLock,
mConnectionServiceRepository,
- mContactsAsyncHelper,
- mCallerInfoAsyncQueryFactory,
mPhoneNumberUtilsAdapter,
handle,
null /* gatewayInfo */,
null /* connectionManagerPhoneAccount */,
- null /* phoneAccountHandle */,
+ null /* requestedAccountHandle */,
Call.CALL_DIRECTION_OUTGOING /* callDirection */,
false /* forceAttachToExistingConnection */,
false, /* isConference */
mClockProxy);
- call.initAnalytics();
+ call.initAnalytics(callingPackage);
// Ensure new calls related to self-managed calls/connections are set as such. This
// will be overridden when the actual connection is returned in startCreateConnection,
@@ -1155,6 +1296,8 @@
}
call.setInitiatingUser(initiatingUser);
isReusedCall = false;
+ } else {
+ isReusedCall = true;
}
int videoState = VideoProfile.STATE_AUDIO_ONLY;
@@ -1189,96 +1332,274 @@
call.setVideoState(videoState);
}
- List<PhoneAccountHandle> potentialPhoneAccounts = findOutgoingCallPhoneAccount(
- phoneAccountHandle, handle, VideoProfile.isVideo(videoState), initiatingUser);
- if (potentialPhoneAccounts.size() == 1) {
- phoneAccountHandle = potentialPhoneAccounts.get(0);
- } else {
- phoneAccountHandle = null;
+ final int finalVideoState = videoState;
+ final Call finalCall = call;
+ Handler outgoingCallHandler = new Handler(Looper.getMainLooper());
+ // Create a empty CompletableFuture and compose it with findOutgoingPhoneAccount to get
+ // a first guess at the list of suitable outgoing PhoneAccounts.
+ // findOutgoingPhoneAccount returns a CompletableFuture which is either already complete
+ // (in the case where we don't need to do the per-contact lookup) or a CompletableFuture
+ // that completes once the contact lookup via CallerInfoLookupHelper is complete.
+ CompletableFuture<List<PhoneAccountHandle>> accountsForCall =
+ CompletableFuture.completedFuture((Void) null).thenComposeAsync((x) ->
+ findOutgoingCallPhoneAccount(requestedAccountHandle, handle,
+ VideoProfile.isVideo(finalVideoState), initiatingUser),
+ new LoggedHandlerExecutor(outgoingCallHandler, "CM.fOCP", mLock));
+
+ // This is a block of code that executes after the list of potential phone accts has been
+ // retrieved.
+ CompletableFuture<List<PhoneAccountHandle>> setAccountHandle =
+ accountsForCall.whenCompleteAsync((potentialPhoneAccounts, exception) -> {
+ Log.i(CallsManager.this, "set outgoing call phone acct stage");
+ PhoneAccountHandle phoneAccountHandle;
+ if (potentialPhoneAccounts.size() == 1) {
+ phoneAccountHandle = potentialPhoneAccounts.get(0);
+ } else {
+ phoneAccountHandle = null;
+ }
+ finalCall.setTargetPhoneAccount(phoneAccountHandle);
+ }, new LoggedHandlerExecutor(outgoingCallHandler, "CM.sOCPA", mLock));
+
+
+ // This composes the future containing the potential phone accounts with code that queries
+ // the suggestion service if necessary (i.e. if the list is longer than 1).
+ // If the suggestion service is queried, the inner lambda will return a future that
+ // completes when the suggestion service calls the callback.
+ CompletableFuture<List<PhoneAccountSuggestion>> suggestionFuture = accountsForCall.
+ thenComposeAsync(potentialPhoneAccounts -> {
+ Log.i(CallsManager.this, "call outgoing call suggestion service stage");
+ if (potentialPhoneAccounts.size() == 1) {
+ PhoneAccountSuggestion suggestion =
+ new PhoneAccountSuggestion(potentialPhoneAccounts.get(0),
+ PhoneAccountSuggestion.REASON_NONE, true);
+ return CompletableFuture.completedFuture(
+ Collections.singletonList(suggestion));
+ }
+ return PhoneAccountSuggestionHelper.bindAndGetSuggestions(mContext,
+ finalCall.getHandle(), potentialPhoneAccounts);
+ }, new LoggedHandlerExecutor(outgoingCallHandler, "CM.cOCSS", mLock));
+
+
+ // This future checks the status of existing calls and attempts to make room for the
+ // outgoing call. The future returned by the inner method will usually be pre-completed --
+ // we only pause here if user interaction is required to disconnect a self-managed call.
+ // It runs after the account handle is set, independently of the phone account suggestion
+ // future.
+ CompletableFuture<Call> makeRoomForCall = setAccountHandle.thenComposeAsync(
+ potentialPhoneAccounts -> {
+ Log.i(CallsManager.this, "make room for outgoing call stage");
+ boolean isPotentialInCallMMICode =
+ isPotentialInCallMMICode(handle) && !isSelfManaged;
+ // Do not support any more live calls. Our options are to move a call to hold,
+ // disconnect a call, or cancel this call altogether. If a call is being reused,
+ // then it has already passed the makeRoomForOutgoingCall check once and will
+ // fail the second time due to the call transitioning into the CONNECTING state.
+ if (!isPotentialInCallMMICode && (!isReusedCall
+ && !makeRoomForOutgoingCall(finalCall, finalCall.isEmergencyCall()))) {
+ Call foregroundCall = getForegroundCall();
+ Log.d(CallsManager.this, "No more room for outgoing call %s ", finalCall);
+ if (foregroundCall.isSelfManaged()) {
+ // If the ongoing call is a self-managed call, then prompt the user to
+ // ask if they'd like to disconnect their ongoing call and place the
+ // outgoing call.
+ Log.i(CallsManager.this, "Prompting user to disconnect "
+ + "self-managed call");
+ finalCall.setOriginalCallIntent(originalIntent);
+ CompletableFuture<Call> completionFuture = new CompletableFuture<>();
+ startCallConfirmation(finalCall, completionFuture);
+ return completionFuture;
+ } else {
+ // If the ongoing call is a managed call, we will prevent the outgoing
+ // call from dialing.
+ notifyCreateConnectionFailed(
+ finalCall.getTargetPhoneAccount(), finalCall);
+ }
+ Log.i(CallsManager.this, "Aborting call since there's no room");
+ return CompletableFuture.completedFuture(null);
+ }
+ return CompletableFuture.completedFuture(finalCall);
+ }, new LoggedHandlerExecutor(outgoingCallHandler, "CM.dSMCP", mLock));
+
+ // The outgoing call can be placed, go forward. This future glues together the results of
+ // the account suggestion stage and the make room for call stage.
+ CompletableFuture<Pair<Call, List<PhoneAccountSuggestion>>> preSelectStage =
+ makeRoomForCall.thenCombine(suggestionFuture, Pair::create);
+ mLatestPreAccountSelectionFuture = preSelectStage;
+
+ // This future takes the list of suggested accounts and the call and determines if more
+ // user interaction in the form of a phone account selection screen is needed. If so, it
+ // will set the call to SELECT_PHONE_ACCOUNT, add it to our internal list/send it to dialer,
+ // and then execution will pause pending the dialer calling phoneAccountSelected.
+ CompletableFuture<Pair<Call, PhoneAccountHandle>> dialerSelectPhoneAccountFuture =
+ preSelectStage.thenComposeAsync(
+ (args) -> {
+ Log.i(CallsManager.this, "dialer phone acct select stage");
+ Call callToPlace = args.first;
+ List<PhoneAccountSuggestion> accountSuggestions = args.second;
+ if (callToPlace == null) {
+ return CompletableFuture.completedFuture(null);
+ }
+ if (accountSuggestions == null || accountSuggestions.isEmpty()) {
+ Log.i(CallsManager.this, "Aborting call since there are no"
+ + " available accounts.");
+ showErrorMessage(R.string.cant_call_due_to_no_supported_service);
+ return CompletableFuture.completedFuture(null);
+ }
+ boolean needsAccountSelection = accountSuggestions.size() > 1
+ && !callToPlace.isEmergencyCall() && !isSelfManaged;
+ if (!needsAccountSelection) {
+ return CompletableFuture.completedFuture(Pair.create(callToPlace,
+ accountSuggestions.get(0).getPhoneAccountHandle()));
+ }
+ // This is the state where the user is expected to select an account
+ callToPlace.setState(CallState.SELECT_PHONE_ACCOUNT,
+ "needs account selection");
+ // Create our own instance to modify (since extras may be Bundle.EMPTY)
+ Bundle newExtras = new Bundle(extras);
+ List<PhoneAccountHandle> accountsFromSuggestions = accountSuggestions
+ .stream()
+ .map(PhoneAccountSuggestion::getPhoneAccountHandle)
+ .collect(Collectors.toList());
+ newExtras.putParcelableList(
+ android.telecom.Call.AVAILABLE_PHONE_ACCOUNTS,
+ accountsFromSuggestions);
+ newExtras.putParcelableList(
+ android.telecom.Call.EXTRA_SUGGESTED_PHONE_ACCOUNTS,
+ accountSuggestions);
+ // Set a future in place so that we can proceed once the dialer replies.
+ mPendingAccountSelection = new CompletableFuture<>();
+ callToPlace.setIntentExtras(newExtras);
+
+ addCall(callToPlace);
+ return mPendingAccountSelection;
+ }, new LoggedHandlerExecutor(outgoingCallHandler, "CM.dSPA", mLock));
+
+ // Potentially perform call identification for dialed TEL scheme numbers.
+ if (PhoneAccount.SCHEME_TEL.equals(handle.getScheme())) {
+ // Perform an asynchronous contacts lookup in this stage; ensure post-dial digits are
+ // not included.
+ CompletableFuture<Pair<Uri, CallerInfo>> contactLookupFuture =
+ mCallerInfoLookupHelper.startLookup(Uri.fromParts(handle.getScheme(),
+ PhoneNumberUtils.extractNetworkPortion(handle.getSchemeSpecificPart()),
+ null));
+
+ // Once the phone account selection stage has completed, we can handle the results from
+ // that with the contacts lookup in order to determine if we should lookup bind to the
+ // CallScreeningService in order for it to potentially provide caller ID.
+ dialerSelectPhoneAccountFuture.thenAcceptBothAsync(contactLookupFuture,
+ (callPhoneAccountHandlePair, uriCallerInfoPair) -> {
+ Call theCall = callPhoneAccountHandlePair.first;
+ boolean isInContacts = uriCallerInfoPair.second != null
+ && uriCallerInfoPair.second.contactExists;
+ Log.d(CallsManager.this, "outgoingCallIdStage: isInContacts=%s",
+ isInContacts);
+
+ // We only want to provide a CallScreeningService with a call if its not in
+ // contacts.
+ if (!isInContacts) {
+ bindForOutgoingCallerId(theCall);
+ }
+ }, new LoggedHandlerExecutor(outgoingCallHandler, "CM.pCSB", mLock));
}
- call.setTargetPhoneAccount(phoneAccountHandle);
- boolean isPotentialInCallMMICode = isPotentialInCallMMICode(handle) && !isSelfManaged;
+ // Finally, after all user interaction is complete, we execute this code to finish setting
+ // up the outgoing call. The inner method always returns a completed future containing the
+ // call that we've finished setting up.
+ mLatestPostSelectionProcessingFuture = dialerSelectPhoneAccountFuture
+ .thenComposeAsync(args -> {
+ if (args == null) {
+ return CompletableFuture.completedFuture(null);
+ }
+ Log.i(CallsManager.this, "post acct selection stage");
+ Call callToUse = args.first;
+ PhoneAccountHandle phoneAccountHandle = args.second;
+ PhoneAccount accountToUse = mPhoneAccountRegistrar
+ .getPhoneAccount(phoneAccountHandle, initiatingUser);
+ callToUse.setTargetPhoneAccount(phoneAccountHandle);
+ if (accountToUse != null && accountToUse.getExtras() != null) {
+ if (accountToUse.getExtras()
+ .getBoolean(PhoneAccount.EXTRA_ALWAYS_USE_VOIP_AUDIO_MODE)) {
+ Log.d(this, "startOutgoingCall: defaulting to voip mode for call %s",
+ callToUse.getId());
+ callToUse.setIsVoipAudioMode(true);
+ }
+ }
- // Do not support any more live calls. Our options are to move a call to hold, disconnect
- // a call, or cancel this call altogether. If a call is being reused, then it has already
- // passed the makeRoomForOutgoingCall check once and will fail the second time due to the
- // call transitioning into the CONNECTING state.
- if (!isPotentialInCallMMICode && (!isReusedCall
- && !makeRoomForOutgoingCall(call, call.isEmergencyCall()))) {
- Call foregroundCall = getForegroundCall();
- Log.d(this, "No more room for outgoing call %s ", call);
- if (foregroundCall.isSelfManaged()) {
- // If the ongoing call is a self-managed call, then prompt the user to ask if they'd
- // like to disconnect their ongoing call and place the outgoing call.
- call.setOriginalCallIntent(originalIntent);
- startCallConfirmation(call);
- } else {
- // If the ongoing call is a managed call, we will prevent the outgoing call from
- // dialing.
- notifyCreateConnectionFailed(call.getTargetPhoneAccount(), call);
- }
+ callToUse.setState(
+ CallState.CONNECTING,
+ phoneAccountHandle == null ? "no-handle"
+ : phoneAccountHandle.toString());
+
+ boolean isVoicemail = isVoicemail(callToUse.getHandle(), accountToUse);
+
+ if (!isVoicemail && (isRttSettingOn() || (extras != null
+ && extras.getBoolean(TelecomManager.EXTRA_START_CALL_WITH_RTT,
+ false)))) {
+ Log.d(this, "Outgoing call requesting RTT, rtt setting is %b",
+ isRttSettingOn());
+ if (callToUse.isEmergencyCall() || (accountToUse != null
+ && accountToUse.hasCapabilities(PhoneAccount.CAPABILITY_RTT))) {
+ // If the call requested RTT and it's an emergency call, ignore the
+ // capability and hope that the modem will deal with it somehow.
+ callToUse.createRttStreams();
+ }
+ // Even if the phone account doesn't support RTT yet,
+ // the connection manager might change that. Set this to check it later.
+ callToUse.setRequestedToStartWithRtt();
+ }
+
+ setIntentExtrasAndStartTime(callToUse, extras);
+ setCallSourceToAnalytics(callToUse, originalIntent);
+
+ if (isPotentialMMICode(handle) && !isSelfManaged) {
+ // Do not add the call if it is a potential MMI code.
+ callToUse.addListener(this);
+ } else if (!mCalls.contains(callToUse)) {
+ // We check if mCalls already contains the call because we could
+ // potentially be reusing
+ // a call which was previously added (See {@link #reuseOutgoingCall}).
+ addCall(callToUse);
+ }
+ return CompletableFuture.completedFuture(callToUse);
+ }, new LoggedHandlerExecutor(outgoingCallHandler, "CM.pASP", mLock));
+ return mLatestPostSelectionProcessingFuture;
+ }
+
+ /**
+ * Performs call identification for an outgoing phone call.
+ * @param theCall The outgoing call to perform identification.
+ */
+ private void bindForOutgoingCallerId(Call theCall) {
+ // Find the user chosen call screening app.
+ String callScreeningApp =
+ mRoleManagerAdapter.getDefaultCallScreeningApp();
+
+ CompletableFuture future =
+ new CallScreeningServiceHelper(mContext,
+ mLock,
+ callScreeningApp,
+ new ParcelableCallUtils.Converter(),
+ mCurrentUserHandle,
+ theCall,
+ new CallScreeningServiceHelper.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;
+ }
+ }).process();
+ future.thenApply( v -> {
+ Log.i(this, "Outgoing caller ID complete");
return null;
- }
-
- // The outgoing call can be placed, go forward.
-
- boolean needsAccountSelection =
- phoneAccountHandle == null && potentialPhoneAccounts.size() > 1
- && !call.isEmergencyCall() && !isSelfManaged;
- if (needsAccountSelection) {
- // This is the state where the user is expected to select an account
- call.setState(CallState.SELECT_PHONE_ACCOUNT, "needs account selection");
- // Create our own instance to modify (since extras may be Bundle.EMPTY)
- extras = new Bundle(extras);
- extras.putParcelableList(android.telecom.Call.AVAILABLE_PHONE_ACCOUNTS,
- potentialPhoneAccounts);
- } else {
- PhoneAccount accountToUse =
- mPhoneAccountRegistrar.getPhoneAccount(phoneAccountHandle, initiatingUser);
- if (accountToUse != null && accountToUse.getExtras() != null) {
- if (accountToUse.getExtras()
- .getBoolean(PhoneAccount.EXTRA_ALWAYS_USE_VOIP_AUDIO_MODE)) {
- Log.d(this, "startOutgoingCall: defaulting to voip mode for call %s",
- call.getId());
- call.setIsVoipAudioMode(true);
- }
- }
-
- call.setState(
- CallState.CONNECTING,
- phoneAccountHandle == null ? "no-handle" : phoneAccountHandle.toString());
-
- boolean isVoicemail = (call.getHandle() != null)
- && (PhoneAccount.SCHEME_VOICEMAIL.equals(call.getHandle().getScheme())
- || (accountToUse != null && mPhoneAccountRegistrar.isVoiceMailNumber(
- accountToUse.getAccountHandle(), call.getHandle().getSchemeSpecificPart())));
-
- if (!isVoicemail && (isRttSettingOn() || (extras != null
- && extras.getBoolean(TelecomManager.EXTRA_START_CALL_WITH_RTT, false)))) {
- Log.d(this, "Outgoing call requesting RTT, rtt setting is %b", isRttSettingOn());
- if (accountToUse != null
- && accountToUse.hasCapabilities(PhoneAccount.CAPABILITY_RTT)) {
- call.createRttStreams();
- }
- // Even if the phone account doesn't support RTT yet, the connection manager might
- // change that. Set this to check it later.
- call.setRequestedToStartWithRtt();
- }
- }
- setIntentExtrasAndStartTime(call, extras);
- setCallSourceToAnalytics(call, originalIntent);
-
- if ((isPotentialMMICode(handle) || isPotentialInCallMMICode) && !needsAccountSelection) {
- // Do not add the call if it is a potential MMI code.
- call.addListener(this);
- } else if (!mCalls.contains(call)) {
- // We check if mCalls already contains the call because we could potentially be reusing
- // a call which was previously added (See {@link #reuseOutgoingCall}).
- addCall(call);
- }
-
- return call;
+ });
}
/**
@@ -1302,55 +1623,80 @@
* @return
*/
@VisibleForTesting
- public List<PhoneAccountHandle> findOutgoingCallPhoneAccount(
+ public CompletableFuture<List<PhoneAccountHandle>> findOutgoingCallPhoneAccount(
PhoneAccountHandle targetPhoneAccountHandle, Uri handle, boolean isVideo,
UserHandle initiatingUser) {
- boolean isSelfManaged = isSelfManaged(targetPhoneAccountHandle, initiatingUser);
+ if (isSelfManaged(targetPhoneAccountHandle, initiatingUser)) {
+ return CompletableFuture.completedFuture(Arrays.asList(targetPhoneAccountHandle));
+ }
List<PhoneAccountHandle> accounts;
- if (!isSelfManaged) {
- // Try to find a potential phone account, taking into account whether this is a video
- // call.
- accounts = constructPossiblePhoneAccounts(handle, initiatingUser, isVideo);
- if (isVideo && accounts.size() == 0) {
- // Placing a video call but no video capable accounts were found, so consider any
- // call capable accounts (we can fallback to audio).
- accounts = constructPossiblePhoneAccounts(handle, initiatingUser,
- false /* isVideo */);
- }
- Log.v(this, "findOutgoingCallPhoneAccount: accounts = " + accounts);
-
- // Only dial with the requested phoneAccount if it is still valid. Otherwise treat this
- // call as if a phoneAccount was not specified (does the default behavior instead).
- // Note: We will not attempt to dial with a requested phoneAccount if it is disabled.
- if (targetPhoneAccountHandle != null) {
- if (!accounts.contains(targetPhoneAccountHandle)) {
- targetPhoneAccountHandle = null;
- } else {
- // The target phone account is valid and was found.
- return Arrays.asList(targetPhoneAccountHandle);
- }
- }
-
- if (targetPhoneAccountHandle == null && accounts.size() > 0) {
- // No preset account, check if default exists that supports the URI scheme for the
- // handle and verify it can be used.
- if (accounts.size() > 1) {
- PhoneAccountHandle defaultPhoneAccountHandle =
- mPhoneAccountRegistrar.getOutgoingPhoneAccountForScheme(
- handle.getScheme(), initiatingUser);
- if (defaultPhoneAccountHandle != null &&
- accounts.contains(defaultPhoneAccountHandle)) {
- accounts.clear();
- accounts.add(defaultPhoneAccountHandle);
- }
- }
- }
- } else {
- // Self-managed ConnectionServices can only have a single potential account.
- accounts = Arrays.asList(targetPhoneAccountHandle);
+ // Try to find a potential phone account, taking into account whether this is a video
+ // call.
+ accounts = constructPossiblePhoneAccounts(handle, initiatingUser, isVideo);
+ if (isVideo && accounts.size() == 0) {
+ // Placing a video call but no video capable accounts were found, so consider any
+ // call capable accounts (we can fallback to audio).
+ accounts = constructPossiblePhoneAccounts(handle, initiatingUser,
+ false /* isVideo */);
}
- return accounts;
+ Log.v(this, "findOutgoingCallPhoneAccount: accounts = " + accounts);
+
+ // Only dial with the requested phoneAccount if it is still valid. Otherwise treat this
+ // call as if a phoneAccount was not specified (does the default behavior instead).
+ // Note: We will not attempt to dial with a requested phoneAccount if it is disabled.
+ if (targetPhoneAccountHandle != null) {
+ if (accounts.contains(targetPhoneAccountHandle)) {
+ // The target phone account is valid and was found.
+ return CompletableFuture.completedFuture(Arrays.asList(targetPhoneAccountHandle));
+ }
+ }
+ if (accounts.isEmpty() || accounts.size() == 1) {
+ return CompletableFuture.completedFuture(accounts);
+ }
+
+ // Do the query for whether there's a preferred contact
+ final CompletableFuture<PhoneAccountHandle> userPreferredAccountForContact =
+ new CompletableFuture<>();
+ final List<PhoneAccountHandle> possibleAccounts = accounts;
+ mCallerInfoLookupHelper.startLookup(handle,
+ new CallerInfoLookupHelper.OnQueryCompleteListener() {
+ @Override
+ public void onCallerInfoQueryComplete(Uri handle, CallerInfo info) {
+ if (info.preferredPhoneAccountComponent != null &&
+ info.preferredPhoneAccountId != null &&
+ !info.preferredPhoneAccountId.isEmpty()) {
+ PhoneAccountHandle contactDefaultHandle = new PhoneAccountHandle(
+ info.preferredPhoneAccountComponent,
+ info.preferredPhoneAccountId,
+ initiatingUser);
+ userPreferredAccountForContact.complete(contactDefaultHandle);
+ } else {
+ userPreferredAccountForContact.complete(null);
+ }
+ }
+
+ @Override
+ public void onContactPhotoQueryComplete(Uri handle, CallerInfo info) {
+ // ignore this
+ }
+ });
+
+ return userPreferredAccountForContact.thenApply(phoneAccountHandle -> {
+ if (phoneAccountHandle != null) {
+ return Collections.singletonList(phoneAccountHandle);
+ }
+ // No preset account, check if default exists that supports the URI scheme for the
+ // handle and verify it can be used.
+ PhoneAccountHandle defaultPhoneAccountHandle =
+ mPhoneAccountRegistrar.getOutgoingPhoneAccountForScheme(
+ handle.getScheme(), initiatingUser);
+ if (defaultPhoneAccountHandle != null &&
+ possibleAccounts.contains(defaultPhoneAccountHandle)) {
+ return Collections.singletonList(defaultPhoneAccountHandle);
+ }
+ return possibleAccounts;
+ });
}
/**
@@ -1366,6 +1712,140 @@
return targetPhoneAccount != null && targetPhoneAccount.isSelfManaged();
}
+ public void onCallRedirectionComplete(Call call, Uri handle,
+ PhoneAccountHandle phoneAccountHandle,
+ GatewayInfo gatewayInfo, boolean speakerphoneOn,
+ int videoState, boolean shouldCancelCall,
+ String uiAction) {
+ Log.i(this, "onCallRedirectionComplete for Call %s with handle %s" +
+ " and phoneAccountHandle %s", call, handle, phoneAccountHandle);
+
+ boolean endEarly = false;
+ String disconnectReason = "";
+
+ String callRedirectionApp = mRoleManagerAdapter.getDefaultCallRedirectionApp();
+
+ if (shouldCancelCall) {
+ Log.w(this, "onCallRedirectionComplete: call is canceled");
+ endEarly = true;
+ disconnectReason = "Canceled from Call Redirection Service";
+ // Show UX when user-defined call redirection service does not response; the UX
+ // is not needed to show if the call is disconnected (e.g. by the user)
+ if (uiAction.equals(CallRedirectionProcessor.UI_TYPE_USER_DEFINED_TIMEOUT)
+ && !call.isDisconnected()) {
+ Intent timeoutIntent = new Intent(mContext,
+ CallRedirectionTimeoutDialogActivity.class);
+ timeoutIntent.putExtra(
+ CallRedirectionTimeoutDialogActivity.EXTRA_REDIRECTION_APP_NAME,
+ mRoleManagerAdapter.getApplicationLabelForPackageName(callRedirectionApp));
+ timeoutIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ mContext.startActivityAsUser(timeoutIntent, UserHandle.CURRENT);
+ }
+ } else if (handle == null) {
+ Log.w(this, "onCallRedirectionComplete: handle is null");
+ endEarly = true;
+ disconnectReason = "Null handle from Call Redirection Service";
+ } else if (phoneAccountHandle == null) {
+ Log.w(this, "onCallRedirectionComplete: phoneAccountHandle is null");
+ endEarly = true;
+ disconnectReason = "Null phoneAccountHandle from Call Redirection Service";
+ } else if (mPhoneNumberUtilsAdapter.isPotentialLocalEmergencyNumber(mContext,
+ handle.getSchemeSpecificPart())) {
+ Log.w(this, "onCallRedirectionComplete: emergency number %s is redirected from Call"
+ + " Redirection Service", handle.getSchemeSpecificPart());
+ endEarly = true;
+ disconnectReason = "Emergency number is redirected from Call Redirection Service";
+ }
+ if (endEarly) {
+ if (call != null) {
+ call.disconnect(disconnectReason);
+ }
+ return;
+ }
+
+ // If this call is already disconnected then we have nothing more to do.
+ if (call.isDisconnected()) {
+ Log.w(this, "onCallRedirectionComplete: Call has already been disconnected,"
+ + " ignore the call redirection %s", call);
+ return;
+ }
+
+ if (uiAction.equals(CallRedirectionProcessor.UI_TYPE_USER_DEFINED_ASK_FOR_CONFIRM)) {
+ Log.addEvent(call, LogUtils.Events.REDIRECTION_USER_CONFIRMATION);
+ mPendingRedirectedOutgoingCall = call;
+
+ mPendingRedirectedOutgoingCallInfo.put(call.getId(),
+ new Runnable("CM.oCRC", mLock) {
+ @Override
+ public void loggedRun() {
+ Log.addEvent(call, LogUtils.Events.REDIRECTION_USER_CONFIRMED);
+ call.setTargetPhoneAccount(phoneAccountHandle);
+ placeOutgoingCall(call, handle, gatewayInfo, speakerphoneOn,
+ videoState);
+ }
+ });
+
+ mPendingUnredirectedOutgoingCallInfo.put(call.getId(),
+ new Runnable("CM.oCRC", mLock) {
+ @Override
+ public void loggedRun() {
+ call.setTargetPhoneAccount(phoneAccountHandle);
+ placeOutgoingCall(call, handle, null, speakerphoneOn,
+ videoState);
+ }
+ });
+
+ Log.i(this, "onCallRedirectionComplete: UI_TYPE_USER_DEFINED_ASK_FOR_CONFIRM "
+ + "callId=%s, callRedirectionAppName=%s",
+ call.getId(), callRedirectionApp);
+
+ Intent confirmIntent = new Intent(mContext,
+ CallRedirectionConfirmDialogActivity.class);
+ confirmIntent.putExtra(
+ CallRedirectionConfirmDialogActivity.EXTRA_REDIRECTION_OUTGOING_CALL_ID,
+ call.getId());
+ confirmIntent.putExtra(CallRedirectionConfirmDialogActivity.EXTRA_REDIRECTION_APP_NAME,
+ mRoleManagerAdapter.getApplicationLabelForPackageName(callRedirectionApp));
+ confirmIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+
+ // A small delay to start the activity after any Dialer's In Call UI starts
+ mHandler.postDelayed(new Runnable("CM.oCRC", mLock) {
+ @Override
+ public void loggedRun() {
+ mContext.startActivityAsUser(confirmIntent, UserHandle.CURRENT);
+ }
+ }.prepare(), 500 /* Milliseconds delay */);
+
+ } else {
+ call.setTargetPhoneAccount(phoneAccountHandle);
+ placeOutgoingCall(call, handle, gatewayInfo, speakerphoneOn, videoState);
+ }
+ }
+
+ public void processRedirectedOutgoingCallAfterUserInteraction(String callId, String action) {
+ Log.i(this, "processRedirectedOutgoingCallAfterUserInteraction for Call ID %s", callId);
+ if (mPendingRedirectedOutgoingCall != null && mPendingRedirectedOutgoingCall.getId()
+ .equals(callId)) {
+ if (action.equals(TelecomBroadcastIntentProcessor.ACTION_PLACE_REDIRECTED_CALL)) {
+ mHandler.post(mPendingRedirectedOutgoingCallInfo.get(callId).prepare());
+ } else if (action.equals(
+ TelecomBroadcastIntentProcessor.ACTION_PLACE_UNREDIRECTED_CALL)) {
+ mHandler.post(mPendingUnredirectedOutgoingCallInfo.get(callId).prepare());
+ } else if (action.equals(
+ TelecomBroadcastIntentProcessor.ACTION_CANCEL_REDIRECTED_CALL)) {
+ Log.addEvent(mPendingRedirectedOutgoingCall,
+ LogUtils.Events.REDIRECTION_USER_CANCELLED);
+ mPendingRedirectedOutgoingCall.disconnect("User canceled the redirected call.");
+ }
+ mPendingRedirectedOutgoingCall = null;
+ mPendingRedirectedOutgoingCallInfo.remove(callId);
+ mPendingUnredirectedOutgoingCallInfo.remove(callId);
+ } else {
+ Log.w(this, "processRedirectedOutgoingCallAfterUserInteraction for non-matched Call ID"
+ + " %s", callId);
+ }
+ }
+
/**
* Attempts to issue/connect the specified call.
*
@@ -1474,7 +1954,7 @@
} else {
// Hold or disconnect the active call and request call focus for the incoming call.
Call activeCall = (Call) mConnectionSvrFocusMgr.getCurrentFocusCall();
- Log.d(this, "Incoming call = %s Ongoing call %s", call, activeCall);
+ Log.d(this, "answerCall: Incoming call = %s Ongoing call %s", call, activeCall);
holdActiveCallForNewCall(call);
mConnectionSvrFocusMgr.requestFocus(
call,
@@ -1609,6 +2089,15 @@
} else {
mLocallyDisconnectingCalls.add(call);
call.disconnect();
+ // Cancel any of the outgoing call futures if they're still around.
+ if (mPendingCallConfirm != null && !mPendingCallConfirm.isDone()) {
+ mPendingCallConfirm.complete(null);
+ mPendingCallConfirm = null;
+ }
+ if (mPendingAccountSelection != null && !mPendingAccountSelection.isDone()) {
+ mPendingAccountSelection.complete(null);
+ mPendingAccountSelection = null;
+ }
}
}
@@ -1664,7 +2153,7 @@
} else {
Call activeCall = (Call) mConnectionSvrFocusMgr.getCurrentFocusCall();
String activeCallId = null;
- if (activeCall != null) {
+ if (activeCall != null && !activeCall.isLocallyDisconnecting()) {
activeCallId = activeCall.getId();
if (canHold(activeCall)) {
activeCall.hold("Swap to " + call.getId());
@@ -1674,8 +2163,17 @@
// This call does not support hold. If it is from a different connection
// service, then disconnect it, otherwise invoke call.hold() and allow the
// connection service to handle the situation.
- if (activeCall.getConnectionService() != call.getConnectionService()) {
- activeCall.disconnect("Swap to " + call.getId());
+ if (!PhoneAccountHandle.areFromSamePackage(activeCall.getTargetPhoneAccount(),
+ call.getTargetPhoneAccount())) {
+ if (!activeCall.isEmergencyCall()) {
+ activeCall.disconnect("Swap to " + call.getId());
+ } else {
+ Log.w(this, "unholdCall: % is an emergency call, aborting swap to %s",
+ activeCall.getId(), call.getId());
+ // Don't unhold the call as requested; we don't want to drop an
+ // emergency call.
+ return;
+ }
} else {
activeCall.hold("Swap to " + call.getId());
}
@@ -1830,51 +2328,15 @@
if (!mCalls.contains(call)) {
Log.i(this, "Attempted to add account to unknown call %s", call);
} else {
- call.setTargetPhoneAccount(account);
- PhoneAccount realPhoneAccount =
- mPhoneAccountRegistrar.getPhoneAccountUnchecked(account);
- if (realPhoneAccount != null && realPhoneAccount.getExtras() != null
- && realPhoneAccount.getExtras()
- .getBoolean(PhoneAccount.EXTRA_ALWAYS_USE_VOIP_AUDIO_MODE)) {
- Log.d("phoneAccountSelected: default to voip mode for call %s", call.getId());
- call.setIsVoipAudioMode(true);
- }
-
- boolean isVoicemail = (call.getHandle() != null)
- && (PhoneAccount.SCHEME_VOICEMAIL.equals(call.getHandle().getScheme())
- || (realPhoneAccount != null && mPhoneAccountRegistrar.isVoiceMailNumber(
- realPhoneAccount.getAccountHandle(),
- call.getHandle().getSchemeSpecificPart())));
-
- if (!isVoicemail && (isRttSettingOn() || call.getIntentExtras()
- .getBoolean(TelecomManager.EXTRA_START_CALL_WITH_RTT, false))) {
- Log.d(this, "Outgoing call after account selection requesting RTT," +
- " rtt setting is %b", isRttSettingOn());
- if (realPhoneAccount != null
- && realPhoneAccount.hasCapabilities(PhoneAccount.CAPABILITY_RTT)) {
- call.createRttStreams();
- }
- // Even if the phone account doesn't support RTT yet, the connection manager might
- // change that. Set this to check it later.
- call.setRequestedToStartWithRtt();
- }
-
- if (!call.isNewOutgoingCallIntentBroadcastDone()) {
- return;
- }
-
- // Note: emergency calls never go through account selection dialog so they never
- // arrive here.
- if (makeRoomForOutgoingCall(call, false /* isEmergencyCall */)) {
- call.startCreateConnection(mPhoneAccountRegistrar);
- } else {
- call.disconnect("no room");
- }
-
if (setDefault) {
mPhoneAccountRegistrar
.setUserSelectedOutgoingPhoneAccount(account, call.getInitiatingUser());
}
+
+ if (mPendingAccountSelection != null) {
+ mPendingAccountSelection.complete(Pair.create(call, account));
+ mPendingAccountSelection = null;
+ }
}
}
@@ -1929,7 +2391,8 @@
activeCall.hold();
return true;
} else if (supportsHold(activeCall)
- && activeCall.getConnectionService() == call.getConnectionService()) {
+ && PhoneAccountHandle.areFromSamePackage(activeCall.getTargetPhoneAccount(),
+ call.getTargetPhoneAccount())) {
// Handle the case where the active call and the new call are from the same CS, and
// the currently active call supports hold but cannot currently be held.
@@ -1941,7 +2404,7 @@
// Call C - Incoming
// Here we need to disconnect A prior to holding B so that C can be answered.
// This case is driven by telephony requirements ultimately.
- Call heldCall = getHeldCallByConnectionService(call.getConnectionService());
+ Call heldCall = getHeldCallByConnectionService(call.getTargetPhoneAccount());
if (heldCall != null) {
heldCall.disconnect();
Log.i(this, "holdActiveCallForNewCall: Disconnect held call %s before "
@@ -1956,10 +2419,21 @@
// This call does not support hold. If it is from a different connection
// service, then disconnect it, otherwise allow the connection service to
// figure out the right states.
- if (activeCall.getConnectionService() != call.getConnectionService()) {
+ if (!PhoneAccountHandle.areFromSamePackage(activeCall.getTargetPhoneAccount(),
+ call.getTargetPhoneAccount())) {
Log.i(this, "holdActiveCallForNewCall: disconnecting %s so that %s can be "
+ "made active.", activeCall.getId(), call.getId());
- activeCall.disconnect();
+ if (!activeCall.isEmergencyCall()) {
+ activeCall.disconnect();
+ } else {
+ // It's not possible to hold the active call, and its an emergency call so
+ // we will silently reject the incoming call instead of answering it.
+ Log.w(this, "holdActiveCallForNewCall: rejecting incoming call %s as "
+ + "the active call is an emergency call and it cannot be held.",
+ call.getId());
+ call.reject(false /* rejectWithMessage */, "" /* message */,
+ "active emergency call can't be held");
+ }
}
}
}
@@ -2007,31 +2481,33 @@
* Removes an existing disconnected call, and notifies the in-call app.
*/
void markCallAsRemoved(Call call) {
- call.maybeCleanupHandover();
- removeCall(call);
- Call foregroundCall = mCallAudioManager.getPossiblyHeldForegroundCall();
- if (mLocallyDisconnectingCalls.contains(call)) {
- boolean isDisconnectingChildCall = call.isDisconnectingChildCall();
- Log.v(this, "markCallAsRemoved: isDisconnectingChildCall = "
- + isDisconnectingChildCall + "call -> %s", call);
- mLocallyDisconnectingCalls.remove(call);
- // Auto-unhold the foreground call due to a locally disconnected call, except if the
- // call which was disconnected is a member of a conference (don't want to auto un-hold
- // the conference if we remove a member of the conference).
- if (!isDisconnectingChildCall && foregroundCall != null
- && foregroundCall.getState() == CallState.ON_HOLD) {
+ mInCallController.getBindingFuture().thenRunAsync(() -> {
+ call.maybeCleanupHandover();
+ removeCall(call);
+ Call foregroundCall = mCallAudioManager.getPossiblyHeldForegroundCall();
+ if (mLocallyDisconnectingCalls.contains(call)) {
+ boolean isDisconnectingChildCall = call.isDisconnectingChildCall();
+ Log.v(this, "markCallAsRemoved: isDisconnectingChildCall = "
+ + isDisconnectingChildCall + "call -> %s", call);
+ mLocallyDisconnectingCalls.remove(call);
+ // Auto-unhold the foreground call due to a locally disconnected call, except if the
+ // call which was disconnected is a member of a conference (don't want to auto
+ // un-hold the conference if we remove a member of the conference).
+ if (!isDisconnectingChildCall && foregroundCall != null
+ && foregroundCall.getState() == CallState.ON_HOLD) {
+ foregroundCall.unhold();
+ }
+ } else if (foregroundCall != null &&
+ !foregroundCall.can(Connection.CAPABILITY_SUPPORT_HOLD) &&
+ foregroundCall.getState() == CallState.ON_HOLD) {
+
+ // The new foreground call is on hold, however the carrier does not display the hold
+ // button in the UI. Therefore, we need to auto unhold the held call since the user
+ // has no means of unholding it themselves.
+ Log.i(this, "Auto-unholding held foreground call (call doesn't support hold)");
foregroundCall.unhold();
}
- } else if (foregroundCall != null &&
- !foregroundCall.can(Connection.CAPABILITY_SUPPORT_HOLD) &&
- foregroundCall.getState() == CallState.ON_HOLD) {
-
- // The new foreground call is on hold, however the carrier does not display the hold
- // button in the UI. Therefore, we need to auto unhold the held call since the user has
- // no means of unholding it themselves.
- Log.i(this, "Auto-unholding held foreground call (call doesn't support hold)");
- foregroundCall.unhold();
- }
+ }, new LoggedHandlerExecutor(mHandler, "CM.mCAR", mLock));
}
/**
@@ -2039,7 +2515,7 @@
* indicate to the user that the call cannot me placed due to an ongoing call in another app.
*
* Used when there are ongoing self-managed calls and the user tries to make an outgoing managed
- * call. Called by {@link #startCallConfirmation(Call)} when the user is already confirming an
+ * call. Called by {@link #startCallConfirmation} when the user is already confirming an
* outgoing call. Realistically this should almost never be called since in practice the user
* won't make multiple outgoing calls at the same time.
*
@@ -2074,7 +2550,8 @@
if (call.getConnectionService() == service) {
if (call.getState() != CallState.DISCONNECTED) {
markCallAsDisconnected(call, new DisconnectCause(DisconnectCause.ERROR,
- "CS_DEATH"));
+ null /* message */, null /* description */, "CS_DEATH",
+ ToneGenerator.TONE_PROP_PROMPT));
}
markCallAsRemoved(call);
}
@@ -2105,14 +2582,25 @@
}
boolean hasRingingCall() {
- return getFirstCallWithState(CallState.RINGING) != null;
+ return getFirstCallWithState(CallState.RINGING, CallState.ANSWERED) != null;
}
- boolean onMediaButton(int type) {
+ @VisibleForTesting
+ public boolean onMediaButton(int type) {
if (hasAnyCalls()) {
Call ringingCall = getFirstCallWithState(CallState.RINGING);
if (HeadsetMediaButton.SHORT_PRESS == type) {
if (ringingCall == null) {
+ Call activeCall = getFirstCallWithState(CallState.ACTIVE);
+ Call onHoldCall = getFirstCallWithState(CallState.ON_HOLD);
+ if (activeCall != null && onHoldCall != null) {
+ // Two calls, short-press -> switch calls
+ Log.addEvent(onHoldCall, LogUtils.Events.INFO,
+ "two calls, media btn short press - switch call.");
+ unholdCall(onHoldCall);
+ return true;
+ }
+
Call callToHangup = getFirstCallWithState(CallState.RINGING, CallState.DIALING,
CallState.PULLING, CallState.ACTIVE, CallState.ON_HOLD);
Log.addEvent(callToHangup, LogUtils.Events.INFO,
@@ -2131,6 +2619,16 @@
LogUtils.Events.INFO, "media btn long press - reject");
ringingCall.reject(false, null);
} else {
+ Call activeCall = getFirstCallWithState(CallState.ACTIVE);
+ Call onHoldCall = getFirstCallWithState(CallState.ON_HOLD);
+ if (activeCall != null && onHoldCall != null) {
+ // Two calls, long-press -> end current call
+ Log.addEvent(activeCall, LogUtils.Events.INFO,
+ "two calls, media btn long press - end current call.");
+ disconnectCall(activeCall);
+ return true;
+ }
+
Log.addEvent(getForegroundCall(), LogUtils.Events.INFO,
"media btn long press - mute");
mCallAudioManager.toggleMute();
@@ -2190,7 +2688,7 @@
@VisibleForTesting
public Call getRingingCall() {
- return getFirstCallWithState(CallState.RINGING);
+ return getFirstCallWithState(CallState.RINGING, CallState.ANSWERED);
}
public Call getActiveCall() {
@@ -2206,9 +2704,11 @@
return getFirstCallWithState(CallState.ON_HOLD);
}
- public Call getHeldCallByConnectionService(ConnectionServiceWrapper connSvr) {
+ public Call getHeldCallByConnectionService(PhoneAccountHandle targetPhoneAccount) {
Optional<Call> heldCall = mCalls.stream()
- .filter(call -> call.getConnectionService() == connSvr
+ .filter(call -> PhoneAccountHandle.areFromSamePackage(call.getTargetPhoneAccount(),
+ targetPhoneAccount)
+ && call.getParentCall() == null
&& call.getState() == CallState.ON_HOLD)
.findFirst();
return heldCall.isPresent() ? heldCall.get() : null;
@@ -2240,6 +2740,16 @@
return mPhoneNumberUtilsAdapter;
}
+ @VisibleForTesting
+ public CompletableFuture<Call> getLatestPostSelectionProcessingFuture() {
+ return mLatestPostSelectionProcessingFuture;
+ }
+
+ @VisibleForTesting
+ public CompletableFuture getLatestPreAccountSelectionFuture() {
+ return mLatestPreAccountSelectionFuture;
+ }
+
/**
* Returns the first call that it finds with the given states. The states are treated as having
* priority order so that any call with the first state will be returned before any call with
@@ -2299,8 +2809,6 @@
this,
mLock,
mConnectionServiceRepository,
- mContactsAsyncHelper,
- mCallerInfoAsyncQueryFactory,
mPhoneNumberUtilsAdapter,
null /* handle */,
null /* gatewayInfo */,
@@ -2315,6 +2823,8 @@
setCallState(call, Call.getStateFromConnectionState(parcelableConference.getState()),
"new conference call");
+ call.setHandle(parcelableConference.getHandle(),
+ parcelableConference.getHandlePresentation());
call.setConnectionCapabilities(parcelableConference.getConnectionCapabilities());
call.setConnectionProperties(parcelableConference.getConnectionProperties());
call.setVideoState(parcelableConference.getVideoState());
@@ -2346,7 +2856,8 @@
*
* @return The {@link PhoneAccountRegistrar}.
*/
- PhoneAccountRegistrar getPhoneAccountRegistrar() {
+ @VisibleForTesting
+ public PhoneAccountRegistrar getPhoneAccountRegistrar() {
return mPhoneAccountRegistrar;
}
@@ -2370,7 +2881,7 @@
* Reject an incoming call and manually add it to the Call Log.
* @param incomingCall Incoming call that has been rejected
*/
- private void rejectCallAndLog(Call incomingCall) {
+ private void rejectCallAndLog(Call incomingCall, CallFilteringResult result) {
if (incomingCall.getConnectionService() != null) {
// Only reject the call if it has not already been destroyed. If a call ends while
// incoming call filtering is taking place, it is possible that the call has already
@@ -2385,7 +2896,7 @@
// call notifier and the call logger manually.
// Do we need missed call notification for direct to Voicemail calls?
mCallLogManager.logCall(incomingCall, Calls.MISSED_TYPE,
- true /*showNotificationForMissedCall*/);
+ true /*showNotificationForMissedCall*/, result);
}
/**
@@ -2480,27 +2991,31 @@
// into a well-defined state machine.
// TODO: Define expected state transitions here, and log when an
// unexpected transition occurs.
- call.setState(newState, tag);
- maybeShowErrorDialogOnDisconnect(call);
+ if (call.setState(newState, tag)) {
+ maybeShowErrorDialogOnDisconnect(call);
- Trace.beginSection("onCallStateChanged");
+ Trace.beginSection("onCallStateChanged");
- maybeHandleHandover(call, newState);
+ maybeHandleHandover(call, newState);
- // Only broadcast state change for calls that are being tracked.
- if (mCalls.contains(call)) {
- updateCanAddCall();
- for (CallsManagerListener listener : mListeners) {
- if (LogUtils.SYSTRACE_DEBUG) {
- Trace.beginSection(listener.getClass().toString() + " onCallStateChanged");
- }
- listener.onCallStateChanged(call, oldState, newState);
- if (LogUtils.SYSTRACE_DEBUG) {
- Trace.endSection();
+ // Only broadcast state change for calls that are being tracked.
+ if (mCalls.contains(call)) {
+ updateCanAddCall();
+ for (CallsManagerListener listener : mListeners) {
+ if (LogUtils.SYSTRACE_DEBUG) {
+ Trace.beginSection(listener.getClass().toString() +
+ " onCallStateChanged");
+ }
+ listener.onCallStateChanged(call, oldState, newState);
+ if (LogUtils.SYSTRACE_DEBUG) {
+ Trace.endSection();
+ }
}
}
+ Trace.endSection();
+ } else {
+ Log.i(this, "failed in setting the state to new state");
}
- Trace.endSection();
}
}
@@ -2746,13 +3261,13 @@
private boolean hasMaximumManagedRingingCalls(Call exceptCall) {
return MAXIMUM_RINGING_CALLS <= getNumCallsWithState(false /* isSelfManaged */, exceptCall,
- null /* phoneAccountHandle */, CallState.RINGING);
+ null /* phoneAccountHandle */, CallState.RINGING, CallState.ANSWERED);
}
private boolean hasMaximumSelfManagedRingingCalls(Call exceptCall,
PhoneAccountHandle phoneAccountHandle) {
return MAXIMUM_RINGING_CALLS <= getNumCallsWithState(true /* isSelfManaged */, exceptCall,
- phoneAccountHandle, CallState.RINGING);
+ phoneAccountHandle, CallState.RINGING, CallState.ANSWERED);
}
private boolean hasMaximumOutgoingCalls(Call exceptCall) {
@@ -2771,25 +3286,30 @@
}
/**
- * Given a {@link PhoneAccountHandle} determines if there are calls owned by any other
- * {@link PhoneAccountHandle}.
+ * Given a {@link PhoneAccountHandle} determines if there are other unholdable calls owned by
+ * another connection service.
* @param phoneAccountHandle The {@link PhoneAccountHandle} to check.
- * @return {@code true} if there are other calls, {@code false} otherwise.
+ * @return {@code true} if there are other unholdable calls, {@code false} otherwise.
*/
- public boolean hasCallsForOtherPhoneAccount(PhoneAccountHandle phoneAccountHandle) {
- return getNumCallsForOtherPhoneAccount(phoneAccountHandle) > 0;
+ public boolean hasUnholdableCallsForOtherConnectionService(
+ PhoneAccountHandle phoneAccountHandle) {
+ return getNumUnholdableCallsForOtherConnectionService(phoneAccountHandle) > 0;
}
/**
- * Determines the number of calls present for PhoneAccounts other than the one specified.
+ * Determines the number of unholdable calls present in a connection service other than the one
+ * the passed phone account belonds to.
* @param phoneAccountHandle The handle of the PhoneAccount.
- * @return Number of calls owned by other PhoneAccounts.
+ * @return Number of unholdable calls owned by other connection service.
*/
- public int getNumCallsForOtherPhoneAccount(PhoneAccountHandle phoneAccountHandle) {
+ public int getNumUnholdableCallsForOtherConnectionService(
+ PhoneAccountHandle phoneAccountHandle) {
return (int) mCalls.stream().filter(call ->
- !phoneAccountHandle.equals(call.getTargetPhoneAccount()) &&
- call.getParentCall() == null &&
- !call.isExternalCall()).count();
+ !phoneAccountHandle.getComponentName().equals(
+ call.getTargetPhoneAccount().getComponentName())
+ && call.getParentCall() == null
+ && !call.isExternalCall()
+ && !canHold(call)).count();
}
/**
@@ -2841,9 +3361,9 @@
* @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()) &&
- incomingCall.getHandoverSourceCall() == null;
+ return incomingCall.isIncoming() && incomingCall.isSelfManaged()
+ && hasUnholdableCallsForOtherConnectionService(incomingCall.getTargetPhoneAccount())
+ && incomingCall.getHandoverSourceCall() == null;
}
private boolean makeRoomForOutgoingCall(Call call, boolean isEmergency) {
@@ -2912,7 +3432,8 @@
// First thing, if we are trying to make a call with the same phone account as the live
// call, then allow it so that the connection service can make its own decision about
// how to handle the new call relative to the current one.
- if (Objects.equals(liveCallPhoneAccount, call.getTargetPhoneAccount())) {
+ if (PhoneAccountHandle.areFromSamePackage(liveCallPhoneAccount,
+ call.getTargetPhoneAccount())) {
Log.i(this, "makeRoomForOutgoingCall: phoneAccount matches.");
call.getAnalytics().setCallIsAdditional(true);
liveCall.getAnalytics().setCallIsInterrupted(true);
@@ -3011,14 +3532,12 @@
this,
mLock,
mConnectionServiceRepository,
- mContactsAsyncHelper,
- mCallerInfoAsyncQueryFactory,
mPhoneNumberUtilsAdapter,
connection.getHandle() /* handle */,
null /* gatewayInfo */,
null /* connectionManagerPhoneAccount */,
connection.getPhoneAccount(), /* targetPhoneAccountHandle */
- Call.CALL_DIRECTION_UNDEFINED /* callDirection */,
+ Call.getRemappedCallDirection(connection.getCallDirection()) /* callDirection */,
false /* forceAttachToExistingConnection */,
isDowngradedConference /* isConference */,
connection.getConnectTimeMillis() /* connectTimeMillis */,
@@ -3030,6 +3549,7 @@
setCallState(call, Call.getStateFromConnectionState(connection.getState()),
"existing connection");
+ call.setVideoState(connection.getVideoState());
call.setConnectionCapabilities(connection.getConnectionCapabilities());
call.setConnectionProperties(connection.getConnectionProperties());
call.setHandle(connection.getHandle(), connection.getHandlePresentation());
@@ -3118,6 +3638,7 @@
public void onUserSwitch(UserHandle userHandle) {
mCurrentUserHandle = userHandle;
mMissedCallNotifier.setCurrentUserHandle(userHandle);
+ mRoleManagerAdapter.setCurrentUserHandle(userHandle);
final UserManager userManager = UserManager.get(mContext);
List<UserInfo> profiles = userManager.getEnabledProfiles(userHandle.getIdentifier());
for (UserInfo profile : profiles) {
@@ -3139,6 +3660,14 @@
return mLock;
}
+ public Timeouts.Adapter getTimeoutsAdapter() {
+ return mTimeoutsAdapter;
+ }
+
+ public SystemStateHelper getSystemStateHelper() {
+ return mSystemStateHelper;
+ }
+
private void reloadMissedCallsOfUser(UserHandle userHandle) {
mMissedCallNotifier.reloadFromDatabase(mCallerInfoLookupHelper,
new MissedCallNotifier.CallInfoFactory(), userHandle);
@@ -3246,7 +3775,7 @@
/**
* Used to confirm creation of an outgoing call which was marked as pending confirmation in
- * {@link #startOutgoingCall(Uri, PhoneAccountHandle, Bundle, UserHandle, Intent)}.
+ * {@link #startOutgoingCall(Uri, PhoneAccountHandle, Bundle, UserHandle, Intent, String)}.
* Called via {@link TelecomBroadcastIntentProcessor} for a call which was confirmed via
* {@link ConfirmCallDialogActivity}.
* @param callId The call ID of the call to confirm.
@@ -3255,23 +3784,20 @@
Log.i(this, "confirmPendingCall: callId=%s", callId);
if (mPendingCall != null && mPendingCall.getId().equals(callId)) {
Log.addEvent(mPendingCall, LogUtils.Events.USER_CONFIRMED);
- addCall(mPendingCall);
// We are going to place the new outgoing call, so disconnect any ongoing self-managed
// calls which are ongoing at this time.
disconnectSelfManagedCalls("outgoing call " + callId);
- // Kick of the new outgoing call intent from where it left off prior to confirming the
- // call.
- CallIntentProcessor.sendNewOutgoingCallIntent(mContext, mPendingCall, this,
- mPendingCall.getOriginalCallIntent());
+ mPendingCallConfirm.complete(mPendingCall);
+ mPendingCallConfirm = null;
mPendingCall = null;
}
}
/**
* Used to cancel an outgoing call which was marked as pending confirmation in
- * {@link #startOutgoingCall(Uri, PhoneAccountHandle, Bundle, UserHandle, Intent)}.
+ * {@link #startOutgoingCall(Uri, PhoneAccountHandle, Bundle, UserHandle, Intent, String)}.
* Called via {@link TelecomBroadcastIntentProcessor} for a call which was confirmed via
* {@link ConfirmCallDialogActivity}.
* @param callId The call ID of the call to cancel.
@@ -3283,25 +3809,29 @@
markCallAsDisconnected(mPendingCall, new DisconnectCause(DisconnectCause.CANCELED));
markCallAsRemoved(mPendingCall);
mPendingCall = null;
+ mPendingCallConfirm.complete(null);
+ mPendingCallConfirm = null;
}
}
/**
- * Called from {@link #startOutgoingCall(Uri, PhoneAccountHandle, Bundle, UserHandle, Intent)} when
+ * Called from {@link #startOutgoingCall(Uri, PhoneAccountHandle, Bundle, UserHandle, Intent, String)} when
* a managed call is added while there are ongoing self-managed calls. Starts
* {@link ConfirmCallDialogActivity} to prompt the user to see if they wish to place the
* outgoing call or not.
* @param call The call to confirm.
*/
- private void startCallConfirmation(Call call) {
+ private void startCallConfirmation(Call call, CompletableFuture<Call> confirmationFuture) {
if (mPendingCall != null) {
Log.i(this, "startCallConfirmation: call %s is already pending; disconnecting %s",
mPendingCall.getId(), call.getId());
markCallDisconnectedDueToSelfManagedCall(call);
+ confirmationFuture.complete(null);
return;
}
Log.addEvent(call, LogUtils.Events.USER_CONFIRMATION);
mPendingCall = call;
+ mPendingCallConfirm = confirmationFuture;
// Figure out the name of the app in charge of the self-managed call(s).
Call activeCall = (Call) mConnectionSvrFocusMgr.getCurrentFocusCall();
@@ -3392,6 +3922,14 @@
mConnectionServiceRepository.dump(pw);
pw.decreaseIndent();
}
+
+ if (mRoleManagerAdapter != null && mRoleManagerAdapter instanceof RoleManagerAdapterImpl) {
+ RoleManagerAdapterImpl impl = (RoleManagerAdapterImpl) mRoleManagerAdapter;
+ pw.println("mRoleManager:");
+ pw.increaseIndent();
+ impl.dump(pw);
+ pw.decreaseIndent();
+ }
}
/**
@@ -3442,6 +3980,18 @@
call.getAnalytics().setCallSource(callSource);
}
+ private boolean isVoicemail(Uri callHandle, PhoneAccount phoneAccount) {
+ if (callHandle == null) {
+ return false;
+ }
+ if (PhoneAccount.SCHEME_VOICEMAIL.equals(callHandle.getScheme())) {
+ return true;
+ }
+ return phoneAccount != null && mPhoneAccountRegistrar.isVoiceMailNumber(
+ phoneAccount.getAccountHandle(),
+ callHandle.getSchemeSpecificPart());
+ }
+
/**
* Notifies the {@link android.telecom.ConnectionService} associated with a
* {@link PhoneAccountHandle} that the attempt to create a new connection has failed.
@@ -3496,41 +4046,114 @@
PhoneAccountHandle handoverToHandle,
int videoState, Bundle initiatingExtras) {
- boolean isHandoverFromSupported = isHandoverFromPhoneAccountSupported(
- handoverFromCall.getTargetPhoneAccount());
- boolean isHandoverToSupported = isHandoverToPhoneAccountSupported(handoverToHandle);
-
- if (!isHandoverFromSupported || !isHandoverToSupported || hasEmergencyCall()) {
- handoverFromCall.sendCallEvent(android.telecom.Call.EVENT_HANDOVER_FAILED, null);
- return;
- }
-
- Log.addEvent(handoverFromCall, LogUtils.Events.HANDOVER_REQUEST, handoverToHandle);
-
- Bundle extras = new Bundle();
- extras.putBoolean(TelecomManager.EXTRA_IS_HANDOVER, true);
- extras.putParcelable(TelecomManager.EXTRA_HANDOVER_FROM_PHONE_ACCOUNT,
- handoverFromCall.getTargetPhoneAccount());
- extras.putInt(TelecomManager.EXTRA_START_CALL_WITH_VIDEO_STATE, videoState);
- if (initiatingExtras != null) {
- extras.putAll(initiatingExtras);
- }
- extras.putParcelable(TelecomManager.EXTRA_CALL_AUDIO_STATE,
- mCallAudioManager.getCallAudioState());
- Call handoverToCall = startOutgoingCall(handoverFromCall.getHandle(), handoverToHandle,
- extras, getCurrentUserHandle(), null /* originalIntent */);
- Log.addEvent(handoverFromCall, LogUtils.Events.START_HANDOVER,
- "handOverFrom=%s, handOverTo=%s", handoverFromCall.getId(), handoverToCall.getId());
- handoverFromCall.setHandoverDestinationCall(handoverToCall);
- handoverFromCall.setHandoverState(HandoverState.HANDOVER_FROM_STARTED);
- handoverToCall.setHandoverState(HandoverState.HANDOVER_TO_STARTED);
- handoverToCall.setHandoverSourceCall(handoverFromCall);
- handoverToCall.setNewOutgoingCallIntentBroadcastIsDone();
- placeOutgoingCall(handoverToCall, handoverToCall.getHandle(), null /* gatewayInfo */,
- false /* startwithSpeaker */,
- videoState);
+ handoverFromCall.sendCallEvent(android.telecom.Call.EVENT_HANDOVER_FAILED, null);
+ Log.addEvent(handoverFromCall, LogUtils.Events.HANDOVER_REQUEST, "legacy request denied");
}
+ public Call createHandoverCall(Uri handle, PhoneAccountHandle handoverToHandle,
+ Bundle extras, UserHandle initiatingUser) {
+ boolean isReusedCall = true;
+ Call call = reuseOutgoingCall(handle);
+
+ PhoneAccount account =
+ mPhoneAccountRegistrar.getPhoneAccount(handoverToHandle, initiatingUser);
+ boolean isSelfManaged = account != null && account.isSelfManaged();
+
+ // Create a call with original handle. The handle may be changed when the call is attached
+ // to a connection service, but in most cases will remain the same.
+ if (call == null) {
+ call = new Call(getNextCallId(), mContext,
+ this,
+ mLock,
+ mConnectionServiceRepository,
+ mPhoneNumberUtilsAdapter,
+ handle,
+ null /* gatewayInfo */,
+ null /* connectionManagerPhoneAccount */,
+ null /* handoverToHandle */,
+ Call.CALL_DIRECTION_OUTGOING /* callDirection */,
+ false /* forceAttachToExistingConnection */,
+ false, /* isConference */
+ mClockProxy);
+ call.initAnalytics(null);
+
+ // Ensure new calls related to self-managed calls/connections are set as such. This
+ // will be overridden when the actual connection is returned in startCreateConnection,
+ // however doing this now ensures the logs and any other logic will treat this call as
+ // self-managed from the moment it is created.
+ call.setIsSelfManaged(isSelfManaged);
+ if (isSelfManaged) {
+ // Self-managed calls will ALWAYS use voip audio mode.
+ call.setIsVoipAudioMode(true);
+ }
+ call.setInitiatingUser(initiatingUser);
+ isReusedCall = false;
+ }
+
+ int videoState = VideoProfile.STATE_AUDIO_ONLY;
+ if (extras != null) {
+ // Set the video state on the call early so that when it is added to the InCall UI the
+ // UI knows to configure itself as a video call immediately.
+ videoState = extras.getInt(TelecomManager.EXTRA_START_CALL_WITH_VIDEO_STATE,
+ VideoProfile.STATE_AUDIO_ONLY);
+
+ // If this is an emergency video call, we need to check if the phone account supports
+ // emergency video calling.
+ // Also, ensure we don't try to place an outgoing call with video if video is not
+ // supported.
+ if (VideoProfile.isVideo(videoState)) {
+ if (call.isEmergencyCall() && account != null &&
+ !account.hasCapabilities(PhoneAccount.CAPABILITY_EMERGENCY_VIDEO_CALLING)) {
+ // Phone account doesn't support emergency video calling, so fallback to
+ // audio-only now to prevent the InCall UI from setting up video surfaces
+ // needlessly.
+ Log.i(this, "startOutgoingCall - emergency video calls not supported; " +
+ "falling back to audio-only");
+ videoState = VideoProfile.STATE_AUDIO_ONLY;
+ } else if (account != null &&
+ !account.hasCapabilities(PhoneAccount.CAPABILITY_VIDEO_CALLING)) {
+ // Phone account doesn't support video calling, so fallback to audio-only.
+ Log.i(this, "startOutgoingCall - video calls not supported; fallback to " +
+ "audio-only.");
+ videoState = VideoProfile.STATE_AUDIO_ONLY;
+ }
+ }
+
+ call.setVideoState(videoState);
+ }
+
+ call.setTargetPhoneAccount(handoverToHandle);
+
+ // If there's no more room for a handover, just fail.
+ if ((!isReusedCall && !makeRoomForOutgoingCall(call, call.isEmergencyCall()))) {
+ return null;
+ }
+
+ PhoneAccount accountToUse =
+ mPhoneAccountRegistrar.getPhoneAccount(handoverToHandle, initiatingUser);
+ if (accountToUse != null && accountToUse.getExtras() != null) {
+ if (accountToUse.getExtras()
+ .getBoolean(PhoneAccount.EXTRA_ALWAYS_USE_VOIP_AUDIO_MODE)) {
+ Log.d(this, "startOutgoingCall: defaulting to voip mode for call %s",
+ call.getId());
+ call.setIsVoipAudioMode(true);
+ }
+ }
+
+ call.setState(
+ CallState.CONNECTING,
+ handoverToHandle == null ? "no-handle" : handoverToHandle.toString());
+
+ setIntentExtrasAndStartTime(call, extras);
+
+ if (!mCalls.contains(call)) {
+ // We check if mCalls already contains the call because we could potentially be reusing
+ // a call which was previously added (See {@link #reuseOutgoingCall}).
+ addCall(call);
+ }
+
+ return call;
+ }
/**
* Called in response to a {@link Call} receiving a {@link Call#handoverTo(PhoneAccountHandle,
* int, Bundle)} indicating the {@link android.telecom.InCallService} has requested a
@@ -3573,7 +4196,7 @@
Call call = new Call(getNextCallId(), mContext,
this, mLock, mConnectionServiceRepository,
- mContactsAsyncHelper, mCallerInfoAsyncQueryFactory, mPhoneNumberUtilsAdapter,
+ mPhoneNumberUtilsAdapter,
handoverFromCall.getHandle(), null,
null, null,
Call.CALL_DIRECTION_OUTGOING, false,
@@ -3773,8 +4396,6 @@
this,
mLock,
mConnectionServiceRepository,
- mContactsAsyncHelper,
- mCallerInfoAsyncQueryFactory,
mPhoneNumberUtilsAdapter,
srcAddr,
null /* gatewayInfo */,
@@ -3839,12 +4460,12 @@
call.startCreateConnection(mPhoneAccountRegistrar);
}
- ConnectionServiceFocusManager getConnectionServiceFocusManager() {
+ public ConnectionServiceFocusManager getConnectionServiceFocusManager() {
return mConnectionSvrFocusMgr;
}
private boolean canHold(Call call) {
- return call.can(Connection.CAPABILITY_HOLD);
+ return call.can(Connection.CAPABILITY_HOLD) && call.getState() != CallState.DIALING;
}
private boolean supportsHold(Call call) {
@@ -3905,6 +4526,9 @@
// We do not update the UI until we get confirmation of the answer() through
// {@link #markCallAsActive}.
mCall.answer(mVideoState);
+ if (mCall.getState() == CallState.RINGING) {
+ setCallState(mCall, CallState.ANSWERED, "answered");
+ }
if (isSpeakerphoneAutoEnabledForVideoCalls(mVideoState)) {
mCall.setStartWithSpeakerphoneOn(true);
}
@@ -3927,4 +4551,55 @@
}
}
}
+
+ public void resetConnectionTime(Call call) {
+ call.setConnectTimeMillis(System.currentTimeMillis());
+ call.setConnectElapsedTimeMillis(SystemClock.elapsedRealtime());
+ if (mCalls.contains(call)) {
+ for (CallsManagerListener listener : mListeners) {
+ listener.onConnectionTimeChanged(call);
+ }
+ }
+ }
+
+ /**
+ * Determines if there is an ongoing emergency call. This can be either an outgoing emergency
+ * call, or a number which has been identified by the number as an emergency call.
+ * @return {@code true} if there is an ongoing emergency call, {@code false} otherwise.
+ */
+ public boolean isInEmergencyCall() {
+ return mCalls.stream().filter(c -> c.isEmergencyCall()
+ || c.isNetworkIdentifiedEmergencyCall()).count() > 0;
+ }
+
+ /**
+ * Trigger display of an error message to the user; we do this outside of dialer for calls which
+ * fail to be created and added to Dialer.
+ * @param messageId The string resource id.
+ */
+ private void showErrorMessage(int messageId) {
+ final Intent errorIntent = new Intent(mContext, ErrorDialogActivity.class);
+ errorIntent.putExtra(ErrorDialogActivity.ERROR_MESSAGE_ID_EXTRA, messageId);
+ errorIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ mContext.startActivityAsUser(errorIntent, UserHandle.CURRENT);
+ }
+
+ /**
+ * Handles changes to a {@link PhoneAccount}.
+ *
+ * Checks for changes to video calling availability and updates whether calls for that phone
+ * account are video capable.
+ *
+ * @param registrar The {@link PhoneAccountRegistrar} originating the change.
+ * @param phoneAccount The {@link PhoneAccount} which changed.
+ */
+ private void handlePhoneAccountChanged(PhoneAccountRegistrar registrar,
+ PhoneAccount phoneAccount) {
+ Log.i(this, "handlePhoneAccountChanged: phoneAccount=%s", phoneAccount);
+ boolean isVideoNowSupported = phoneAccount.hasCapabilities(
+ PhoneAccount.CAPABILITY_VIDEO_CALLING);
+ mCalls.stream()
+ .filter(c -> phoneAccount.getAccountHandle().equals(c.getTargetPhoneAccount()))
+ .forEach(c -> c.setVideoCallingSupportedByPhoneAccount(isVideoNowSupported));
+ }
}
diff --git a/src/com/android/server/telecom/CallsManagerListenerBase.java b/src/com/android/server/telecom/CallsManagerListenerBase.java
index c0a71eb..4fa2ee5 100644
--- a/src/com/android/server/telecom/CallsManagerListenerBase.java
+++ b/src/com/android/server/telecom/CallsManagerListenerBase.java
@@ -92,4 +92,12 @@
@Override
public void onDisconnectedTonePlaying(boolean isTonePlaying) {
}
+
+ @Override
+ public void onConnectionTimeChanged(Call call) {
+ }
+
+ @Override
+ public void onConferenceStateChanged(Call call, boolean isConference) {
+ }
}
diff --git a/src/com/android/server/telecom/ConnectionServiceFocusManager.java b/src/com/android/server/telecom/ConnectionServiceFocusManager.java
index 92570a0..9c0bfa2 100644
--- a/src/com/android/server/telecom/ConnectionServiceFocusManager.java
+++ b/src/com/android/server/telecom/ConnectionServiceFocusManager.java
@@ -19,6 +19,7 @@
import android.annotation.Nullable;
import android.content.ComponentName;
import android.os.Handler;
+import android.os.HandlerThread;
import android.os.Looper;
import android.os.Message;
import android.telecom.Log;
@@ -30,14 +31,19 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
+import java.util.Optional;
+import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
public class ConnectionServiceFocusManager {
private static final String TAG = "ConnectionSvrFocusMgr";
+ private static final int GET_CURRENT_FOCUS_TIMEOUT_MILLIS = 1000;
/** Factory interface used to create the {@link ConnectionServiceFocusManager} instance. */
public interface ConnectionServiceFocusManagerFactory {
- ConnectionServiceFocusManager create(CallsManagerRequester requester, Looper looper);
+ ConnectionServiceFocusManager create(CallsManagerRequester requester);
}
/**
@@ -271,10 +277,12 @@
private FocusManagerHandler mEventHandler;
public ConnectionServiceFocusManager(
- CallsManagerRequester callsManagerRequester, Looper looper) {
+ CallsManagerRequester callsManagerRequester) {
mCallsManagerRequester = callsManagerRequester;
mCallsManagerRequester.setCallsManagerListener(mCallsManagerListener);
- mEventHandler = new FocusManagerHandler(looper);
+ HandlerThread handlerThread = new HandlerThread(TAG);
+ handlerThread.start();
+ mEventHandler = new FocusManagerHandler(handlerThread.getLooper());
mCalls = new ArrayList<>();
}
@@ -298,8 +306,32 @@
* call is the current connection service focus. Also the state of the focus call must be one
* of {@link #PRIORITY_FOCUS_CALL_STATE}.
*/
- public CallFocus getCurrentFocusCall() {
- return mCurrentFocusCall;
+ public @Nullable CallFocus getCurrentFocusCall() {
+ if (mEventHandler.getLooper().isCurrentThread()) {
+ // return synchronously if we're on the same thread.
+ return mCurrentFocusCall;
+ }
+ final BlockingQueue<Optional<CallFocus>> currentFocusedCallQueue =
+ new LinkedBlockingQueue<>(1);
+ mEventHandler.post(() -> {
+ currentFocusedCallQueue.offer(
+ mCurrentFocusCall == null ? Optional.empty() : Optional.of(mCurrentFocusCall));
+ });
+ try {
+ Optional<CallFocus> syncCallFocus = currentFocusedCallQueue.poll(
+ GET_CURRENT_FOCUS_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
+ if (syncCallFocus != null) {
+ return syncCallFocus.orElse(null);
+ } else {
+ Log.w(TAG, "Timed out waiting for synchronous current focus. Returning possibly"
+ + " inaccurate result");
+ return mCurrentFocusCall;
+ }
+ } catch (InterruptedException e) {
+ Log.w(TAG, "Interrupted when waiting for synchronous current focus."
+ + " Returning possibly inaccurate result.");
+ return mCurrentFocusCall;
+ }
}
/** Returns the current connection service focus. */
diff --git a/src/com/android/server/telecom/ConnectionServiceWrapper.java b/src/com/android/server/telecom/ConnectionServiceWrapper.java
index 6dd9a3a..4621558 100644
--- a/src/com/android/server/telecom/ConnectionServiceWrapper.java
+++ b/src/com/android/server/telecom/ConnectionServiceWrapper.java
@@ -145,6 +145,26 @@
}
@Override
+ public void resetConnectionTime(String callId, Session.Info sessionInfo) {
+ Log.startSession(sessionInfo, "CSW.rCCT");
+ long token = Binder.clearCallingIdentity();
+ try {
+ synchronized (mLock) {
+ logIncoming("resetConnectionTime %s", callId);
+ Call call = mCallIdMapper.getCall(callId);
+ if (call != null) {
+ mCallsManager.resetConnectionTime(call);
+ } else {
+ // Log.w(this, "resetConnectionTime, unknown call id: %s", msg.obj);
+ }
+ }
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ Log.endSession();
+ }
+ }
+
+ @Override
public void setVideoProvider(String callId, IVideoProvider videoProvider,
Session.Info sessionInfo) {
Log.startSession(sessionInfo, "CSW.sVP");
@@ -552,15 +572,16 @@
@Override
public void queryRemoteConnectionServices(RemoteServiceCallback callback,
- Session.Info sessionInfo) {
+ String callingPackage, Session.Info sessionInfo) {
final UserHandle callingUserHandle = Binder.getCallingUserHandle();
Log.startSession(sessionInfo, "CSW.qRCS");
long token = Binder.clearCallingIdentity();
try {
synchronized (mLock) {
- logIncoming("queryRemoteConnectionServices %s", callback);
+ logIncoming("queryRemoteConnectionServices callingPackage=" + callingPackage);
ConnectionServiceWrapper.this
- .queryRemoteConnectionServices(callingUserHandle, callback);
+ .queryRemoteConnectionServices(callingUserHandle, callingPackage,
+ callback);
}
} catch (Throwable t) {
Log.e(ConnectionServiceWrapper.this, t, "");
@@ -802,9 +823,18 @@
}
// Allow the Sim call manager account as well, even if its disabled.
if (phoneAccountHandle == null && callingPhoneAccountHandle != null) {
- if (callingPhoneAccountHandle.equals(
- mPhoneAccountRegistrar.getSimCallManager(userHandle))) {
- phoneAccountHandle = callingPhoneAccountHandle;
+ // Search all SIM PhoneAccounts to see if there is a SIM call manager
+ // associated with any of them and verify that the calling handle matches.
+ for (PhoneAccountHandle handle :
+ mPhoneAccountRegistrar.getSimPhoneAccounts(userHandle)) {
+ int subId = mPhoneAccountRegistrar.getSubscriptionIdForPhoneAccount(
+ handle);
+ PhoneAccountHandle connectionMgrHandle =
+ mPhoneAccountRegistrar.getSimCallManager(subId, userHandle);
+ if (callingPhoneAccountHandle.equals(connectionMgrHandle)) {
+ phoneAccountHandle = connectionMgrHandle;
+ break;
+ }
}
}
if (phoneAccountHandle != null) {
@@ -970,6 +1000,27 @@
Log.endSession();
}
}
+
+ @Override
+ public void setConferenceState(String callId, boolean isConference,
+ Session.Info sessionInfo) throws RemoteException {
+ Log.startSession(sessionInfo, "CSW.sCS");
+ long token = Binder.clearCallingIdentity();
+ try {
+ synchronized (mLock) {
+ Call call = mCallIdMapper.getCall(callId);
+ if (call != null) {
+ call.setConferenceState(isConference);
+ }
+ }
+ } catch (Throwable t) {
+ Log.e(ConnectionServiceWrapper.this, t, "");
+ throw t;
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ Log.endSession();
+ }
+ }
}
private final Adapter mAdapter = new Adapter();
@@ -1621,6 +1672,14 @@
if (connection.getState() == Connection.STATE_DISCONNECTED) {
// A connection that begins in the DISCONNECTED state is an indication of
// failure to connect; we handle all failures uniformly
+ Call foundCall = mCallIdMapper.getCall(callId);
+ if (foundCall != null) {
+ // The post-dial digits are created when the call is first created. Normally
+ // the ConnectionService is responsible for stripping them from the address, but
+ // since a failed connection will not have done this, we could end up with duplicate
+ // post-dial digits.
+ foundCall.clearPostDialDigits();
+ }
removeCall(callId, connection.getDisconnectCause());
} else {
// Successful connection
@@ -1662,21 +1721,26 @@
}
private void queryRemoteConnectionServices(final UserHandle userHandle,
- final RemoteServiceCallback callback) {
- // Only give remote connection services to this connection service if it is listed as
- // the connection manager.
- PhoneAccountHandle simCallManager = mPhoneAccountRegistrar.getSimCallManager(userHandle);
- Log.d(this, "queryRemoteConnectionServices finds simCallManager = %s", simCallManager);
- if (simCallManager == null ||
- !simCallManager.getComponentName().equals(getComponentName())) {
- noRemoteServices(callback);
- return;
- }
-
- // Make a list of ConnectionServices that are listed as being associated with SIM accounts
+ final String callingPackage, final RemoteServiceCallback callback) {
+ boolean isCallerConnectionManager = false;
+ // For each Sim ConnectionService, use its subid to find the correct connection manager for
+ // that ConnectionService; return those Sim ConnectionServices which match the connection
+ // manager.
final Set<ConnectionServiceWrapper> simServices = Collections.newSetFromMap(
new ConcurrentHashMap<ConnectionServiceWrapper, Boolean>(8, 0.9f, 1));
for (PhoneAccountHandle handle : mPhoneAccountRegistrar.getSimPhoneAccounts(userHandle)) {
+ int subId = mPhoneAccountRegistrar.getSubscriptionIdForPhoneAccount(handle);
+ PhoneAccountHandle connectionMgrHandle = mPhoneAccountRegistrar.getSimCallManager(subId,
+ userHandle);
+ if (connectionMgrHandle == null
+ || !connectionMgrHandle.getComponentName().getPackageName().equals(
+ callingPackage)) {
+ Log.v(this, "queryRemoteConnectionServices: callingPackage=%s skipped; "
+ + "doesn't match mgr %s for tfa %s",
+ callingPackage, connectionMgrHandle, handle);
+ } else {
+ isCallerConnectionManager = true;
+ }
ConnectionServiceWrapper service = mConnectionServiceRepository.getService(
handle.getComponentName(), handle.getUserHandle());
if (service != null) {
@@ -1684,10 +1748,17 @@
}
}
+ // Bail early if the caller isn't the sim connection mgr.
+ if (!isCallerConnectionManager) {
+ Log.d(this, "queryRemoteConnectionServices: none; not sim call mgr.");
+ noRemoteServices(callback);
+ return;
+ }
+
final List<ComponentName> simServiceComponentNames = new ArrayList<>();
final List<IBinder> simServiceBinders = new ArrayList<>();
- Log.v(this, "queryRemoteConnectionServices, simServices = %s", simServices);
+ Log.i(this, "queryRemoteConnectionServices, simServices = %s", simServices);
for (ConnectionServiceWrapper simService : simServices) {
if (simService == this) {
@@ -1700,7 +1771,8 @@
currentSimService.mBinder.bind(new BindCallback() {
@Override
public void onSuccess() {
- Log.d(this, "Adding simService %s", currentSimService.getComponentName());
+ Log.d(this, "queryRemoteConnectionServices: Adding simService %s",
+ currentSimService.getComponentName());
if (currentSimService.mServiceInterface == null) {
// The remote ConnectionService died, so do not add it.
// We will still perform maybeComplete() and notify the caller with an empty
@@ -1716,7 +1788,8 @@
@Override
public void onFailure() {
- Log.d(this, "Failed simService %s", currentSimService.getComponentName());
+ Log.d(this, "queryRemoteConnectionServices: Failed simService %s",
+ currentSimService.getComponentName());
// We know maybeComplete() will always be a no-op from now on, so go ahead and
// signal failure of the entire request
noRemoteServices(callback);
@@ -1738,7 +1811,7 @@
try {
callback.onResult(componentNames, binders);
} catch (RemoteException e) {
- Log.e(this, e, "Contacting ConnectionService %s",
+ Log.e(this, e, "setRemoteServices: Contacting ConnectionService %s",
ConnectionServiceWrapper.this.getComponentName());
}
}
@@ -1746,4 +1819,13 @@
private void noRemoteServices(RemoteServiceCallback callback) {
setRemoteServices(callback, Collections.EMPTY_LIST, Collections.EMPTY_LIST);
}
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("[ConnectionServiceWrapper componentName=");
+ sb.append(mComponentName);
+ sb.append("]");
+ return sb.toString();
+ }
}
diff --git a/src/com/android/server/telecom/CreateConnectionProcessor.java b/src/com/android/server/telecom/CreateConnectionProcessor.java
index 7eb3801..89200ad 100644
--- a/src/com/android/server/telecom/CreateConnectionProcessor.java
+++ b/src/com/android/server/telecom/CreateConnectionProcessor.java
@@ -22,6 +22,8 @@
import android.telecom.ParcelableConnection;
import android.telecom.PhoneAccount;
import android.telecom.PhoneAccountHandle;
+import android.telephony.SubscriptionManager;
+import android.telephony.TelephonyManager;
// TODO: Needed for move to system service: import com.android.internal.R;
@@ -29,6 +31,8 @@
import java.util.ArrayList;
import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
@@ -86,6 +90,28 @@
}
}
+ @VisibleForTesting
+ public interface ITelephonyManagerAdapter {
+ int getSubIdForPhoneAccount(Context context, PhoneAccount account);
+ int getSlotIndex(int subId);
+ }
+
+ private ITelephonyManagerAdapter mTelephonyAdapter = new ITelephonyManagerAdapter() {
+ @Override
+ public int getSubIdForPhoneAccount(Context context, PhoneAccount account) {
+ TelephonyManager manager = context.getSystemService(TelephonyManager.class);
+ if (manager == null) {
+ return SubscriptionManager.INVALID_SUBSCRIPTION_ID;
+ }
+ return manager.getSubIdForPhoneAccount(account);
+ }
+
+ @Override
+ public int getSlotIndex(int subId) {
+ return SubscriptionManager.getSlotIndex(subId);
+ }
+ };
+
private final Call mCall;
private final ConnectionServiceRepository mRepository;
private List<CallAttemptRecord> mAttemptRecords;
@@ -124,6 +150,11 @@
}
@VisibleForTesting
+ public void setTelephonyManagerAdapter(ITelephonyManagerAdapter adapter) {
+ mTelephonyAdapter = adapter;
+ }
+
+ @VisibleForTesting
public void process() {
Log.v(this, "process");
clearTimeout();
@@ -311,6 +342,26 @@
}
}
+ // This function is used after previous attempts to find emergency PSTN connections
+ // do not find any SIM phone accounts with emergency capability.
+ // It attempts to add any accounts with CAPABILITY_PLACE_EMERGENCY_CALLS even if
+ // accounts are not SIM accounts.
+ private void adjustAttemptsForEmergencyNoSimRequired(List<PhoneAccount> allAccounts) {
+ // Add all phone accounts which can place emergency calls.
+ if (mAttemptRecords.isEmpty()) {
+ for (PhoneAccount phoneAccount : allAccounts) {
+ if (phoneAccount.hasCapabilities(PhoneAccount.CAPABILITY_PLACE_EMERGENCY_CALLS)) {
+ PhoneAccountHandle phoneAccountHandle = phoneAccount.getAccountHandle();
+ Log.i(this, "Will try account %s for emergency", phoneAccountHandle);
+ mAttemptRecords.add(
+ new CallAttemptRecord(phoneAccountHandle, phoneAccountHandle));
+ // Add only one emergency PhoneAccount to the attempt list.
+ break;
+ }
+ }
+ }
+ }
+
// If we are possibly attempting to call a local emergency number, ensure that the
// plain PSTN connection services are listed, and nothing else.
private void adjustAttemptsForEmergency(PhoneAccountHandle preferredPAH) {
@@ -332,34 +383,22 @@
allAccounts.add(TelephonyUtil.getDefaultEmergencyPhoneAccount());
}
- // First, possibly add the SIM phone account that the user prefers
+ // Get user preferred PA if it exists.
PhoneAccount preferredPA = mPhoneAccountRegistrar.getPhoneAccountUnchecked(
preferredPAH);
- if (preferredPA != null &&
- preferredPA.hasCapabilities(PhoneAccount.CAPABILITY_PLACE_EMERGENCY_CALLS) &&
- preferredPA.hasCapabilities(PhoneAccount.CAPABILITY_SIM_SUBSCRIPTION)) {
- Log.i(this, "Will try PSTN account %s for emergency",
- preferredPA.getAccountHandle());
- mAttemptRecords.add(new CallAttemptRecord(preferredPAH, preferredPAH));
- }
-
// Next, add all SIM phone accounts which can place emergency calls.
- TelephonyUtil.sortSimPhoneAccounts(mContext, allAccounts);
-
- // If preferredPA already has an emergency PhoneAccount, do not add others since the
- // emergency call be redialed in Telephony.
- if (mAttemptRecords.isEmpty()) {
- for (PhoneAccount phoneAccount : allAccounts) {
- if (phoneAccount.hasCapabilities(PhoneAccount.CAPABILITY_PLACE_EMERGENCY_CALLS)
- && phoneAccount.hasCapabilities(
- PhoneAccount.CAPABILITY_SIM_SUBSCRIPTION)) {
- PhoneAccountHandle phoneAccountHandle = phoneAccount.getAccountHandle();
- Log.i(this, "Will try PSTN account %s for emergency", phoneAccountHandle);
- mAttemptRecords.add(new CallAttemptRecord(phoneAccountHandle,
- phoneAccountHandle));
- // Add only one emergency SIM PhoneAccount to the attempt list.
- break;
- }
+ sortSimPhoneAccountsForEmergency(allAccounts, preferredPA);
+ // and pick the fist one that can place emergency calls.
+ for (PhoneAccount phoneAccount : allAccounts) {
+ if (phoneAccount.hasCapabilities(PhoneAccount.CAPABILITY_PLACE_EMERGENCY_CALLS)
+ && phoneAccount.hasCapabilities(PhoneAccount.CAPABILITY_SIM_SUBSCRIPTION)) {
+ PhoneAccountHandle phoneAccountHandle = phoneAccount.getAccountHandle();
+ Log.i(this, "Will try PSTN account %s for emergency", phoneAccountHandle);
+ mAttemptRecords.add(new CallAttemptRecord(phoneAccountHandle,
+ phoneAccountHandle));
+ // Add only one emergency SIM PhoneAccount to the attempt list, telephony will
+ // perform retries if the call fails.
+ break;
}
}
@@ -383,6 +422,12 @@
}
}
}
+
+ if (mAttemptRecords.isEmpty()) {
+ // Last best-effort attempt: choose any account with emergency capability even
+ // without SIM capability.
+ adjustAttemptsForEmergencyNoSimRequired(allAccounts);
+ }
}
}
@@ -470,4 +515,89 @@
mLastErrorDisconnectCause = errorDisconnectCause;
attemptNextPhoneAccount();
}
+
+ public void sortSimPhoneAccountsForEmergency(List<PhoneAccount> accounts,
+ PhoneAccount userPreferredAccount) {
+ // Sort the accounts according to how we want to display them (ascending order).
+ accounts.sort((account1, account2) -> {
+ int retval = 0;
+
+ // SIM accounts go first
+ boolean isSim1 = account1.hasCapabilities(PhoneAccount.CAPABILITY_SIM_SUBSCRIPTION);
+ boolean isSim2 = account2.hasCapabilities(PhoneAccount.CAPABILITY_SIM_SUBSCRIPTION);
+ if (isSim1 ^ isSim2) {
+ return isSim1 ? -1 : 1;
+ }
+
+ // Start with the account that Telephony considers as the "emergency preferred"
+ // account, which overrides the user's choice.
+ boolean isSim1Preferred = account1.hasCapabilities(
+ PhoneAccount.CAPABILITY_EMERGENCY_PREFERRED);
+ boolean isSim2Preferred = account2.hasCapabilities(
+ PhoneAccount.CAPABILITY_EMERGENCY_PREFERRED);
+ // Perform XOR, we only sort if one is considered emergency preferred (should
+ // always be the case).
+ if (isSim1Preferred ^ isSim2Preferred) {
+ return isSim1Preferred ? -1 : 1;
+ }
+
+ // Return the PhoneAccount associated with a valid logical slot.
+ int subId1 = mTelephonyAdapter.getSubIdForPhoneAccount(mContext, account1);
+ int subId2 = mTelephonyAdapter.getSubIdForPhoneAccount(mContext, account2);
+ int slotId1 = (subId1 != SubscriptionManager.INVALID_SUBSCRIPTION_ID)
+ ? mTelephonyAdapter.getSlotIndex(subId1)
+ : SubscriptionManager.INVALID_SIM_SLOT_INDEX;
+ int slotId2 = (subId2 != SubscriptionManager.INVALID_SUBSCRIPTION_ID)
+ ? mTelephonyAdapter.getSlotIndex(subId2)
+ : SubscriptionManager.INVALID_SIM_SLOT_INDEX;
+ // Make sure both slots are valid, if one is not, prefer the one that is valid.
+ if ((slotId1 == SubscriptionManager.INVALID_SIM_SLOT_INDEX) ^
+ (slotId2 == SubscriptionManager.INVALID_SIM_SLOT_INDEX)) {
+ retval = (slotId1 != SubscriptionManager.INVALID_SIM_SLOT_INDEX) ? -1 : 1;
+ }
+ if (retval != 0) {
+ return retval;
+ }
+
+ // Prefer the user's choice if all PhoneAccounts are associated with valid logical
+ // slots.
+ if (userPreferredAccount != null) {
+ if (account1.equals(userPreferredAccount)) {
+ return -1;
+ } else if (account2.equals(userPreferredAccount)) {
+ return 1;
+ }
+ }
+
+ // because of the xor above, slotId1 and slotId2 are either both invalid or valid at
+ // this point. If valid, prefer the lower slot index.
+ if (slotId1 != SubscriptionManager.INVALID_SIM_SLOT_INDEX) {
+ // Assuming the slots are different, we should not have slotId1 == slotId2.
+ return (slotId1 < slotId2) ? -1 : 1;
+ }
+
+ // Then order by package
+ String pkg1 = account1.getAccountHandle().getComponentName().getPackageName();
+ String pkg2 = account2.getAccountHandle().getComponentName().getPackageName();
+ retval = pkg1.compareTo(pkg2);
+ if (retval != 0) {
+ return retval;
+ }
+
+ // then order by label
+ String label1 = nullToEmpty(account1.getLabel().toString());
+ String label2 = nullToEmpty(account2.getLabel().toString());
+ retval = label1.compareTo(label2);
+ if (retval != 0) {
+ return retval;
+ }
+
+ // then by hashcode
+ return Integer.compare(account1.hashCode(), account2.hashCode());
+ });
+ }
+
+ private static String nullToEmpty(String str) {
+ return str == null ? "" : str;
+ }
}
diff --git a/src/com/android/server/telecom/DefaultDialerCache.java b/src/com/android/server/telecom/DefaultDialerCache.java
index 3b36119..b72d860 100644
--- a/src/com/android/server/telecom/DefaultDialerCache.java
+++ b/src/com/android/server/telecom/DefaultDialerCache.java
@@ -35,6 +35,8 @@
import com.android.internal.util.IndentingPrintWriter;
import java.util.Objects;
+import java.util.concurrent.Executor;
+import java.util.function.IntConsumer;
public class DefaultDialerCache {
public interface DefaultDialerManagerAdapter {
@@ -133,15 +135,18 @@
private final DefaultDialerManagerAdapter mDefaultDialerManagerAdapter;
private final TelecomSystem.SyncRoot mLock;
private final String mSystemDialerName;
+ private final RoleManagerAdapter mRoleManagerAdapter;
private SparseArray<String> mCurrentDefaultDialerPerUser = new SparseArray<>();
public DefaultDialerCache(Context context,
DefaultDialerManagerAdapter defaultDialerManagerAdapter,
+ RoleManagerAdapter roleManagerAdapter,
TelecomSystem.SyncRoot lock) {
mContext = context;
mDefaultDialerManagerAdapter = defaultDialerManagerAdapter;
+ mRoleManagerAdapter = roleManagerAdapter;
mLock = lock;
- mSystemDialerName = mContext.getResources().getString(R.string.ui_default_package);
+ mSystemDialerName = TelecomServiceImpl.getSystemDialerPackage(mContext);
IntentFilter packageIntentFilter = new IntentFilter();
packageIntentFilter.addAction(Intent.ACTION_PACKAGE_CHANGED);
@@ -173,12 +178,15 @@
return null;
}
- synchronized (mLock) {
- String defaultDialer = mCurrentDefaultDialerPerUser.get(userId);
- if (defaultDialer != null) {
- return defaultDialer;
- }
- }
+ // TODO: Re-enable this when we are able to use the cache once more. RoleManager does not
+ // provide a means for being informed when the role holder changes at the current time.
+ //
+ //synchronized (mLock) {
+ // String defaultDialer = mCurrentDefaultDialerPerUser.get(userId);
+ // if (defaultDialer != null) {
+ // return defaultDialer;
+ // }
+ //}
return refreshCacheForUser(userId);
}
@@ -186,6 +194,10 @@
return getDefaultDialerApplication(mContext.getUserId());
}
+ public void observeDefaultDialerApplication(Executor executor, IntConsumer observer) {
+ mRoleManagerAdapter.observeDefaultDialerApp(executor, observer);
+ }
+
public boolean isDefaultOrSystemDialer(String packageName, int userId) {
String defaultDialer = getDefaultDialerApplication(userId);
return Objects.equals(packageName, defaultDialer)
@@ -206,7 +218,7 @@
private String refreshCacheForUser(int userId) {
String currentDefaultDialer =
- mDefaultDialerManagerAdapter.getDefaultDialerApplication(mContext, userId);
+ mRoleManagerAdapter.getDefaultDialerApp(userId);
synchronized (mLock) {
mCurrentDefaultDialerPerUser.put(userId, currentDefaultDialer);
}
diff --git a/src/com/android/server/telecom/DialerCodeReceiver.java b/src/com/android/server/telecom/DialerCodeReceiver.java
index 57f84a0..1cd922a 100644
--- a/src/com/android/server/telecom/DialerCodeReceiver.java
+++ b/src/com/android/server/telecom/DialerCodeReceiver.java
@@ -19,9 +19,12 @@
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
+import android.os.UserHandle;
import android.telecom.Log;
import android.telecom.TelecomManager;
+import com.android.server.telecom.ui.TelecomDeveloperMenu;
+
/**
* Receiver for "secret codes" broadcast by Dialer.
*/
@@ -38,6 +41,9 @@
// Writes a MARK to the Telecom log.
public static final String TELECOM_SECRET_CODE_MARK = "826275";
+ // Opens the Telecom developer menu.
+ public static final String TELECOM_SECRET_CODE_MENU = "828282";
+
private final CallsManager mCallsManager;
DialerCodeReceiver(CallsManager callsManager) {
@@ -61,6 +67,11 @@
// add a non-call event.
Call currentCall = mCallsManager.getActiveCall();
Log.addEvent(currentCall, LogUtils.Events.USER_LOG_MARK);
+ } else if (intent.getData().getHost().equals(TELECOM_SECRET_CODE_MENU)) {
+ Log.i("DialerCodeReceiver", "Secret code used to open developer menu.");
+ Intent confirmIntent = new Intent(context, TelecomDeveloperMenu.class);
+ confirmIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ context.startActivityAsUser(confirmIntent, UserHandle.CURRENT);
}
}
}
diff --git a/src/com/android/server/telecom/EmergencyCallHelper.java b/src/com/android/server/telecom/EmergencyCallHelper.java
index 5b4c2fd..7052597 100644
--- a/src/com/android/server/telecom/EmergencyCallHelper.java
+++ b/src/com/android/server/telecom/EmergencyCallHelper.java
@@ -34,6 +34,8 @@
private final String mDefaultDialerPackage;
private final Timeouts.Adapter mTimeoutsAdapter;
private UserHandle mLocationPermissionGrantedToUser;
+ private boolean mHadFineLocation = false;
+ private boolean mHadBackgroundLocation = false;
private long mLastEmergencyCallTimestampMillis;
@VisibleForTesting
@@ -48,7 +50,7 @@
void maybeGrantTemporaryLocationPermission(Call call, UserHandle userHandle) {
if (shouldGrantTemporaryLocationPermission(call)) {
- grantLocationPermission(userHandle, call);
+ grantLocationPermission(userHandle);
}
if (call != null && call.isEmergencyCall()) {
recordEmergencyCallTime();
@@ -87,23 +89,34 @@
Log.i(this, "ShouldGrantTemporaryLocationPermission, not emergency");
return false;
}
- if (hasLocationPermission()) {
- Log.i(this, "ShouldGrantTemporaryLocationPermission, already has location permission");
- return false;
- }
Log.i(this, "ShouldGrantTemporaryLocationPermission, returning true");
return true;
}
- private void grantLocationPermission(UserHandle userHandle, Call call) {
+ private void grantLocationPermission(UserHandle userHandle) {
Log.i(this, "Granting temporary location permission to " + mDefaultDialerPackage
+ ", user: " + userHandle);
try {
- mContext.getPackageManager().grantRuntimePermission(mDefaultDialerPackage,
- Manifest.permission.ACCESS_FINE_LOCATION, userHandle);
+ boolean hadBackgroundLocation = hasBackgroundLocationPermission();
+ boolean hadFineLocation = hasFineLocationPermission();
+ if (hadBackgroundLocation && hadFineLocation) {
+ Log.i(this, "Skipping location grant because the default dialer already"
+ + " holds sufficient permissions");
+ return;
+ }
+ if (!hadFineLocation) {
+ mContext.getPackageManager().grantRuntimePermission(mDefaultDialerPackage,
+ Manifest.permission.ACCESS_FINE_LOCATION, userHandle);
+ }
+ if (!hadBackgroundLocation) {
+ mContext.getPackageManager().grantRuntimePermission(mDefaultDialerPackage,
+ Manifest.permission.ACCESS_BACKGROUND_LOCATION, userHandle);
+ }
+ mHadFineLocation = hadFineLocation;
+ mHadBackgroundLocation = hadBackgroundLocation;
recordPermissionGrant(userHandle);
} catch (Exception e) {
- Log.e(this, e, "Failed to grant location permission to " + mDefaultDialerPackage
+ Log.e(this, e, "Failed to grant location permissions to " + mDefaultDialerPackage
+ ", user: " + userHandle);
}
}
@@ -112,17 +125,29 @@
Log.i(this, "Revoking temporary location permission from " + mDefaultDialerPackage
+ ", user: " + mLocationPermissionGrantedToUser);
UserHandle userHandle = mLocationPermissionGrantedToUser;
- clearPermissionGrant();
try {
- mContext.getPackageManager().revokeRuntimePermission(mDefaultDialerPackage,
- Manifest.permission.ACCESS_FINE_LOCATION, userHandle);
+ if (!mHadFineLocation) {
+ mContext.getPackageManager().revokeRuntimePermission(mDefaultDialerPackage,
+ Manifest.permission.ACCESS_FINE_LOCATION, userHandle);
+ }
+ if (!mHadBackgroundLocation) {
+ mContext.getPackageManager().revokeRuntimePermission(mDefaultDialerPackage,
+ Manifest.permission.ACCESS_BACKGROUND_LOCATION, userHandle);
+ }
} catch (Exception e) {
Log.e(this, e, "Failed to revoke location permission from " + mDefaultDialerPackage
+ ", user: " + userHandle);
}
+ clearPermissionGrant();
}
- private boolean hasLocationPermission() {
+ private boolean hasBackgroundLocationPermission() {
+ return mContext.getPackageManager().checkPermission(
+ Manifest.permission.ACCESS_BACKGROUND_LOCATION, mDefaultDialerPackage)
+ == PackageManager.PERMISSION_GRANTED;
+ }
+
+ private boolean hasFineLocationPermission() {
return mContext.getPackageManager().checkPermission(
Manifest.permission.ACCESS_FINE_LOCATION, mDefaultDialerPackage)
== PackageManager.PERMISSION_GRANTED;
@@ -138,5 +163,7 @@
private void clearPermissionGrant() {
mLocationPermissionGrantedToUser = null;
+ mHadBackgroundLocation = false;
+ mHadFineLocation = false;
}
}
diff --git a/src/com/android/server/telecom/HeadsetMediaButton.java b/src/com/android/server/telecom/HeadsetMediaButton.java
index ec77289..ad95c34 100644
--- a/src/com/android/server/telecom/HeadsetMediaButton.java
+++ b/src/com/android/server/telecom/HeadsetMediaButton.java
@@ -26,14 +26,18 @@
import android.telecom.Log;
import android.view.KeyEvent;
+import com.android.internal.annotations.VisibleForTesting;
+
/**
* Static class to handle listening to the headset media buttons.
*/
public class HeadsetMediaButton extends CallsManagerListenerBase {
// Types of media button presses
- static final int SHORT_PRESS = 1;
- static final int LONG_PRESS = 2;
+ @VisibleForTesting
+ public static final int SHORT_PRESS = 1;
+ @VisibleForTesting
+ public static final int LONG_PRESS = 2;
private static final AudioAttributes AUDIO_ATTRIBUTES = new AudioAttributes.Builder()
.setContentType(AudioAttributes.CONTENT_TYPE_SPEECH)
diff --git a/src/com/android/server/telecom/InCallController.java b/src/com/android/server/telecom/InCallController.java
index 9d20d4a..2e3ee8d 100644
--- a/src/com/android/server/telecom/InCallController.java
+++ b/src/com/android/server/telecom/InCallController.java
@@ -34,7 +34,6 @@
import android.os.UserHandle;
import android.telecom.CallAudioState;
import android.telecom.ConnectionService;
-import android.telecom.DefaultDialerManager;
import android.telecom.InCallService;
import android.telecom.Log;
import android.telecom.Logging.Runnable;
@@ -47,7 +46,7 @@
// TODO: Needed for move to system service: import com.android.internal.R;
import com.android.internal.telecom.IInCallService;
import com.android.internal.util.IndentingPrintWriter;
-import com.android.server.telecom.SystemStateProvider.SystemStateListener;
+import com.android.server.telecom.SystemStateHelper.SystemStateListener;
import java.util.ArrayList;
import java.util.Collection;
@@ -55,6 +54,8 @@
import java.util.List;
import java.util.Map;
import java.util.Objects;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.TimeUnit;
/**
* Binds to {@link IInCallService} and provides the service to {@link CallsManager} through which it
@@ -232,7 +233,8 @@
Log.i(this, "Attempting to bind to InCall %s, with %s", mInCallServiceInfo, intent);
mIsConnected = true;
if (!mContext.bindServiceAsUser(intent, mServiceConnection,
- Context.BIND_AUTO_CREATE | Context.BIND_FOREGROUND_SERVICE,
+ Context.BIND_AUTO_CREATE | Context.BIND_FOREGROUND_SERVICE
+ | Context.BIND_ALLOW_BACKGROUND_ACTIVITY_STARTS,
UserHandle.CURRENT)) {
Log.w(this, "Failed to connect.");
mIsConnected = false;
@@ -712,15 +714,11 @@
private static final int IN_CALL_SERVICE_TYPE_SYSTEM_UI = 2;
private static final int IN_CALL_SERVICE_TYPE_CAR_MODE_UI = 3;
private static final int IN_CALL_SERVICE_TYPE_NON_UI = 4;
+ private static final int IN_CALL_SERVICE_TYPE_COMPANION = 5;
/** The in-call app implementations, see {@link IInCallService}. */
private final Map<InCallServiceInfo, IInCallService> mInCallServices = new ArrayMap<>();
- /**
- * The {@link ComponentName} of the bound In-Call UI Service.
- */
- private ComponentName mInCallUIComponentName;
-
private final CallIdMapper mCallIdMapper = new CallIdMapper(Call::getId);
/** The {@link ComponentName} of the default InCall UI. */
@@ -729,31 +727,35 @@
private final Context mContext;
private final TelecomSystem.SyncRoot mLock;
private final CallsManager mCallsManager;
- private final SystemStateProvider mSystemStateProvider;
+ private final SystemStateHelper mSystemStateHelper;
private final Timeouts.Adapter mTimeoutsAdapter;
private final DefaultDialerCache mDefaultDialerCache;
private final EmergencyCallHelper mEmergencyCallHelper;
private CarSwappingInCallServiceConnection mInCallServiceConnection;
private NonUIInCallServiceConnectionCollection mNonUIInCallServiceConnections;
+ // Future that's in a completed state unless we're in the middle of binding to a service.
+ // The future will complete with true if binding succeeds, false if it timed out.
+ private CompletableFuture<Boolean> mBindingFuture = CompletableFuture.completedFuture(true);
+
public InCallController(Context context, TelecomSystem.SyncRoot lock, CallsManager callsManager,
- SystemStateProvider systemStateProvider,
+ SystemStateHelper systemStateHelper,
DefaultDialerCache defaultDialerCache, Timeouts.Adapter timeoutsAdapter,
EmergencyCallHelper emergencyCallHelper) {
mContext = context;
mLock = lock;
mCallsManager = callsManager;
- mSystemStateProvider = systemStateProvider;
+ mSystemStateHelper = systemStateHelper;
mTimeoutsAdapter = timeoutsAdapter;
mDefaultDialerCache = defaultDialerCache;
mEmergencyCallHelper = emergencyCallHelper;
Resources resources = mContext.getResources();
mSystemInCallComponentName = new ComponentName(
- resources.getString(R.string.ui_default_package),
+ TelecomServiceImpl.getSystemDialerPackage(mContext),
resources.getString(R.string.incall_default_class));
- mSystemStateProvider.addListener(mSystemStateListener);
+ mSystemStateHelper.addListener(mSystemStateListener);
}
@Override
@@ -797,7 +799,8 @@
ParcelableCall parcelableCall = ParcelableCallUtils.toParcelableCall(call,
true /* includeVideoProvider */, mCallsManager.getPhoneAccountRegistrar(),
- info.isExternalCallsSupported(), includeRttCall);
+ info.isExternalCallsSupported(), includeRttCall,
+ info.getType() == IN_CALL_SERVICE_TYPE_SYSTEM_UI);
try {
inCallService.addCall(parcelableCall);
} catch (RemoteException ignored) {
@@ -861,7 +864,8 @@
ParcelableCall parcelableCall = ParcelableCallUtils.toParcelableCall(call,
true /* includeVideoProvider */, mCallsManager.getPhoneAccountRegistrar(),
- info.isExternalCallsSupported(), includeRttCall);
+ info.isExternalCallsSupported(), includeRttCall,
+ info.getType() == IN_CALL_SERVICE_TYPE_SYSTEM_UI);
try {
inCallService.addCall(parcelableCall);
} catch (RemoteException ignored) {
@@ -872,15 +876,7 @@
// The call was regular but it is now external. We must now remove it from any
// InCallServices which do not support external calls.
// Remove the call by sending a call update indicating the call was disconnected.
- ParcelableCall parcelableCall = ParcelableCallUtils.toParcelableCall(
- call,
- false /* includeVideoProvider */,
- mCallsManager.getPhoneAccountRegistrar(),
- false /* supportsExternalCalls */,
- android.telecom.Call.STATE_DISCONNECTED /* overrideState */,
- false /* includeRttCall */);
-
- Log.i(this, "Removing external call %s ==> %s", call, parcelableCall);
+ Log.i(this, "Removing external call %", call);
for (Map.Entry<InCallServiceInfo, IInCallService> entry : mInCallServices.entrySet()) {
InCallServiceInfo info = entry.getKey();
if (info.isExternalCallsSupported()) {
@@ -892,6 +888,16 @@
componentsUpdated.add(info.getComponentName());
IInCallService inCallService = entry.getValue();
+ ParcelableCall parcelableCall = ParcelableCallUtils.toParcelableCall(
+ call,
+ false /* includeVideoProvider */,
+ mCallsManager.getPhoneAccountRegistrar(),
+ false /* supportsExternalCalls */,
+ android.telecom.Call.STATE_DISCONNECTED /* overrideState */,
+ false /* includeRttCall */,
+ info.getType() == IN_CALL_SERVICE_TYPE_SYSTEM_UI
+ );
+
try {
inCallService.updateCall(parcelableCall);
} catch (RemoteException ignored) {
@@ -960,6 +966,24 @@
updateCall(call);
}
+ @Override
+ public void onConnectionTimeChanged(Call call) {
+ Log.d(this, "onConnectionTimeChanged %s", call);
+ updateCall(call);
+ }
+
+ @Override
+ public void onIsVoipAudioModeChanged(Call call) {
+ Log.d(this, "onIsVoipAudioModeChanged %s", call);
+ updateCall(call);
+ }
+
+ @Override
+ public void onConferenceStateChanged(Call call, boolean isConference) {
+ Log.d(this, "onConferenceStateChanged %s ,isConf=%b", call, isConference);
+ updateCall(call);
+ }
+
void bringToForeground(boolean showDialpad) {
if (!mInCallServices.isEmpty()) {
for (IInCallService inCallService : mInCallServices.values()) {
@@ -1112,6 +1136,10 @@
// Only connect to the non-ui InCallServices if we actually connected to the main UI
// one.
connectToNonUiInCallServices(call);
+ mBindingFuture = new CompletableFuture<Boolean>().completeOnTimeout(false,
+ mTimeoutsAdapter.getCallRemoveUnbindInCallServicesDelay(
+ mContext.getContentResolver()),
+ TimeUnit.MILLISECONDS);
} else {
Log.i(this, "bindToServices: current UI doesn't support call; not binding.");
}
@@ -1124,6 +1152,17 @@
for (InCallServiceInfo serviceInfo : nonUIInCallComponents) {
nonUIInCalls.add(new InCallServiceBindingConnection(serviceInfo));
}
+ List<String> callCompanionApps = mCallsManager
+ .getRoleManagerAdapter().getCallCompanionApps();
+ if (callCompanionApps != null && !callCompanionApps.isEmpty()) {
+ for(String pkg : callCompanionApps) {
+ InCallServiceInfo info = getInCallServiceComponent(pkg,
+ IN_CALL_SERVICE_TYPE_COMPANION);
+ if (info != null) {
+ nonUIInCalls.add(new InCallServiceBindingConnection(info));
+ }
+ }
+ }
mNonUIInCallServiceConnections = new NonUIInCallServiceConnectionCollection(nonUIInCalls);
mNonUIInCallServiceConnections.connect(call);
}
@@ -1137,9 +1176,10 @@
}
private InCallServiceInfo getCarModeComponent() {
- // Seems strange to cast a String to null, but the signatures of getInCallServiceComponent
- // differ in the types of the first parameter, and passing in null is inherently ambiguous.
- return getInCallServiceComponent((String) null, IN_CALL_SERVICE_TYPE_CAR_MODE_UI);
+ // The signatures of getInCallServiceComponent differ in the types of the first parameter,
+ // and passing in null is inherently ambiguous. (If no car mode component found)
+ String defaultCarMode = mCallsManager.getRoleManagerAdapter().getCarModeDialerApp();
+ return getInCallServiceComponent(defaultCarMode, IN_CALL_SERVICE_TYPE_CAR_MODE_UI);
}
private InCallServiceInfo getInCallServiceComponent(ComponentName componentName, int type) {
@@ -1194,7 +1234,6 @@
PackageManager.GET_META_DATA,
mCallsManager.getCurrentUserHandle().getIdentifier())) {
ServiceInfo serviceInfo = entry.serviceInfo;
-
if (serviceInfo != null) {
boolean isExternalCallsSupported = serviceInfo.metaData != null &&
serviceInfo.metaData.getBoolean(
@@ -1203,7 +1242,8 @@
serviceInfo.metaData.getBoolean(
TelecomManager.METADATA_INCLUDE_SELF_MANAGED_CALLS, false);
- int currentType = getInCallServiceType(entry.serviceInfo, packageManager);
+ int currentType = getInCallServiceType(entry.serviceInfo, packageManager,
+ packageName);
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
@@ -1221,13 +1261,14 @@
}
private boolean shouldUseCarModeUI() {
- return mSystemStateProvider.isCarMode();
+ return mSystemStateHelper.isCarMode();
}
/**
* Returns the type of InCallService described by the specified serviceInfo.
*/
- private int getInCallServiceType(ServiceInfo serviceInfo, PackageManager packageManager) {
+ private int getInCallServiceType(ServiceInfo serviceInfo, PackageManager packageManager,
+ String packageName) {
// Verify that the InCallService requires the BIND_INCALL_SERVICE permission which
// enforces that only Telecom can bind to it.
boolean hasServiceBindPermission = serviceInfo.permission != null &&
@@ -1244,6 +1285,14 @@
return IN_CALL_SERVICE_TYPE_SYSTEM_UI;
}
+ // Check to see if the service holds permissions or metadata for third party apps.
+ boolean isUIService = serviceInfo.metaData != null &&
+ serviceInfo.metaData.getBoolean(TelecomManager.METADATA_IN_CALL_SERVICE_UI);
+ boolean isThirdPartyCompanionApp = packageManager.checkPermission(
+ Manifest.permission.CALL_COMPANION_APP,
+ serviceInfo.packageName) == PackageManager.PERMISSION_GRANTED &&
+ !isUIService;
+
// Check to see if the service is a car-mode UI type by checking that it has the
// CONTROL_INCALL_EXPERIENCE (to verify it is a system app) and that it has the
// car-mode UI metadata.
@@ -1252,27 +1301,33 @@
serviceInfo.packageName) == PackageManager.PERMISSION_GRANTED;
boolean isCarModeUIService = serviceInfo.metaData != null &&
serviceInfo.metaData.getBoolean(
- TelecomManager.METADATA_IN_CALL_SERVICE_CAR_MODE_UI, false) &&
- hasControlInCallPermission;
+ TelecomManager.METADATA_IN_CALL_SERVICE_CAR_MODE_UI, false);
if (isCarModeUIService) {
- return IN_CALL_SERVICE_TYPE_CAR_MODE_UI;
+ // ThirdPartyInCallService shouldn't be used when role manager hasn't assigned any car
+ // mode role holders, i.e. packageName is null.
+ if (hasControlInCallPermission || (isThirdPartyCompanionApp && packageName != null)) {
+ return IN_CALL_SERVICE_TYPE_CAR_MODE_UI;
+ }
}
// Check to see that it is the default dialer package
boolean isDefaultDialerPackage = Objects.equals(serviceInfo.packageName,
mDefaultDialerCache.getDefaultDialerApplication(
mCallsManager.getCurrentUserHandle().getIdentifier()));
- boolean isUIService = serviceInfo.metaData != null &&
- serviceInfo.metaData.getBoolean(
- TelecomManager.METADATA_IN_CALL_SERVICE_UI, false);
if (isDefaultDialerPackage && isUIService) {
return IN_CALL_SERVICE_TYPE_DIALER_UI;
}
// Also allow any in-call service that has the control-experience permission (to ensure
// that it is a system app) and doesn't claim to show any UI.
- if (hasControlInCallPermission && !isUIService) {
- return IN_CALL_SERVICE_TYPE_NON_UI;
+ if (!isUIService && !isCarModeUIService) {
+ if (hasControlInCallPermission && !isThirdPartyCompanionApp) {
+ return IN_CALL_SERVICE_TYPE_NON_UI;
+ }
+ // Third party companion alls without CONTROL_INCALL_EXPERIENCE permission.
+ if (!hasControlInCallPermission && isThirdPartyCompanionApp) {
+ return IN_CALL_SERVICE_TYPE_COMPANION;
+ }
}
// Anything else that remains, we will not bind to.
@@ -1342,7 +1397,8 @@
true /* includeVideoProvider */,
mCallsManager.getPhoneAccountRegistrar(),
info.isExternalCallsSupported(),
- includeRttCall));
+ includeRttCall,
+ info.getType() == IN_CALL_SERVICE_TYPE_SYSTEM_UI));
} catch (RemoteException ignored) {
}
}
@@ -1351,6 +1407,7 @@
inCallService.onCanAddCallChanged(mCallsManager.canAddCall());
} catch (RemoteException ignored) {
}
+ mBindingFuture.complete(true);
Log.i(this, "%s calls sent to InCallService.", numCallsSent);
Trace.endSection();
return true;
@@ -1404,7 +1461,8 @@
videoProviderChanged /* includeVideoProvider */,
mCallsManager.getPhoneAccountRegistrar(),
info.isExternalCallsSupported(),
- rttInfoChanged && info.equals(mInCallServiceConnection.getInfo()));
+ rttInfoChanged && info.equals(mInCallServiceConnection.getInfo()),
+ info.getType() == IN_CALL_SERVICE_TYPE_SYSTEM_UI);
ComponentName componentName = info.getComponentName();
IInCallService inCallService = entry.getValue();
componentsUpdated.add(componentName);
@@ -1437,6 +1495,14 @@
}
/**
+ * @return A future that is pending whenever we are in the middle of binding to an
+ * incall service.
+ */
+ public CompletableFuture<Boolean> getBindingFuture() {
+ return mBindingFuture;
+ }
+
+ /**
* Dumps the state of the {@link InCallController}.
*
* @param pw The {@code IndentingPrintWriter} to write the state to.
@@ -1457,18 +1523,42 @@
pw.decreaseIndent();
}
+ /**
+ * @return The package name of the UI which is currently bound, or null if none.
+ */
+ private ComponentName getConnectedUi() {
+ InCallServiceInfo connectedUi = mInCallServices.keySet().stream().filter(
+ i -> i.getType() == IN_CALL_SERVICE_TYPE_DIALER_UI
+ || i.getType() == IN_CALL_SERVICE_TYPE_SYSTEM_UI)
+ .findAny()
+ .orElse(null);
+ if (connectedUi != null) {
+ return connectedUi.mComponentName;
+ }
+ return null;
+ }
+
public boolean doesConnectedDialerSupportRinging() {
String ringingPackage = null;
- if (mInCallUIComponentName != null) {
- ringingPackage = mInCallUIComponentName.getPackageName().trim();
+
+ ComponentName connectedPackage = getConnectedUi();
+ if (connectedPackage != null) {
+ ringingPackage = connectedPackage.getPackageName().trim();
+ Log.d(this, "doesConnectedDialerSupportRinging: alreadyConnectedPackage=%s",
+ ringingPackage);
}
if (TextUtils.isEmpty(ringingPackage)) {
// The current in-call UI returned nothing, so lets use the default dialer.
- ringingPackage = DefaultDialerManager.getDefaultDialerApplication(
- mContext, UserHandle.USER_CURRENT);
+ ringingPackage = mDefaultDialerCache.getDefaultDialerApplication(
+ mCallsManager.getCurrentUserHandle().getIdentifier());
+ if (ringingPackage != null) {
+ Log.d(this, "doesConnectedDialerSupportRinging: notCurentlyConnectedPackage=%s",
+ ringingPackage);
+ }
}
if (TextUtils.isEmpty(ringingPackage)) {
+ Log.w(this, "doesConnectedDialerSupportRinging: no default dialer found; oh no!");
return false;
}
@@ -1478,11 +1568,15 @@
intent, PackageManager.GET_META_DATA,
mCallsManager.getCurrentUserHandle().getIdentifier());
if (entries.isEmpty()) {
+ Log.w(this, "doesConnectedDialerSupportRinging: couldn't find dialer's package info"
+ + " <sad trombone>");
return false;
}
ResolveInfo info = entries.get(0);
if (info.serviceInfo == null || info.serviceInfo.metaData == null) {
+ Log.w(this, "doesConnectedDialerSupportRinging: couldn't find dialer's metadata"
+ + " <even sadder trombone>");
return false;
}
diff --git a/src/com/android/server/telecom/InCallControllerFactory.java b/src/com/android/server/telecom/InCallControllerFactory.java
index e384af7..c3a7831 100644
--- a/src/com/android/server/telecom/InCallControllerFactory.java
+++ b/src/com/android/server/telecom/InCallControllerFactory.java
@@ -23,6 +23,6 @@
*/
public interface InCallControllerFactory {
InCallController create(Context context, TelecomSystem.SyncRoot lock, CallsManager callsManager,
- SystemStateProvider systemStateProvider, DefaultDialerCache defaultDialerCache,
+ SystemStateHelper systemStateHelper, DefaultDialerCache defaultDialerCache,
Timeouts.Adapter timeoutsAdapter, EmergencyCallHelper emergencyCallHelper);
}
diff --git a/src/com/android/server/telecom/InCallTonePlayer.java b/src/com/android/server/telecom/InCallTonePlayer.java
index a258aee..5864ce0 100644
--- a/src/com/android/server/telecom/InCallTonePlayer.java
+++ b/src/com/android/server/telecom/InCallTonePlayer.java
@@ -16,8 +16,13 @@
package com.android.server.telecom;
+import android.annotation.Nullable;
+import android.content.Context;
+import android.media.AudioAttributes;
import android.media.AudioManager;
+import android.media.MediaPlayer;
import android.media.ToneGenerator;
+import android.net.Uri;
import android.os.Handler;
import android.os.Looper;
import android.telecom.Log;
@@ -26,10 +31,15 @@
import com.android.internal.annotations.VisibleForTesting;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
/**
- * Play a call-related tone (ringback, busy signal, etc.) through ToneGenerator. To use, create an
- * instance using InCallTonePlayer.Factory (passing in the TONE_* constant for the tone you want)
- * and start() it. Implemented on top of {@link Thread} so that the tone plays in its own thread.
+ * Play a call-related tone (ringback, busy signal, etc.) either through ToneGenerator, or using a
+ * media resource file.
+ * To use, create an instance using InCallTonePlayer.Factory (passing in the TONE_* constant for
+ * the tone you want) and start() it. Implemented on top of {@link Thread} so that the tone plays in
+ * its own thread.
*/
public class InCallTonePlayer extends Thread {
@@ -41,12 +51,17 @@
private final CallAudioRoutePeripheralAdapter mCallAudioRoutePeripheralAdapter;
private final TelecomSystem.SyncRoot mLock;
private final ToneGeneratorFactory mToneGeneratorFactory;
+ private final MediaPlayerFactory mMediaPlayerFactory;
+ private final AudioManagerAdapter mAudioManagerAdapter;
- Factory(CallAudioRoutePeripheralAdapter callAudioRoutePeripheralAdapter,
- TelecomSystem.SyncRoot lock, ToneGeneratorFactory toneGeneratorFactory) {
+ public Factory(CallAudioRoutePeripheralAdapter callAudioRoutePeripheralAdapter,
+ TelecomSystem.SyncRoot lock, ToneGeneratorFactory toneGeneratorFactory,
+ MediaPlayerFactory mediaPlayerFactory, AudioManagerAdapter audioManagerAdapter) {
mCallAudioRoutePeripheralAdapter = callAudioRoutePeripheralAdapter;
mLock = lock;
mToneGeneratorFactory = toneGeneratorFactory;
+ mMediaPlayerFactory = mediaPlayerFactory;
+ mAudioManagerAdapter = audioManagerAdapter;
}
public void setCallAudioManager(CallAudioManager callAudioManager) {
@@ -55,7 +70,8 @@
public InCallTonePlayer createPlayer(int tone) {
return new InCallTonePlayer(tone, mCallAudioManager,
- mCallAudioRoutePeripheralAdapter, mLock, mToneGeneratorFactory);
+ mCallAudioRoutePeripheralAdapter, mLock, mToneGeneratorFactory,
+ mMediaPlayerFactory, mAudioManagerAdapter);
}
}
@@ -63,6 +79,73 @@
ToneGenerator get (int streamType, int volume);
}
+ public interface MediaPlayerAdapter {
+ void setLooping(boolean isLooping);
+ void setOnCompletionListener(MediaPlayer.OnCompletionListener listener);
+ void start();
+ void release();
+ int getDuration();
+ }
+
+ public static class MediaPlayerAdapterImpl implements MediaPlayerAdapter {
+ private MediaPlayer mMediaPlayer;
+
+ /**
+ * Create new media player adapter backed by a real mediaplayer.
+ * Note: Its possible for the mediaplayer to be null if
+ * {@link MediaPlayer#create(Context, Uri)} fails for some reason; in this case we can
+ * continue but not bother playing the audio.
+ * @param mediaPlayer The media player.
+ */
+ public MediaPlayerAdapterImpl(@Nullable MediaPlayer mediaPlayer) {
+ mMediaPlayer = mediaPlayer;
+ }
+
+ @Override
+ public void setLooping(boolean isLooping) {
+ if (mMediaPlayer != null) {
+ mMediaPlayer.setLooping(isLooping);
+ }
+ }
+
+ @Override
+ public void setOnCompletionListener(MediaPlayer.OnCompletionListener listener) {
+ if (mMediaPlayer != null) {
+ mMediaPlayer.setOnCompletionListener(listener);
+ }
+ }
+
+ @Override
+ public void start() {
+ if (mMediaPlayer != null) {
+ mMediaPlayer.start();
+ }
+ }
+
+ @Override
+ public void release() {
+ if (mMediaPlayer != null) {
+ mMediaPlayer.release();
+ }
+ }
+
+ @Override
+ public int getDuration() {
+ if (mMediaPlayer != null) {
+ return mMediaPlayer.getDuration();
+ }
+ return 0;
+ }
+ }
+
+ public interface MediaPlayerFactory {
+ MediaPlayerAdapter get (int resourceId, AudioAttributes attributes);
+ }
+
+ public interface AudioManagerAdapter {
+ boolean isVolumeOverZero();
+ }
+
// The possible tones that we can play.
public static final int TONE_INVALID = 0;
public static final int TONE_BUSY = 1;
@@ -80,9 +163,12 @@
public static final int TONE_VOICE_PRIVACY = 13;
public static final int TONE_VIDEO_UPGRADE = 14;
+ private static final int TONE_RESOURCE_ID_UNDEFINED = -1;
+
private static final int RELATIVE_VOLUME_EMERGENCY = 100;
private static final int RELATIVE_VOLUME_HIPRI = 80;
private static final int RELATIVE_VOLUME_LOPRI = 50;
+ private static final int RELATIVE_VOLUME_UNDEFINED = -1;
// Buffer time (in msec) to add on to the tone timeout value. Needed mainly when the timeout
// value for a tone is exact duration of the tone itself.
@@ -111,6 +197,9 @@
/** Current state of the tone player. */
private int mState;
+ /** For tones which are not generated using ToneGenerator. */
+ private MediaPlayerAdapter mToneMediaPlayer = null;
+
/** Telecom lock object. */
private final TelecomSystem.SyncRoot mLock;
@@ -118,6 +207,8 @@
private final Object mSessionLock = new Object();
private final ToneGeneratorFactory mToneGenerator;
+ private final MediaPlayerFactory mMediaPlayerFactory;
+ private final AudioManagerAdapter mAudioManagerAdapter;
/**
* Initializes the tone player. Private; use the {@link Factory} to create tone players.
@@ -129,19 +220,22 @@
CallAudioManager callAudioManager,
CallAudioRoutePeripheralAdapter callAudioRoutePeripheralAdapter,
TelecomSystem.SyncRoot lock,
- ToneGeneratorFactory toneGeneratorFactory) {
+ ToneGeneratorFactory toneGeneratorFactory,
+ MediaPlayerFactory mediaPlayerFactor,
+ AudioManagerAdapter audioManagerAdapter) {
mState = STATE_OFF;
mToneId = toneId;
mCallAudioManager = callAudioManager;
mCallAudioRoutePeripheralAdapter = callAudioRoutePeripheralAdapter;
mLock = lock;
mToneGenerator = toneGeneratorFactory;
+ mMediaPlayerFactory = mediaPlayerFactor;
+ mAudioManagerAdapter = audioManagerAdapter;
}
/** {@inheritDoc} */
@Override
public void run() {
- ToneGenerator toneGenerator = null;
try {
synchronized (mSessionLock) {
if (mSession != null) {
@@ -154,6 +248,8 @@
final int toneType; // Passed to ToneGenerator.startTone.
final int toneVolume; // Passed to the ToneGenerator constructor.
final int toneLengthMillis;
+ final int mediaResourceId; // The resourceId of the tone to play. Used for media-based
+ // tones.
switch (mToneId) {
case TONE_BUSY:
@@ -161,11 +257,16 @@
toneType = ToneGenerator.TONE_SUP_BUSY;
toneVolume = RELATIVE_VOLUME_HIPRI;
toneLengthMillis = 4000;
+ mediaResourceId = TONE_RESOURCE_ID_UNDEFINED;
break;
case TONE_CALL_ENDED:
- toneType = ToneGenerator.TONE_PROP_PROMPT;
- toneVolume = RELATIVE_VOLUME_HIPRI;
- toneLengthMillis = 200;
+ // Don't use tone generator
+ toneType = ToneGenerator.TONE_UNKNOWN;
+ toneVolume = RELATIVE_VOLUME_UNDEFINED;
+ toneLengthMillis = 0;
+
+ // Use a tone resource file for a more rich, full-bodied tone experience.
+ mediaResourceId = R.raw.endcall;
break;
case TONE_OTA_CALL_ENDED:
// TODO: fill in
@@ -174,46 +275,55 @@
toneType = ToneGenerator.TONE_SUP_CALL_WAITING;
toneVolume = RELATIVE_VOLUME_HIPRI;
toneLengthMillis = Integer.MAX_VALUE - TIMEOUT_BUFFER_MILLIS;
+ mediaResourceId = TONE_RESOURCE_ID_UNDEFINED;
break;
case TONE_CDMA_DROP:
toneType = ToneGenerator.TONE_CDMA_CALLDROP_LITE;
toneVolume = RELATIVE_VOLUME_LOPRI;
toneLengthMillis = 375;
+ mediaResourceId = TONE_RESOURCE_ID_UNDEFINED;
break;
case TONE_CONGESTION:
toneType = ToneGenerator.TONE_SUP_CONGESTION;
toneVolume = RELATIVE_VOLUME_HIPRI;
toneLengthMillis = 4000;
+ mediaResourceId = TONE_RESOURCE_ID_UNDEFINED;
break;
case TONE_INTERCEPT:
toneType = ToneGenerator.TONE_CDMA_ABBR_INTERCEPT;
toneVolume = RELATIVE_VOLUME_LOPRI;
toneLengthMillis = 500;
+ mediaResourceId = TONE_RESOURCE_ID_UNDEFINED;
break;
case TONE_OUT_OF_SERVICE:
toneType = ToneGenerator.TONE_CDMA_CALLDROP_LITE;
toneVolume = RELATIVE_VOLUME_LOPRI;
toneLengthMillis = 375;
+ mediaResourceId = TONE_RESOURCE_ID_UNDEFINED;
break;
case TONE_REDIAL:
toneType = ToneGenerator.TONE_CDMA_ALERT_AUTOREDIAL_LITE;
toneVolume = RELATIVE_VOLUME_LOPRI;
toneLengthMillis = 5000;
+ mediaResourceId = TONE_RESOURCE_ID_UNDEFINED;
break;
case TONE_REORDER:
toneType = ToneGenerator.TONE_CDMA_REORDER;
toneVolume = RELATIVE_VOLUME_HIPRI;
toneLengthMillis = 4000;
+ mediaResourceId = TONE_RESOURCE_ID_UNDEFINED;
break;
case TONE_RING_BACK:
toneType = ToneGenerator.TONE_SUP_RINGTONE;
toneVolume = RELATIVE_VOLUME_HIPRI;
toneLengthMillis = Integer.MAX_VALUE - TIMEOUT_BUFFER_MILLIS;
+ mediaResourceId = TONE_RESOURCE_ID_UNDEFINED;
break;
case TONE_UNOBTAINABLE_NUMBER:
toneType = ToneGenerator.TONE_SUP_ERROR;
toneVolume = RELATIVE_VOLUME_HIPRI;
toneLengthMillis = 4000;
+ mediaResourceId = TONE_RESOURCE_ID_UNDEFINED;
break;
case TONE_VOICE_PRIVACY:
// TODO: fill in.
@@ -223,6 +333,7 @@
toneType = ToneGenerator.TONE_SUP_CALL_WAITING;
toneVolume = RELATIVE_VOLUME_HIPRI;
toneLengthMillis = 4000;
+ mediaResourceId = TONE_RESOURCE_ID_UNDEFINED;
break;
default:
throw new IllegalStateException("Bad toneId: " + mToneId);
@@ -233,16 +344,38 @@
stream = AudioManager.STREAM_BLUETOOTH_SCO;
}
+ if (toneType != ToneGenerator.TONE_UNKNOWN) {
+ playToneGeneratorTone(stream, toneVolume, toneType, toneLengthMillis);
+ } else if (mediaResourceId != TONE_RESOURCE_ID_UNDEFINED) {
+ playMediaTone(stream, mediaResourceId);
+ }
+ } finally {
+ cleanUpTonePlayer();
+ Log.endSession();
+ }
+ }
+
+ /**
+ * Play a tone generated by the {@link ToneGenerator}.
+ * @param stream The stream on which the tone will be played.
+ * @param toneVolume The volume of the tone.
+ * @param toneType The type of tone to play.
+ * @param toneLengthMillis How long to play the tone.
+ */
+ private void playToneGeneratorTone(int stream, int toneVolume, int toneType,
+ int toneLengthMillis) {
+ ToneGenerator toneGenerator = null;
+ try {
// If the ToneGenerator creation fails, just continue without it. It is a local audio
// signal, and is not as important.
try {
- Log.v(this, "Creating generator");
toneGenerator = mToneGenerator.get(stream, toneVolume);
} catch (RuntimeException e) {
Log.w(this, "Failed to create ToneGenerator.", e);
return;
}
+ Log.i(this, "playToneGeneratorTone: toneType=%d", toneType);
// TODO: Certain CDMA tones need to check the ringer-volume state before
// playing. See CallNotifier.InCallTonePlayer.
@@ -267,13 +400,61 @@
if (toneGenerator != null) {
toneGenerator.release();
}
- cleanUpTonePlayer();
- Log.endSession();
}
}
-
+
+ /**
+ * Plays an audio-file based media tone.
+ * @param stream The audio stream on which to play the tone.
+ * @param toneResourceId The resource ID of the tone to play.
+ */
+ private void playMediaTone(int stream, int toneResourceId) {
+ synchronized (this) {
+ if (mState != STATE_STOPPED) {
+ mState = STATE_ON;
+ }
+ Log.i(this, "playMediaTone: toneResourceId=%d", toneResourceId);
+ AudioAttributes attributes = new AudioAttributes.Builder()
+ .setUsage(AudioAttributes.USAGE_VOICE_COMMUNICATION)
+ .setContentType(AudioAttributes.CONTENT_TYPE_SPEECH)
+ .setLegacyStreamType(stream)
+ .build();
+ mToneMediaPlayer = mMediaPlayerFactory.get(toneResourceId, attributes);
+ mToneMediaPlayer.setLooping(false);
+ int durationMillis = mToneMediaPlayer.getDuration();
+ final CountDownLatch toneLatch = new CountDownLatch(1);
+ mToneMediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
+ @Override
+ public void onCompletion(MediaPlayer mp) {
+ Log.i(this, "playMediaTone: toneResourceId=%d completed.", toneResourceId);
+ synchronized (this) {
+ mState = STATE_OFF;
+ }
+ mToneMediaPlayer.release();
+ mToneMediaPlayer = null;
+ toneLatch.countDown();
+ }
+ });
+ mToneMediaPlayer.start();
+ try {
+ // Wait for the tone to stop playing; timeout at 2x the length of the file just to
+ // be on the safe side.
+ toneLatch.await(durationMillis * 2, TimeUnit.MILLISECONDS);
+ } catch (InterruptedException ie) {
+ Log.e(this, ie, "playMediaTone: tone playback interrupted.");
+ }
+ }
+
+ }
+
@VisibleForTesting
- public void startTone() {
+ public boolean startTone() {
+ // Skip playing the end call tone if the volume is silenced.
+ if (mToneId == TONE_CALL_ENDED && !mAudioManagerAdapter.isVolumeOverZero()) {
+ Log.i(this, "startTone: skip end-call tone as device is silenced.");
+ return false;
+ }
+
sTonesPlaying++;
if (sTonesPlaying == 1) {
mCallAudioManager.setIsTonePlaying(true);
@@ -287,6 +468,7 @@
}
super.start();
+ return true;
}
@Override
@@ -308,6 +490,11 @@
}
}
+ @VisibleForTesting
+ public void cleanup() {
+ sTonesPlaying = 0;
+ }
+
private void cleanUpTonePlayer() {
// Release focus on the main thread.
mMainThreadHandler.post(new Runnable("ICTP.cUTP", mLock) {
diff --git a/src/com/android/server/telecom/LogUtils.java b/src/com/android/server/telecom/LogUtils.java
index 02a3b77..760d24e 100644
--- a/src/com/android/server/telecom/LogUtils.java
+++ b/src/com/android/server/telecom/LogUtils.java
@@ -65,6 +65,7 @@
public static final String SET_ACTIVE = "SET_ACTIVE";
public static final String SET_HOLD = "SET_HOLD";
public static final String SET_RINGING = "SET_RINGING";
+ public static final String SET_ANSWERED = "SET_ANSWERED";
public static final String SET_DISCONNECTED = "SET_DISCONNECTED";
public static final String SET_DISCONNECTING = "SET_DISCONNECTING";
public static final String SET_SELECT_PHONE_ACCOUNT = "SET_SELECT_PHONE_ACCOUNT";
@@ -94,6 +95,7 @@
public static final String ADD_CHILD = "ADD_CHILD";
public static final String REMOVE_CHILD = "REMOVE_CHILD";
public static final String SET_PARENT = "SET_PARENT";
+ public static final String CONF_STATE_CHANGED = "CONF_STATE_CHANGED";
public static final String MUTE = "MUTE";
public static final String UNMUTE = "UNMUTE";
public static final String AUDIO_ROUTE = "AUDIO_ROUTE";
@@ -107,7 +109,10 @@
public static final String BIND_SCREENING = "BIND_SCREENING";
public static final String SCREENING_BOUND = "SCREENING_BOUND";
public static final String SCREENING_SENT = "SCREENING_SENT";
+ public static final String CONTROLLER_SCREENING_COMPLETED =
+ "CONTROLLER_SCREENING_COMPLETED";
public static final String SCREENING_COMPLETED = "SCREENING_COMPLETED";
+ public static final String CALL_IDENTIFICATION_SET = "CALL_IDENTIFICATION_SET";
public static final String BLOCK_CHECK_INITIATED = "BLOCK_CHECK_INITIATED";
public static final String BLOCK_CHECK_FINISHED = "BLOCK_CHECK_FINISHED";
public static final String DIRECT_TO_VM_INITIATED = "DIRECT_TO_VM_INITIATED";
@@ -136,6 +141,17 @@
public static final String HANDOVER_FAILED = "HANDOVER_FAILED";
public static final String START_RINBACK = "START_RINGBACK";
public static final String STOP_RINGBACK = "STOP_RINGBACK";
+ public static final String REDIRECTION_BOUND_USER = "REDIRECTION_BOUND_USER";
+ public static final String REDIRECTION_BOUND_CARRIER = "REDIRECTION_BOUND_CARRIER";
+ public static final String REDIRECTION_SENT_USER = "REDIRECTION_SENT_USER";
+ public static final String REDIRECTION_SENT_CARRIER = "REDIRECTION_SENT_CARRIER";
+ public static final String REDIRECTION_COMPLETED_USER = "REDIRECTION_COMPLETED_USER";
+ public static final String REDIRECTION_COMPLETED_CARRIER = "REDIRECTION_COMPLETED_CARRIER";
+ public static final String REDIRECTION_TIMED_OUT_USER = "REDIRECTION_TIMED_OUT_USER";
+ public static final String REDIRECTION_TIMED_OUT_CARRIER = "REDIRECTION_TIMED_OUT_CARRIER";
+ public static final String REDIRECTION_USER_CONFIRMATION = "REDIRECTION_USER_CONFIRMATION";
+ public static final String REDIRECTION_USER_CONFIRMED = "REDIRECTION_USER_CONFIRMED";
+ public static final String REDIRECTION_USER_CANCELLED = "REDIRECTION_USER_CANCELLED";
public static class Timings {
public static final String ACCEPT_TIMING = "accept";
diff --git a/src/com/android/server/telecom/LoggedHandlerExecutor.java b/src/com/android/server/telecom/LoggedHandlerExecutor.java
new file mode 100644
index 0000000..cc4dd28
--- /dev/null
+++ b/src/com/android/server/telecom/LoggedHandlerExecutor.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2019 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;
+
+import android.os.Handler;
+import android.telecom.Logging.Runnable;
+
+import java.util.concurrent.Executor;
+
+/** An executor that starts a log session before executing a runnable */
+public class LoggedHandlerExecutor implements Executor {
+ private Handler mHandler;
+ private String mSessionName;
+ private TelecomSystem.SyncRoot mLock;
+
+ public LoggedHandlerExecutor(Handler handler, String sessionName,
+ TelecomSystem.SyncRoot lock) {
+ mHandler = handler;
+ mSessionName = sessionName;
+ mLock = lock;
+ }
+
+ @Override
+ public void execute(java.lang.Runnable command) {
+ mHandler.post(new Runnable(mSessionName, mLock) {
+ @Override
+ public void loggedRun() {
+ command.run();
+ }
+ }.prepare());
+ }
+}
diff --git a/src/com/android/server/telecom/NewOutgoingCallIntentBroadcaster.java b/src/com/android/server/telecom/NewOutgoingCallIntentBroadcaster.java
index 3797c68..7a641af 100644
--- a/src/com/android/server/telecom/NewOutgoingCallIntentBroadcaster.java
+++ b/src/com/android/server/telecom/NewOutgoingCallIntentBroadcaster.java
@@ -19,6 +19,7 @@
import android.app.AppOpsManager;
import android.app.Activity;
+import android.app.BroadcastOptions;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
@@ -37,6 +38,7 @@
import android.text.TextUtils;
import com.android.internal.annotations.VisibleForTesting;
+import com.android.server.telecom.callredirection.CallRedirectionProcessor;
// TODO: Needed for move to system service: import com.android.internal.R;
@@ -81,6 +83,19 @@
*/
private final boolean mIsDefaultOrSystemPhoneApp;
+ public static class CallDisposition {
+ // True for certain types of numbers that are not intended to be intercepted or modified
+ // by third parties (e.g. emergency numbers).
+ public boolean callImmediately = false;
+ // True for all managed calls, false for self-managed calls.
+ public boolean sendBroadcast = true;
+ // True for requesting call redirection, false for not requesting it.
+ public boolean requestRedirection = true;
+ public int disconnectCause = DisconnectCause.NOT_DISCONNECTED;
+ String number;
+ Uri callingAddress;
+ }
+
@VisibleForTesting
public NewOutgoingCallIntentBroadcaster(Context context, CallsManager callsManager, Call call,
Intent intent, PhoneNumberUtilsAdapter phoneNumberUtilsAdapter,
@@ -192,8 +207,8 @@
* {@link DisconnectCause} if the call did not, describing why it failed.
*/
@VisibleForTesting
- public int processIntent() {
- Log.v(this, "Processing call intent in OutgoingCallIntentBroadcaster.");
+ public CallDisposition evaluateCall() {
+ CallDisposition result = new CallDisposition();
Intent intent = mIntent;
String action = intent.getAction();
@@ -201,7 +216,8 @@
if (handle == null) {
Log.w(this, "Empty handle obtained from the call intent.");
- return DisconnectCause.INVALID_NUMBER;
+ result.disconnectCause = DisconnectCause.INVALID_NUMBER;
+ return result;
}
boolean isVoicemailNumber = PhoneAccount.SCHEME_VOICEMAIL.equals(handle.getScheme());
@@ -209,16 +225,18 @@
if (Intent.ACTION_CALL.equals(action)
|| Intent.ACTION_CALL_PRIVILEGED.equals(action)) {
// Voicemail calls will be handled directly by the telephony connection manager
-
- boolean speakerphoneOn = mIntent.getBooleanExtra(
- TelecomManager.EXTRA_START_CALL_WITH_SPEAKERPHONE, false);
- placeOutgoingCallImmediately(mCall, handle, null, speakerphoneOn,
+ Log.i(this, "Voicemail number dialed. Skipping redirection and broadcast", intent);
+ mIntent.putExtra(TelecomManager.EXTRA_START_CALL_WITH_VIDEO_STATE,
VideoProfile.STATE_AUDIO_ONLY);
-
- return DisconnectCause.NOT_DISCONNECTED;
+ result.callImmediately = true;
+ result.requestRedirection = false;
+ result.sendBroadcast = false;
+ result.callingAddress = handle;
+ return result;
} else {
Log.i(this, "Unhandled intent %s. Ignoring and not placing call.", intent);
- return DisconnectCause.OUTGOING_CANCELED;
+ result.disconnectCause = DisconnectCause.OUTGOING_CANCELED;
+ return result;
}
}
@@ -234,76 +252,90 @@
}
}
- String number = "";
- // True for certain types of numbers that are not intended to be intercepted or modified
- // by third parties (e.g. emergency numbers).
- boolean callImmediately = false;
- // True for all managed calls, false for self-managed calls.
- boolean sendNewOutgoingCallBroadcast = true;
- Uri callingAddress = handle;
+ result.number = "";
+ result.callingAddress = handle;
- if (!isSelfManaged) {
- // Placing a managed call
- number = mPhoneNumberUtilsAdapter.getNumberFromIntent(intent, mContext);
- if (TextUtils.isEmpty(number)) {
- Log.w(this, "Empty number obtained from the call intent.");
- return DisconnectCause.NO_PHONE_NUMBER_SUPPLIED;
- }
-
- // TODO: Cleanup this dialing code; it makes the assumption that we're dialing with a
- // SIP or TEL URI.
- boolean isUriNumber = mPhoneNumberUtilsAdapter.isUriNumber(number);
- if (!isUriNumber) {
- number = mPhoneNumberUtilsAdapter.convertKeypadLettersToDigits(number);
- number = mPhoneNumberUtilsAdapter.stripSeparators(number);
- }
-
- final boolean isPotentialEmergencyNumber = isPotentialEmergencyNumber(number);
- Log.v(this, "isPotentialEmergencyNumber = %s", isPotentialEmergencyNumber);
-
- rewriteCallIntentAction(intent, isPotentialEmergencyNumber);
- action = intent.getAction();
-
- if (Intent.ACTION_CALL.equals(action)) {
- if (isPotentialEmergencyNumber) {
- if (!mIsDefaultOrSystemPhoneApp) {
- Log.w(this, "Cannot call potential emergency number %s with CALL Intent %s "
- + "unless caller is system or default dialer.", number, intent);
- launchSystemDialer(intent.getData());
- return DisconnectCause.OUTGOING_CANCELED;
- } else {
- callImmediately = true;
- }
- }
- } else if (Intent.ACTION_CALL_EMERGENCY.equals(action)) {
- if (!isPotentialEmergencyNumber) {
- Log.w(this, "Cannot call non-potential-emergency number %s with EMERGENCY_CALL "
- + "Intent %s.", number, intent);
- return DisconnectCause.OUTGOING_CANCELED;
- }
- callImmediately = true;
- } else {
- Log.w(this, "Unhandled Intent %s. Ignoring and not placing call.", intent);
- return DisconnectCause.INVALID_NUMBER;
- }
-
- // TODO: Support dialing using URIs instead of just assuming SIP or TEL.
- String scheme = isUriNumber ? PhoneAccount.SCHEME_SIP : PhoneAccount.SCHEME_TEL;
- callingAddress = Uri.fromParts(scheme, number, null);
- } else {
+ if (isSelfManaged) {
// Self-managed call.
- callImmediately = true;
- sendNewOutgoingCallBroadcast = false;
+ result.callImmediately = true;
+ result.sendBroadcast = false;
+ result.requestRedirection = false;
Log.i(this, "Skipping NewOutgoingCallBroadcast for self-managed call.");
+ return result;
}
- if (callImmediately) {
+ // Placing a managed call
+ String number = getNumberFromCallIntent(intent);
+ result.number = number;
+ if (number == null) {
+ result.disconnectCause = DisconnectCause.NO_PHONE_NUMBER_SUPPLIED;
+ return result;
+ }
+
+ final boolean isPotentialEmergencyNumber = isPotentialEmergencyNumber(number);
+ Log.v(this, "isPotentialEmergencyNumber = %s", isPotentialEmergencyNumber);
+
+ action = calculateCallIntentAction(intent, isPotentialEmergencyNumber);
+ intent.setAction(action);
+
+ if (Intent.ACTION_CALL.equals(action)) {
+ if (isPotentialEmergencyNumber) {
+ if (!mIsDefaultOrSystemPhoneApp) {
+ Log.w(this, "Cannot call potential emergency number %s with CALL Intent %s "
+ + "unless caller is system or default dialer.", number, intent);
+ launchSystemDialer(intent.getData());
+ result.disconnectCause = DisconnectCause.OUTGOING_CANCELED;
+ return result;
+ } else {
+ result.callImmediately = true;
+ result.requestRedirection = false;
+ }
+ }
+ } else if (Intent.ACTION_CALL_EMERGENCY.equals(action)) {
+ if (!isPotentialEmergencyNumber) {
+ Log.w(this, "Cannot call non-potential-emergency number %s with EMERGENCY_CALL "
+ + "Intent %s.", number, intent);
+ result.disconnectCause = DisconnectCause.OUTGOING_CANCELED;
+ return result;
+ }
+ result.callImmediately = true;
+ result.requestRedirection = false;
+ } else {
+ Log.w(this, "Unhandled Intent %s. Ignoring and not placing call.", intent);
+ result.disconnectCause = DisconnectCause.INVALID_NUMBER;
+ return result;
+ }
+
+ String scheme = mPhoneNumberUtilsAdapter.isUriNumber(number)
+ ? PhoneAccount.SCHEME_SIP : PhoneAccount.SCHEME_TEL;
+ result.callingAddress = Uri.fromParts(scheme, number, null);
+ return result;
+ }
+
+ private String getNumberFromCallIntent(Intent intent) {
+ String number;
+ number = mPhoneNumberUtilsAdapter.getNumberFromIntent(intent, mContext);
+ if (TextUtils.isEmpty(number)) {
+ Log.w(this, "Empty number obtained from the call intent.");
+ return null;
+ }
+
+ boolean isUriNumber = mPhoneNumberUtilsAdapter.isUriNumber(number);
+ if (!isUriNumber) {
+ number = mPhoneNumberUtilsAdapter.convertKeypadLettersToDigits(number);
+ number = mPhoneNumberUtilsAdapter.stripSeparators(number);
+ }
+ return number;
+ }
+
+ public void processCall(CallDisposition disposition) {
+ if (disposition.callImmediately) {
boolean speakerphoneOn = mIntent.getBooleanExtra(
TelecomManager.EXTRA_START_CALL_WITH_SPEAKERPHONE, false);
int videoState = mIntent.getIntExtra(
TelecomManager.EXTRA_START_CALL_WITH_VIDEO_STATE,
VideoProfile.STATE_AUDIO_ONLY);
- placeOutgoingCallImmediately(mCall, callingAddress, null,
+ placeOutgoingCallImmediately(mCall, disposition.callingAddress, null,
speakerphoneOn, videoState);
// Don't return but instead continue and send the ACTION_NEW_OUTGOING_CALL broadcast
@@ -312,12 +344,34 @@
// initiate the call again because of the presence of the EXTRA_ALREADY_CALLED extra.
}
- if (sendNewOutgoingCallBroadcast) {
+ boolean callRedirectionWithService = false;
+ if (disposition.requestRedirection) {
+ CallRedirectionProcessor callRedirectionProcessor = new CallRedirectionProcessor(
+ mContext, mCallsManager, mCall, disposition.callingAddress,
+ mCallsManager.getPhoneAccountRegistrar(),
+ getGateWayInfoFromIntent(mIntent, mIntent.getData()),
+ mIntent.getBooleanExtra(TelecomManager.EXTRA_START_CALL_WITH_SPEAKERPHONE,
+ false),
+ mIntent.getIntExtra(TelecomManager.EXTRA_START_CALL_WITH_VIDEO_STATE,
+ VideoProfile.STATE_AUDIO_ONLY));
+ /**
+ * If there is an available {@link android.telecom.CallRedirectionService}, use the
+ * {@link CallRedirectionProcessor} to perform call redirection instead of using
+ * broadcasting.
+ */
+ callRedirectionWithService = callRedirectionProcessor
+ .canMakeCallRedirectionWithService();
+ if (callRedirectionWithService) {
+ callRedirectionProcessor.performCallRedirection();
+ }
+ }
+
+ if (disposition.sendBroadcast) {
UserHandle targetUser = mCall.getInitiatingUser();
Log.i(this, "Sending NewOutgoingCallBroadcast for %s to %s", mCall, targetUser);
- broadcastIntent(intent, number, !callImmediately, targetUser);
+ broadcastIntent(mIntent, disposition.number,
+ !disposition.callImmediately && !callRedirectionWithService, targetUser);
}
- return DisconnectCause.NOT_DISCONNECTED;
}
/**
@@ -348,11 +402,14 @@
checkAndCopyProviderExtras(originalCallIntent, broadcastIntent);
+ final BroadcastOptions options = BroadcastOptions.makeBasic();
+ options.setBackgroundActivityStartsAllowed(true);
mContext.sendOrderedBroadcastAsUser(
broadcastIntent,
targetUser,
android.Manifest.permission.PROCESS_OUTGOING_CALLS,
AppOpsManager.OP_PROCESS_OUTGOING_CALLS,
+ options.toBundle(),
receiverRequired ? new NewOutgoingCallBroadcastIntentReceiver() : null,
null, // scheduler
Activity.RESULT_OK, // initialCode
@@ -437,7 +494,7 @@
Intent systemDialerIntent = new Intent();
final Resources resources = mContext.getResources();
systemDialerIntent.setClassName(
- resources.getString(R.string.ui_default_package),
+ TelecomServiceImpl.getSystemDialerPackage(mContext),
resources.getString(R.string.dialer_default_class));
systemDialerIntent.setAction(Intent.ACTION_DIAL);
systemDialerIntent.setData(handle);
@@ -467,14 +524,15 @@
}
/**
- * Given a call intent and whether or not the number to dial is an emergency number, rewrite
- * the call intent action to an appropriate one.
+ * Given a call intent and whether or not the number to dial is an emergency number, determine
+ * the appropriate call intent action.
*
- * @param intent Intent to rewrite the action for
+ * @param intent Intent to evaluate
* @param isPotentialEmergencyNumber Whether or not the number is potentially an emergency
* number.
+ * @return The appropriate action.
*/
- private void rewriteCallIntentAction(Intent intent, boolean isPotentialEmergencyNumber) {
+ private String calculateCallIntentAction(Intent intent, boolean isPotentialEmergencyNumber) {
String action = intent.getAction();
/* Change CALL_PRIVILEGED into CALL or CALL_EMERGENCY as needed. */
@@ -487,8 +545,8 @@
action = Intent.ACTION_CALL;
}
Log.v(this, " - updating action from CALL_PRIVILEGED to %s", action);
- intent.setAction(action);
}
+ return action;
}
private long getDisconnectTimeoutFromApp(Bundle resultExtras, long defaultTimeout) {
diff --git a/src/com/android/server/telecom/ParcelableCallUtils.java b/src/com/android/server/telecom/ParcelableCallUtils.java
index 77598c8..6a66ccf 100644
--- a/src/com/android/server/telecom/ParcelableCallUtils.java
+++ b/src/com/android/server/telecom/ParcelableCallUtils.java
@@ -16,13 +16,22 @@
package com.android.server.telecom;
+import static android.telecom.Call.Details.DIRECTION_INCOMING;
+import static android.telecom.Call.Details.DIRECTION_OUTGOING;
+import static android.telecom.Call.Details.DIRECTION_UNKNOWN;
+
import android.net.Uri;
+import android.os.Bundle;
import android.telecom.Connection;
+import android.telecom.DisconnectCause;
import android.telecom.ParcelableCall;
import android.telecom.ParcelableRttCall;
import android.telecom.TelecomManager;
+import android.text.TextUtils;
import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
import java.util.List;
/**
@@ -31,11 +40,40 @@
public class ParcelableCallUtils {
private static final int CALL_STATE_OVERRIDE_NONE = -1;
+ /**
+ * A list of extra keys which should be removed from a {@link ParcelableCall} when it is being
+ * generated for the purpose of sending to a dialer other than the system dialer.
+ * By convention we only pass keys namespaced with android.*, however there are some keys which
+ * should not be passed to non-system dialer apps either.
+ */
+ private static List<String> EXTRA_KEYS_TO_SANITIZE;
+ static {
+ EXTRA_KEYS_TO_SANITIZE = new ArrayList<>();
+ EXTRA_KEYS_TO_SANITIZE.add(android.telecom.Connection.EXTRA_SIP_INVITE);
+ }
+
+ /**
+ * A list of extra keys which should be added to {@link ParcelableCall} when it is being
+ * generated for the purpose of sending to a CallScreeningService which has access to these
+ * restricted keys.
+ */
+ private static List<String> RESTRICTED_CALL_SCREENING_EXTRA_KEYS;
+ static {
+ RESTRICTED_CALL_SCREENING_EXTRA_KEYS = new ArrayList<>();
+ RESTRICTED_CALL_SCREENING_EXTRA_KEYS.add(android.telecom.Connection.EXTRA_SIP_INVITE);
+ }
+
public static class Converter {
public ParcelableCall toParcelableCall(Call call, boolean includeVideoProvider,
PhoneAccountRegistrar phoneAccountRegistrar) {
return ParcelableCallUtils.toParcelableCall(
- call, includeVideoProvider, phoneAccountRegistrar, false, false);
+ call, includeVideoProvider, phoneAccountRegistrar, false, false, false);
+ }
+
+ public ParcelableCall toParcelableCallForScreening(Call call,
+ boolean areRestrictedExtrasIncluded) {
+ return ParcelableCallUtils.toParcelableCallForScreening(call,
+ areRestrictedExtrasIncluded);
}
}
@@ -50,16 +88,23 @@
* @param phoneAccountRegistrar The {@link PhoneAccountRegistrar}.
* @param supportsExternalCalls Indicates whether the call should be parcelled for an
* {@link InCallService} which supports external calls or not.
+ * @param includeRttCall {@code true} if the RTT call should be included, {@code false}
+ * otherwise.
+ * @param isForSystemDialer {@code true} if this call is being parcelled for the system dialer,
+ * {@code false} otherwise. When parceling for the system dialer, the entire call extras
+ * is included. When parceling for anything other than the system dialer, some extra key
+ * values will be stripped for privacy sake.
*/
public static ParcelableCall toParcelableCall(
Call call,
boolean includeVideoProvider,
PhoneAccountRegistrar phoneAccountRegistrar,
boolean supportsExternalCalls,
- boolean includeRttCall) {
+ boolean includeRttCall,
+ boolean isForSystemDialer) {
return toParcelableCall(call, includeVideoProvider, phoneAccountRegistrar,
supportsExternalCalls, CALL_STATE_OVERRIDE_NONE /* overrideState */,
- includeRttCall);
+ includeRttCall, isForSystemDialer);
}
/**
@@ -75,6 +120,10 @@
* {@link InCallService} which supports external calls or not.
* @param overrideState When not {@link #CALL_STATE_OVERRIDE_NONE}, use the provided state as an
* override to whatever is defined in the call.
+ * @param isForSystemDialer {@code true} if this call is being parcelled for the system dialer,
+ * {@code false} otherwise. When parceling for the system dialer, the entire call extras
+ * is included. When parceling for anything other than the system dialer, some extra key
+ * values will be stripped for privacy sake.
* @return The {@link ParcelableCall} containing all call information from the {@link Call}.
*/
public static ParcelableCall toParcelableCall(
@@ -83,7 +132,8 @@
PhoneAccountRegistrar phoneAccountRegistrar,
boolean supportsExternalCalls,
int overrideState,
- boolean includeRttCall) {
+ boolean includeRttCall,
+ boolean isForSystemDialer) {
int state;
if (overrideState == CALL_STATE_OVERRIDE_NONE) {
state = getParcelableState(call, supportsExternalCalls);
@@ -102,6 +152,10 @@
properties |= android.telecom.Call.Details.PROPERTY_ENTERPRISE_CALL;
}
+ if (call.getIsVoipAudioMode()) {
+ properties |= android.telecom.Call.Details.PROPERTY_VOIP_AUDIO_MODE;
+ }
+
// If this is a single-SIM device, the "default SIM" will always be the only SIM.
boolean isDefaultSmsAccount = phoneAccountRegistrar != null &&
phoneAccountRegistrar.isUserSelectedSmsPhoneAccount(call.getTargetPhoneAccount());
@@ -157,6 +211,21 @@
}
ParcelableRttCall rttCall = includeRttCall ? getParcelableRttCall(call) : null;
+ int callDirection;
+ if (call.isIncoming()) {
+ callDirection = DIRECTION_INCOMING;
+ } else if (call.isUnknown()) {
+ callDirection = DIRECTION_UNKNOWN;
+ } else {
+ callDirection = DIRECTION_OUTGOING;
+ }
+
+ Bundle extras;
+ if (isForSystemDialer) {
+ extras = call.getExtras();
+ } else {
+ extras = sanitizeExtras(call.getExtras());
+ }
return new ParcelableCall(
call.getId(),
@@ -183,8 +252,127 @@
call.getVideoState(),
conferenceableCallIds,
call.getIntentExtras(),
- call.getExtras(),
- call.getCreationTimeMillis());
+ extras,
+ call.getCreationTimeMillis(),
+ callDirection);
+ }
+
+ /**
+ * Creates a ParcelableCall with the bare minimum properties required for a
+ * {@link android.telecom.CallScreeningService}. We ONLY expose the following:
+ * <ul>
+ * <li>Call Id (not exposed to public, but needed to associated calls)</li>
+ * <li>Call directoin</li>
+ * <li>Creation time</li>
+ * <li>Connection time</li>
+ * <li>Handle (phone number)</li>
+ * <li>Handle (phone number) presentation</li>
+ * </ul>
+ * All other fields are nulled or set to 0 values.
+ * Where the call screening service is part of the system dialer, the
+ * {@link Connection#EXTRA_SIP_INVITE} header information is also sent to the call screening
+ * service (since the system dialer has access to this anyways).
+ * @param call The telecom call to send to a call screening service.
+ * @param areRestrictedExtrasIncluded {@code true} if the set of restricted extras defined in
+ * {@link #RESTRICTED_CALL_SCREENING_EXTRA_KEYS} are to
+ * be included in the parceled call, {@code false} otherwise.
+ * @return Minimal {@link ParcelableCall} to send to the call screening service.
+ */
+ public static ParcelableCall toParcelableCallForScreening(Call call,
+ boolean areRestrictedExtrasIncluded) {
+ Uri handle = call.getHandlePresentation() == TelecomManager.PRESENTATION_ALLOWED ?
+ call.getHandle() : null;
+ int callDirection;
+ if (call.isIncoming()) {
+ callDirection = DIRECTION_INCOMING;
+ } else if (call.isUnknown()) {
+ callDirection = DIRECTION_UNKNOWN;
+ } else {
+ callDirection = DIRECTION_OUTGOING;
+ }
+ Bundle callExtras;
+ if (areRestrictedExtrasIncluded) {
+ callExtras = sanitizeRestrictedCallExtras(call.getExtras());
+ } else {
+ callExtras = new Bundle();
+ }
+
+ return new ParcelableCall(
+ call.getId(),
+ getParcelableState(call, false /* supportsExternalCalls */),
+ new DisconnectCause(DisconnectCause.UNKNOWN),
+ null, /* cannedSmsResponses */
+ 0, /* capabilities */
+ 0, /* properties */
+ 0, /* supportedAudioRoutes */
+ call.getConnectTimeMillis(),
+ handle,
+ call.getHandlePresentation(),
+ null, /* callerDisplayName */
+ 0 /* callerDisplayNamePresentation */,
+ null, /* gatewayInfo */
+ null, /* targetPhoneAccount */
+ false, /* includeVideoProvider */
+ null, /* videoProvider */
+ false, /* includeRttCall */
+ null, /* rttCall */
+ null, /* parentCallId */
+ null, /* childCallIds */
+ null, /* statusHints */
+ 0, /* videoState */
+ Collections.emptyList(), /* conferenceableCallIds */
+ null, /* intentExtras */
+ callExtras, /* callExtras */
+ call.getCreationTimeMillis(),
+ callDirection);
+ }
+
+ /**
+ * Sanitize the extras bundle passed in, removing keys which should not be sent to non-system
+ * dialer apps.
+ * @param oldExtras Extras bundle to sanitize.
+ * @return The sanitized extras bundle.
+ */
+ private static Bundle sanitizeExtras(Bundle oldExtras) {
+ if (oldExtras == null) {
+ return new Bundle();
+ }
+ Bundle extras = new Bundle(oldExtras);
+ for (String key : EXTRA_KEYS_TO_SANITIZE) {
+ extras.remove(key);
+ }
+
+ // As a catch-all remove any that don't start with android namespace.
+ Iterator<String> toCheck = extras.keySet().iterator();
+ while (toCheck.hasNext()) {
+ String extraKey = toCheck.next();
+ if (TextUtils.isEmpty(extraKey) || !extraKey.startsWith("android.")) {
+ toCheck.remove();
+ }
+ }
+ return extras;
+ }
+
+ /**
+ * Sanitize the extras bundle passed in, removing keys which should not be sent to call
+ * screening services which have access to the restricted extras.
+ * @param oldExtras Extras bundle to sanitize.
+ * @return The sanitized extras bundle.
+ */
+ private static Bundle sanitizeRestrictedCallExtras(Bundle oldExtras) {
+ if (oldExtras == null) {
+ return new Bundle();
+ }
+ Bundle extras = new Bundle(oldExtras);
+ Iterator<String> toCheck = extras.keySet().iterator();
+ while (toCheck.hasNext()) {
+ String extraKey = toCheck.next();
+ if (TextUtils.isEmpty(extraKey)
+ || !RESTRICTED_CALL_SCREENING_EXTRA_KEYS.contains(extraKey)) {
+ toCheck.remove();
+ }
+ }
+ return extras;
}
private static int getParcelableState(Call call, boolean supportsExternalCalls) {
@@ -226,6 +414,8 @@
state = android.telecom.Call.STATE_HOLDING;
break;
case CallState.RINGING:
+ case CallState.ANSWERED:
+ // TODO: does in-call UI need to see ANSWERED?
state = android.telecom.Call.STATE_RINGING;
break;
case CallState.SELECT_PHONE_ACCOUNT:
@@ -345,7 +535,10 @@
android.telecom.Call.Details.PROPERTY_ASSISTED_DIALING_USED,
Connection.PROPERTY_IS_RTT,
- android.telecom.Call.Details.PROPERTY_RTT
+ android.telecom.Call.Details.PROPERTY_RTT,
+
+ Connection.PROPERTY_NETWORK_IDENTIFIED_EMERGENCY_CALL,
+ android.telecom.Call.Details.PROPERTY_NETWORK_IDENTIFIED_EMERGENCY_CALL
};
private static int convertConnectionToCallProperties(int connectionProperties) {
diff --git a/src/com/android/server/telecom/PhoneAccountRegistrar.java b/src/com/android/server/telecom/PhoneAccountRegistrar.java
index d84fca5..b364d1c 100644
--- a/src/com/android/server/telecom/PhoneAccountRegistrar.java
+++ b/src/com/android/server/telecom/PhoneAccountRegistrar.java
@@ -17,6 +17,7 @@
package com.android.server.telecom;
import android.Manifest;
+import android.annotation.NonNull;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
@@ -125,6 +126,8 @@
PhoneAccountHandle handle) {}
public void onPhoneAccountUnRegistered(PhoneAccountRegistrar registrar,
PhoneAccountHandle handle) {}
+ public void onPhoneAccountChanged(PhoneAccountRegistrar registrar,
+ PhoneAccount phoneAccount) {}
}
/**
@@ -135,7 +138,7 @@
CharSequence getAppLabel(String packageName);
}
- private static final String FILE_NAME = "phone-account-registrar-state.xml";
+ public static final String FILE_NAME = "phone-account-registrar-state.xml";
@VisibleForTesting
public static final int EXPECTED_STATE_VERSION = 9;
@@ -309,6 +312,11 @@
if (userHandle == null) {
return;
}
+ DefaultPhoneAccountHandle currentDefaultInfo =
+ mState.defaultOutgoingAccountHandles.get(userHandle);
+ PhoneAccountHandle currentDefaultPhoneAccount = currentDefaultInfo == null ? null :
+ currentDefaultInfo.phoneAccountHandle;
+ boolean isSimAccount = false;
if (accountHandle == null) {
// Asking to clear the default outgoing is a valid request
mState.defaultOutgoingAccountHandles.remove(userHandle);
@@ -329,15 +337,33 @@
if (account.hasCapabilities(PhoneAccount.CAPABILITY_SIM_SUBSCRIPTION)) {
// If the account selected is a SIM account, propagate down to the subscription
// record.
- int subId = getSubscriptionIdForPhoneAccount(accountHandle);
- mSubscriptionManager.setDefaultVoiceSubId(subId);
+ isSimAccount = true;
}
+ Log.i(this, "setUserSelectedOutgoingPhoneAccount: %s", accountHandle);
mState.defaultOutgoingAccountHandles
.put(userHandle, new DefaultPhoneAccountHandle(userHandle, accountHandle,
account.getGroupId()));
}
+ // Potentially update the default voice subid in SubscriptionManager.
+ if (!Objects.equals(currentDefaultPhoneAccount, accountHandle)) {
+ int newSubId = accountHandle == null ? SubscriptionManager.INVALID_SUBSCRIPTION_ID :
+ getSubscriptionIdForPhoneAccount(accountHandle);
+ if (isSimAccount || accountHandle == null) {
+ int currentVoiceSubId = mSubscriptionManager.getDefaultVoiceSubscriptionId();
+ if (newSubId != currentVoiceSubId) {
+ Log.i(this, "setUserSelectedOutgoingPhoneAccount: update voice sub; "
+ + "account=%s, subId=%d", accountHandle, newSubId);
+ mSubscriptionManager.setDefaultVoiceSubId(newSubId);
+ }
+ } else {
+ Log.i(this, "setUserSelectedOutgoingPhoneAccount: %s is not a sub", accountHandle);
+ }
+ } else {
+ Log.i(this, "setUserSelectedOutgoingPhoneAccount: no change to voice sub");
+ }
+
write();
fireDefaultOutgoingChanged();
}
@@ -348,16 +374,20 @@
}
public ComponentName getSystemSimCallManagerComponent() {
+ return getSystemSimCallManagerComponent(SubscriptionManager.getDefaultSubscriptionId());
+ }
+
+ public ComponentName getSystemSimCallManagerComponent(int subId) {
String defaultSimCallManager = null;
CarrierConfigManager configManager = (CarrierConfigManager) mContext.getSystemService(
Context.CARRIER_CONFIG_SERVICE);
- PersistableBundle configBundle = configManager.getConfig();
+ PersistableBundle configBundle = configManager.getConfigForSubId(subId);
if (configBundle != null) {
defaultSimCallManager = configBundle.getString(
CarrierConfigManager.KEY_DEFAULT_SIM_CALL_MANAGER_STRING);
}
return TextUtils.isEmpty(defaultSimCallManager)
- ? null : ComponentName.unflattenFromString(defaultSimCallManager);
+ ? null : ComponentName.unflattenFromString(defaultSimCallManager);
}
public PhoneAccountHandle getSimCallManagerOfCurrentUser() {
@@ -365,8 +395,10 @@
}
/**
- * Returns the {@link PhoneAccountHandle} corresponding to the currently active SIM Call
- * Manager. SIM Call Manager returned corresponds to the following priority order:
+ * Returns the {@link PhoneAccountHandle} corresponding to the SIM Call Manager associated with
+ * the default Telephony Subscription ID (see
+ * {@link SubscriptionManager#getDefaultSubscriptionId()}). SIM Call Manager returned
+ * corresponds to the following priority order:
* 1. If a SIM Call Manager {@link PhoneAccount} is registered for the same package as the
* default dialer, then that one is returned.
* 2. If there is a SIM Call Manager {@link PhoneAccount} registered which matches the
@@ -374,12 +406,22 @@
* 3. Otherwise, we return null.
*/
public PhoneAccountHandle getSimCallManager(UserHandle userHandle) {
+ return getSimCallManager(SubscriptionManager.getDefaultSubscriptionId(), userHandle);
+ }
+
+ /**
+ * Queries the SIM call manager associated with a specific subscription ID.
+ *
+ * @see #getSimCallManager(UserHandle) for more information.
+ */
+ public PhoneAccountHandle getSimCallManager(int subId, UserHandle userHandle) {
+
// Get the default dialer in case it has a connection manager associated with it.
String dialerPackage = mDefaultDialerCache
.getDefaultDialerApplication(userHandle.getIdentifier());
// Check carrier config.
- ComponentName systemSimCallManagerComponent = getSystemSimCallManagerComponent();
+ ComponentName systemSimCallManagerComponent = getSystemSimCallManagerComponent(subId);
PhoneAccountHandle dialerSimCallManager = null;
PhoneAccountHandle systemSimCallManager = null;
@@ -409,14 +451,15 @@
PhoneAccountHandle retval = dialerSimCallManager != null ?
dialerSimCallManager : systemSimCallManager;
-
- Log.i(this, "SimCallManager queried, returning: %s", retval);
+ Log.i(this, "getSimCallManager: SimCallManager for subId %d queried, returning: %s",
+ subId, retval);
return retval;
}
/**
- * If it is a outgoing call, sim call manager of call-initiating user is returned.
+ * If it is a outgoing call, sim call manager associated with the target phone account of the
+ * call is returned (if one exists).
* Otherwise, we return the sim call manager of the user associated with the
* target phone account.
* @return phone account handle of sim call manager based on the ongoing call.
@@ -429,7 +472,34 @@
if (userHandle == null) {
userHandle = call.getTargetPhoneAccount().getUserHandle();
}
- return getSimCallManager(userHandle);
+ PhoneAccountHandle targetPhoneAccount = call.getTargetPhoneAccount();
+ Log.d(this, "getSimCallManagerFromCall: callId=%s, targetPhac=%s",
+ call.getId(), targetPhoneAccount);
+ return getSimCallManagerFromHandle(targetPhoneAccount,userHandle);
+ }
+
+ /**
+ * Given a target phone account and user, determines the sim call manager (if any) which is
+ * associated with that {@link PhoneAccountHandle}.
+ * @param targetPhoneAccount The target phone account to check.
+ * @param userHandle The user handle.
+ * @return The {@link PhoneAccountHandle} of the connection manager.
+ */
+ public PhoneAccountHandle getSimCallManagerFromHandle(PhoneAccountHandle targetPhoneAccount,
+ UserHandle userHandle) {
+ int subId = getSubscriptionIdForPhoneAccount(targetPhoneAccount);
+ if (SubscriptionManager.isValidSubscriptionId(subId)
+ && subId != SubscriptionManager.DEFAULT_SUBSCRIPTION_ID) {
+ PhoneAccountHandle callManagerHandle = getSimCallManager(subId, userHandle);
+ Log.d(this, "getSimCallManagerFromHandle: targetPhac=%s, subId=%d, scm=%s",
+ targetPhoneAccount, subId, callManagerHandle);
+ return callManagerHandle;
+ } else {
+ PhoneAccountHandle callManagerHandle = getSimCallManager(userHandle);
+ Log.d(this, "getSimCallManagerFromHandle: targetPhac=%s, subId(d)=%d, scm=%s",
+ targetPhoneAccount, subId, callManagerHandle);
+ return callManagerHandle;
+ }
}
/**
@@ -650,6 +720,21 @@
return getPhoneAccountHandles(0, null, packageName, false, userHandle);
}
+ /**
+ * Determines if a {@link PhoneAccountHandle} is for a self-managed {@link ConnectionService}.
+ * @param handle The handle.
+ * @return {@code true} if for a self-managed {@link ConnectionService}, {@code false}
+ * otherwise.
+ */
+ public boolean isSelfManagedPhoneAccount(@NonNull PhoneAccountHandle handle) {
+ PhoneAccount account = getPhoneAccountUnchecked(handle);
+ if (account == null) {
+ return false;
+ }
+
+ return account.isSelfManaged();
+ }
+
// TODO: Should we implement an artificial limit for # of accounts associated with a single
// ComponentName?
public void registerPhoneAccount(PhoneAccount account) {
@@ -727,6 +812,8 @@
fireAccountsChanged();
if (isNewAccount) {
fireAccountRegistered(account.getAccountHandle());
+ } else {
+ fireAccountChanged(account);
}
}
@@ -788,6 +875,12 @@
}
}
+ private void fireAccountChanged(PhoneAccount account) {
+ for (Listener l : mListeners) {
+ l.onPhoneAccountChanged(this, account);
+ }
+ }
+
private void fireAccountUnRegistered(PhoneAccountHandle handle) {
for (Listener l : mListeners) {
l.onPhoneAccountUnRegistered(this, handle);
@@ -815,7 +908,7 @@
sb.append("[").append(account1.getAccountHandle());
appendDiff(sb, "addr", Log.piiHandle(account1.getAddress()),
Log.piiHandle(account2.getAddress()));
- appendDiff(sb, "cap", account1.getCapabilities(), account2.getCapabilities());
+ appendDiff(sb, "cap", account1.capabilitiesToString(), account2.capabilitiesToString());
appendDiff(sb, "hl", account1.getHighlightColor(), account2.getHighlightColor());
appendDiff(sb, "lbl", account1.getLabel(), account2.getLabel());
appendDiff(sb, "desc", account1.getShortDescription(), account2.getShortDescription());
diff --git a/src/com/android/server/telecom/PhoneAccountSuggestionHelper.java b/src/com/android/server/telecom/PhoneAccountSuggestionHelper.java
new file mode 100644
index 0000000..438ee68
--- /dev/null
+++ b/src/com/android/server/telecom/PhoneAccountSuggestionHelper.java
@@ -0,0 +1,209 @@
+/*
+ * Copyright (C) 2018 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;
+
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.ServiceConnection;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.content.pm.ServiceInfo;
+import android.net.Uri;
+import android.os.Handler;
+import android.os.IBinder;
+import android.os.RemoteException;
+import android.telecom.Log;
+import android.telecom.Logging.Session;
+import android.telecom.PhoneAccountHandle;
+import android.telecom.PhoneAccountSuggestion;
+import android.telecom.PhoneAccountSuggestionService;
+import android.telephony.PhoneNumberUtils;
+import android.text.TextUtils;
+
+import com.android.internal.telecom.IPhoneAccountSuggestionCallback;
+import com.android.internal.telecom.IPhoneAccountSuggestionService;
+
+import java.util.List;
+import java.util.concurrent.CompletableFuture;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+public class PhoneAccountSuggestionHelper {
+ private static final String TAG = PhoneAccountSuggestionHelper.class.getSimpleName();
+ private static ComponentName sOverrideComponent;
+
+ /**
+ * @return A future (possible already complete) that contains a list of suggestions.
+ */
+ public static CompletableFuture<List<PhoneAccountSuggestion>>
+ bindAndGetSuggestions(Context context, Uri handle,
+ List<PhoneAccountHandle> availablePhoneAccounts) {
+ // Use the default list if there's no handle
+ if (handle == null) {
+ return CompletableFuture.completedFuture(getDefaultSuggestions(availablePhoneAccounts));
+ }
+ String number = PhoneNumberUtils.extractNetworkPortion(handle.getSchemeSpecificPart());
+
+ // Use the default list if there's no service on the device.
+ ServiceInfo suggestionServiceInfo = getSuggestionServiceInfo(context);
+ if (suggestionServiceInfo == null) {
+ return CompletableFuture.completedFuture(getDefaultSuggestions(availablePhoneAccounts));
+ }
+
+ Intent bindIntent = new Intent();
+ bindIntent.setComponent(new ComponentName(suggestionServiceInfo.packageName,
+ suggestionServiceInfo.name));
+
+ final CompletableFuture<List<PhoneAccountSuggestion>> future = new CompletableFuture<>();
+
+ final Session logSession = Log.createSubsession();
+ ServiceConnection serviceConnection = new ServiceConnection() {
+ @Override
+ public void onServiceConnected(ComponentName name, IBinder _service) {
+ Log.continueSession(logSession, "PASH.oSC");
+ try {
+ IPhoneAccountSuggestionService service =
+ IPhoneAccountSuggestionService.Stub.asInterface(_service);
+ // Set up the callback to complete the future once the remote side comes
+ // back with suggestions
+ IPhoneAccountSuggestionCallback callback =
+ new IPhoneAccountSuggestionCallback.Stub() {
+ @Override
+ public void suggestPhoneAccounts(String suggestResultNumber,
+ List<PhoneAccountSuggestion> suggestions) {
+ if (TextUtils.equals(number, suggestResultNumber)) {
+ if (suggestions == null) {
+ future.complete(
+ getDefaultSuggestions(availablePhoneAccounts));
+ } else {
+ future.complete(
+ addDefaultsToProvidedSuggestions(
+ suggestions, availablePhoneAccounts));
+ }
+ }
+ }
+ };
+ try {
+ service.onAccountSuggestionRequest(callback, number);
+ } catch (RemoteException e) {
+ Log.w(TAG, "Cancelling suggestion process due to remote exception");
+ future.complete(getDefaultSuggestions(availablePhoneAccounts));
+ }
+ } finally {
+ Log.endSession();
+ }
+ }
+
+ @Override
+ public void onServiceDisconnected(ComponentName name) {
+ // No locking needed -- CompletableFuture only lets one thread call complete.
+ Log.continueSession(logSession, "PASH.oSD");
+ try {
+ if (!future.isDone()) {
+ Log.w(TAG, "Cancelling suggestion process due to service disconnect");
+ }
+ future.complete(getDefaultSuggestions(availablePhoneAccounts));
+ } finally {
+ Log.endSession();
+ }
+ }
+ };
+
+ if (!context.bindService(bindIntent, serviceConnection, Context.BIND_AUTO_CREATE)) {
+ Log.i(TAG, "Cancelling suggestion process due to bind failure.");
+ future.complete(getDefaultSuggestions(availablePhoneAccounts));
+ }
+
+ // Set up a timeout so that we're not waiting forever for the suggestion service.
+ Handler handler = new Handler();
+ handler.postDelayed(() -> {
+ // No locking needed -- CompletableFuture only lets one thread call complete.
+ Log.continueSession(logSession, "PASH.timeout");
+ try {
+ if (!future.isDone()) {
+ Log.w(TAG, "Cancelling suggestion process due to timeout");
+ }
+ future.complete(getDefaultSuggestions(availablePhoneAccounts));
+ } finally {
+ Log.endSession();
+ }
+ },
+ Timeouts.getPhoneAccountSuggestionServiceTimeout(context.getContentResolver()));
+ return future;
+ }
+
+ private static List<PhoneAccountSuggestion> addDefaultsToProvidedSuggestions(
+ List<PhoneAccountSuggestion> providedSuggestions,
+ List<PhoneAccountHandle> availableAccountHandles) {
+ List<PhoneAccountHandle> handlesInSuggestions = providedSuggestions.stream()
+ .map(PhoneAccountSuggestion::getPhoneAccountHandle)
+ .collect(Collectors.toList());
+ List<PhoneAccountHandle> handlesToFillIn = availableAccountHandles.stream()
+ .filter(handle -> !handlesInSuggestions.contains(handle))
+ .collect(Collectors.toList());
+ List<PhoneAccountSuggestion> suggestionsToAppend = getDefaultSuggestions(handlesToFillIn);
+ return Stream.concat(suggestionsToAppend.stream(), providedSuggestions.stream())
+ .collect( Collectors.toList());
+ }
+
+ private static ServiceInfo getSuggestionServiceInfo(Context context) {
+ PackageManager packageManager = context.getPackageManager();
+ Intent queryIntent = new Intent();
+ queryIntent.setAction(PhoneAccountSuggestionService.SERVICE_INTERFACE);
+
+ List<ResolveInfo> services;
+ if (sOverrideComponent == null) {
+ services = packageManager.queryIntentServices(queryIntent,
+ PackageManager.MATCH_SYSTEM_ONLY);
+ } else {
+ Log.i(TAG, "Using override component %s", sOverrideComponent);
+ queryIntent.setComponent(sOverrideComponent);
+ services = packageManager.queryIntentServices(queryIntent,
+ PackageManager.MATCH_ALL);
+ }
+
+ if (services == null || services.size() == 0) {
+ Log.i(TAG, "No acct suggestion services found. Using defaults.");
+ return null;
+ }
+
+ if (services.size() > 1) {
+ Log.w(TAG, "More than acct suggestion service found, cannot get unique service");
+ return null;
+ }
+ return services.get(0).serviceInfo;
+ }
+
+ static void setOverrideServiceName(String flattenedComponentName) {
+ try {
+ sOverrideComponent = TextUtils.isEmpty(flattenedComponentName)
+ ? null : ComponentName.unflattenFromString(flattenedComponentName);
+ } catch (Exception e) {
+ sOverrideComponent = null;
+ throw e;
+ }
+ }
+
+ private static List<PhoneAccountSuggestion> getDefaultSuggestions(
+ List<PhoneAccountHandle> phoneAccountHandles) {
+ return phoneAccountHandles.stream().map(phoneAccountHandle ->
+ new PhoneAccountSuggestion(phoneAccountHandle,
+ PhoneAccountSuggestion.REASON_NONE, false)
+ ).collect(Collectors.toList());
+ }
+}
\ No newline at end of file
diff --git a/src/com/android/server/telecom/PhoneNumberUtilsAdapterImpl.java b/src/com/android/server/telecom/PhoneNumberUtilsAdapterImpl.java
index 7ff854e..8b3c856 100644
--- a/src/com/android/server/telecom/PhoneNumberUtilsAdapterImpl.java
+++ b/src/com/android/server/telecom/PhoneNumberUtilsAdapterImpl.java
@@ -19,16 +19,21 @@
import android.content.Context;
import android.content.Intent;
import android.telephony.PhoneNumberUtils;
+import android.telephony.TelephonyManager;
public class PhoneNumberUtilsAdapterImpl implements PhoneNumberUtilsAdapter {
@Override
public boolean isLocalEmergencyNumber(Context context, String number) {
- return PhoneNumberUtils.isLocalEmergencyNumber(context, number);
+ TelephonyManager tm = (TelephonyManager) context.getSystemService(
+ Context.TELEPHONY_SERVICE);
+ return tm.isEmergencyNumber(number);
}
@Override
public boolean isPotentialLocalEmergencyNumber(Context context, String number) {
- return PhoneNumberUtils.isPotentialLocalEmergencyNumber(context, number);
+ TelephonyManager tm = (TelephonyManager) context.getSystemService(
+ Context.TELEPHONY_SERVICE);
+ return tm.isPotentialEmergencyNumber(number);
}
@Override
diff --git a/src/com/android/server/telecom/QuickResponseUtils.java b/src/com/android/server/telecom/QuickResponseUtils.java
index 5f8269d..84d2636 100644
--- a/src/com/android/server/telecom/QuickResponseUtils.java
+++ b/src/com/android/server/telecom/QuickResponseUtils.java
@@ -117,4 +117,48 @@
Log.d(LOG_TAG, "maybeMigrateLegacyQuickResponses() - Done.");
return;
}
+
+ /**
+ * Determine if the user has changed any of the quick responses back to exactly the same text as
+ * the default text. If they did, clear the preference so we'll rely on the default value and
+ * still be able to re-translate automatically when language changes occur.
+ *
+ * @param context The current context.
+ * @param prefs The quick response shared prefs.
+ */
+ public static void maybeResetQuickResponses(Context context, SharedPreferences prefs) {
+ final Resources res = context.getResources();
+
+ String defaultResponse1 = res.getString(R.string.respond_via_sms_canned_response_1);
+ String currentValue1 = prefs.getString(QuickResponseUtils.KEY_CANNED_RESPONSE_PREF_1, "");
+ if (currentValue1.equals(defaultResponse1)) {
+ prefs.edit().remove(QuickResponseUtils.KEY_CANNED_RESPONSE_PREF_1).apply();
+ Log.i(QuickResponseUtils.class,
+ "maybeResetQuickResponses: response 1 is identical to default; clear pref.");
+ }
+
+ String defaultResponse2 = res.getString(R.string.respond_via_sms_canned_response_2);
+ String currentValue2 = prefs.getString(QuickResponseUtils.KEY_CANNED_RESPONSE_PREF_2, "");
+ if (currentValue2.equals(defaultResponse2)) {
+ prefs.edit().remove(QuickResponseUtils.KEY_CANNED_RESPONSE_PREF_2).apply();
+ Log.i(QuickResponseUtils.class,
+ "maybeResetQuickResponses: response 2 is identical to default; clear pref.");
+ }
+
+ String defaultResponse3 = res.getString(R.string.respond_via_sms_canned_response_3);
+ String currentValue3 = prefs.getString(QuickResponseUtils.KEY_CANNED_RESPONSE_PREF_3, "");
+ if (currentValue3.equals(defaultResponse3)) {
+ prefs.edit().remove(QuickResponseUtils.KEY_CANNED_RESPONSE_PREF_3).apply();
+ Log.i(QuickResponseUtils.class,
+ "maybeResetQuickResponses: response 3 is identical to default; clear pref.");
+ }
+
+ String defaultResponse4 = res.getString(R.string.respond_via_sms_canned_response_4);
+ String currentValue4 = prefs.getString(QuickResponseUtils.KEY_CANNED_RESPONSE_PREF_4, "");
+ if (currentValue4.equals(defaultResponse4)) {
+ prefs.edit().remove(QuickResponseUtils.KEY_CANNED_RESPONSE_PREF_4).apply();
+ Log.i(QuickResponseUtils.class,
+ "maybeResetQuickResponses: response 4 is identical to default; clear pref.");
+ }
+ }
}
diff --git a/src/com/android/server/telecom/RespondViaSmsManager.java b/src/com/android/server/telecom/RespondViaSmsManager.java
index 964f6ad..ac9ee3c 100644
--- a/src/com/android/server/telecom/RespondViaSmsManager.java
+++ b/src/com/android/server/telecom/RespondViaSmsManager.java
@@ -17,16 +17,14 @@
package com.android.server.telecom;
// TODO: Needed for move to system service: import com.android.internal.R;
-import com.android.internal.os.SomeArgs;
-import com.android.internal.telephony.SmsApplication;
-
-import android.content.ComponentName;
+import android.app.Activity;
+import android.app.PendingIntent;
+import android.content.BroadcastReceiver;
import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.content.res.Resources;
-import android.os.Handler;
-import android.os.Looper;
-import android.os.Message;
import android.telecom.Connection;
import android.telecom.Log;
import android.telecom.Response;
@@ -45,30 +43,37 @@
* Helper class to manage the "Respond via Message" feature for incoming calls.
*/
public class RespondViaSmsManager extends CallsManagerListenerBase {
- private static final int MSG_SHOW_SENT_TOAST = 2;
+ private static final String ACTION_MESSAGE_SENT = "com.android.server.telecom.MESSAGE_SENT";
+
+ private static final class MessageSentReceiver extends BroadcastReceiver {
+ private final String mContactName;
+ private final int mNumMessageParts;
+ private int mNumMessagesSent = 0;
+ MessageSentReceiver(String contactName, int numMessageParts) {
+ mContactName = contactName;
+ mNumMessageParts = numMessageParts;
+ }
+
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ if (getResultCode() == Activity.RESULT_OK) {
+ mNumMessagesSent++;
+ if (mNumMessagesSent == mNumMessageParts) {
+ showMessageResultToast(mContactName, context, true);
+ context.unregisterReceiver(this);
+ }
+ } else {
+ context.unregisterReceiver(this);
+ showMessageResultToast(mContactName, context, false);
+ Log.w(RespondViaSmsManager.class.getSimpleName(),
+ "Message failed with error %s", getResultCode());
+ }
+ }
+ }
private final CallsManager mCallsManager;
private final TelecomSystem.SyncRoot mLock;
- private final Handler mHandler = new Handler(Looper.getMainLooper()) {
- @Override
- public void handleMessage(Message msg) {
- switch (msg.what) {
- case MSG_SHOW_SENT_TOAST: {
- SomeArgs args = (SomeArgs) msg.obj;
- try {
- String toastMessage = (String) args.arg1;
- Context context = (Context) args.arg2;
- showMessageSentToast(toastMessage, context);
- } finally {
- args.recycle();
- }
- break;
- }
- }
- }
- };
-
public RespondViaSmsManager(CallsManager callsManager, TelecomSystem.SyncRoot lock) {
mCallsManager = callsManager;
mLock = lock;
@@ -105,6 +110,11 @@
final ArrayList<String> textMessages = new ArrayList<>(
QuickResponseUtils.NUM_CANNED_RESPONSES);
+ // Where the user has changed a quick response back to the same text as the
+ // original text, clear the shared pref. This ensures we always load the resource
+ // in the current active language.
+ QuickResponseUtils.maybeResetQuickResponses(context, prefs);
+
// Note the default values here must agree with the corresponding
// android:defaultValue attributes in respond_via_sms_settings.xml.
textMessages.add(0, prefs.getString(QuickResponseUtils.KEY_CANNED_RESPONSE_PREF_1,
@@ -139,13 +149,15 @@
}
}
- private void showMessageSentToast(final String phoneNumber, final Context context) {
+ private static void showMessageResultToast(final String phoneNumber,
+ final Context context, boolean success) {
// ...and show a brief confirmation to the user (since
// otherwise it's hard to be sure that anything actually
// happened.)
final Resources res = context.getResources();
- final String formatString = res.getString(
- R.string.respond_via_sms_confirmation_format);
+ final String formatString = res.getString(success
+ ? R.string.respond_via_sms_confirmation_format
+ : R.string.respond_via_sms_failure_format);
final String confirmationMsg = String.format(formatString, phoneNumber);
int startingPosition = confirmationMsg.indexOf(phoneNumber);
int endingPosition = startingPosition + phoneNumber.length();
@@ -187,13 +199,20 @@
SmsManager smsManager = SmsManager.getSmsManagerForSubscriptionId(subId);
try {
- smsManager.sendTextMessage(phoneNumber, null, textMessage, null /*sentIntent*/,
- null /*deliveryIntent*/);
-
- SomeArgs args = SomeArgs.obtain();
- args.arg1 = !TextUtils.isEmpty(contactName) ? contactName : phoneNumber;
- args.arg2 = context;
- mHandler.obtainMessage(MSG_SHOW_SENT_TOAST, args).sendToTarget();
+ ArrayList<String> messageParts = smsManager.divideMessage(textMessage);
+ ArrayList<PendingIntent> sentIntents = new ArrayList<>(messageParts.size());
+ for (int i = 0; i < messageParts.size(); i++) {
+ Intent intent = new Intent(ACTION_MESSAGE_SENT);
+ PendingIntent pendingIntent = PendingIntent.getBroadcast(context, i, intent,
+ PendingIntent.FLAG_ONE_SHOT);
+ sentIntents.add(pendingIntent);
+ }
+ MessageSentReceiver receiver = new MessageSentReceiver(
+ !TextUtils.isEmpty(contactName) ? contactName : phoneNumber,
+ messageParts.size());
+ context.registerReceiver(receiver, new IntentFilter(ACTION_MESSAGE_SENT));
+ smsManager.sendMultipartTextMessageExternal(phoneNumber, null, messageParts,
+ sentIntents/*sentIntent*/, null /*deliveryIntent*/, context.getOpPackageName());
} catch (IllegalArgumentException e) {
Log.w(RespondViaSmsManager.this, "Couldn't send SMS message: " +
e.getMessage());
diff --git a/src/com/android/server/telecom/RespondViaSmsSettings.java b/src/com/android/server/telecom/RespondViaSmsSettings.java
index 2ea204a..3bee5f7 100644
--- a/src/com/android/server/telecom/RespondViaSmsSettings.java
+++ b/src/com/android/server/telecom/RespondViaSmsSettings.java
@@ -54,6 +54,7 @@
getPreferenceManager().setSharedPreferencesName(QuickResponseUtils.SHARED_PREFERENCES_NAME);
mPrefs = getPreferenceManager().getSharedPreferences();
+ QuickResponseUtils.maybeResetQuickResponses(this, mPrefs);
}
@Override
@@ -108,6 +109,9 @@
SharedPreferences.Editor editor = mPrefs.edit();
editor.putString(pref.getKey(), (String) newValue).commit();
+ // If the user just reset the quick response to its original text, clear the pref.
+ QuickResponseUtils.maybeResetQuickResponses(this, mPrefs);
+
return true; // means it's OK to update the state of the Preference with the new value
}
diff --git a/src/com/android/server/telecom/Ringer.java b/src/com/android/server/telecom/Ringer.java
index 1d27f45..2909b72 100644
--- a/src/com/android/server/telecom/Ringer.java
+++ b/src/com/android/server/telecom/Ringer.java
@@ -26,6 +26,7 @@
import android.media.AudioAttributes;
import android.media.AudioManager;
import android.media.Ringtone;
+import android.media.VolumeShaper;
import android.net.Uri;
import android.os.Bundle;
import android.os.Vibrator;
@@ -33,24 +34,60 @@
import com.android.internal.annotations.VisibleForTesting;
import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutionException;
+import java.util.stream.Collectors;
/**
* Controls the ringtone player.
*/
@VisibleForTesting
public class Ringer {
+ public static class VibrationEffectProxy {
+ public VibrationEffect createWaveform(long[] timings, int[] amplitudes, int repeat) {
+ return VibrationEffect.createWaveform(timings, amplitudes, repeat);
+ }
+
+ public VibrationEffect get(Uri ringtoneUri, Context context) {
+ return VibrationEffect.get(ringtoneUri, context);
+ }
+ }
@VisibleForTesting
public VibrationEffect mDefaultVibrationEffect;
- private static final long[] PULSE_PATTERN = {0,12,250,12,500, // priming + interval
- 50,50,50,50,50,50,50,50,50,50,50,50,50,50, // ease-in
- 300, // Peak
- 1000}; // pause before repetition
+ private static final long[] PULSE_PRIMING_PATTERN = {0,12,250,12,500}; // priming + interval
- private static final int[] PULSE_AMPLITUDE = {0,255,0,255,0, // priming + interval
- 77,77,78,79,81,84,87,93,101,114,133,162,205,255, // ease-in (min amplitude = 30%)
- 255, // Peak
- 0}; // pause before repetition
+ private static final int[] PULSE_PRIMING_AMPLITUDE = {0,255,0,255,0}; // priming + interval
+
+ // ease-in + peak + pause
+ private static final long[] PULSE_RAMPING_PATTERN = {
+ 50,50,50,50,50,50,50,50,50,50,50,50,50,50,300,1000};
+
+ // ease-in (min amplitude = 30%) + peak + pause
+ private static final int[] PULSE_RAMPING_AMPLITUDE = {
+ 77,77,78,79,81,84,87,93,101,114,133,162,205,255,255,0};
+
+ private static final long[] PULSE_PATTERN;
+
+ private static final int[] PULSE_AMPLITUDE;
+
+ static {
+ // construct complete pulse pattern
+ PULSE_PATTERN = new long[PULSE_PRIMING_PATTERN.length + PULSE_RAMPING_PATTERN.length];
+ System.arraycopy(
+ PULSE_PRIMING_PATTERN, 0, PULSE_PATTERN, 0, PULSE_PRIMING_PATTERN.length);
+ System.arraycopy(PULSE_RAMPING_PATTERN, 0, PULSE_PATTERN,
+ PULSE_PRIMING_PATTERN.length, PULSE_RAMPING_PATTERN.length);
+
+ // construct complete pulse amplitude
+ PULSE_AMPLITUDE = new int[PULSE_PRIMING_AMPLITUDE.length + PULSE_RAMPING_AMPLITUDE.length];
+ System.arraycopy(
+ PULSE_PRIMING_AMPLITUDE, 0, PULSE_AMPLITUDE, 0, PULSE_PRIMING_AMPLITUDE.length);
+ System.arraycopy(PULSE_RAMPING_AMPLITUDE, 0, PULSE_AMPLITUDE,
+ PULSE_PRIMING_AMPLITUDE.length, PULSE_RAMPING_AMPLITUDE.length);
+ }
private static final long[] SIMPLE_VIBRATION_PATTERN = {
0, // No delay before starting
@@ -73,11 +110,23 @@
private static final int REPEAT_SIMPLE_VIBRATION_AT = 1;
+ private static final int DEFAULT_RAMPING_RINGER_DURATION = 10000; // 10 seconds
+
+ private int mRampingRingerDuration = -1; // ramping ringer duration in millisecond
+
+ // vibration duration before ramping ringer in second
+ private int mRampingRingerVibrationDuration = 0;
+
+ private static final float EPSILON = 1e-6f;
+
private static final AudioAttributes VIBRATION_ATTRIBUTES = new AudioAttributes.Builder()
.setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
.setUsage(AudioAttributes.USAGE_NOTIFICATION_RINGTONE)
.build();
+ private static VibrationEffect mRampingRingerVibrationEffect;
+ private static VolumeShaper.Configuration mVolumeShaperConfig;
+
/**
* Used to keep ordering of unanswered incoming calls. There can easily exist multiple incoming
* calls and explicit ordering is useful for maintaining the proper state of the ringer.
@@ -89,6 +138,15 @@
private final Context mContext;
private final Vibrator mVibrator;
private final InCallController mInCallController;
+ private final VibrationEffectProxy mVibrationEffectProxy;
+ private final boolean mIsHapticPlaybackSupportedByDevice;
+ /**
+ * For unit testing purposes only; when set, {@link #startRinging(Call, boolean)} will complete
+ * the future provided by the test using {@link #setBlockOnRingingFuture(CompletableFuture)}.
+ */
+ private CompletableFuture<Void> mBlockOnRingingFuture = null;
+
+ private CompletableFuture<Void> mVibrateFuture = CompletableFuture.completedFuture(null);
private InCallTonePlayer mCallWaitingPlayer;
private RingtoneFactory mRingtoneFactory;
@@ -115,6 +173,7 @@
AsyncRingtonePlayer asyncRingtonePlayer,
RingtoneFactory ringtoneFactory,
Vibrator vibrator,
+ VibrationEffectProxy vibrationEffectProxy,
InCallController inCallController) {
mSystemSettingsUtil = systemSettingsUtil;
@@ -126,14 +185,23 @@
mRingtonePlayer = asyncRingtonePlayer;
mRingtoneFactory = ringtoneFactory;
mInCallController = inCallController;
+ mVibrationEffectProxy = vibrationEffectProxy;
if (mContext.getResources().getBoolean(R.bool.use_simple_vibration_pattern)) {
- mDefaultVibrationEffect = VibrationEffect.createWaveform(SIMPLE_VIBRATION_PATTERN,
+ mDefaultVibrationEffect = mVibrationEffectProxy.createWaveform(SIMPLE_VIBRATION_PATTERN,
SIMPLE_VIBRATION_AMPLITUDE, REPEAT_SIMPLE_VIBRATION_AT);
} else {
- mDefaultVibrationEffect = VibrationEffect.createWaveform(PULSE_PATTERN,
+ mDefaultVibrationEffect = mVibrationEffectProxy.createWaveform(PULSE_PATTERN,
PULSE_AMPLITUDE, REPEAT_VIBRATION_AT);
}
+
+ mIsHapticPlaybackSupportedByDevice =
+ mSystemSettingsUtil.isHapticPlaybackSupported(mContext);
+ }
+
+ @VisibleForTesting
+ public void setBlockOnRingingFuture(CompletableFuture<Void> future) {
+ mBlockOnRingingFuture = future;
}
public boolean startRinging(Call foregroundCall, boolean isHfpDeviceAttached) {
@@ -142,12 +210,21 @@
return false;
}
+ if (foregroundCall.getState() != CallState.RINGING) {
+ // Its possible for bluetooth to connect JUST as a call goes active, which would mean
+ // the call would start ringing again.
+ Log.i(this, "startRinging called for non-ringing foreground callid=%s",
+ foregroundCall.getId());
+ return false;
+ }
+
AudioManager audioManager =
(AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
boolean isVolumeOverZero = audioManager.getStreamVolume(AudioManager.STREAM_RING) > 0;
boolean shouldRingForContact = shouldRingForContact(foregroundCall.getContactUri());
boolean isRingtonePresent = !(mRingtoneFactory.getRingtone(foregroundCall) == null);
boolean isSelfManaged = foregroundCall.isSelfManaged();
+ boolean isSilentRingingRequested = foregroundCall.isSilentRingingRequested();
boolean isRingerAudible = isVolumeOverZero && shouldRingForContact && isRingtonePresent;
boolean hasExternalRinger = hasExternalRinger(foregroundCall);
@@ -163,21 +240,32 @@
boolean isTheaterModeOn = mSystemSettingsUtil.isTheaterModeOn(mContext);
boolean letDialerHandleRinging = mInCallController.doesConnectedDialerSupportRinging();
boolean endEarly = isTheaterModeOn || letDialerHandleRinging || isSelfManaged ||
- hasExternalRinger;
+ hasExternalRinger || isSilentRingingRequested;
if (endEarly) {
if (letDialerHandleRinging) {
- Log.addEvent(foregroundCall, LogUtils.Events.SKIP_RINGING);
+ Log.addEvent(foregroundCall, LogUtils.Events.SKIP_RINGING, "Dialer handles");
+ }
+ if (isSilentRingingRequested) {
+ Log.addEvent(foregroundCall, LogUtils.Events.SKIP_RINGING, "Silent ringing "
+ + "requested");
}
Log.i(this, "Ending early -- isTheaterModeOn=%s, letDialerHandleRinging=%s, " +
- "isSelfManaged=%s, hasExternalRinger=%s", isTheaterModeOn,
- letDialerHandleRinging, isSelfManaged, hasExternalRinger);
+ "isSelfManaged=%s, hasExternalRinger=%s, silentRingingRequested=%s",
+ isTheaterModeOn, letDialerHandleRinging, isSelfManaged, hasExternalRinger,
+ isSilentRingingRequested);
+ if (mBlockOnRingingFuture != null) {
+ mBlockOnRingingFuture.complete(null);
+ }
return shouldAcquireAudioFocus;
}
stopCallWaiting();
VibrationEffect effect;
+ CompletableFuture<Boolean> hapticsFuture = null;
+ // Determine if the settings and DND mode indicate that the vibrator can be used right now.
+ boolean isVibratorEnabled = isVibratorEnabled(mContext, foregroundCall);
if (isRingerAudible) {
mRingingCall = foregroundCall;
Log.addEvent(foregroundCall, LogUtils.Events.START_RINGER);
@@ -185,31 +273,121 @@
// call (for the purposes of direct-to-voicemail), the information about custom
// ringtones should be available by the time this code executes. We can safely
// request the custom ringtone from the call and expect it to be current.
- mRingtonePlayer.play(mRingtoneFactory, foregroundCall);
- effect = getVibrationEffectForCall(mRingtoneFactory, foregroundCall);
+ if (mSystemSettingsUtil.applyRampingRinger(mContext)
+ && mSystemSettingsUtil.enableRampingRingerFromDeviceConfig()) {
+ Log.i(this, "start ramping ringer.");
+ // configure vibration effect for ramping ringer.
+ int previousRampingRingerVibrationDuration = mRampingRingerVibrationDuration;
+ // get vibration duration in millisecond and round down to second.
+ mRampingRingerVibrationDuration =
+ mSystemSettingsUtil.getRampingRingerVibrationDuration() >= 0
+ ? mSystemSettingsUtil.getRampingRingerVibrationDuration() / 1000
+ : 0;
+ if (mSystemSettingsUtil.enableAudioCoupledVibrationForRampingRinger()) {
+ effect = getVibrationEffectForCall(mRingtoneFactory, foregroundCall);
+ } else {
+ effect = mDefaultVibrationEffect;
+ }
+
+ // configure volume shaper for ramping ringer
+ int previousRampingRingerDuration = mRampingRingerDuration;
+ mRampingRingerDuration =
+ mSystemSettingsUtil.getRampingRingerDuration() > 0
+ ? mSystemSettingsUtil.getRampingRingerDuration()
+ : DEFAULT_RAMPING_RINGER_DURATION;
+ if (mRampingRingerDuration != previousRampingRingerDuration
+ || mRampingRingerVibrationDuration != previousRampingRingerVibrationDuration
+ || mVolumeShaperConfig == null) {
+ float silencePoint = (float) (mRampingRingerVibrationDuration * 1000)
+ / (float) (mRampingRingerVibrationDuration * 1000 + mRampingRingerDuration);
+ mVolumeShaperConfig = new VolumeShaper.Configuration.Builder()
+ .setDuration(mRampingRingerVibrationDuration * 1000
+ + mRampingRingerDuration)
+ .setCurve(new float[] {0.f, silencePoint + EPSILON /*keep monotonicity*/,
+ 1.f}, new float[] {0.f, 0.f, 1.f})
+ .setInterpolatorType(VolumeShaper.Configuration.INTERPOLATOR_TYPE_LINEAR)
+ .build();
+ }
+ hapticsFuture = mRingtonePlayer.play(mRingtoneFactory, foregroundCall,
+ mVolumeShaperConfig, isVibratorEnabled);
+ } else {
+ // Ramping ringtone is not enabled.
+ hapticsFuture = mRingtonePlayer.play(mRingtoneFactory, foregroundCall, null,
+ isVibratorEnabled);
+ effect = getVibrationEffectForCall(mRingtoneFactory, foregroundCall);
+ }
} else {
- Log.i(this, "startRinging: skipping because ringer would not be audible. " +
+ String reason = String.format(
"isVolumeOverZero=%s, shouldRingForContact=%s, isRingtonePresent=%s",
isVolumeOverZero, shouldRingForContact, isRingtonePresent);
+ Log.i(this, "startRinging: skipping because ringer would not be audible. " + reason);
+ Log.addEvent(foregroundCall, LogUtils.Events.SKIP_RINGING, "Inaudible: " + reason);
effect = mDefaultVibrationEffect;
}
- if (shouldVibrate(mContext, foregroundCall) && !mIsVibrating && shouldRingForContact) {
- mVibrator.vibrate(effect, VIBRATION_ATTRIBUTES);
- mIsVibrating = true;
- } else if (mIsVibrating) {
- Log.addEvent(foregroundCall, LogUtils.Events.SKIP_VIBRATION, "already vibrating");
+ if (hapticsFuture != null) {
+ mVibrateFuture = hapticsFuture.thenAccept(isUsingAudioCoupledHaptics -> {
+ if (!isUsingAudioCoupledHaptics || !mIsHapticPlaybackSupportedByDevice) {
+ Log.i(this, "startRinging: fileHasHaptics=%b, hapticsSupported=%b",
+ isUsingAudioCoupledHaptics, mIsHapticPlaybackSupportedByDevice);
+ maybeStartVibration(foregroundCall, shouldRingForContact, effect,
+ isVibratorEnabled, isRingerAudible);
+ } else {
+ Log.addEvent(foregroundCall, LogUtils.Events.SKIP_VIBRATION,
+ "using audio-coupled haptics");
+ }
+ });
+ if (mBlockOnRingingFuture != null) {
+ mVibrateFuture.whenComplete((v, e) -> mBlockOnRingingFuture.complete(null));
+ }
+ } else {
+ if (mBlockOnRingingFuture != null) {
+ mBlockOnRingingFuture.complete(null);
+ }
+ Log.w(this, "startRinging: No haptics future; fallback to default behavior");
+ maybeStartVibration(foregroundCall, shouldRingForContact, effect, isVibratorEnabled,
+ isRingerAudible);
}
return shouldAcquireAudioFocus;
}
+ private void maybeStartVibration(Call foregroundCall, boolean shouldRingForContact,
+ VibrationEffect effect, boolean isVibrationEnabled, boolean isRingerAudible) {
+
+ if (isVibrationEnabled
+ && !mIsVibrating && shouldRingForContact) {
+ if (mSystemSettingsUtil.applyRampingRinger(mContext)
+ && mSystemSettingsUtil.enableRampingRingerFromDeviceConfig()
+ && isRingerAudible) {
+ Log.i(this, "start vibration for ramping ringer.");
+ mVibrator.vibrate(effect, VIBRATION_ATTRIBUTES);
+ mIsVibrating = true;
+ } else {
+ Log.i(this, "start normal vibration.");
+ mVibrator.vibrate(effect, VIBRATION_ATTRIBUTES);
+ mIsVibrating = true;
+ }
+ } else if (mIsVibrating) {
+ Log.addEvent(foregroundCall, LogUtils.Events.SKIP_VIBRATION, "already vibrating");
+ }
+ }
+
private VibrationEffect getVibrationEffectForCall(RingtoneFactory factory, Call call) {
VibrationEffect effect = null;
Ringtone ringtone = factory.getRingtone(call);
Uri ringtoneUri = ringtone != null ? ringtone.getUri() : null;
if (ringtoneUri != null) {
- effect = VibrationEffect.get(ringtoneUri, mContext);
+ try {
+ effect = mVibrationEffectProxy.get(ringtoneUri, mContext);
+ } catch (IllegalArgumentException iae) {
+ // Deep in the bowels of the VibrationEffect class it is possible for an
+ // IllegalArgumentException to be thrown if there is an invalid URI specified in the
+ // device config, or a content provider failure. Rather than crashing the Telecom
+ // process we will just use the default vibration effect.
+ Log.e(this, iae, "getVibrationEffectForCall: failed to get vibration effect");
+ effect = null;
+ }
}
if (effect == null) {
@@ -219,12 +397,16 @@
}
public void startCallWaiting(Call call) {
+ startCallWaiting(call, null);
+ }
+
+ public void startCallWaiting(Call call, String reason) {
if (mSystemSettingsUtil.isTheaterModeOn(mContext)) {
return;
}
if (mInCallController.doesConnectedDialerSupportRinging()) {
- Log.addEvent(call, LogUtils.Events.SKIP_RINGING);
+ Log.addEvent(call, LogUtils.Events.SKIP_RINGING, "Dialer handles");
return;
}
@@ -238,7 +420,7 @@
stopRinging();
if (mCallWaitingPlayer == null) {
- Log.addEvent(call, LogUtils.Events.START_CALL_WAITING_TONE);
+ Log.addEvent(call, LogUtils.Events.START_CALL_WAITING_TONE, reason);
mCallWaitingCall = call;
mCallWaitingPlayer =
mPlayerFactory.createPlayer(InCallTonePlayer.TONE_CALL_WAITING);
@@ -254,6 +436,12 @@
mRingtonePlayer.stop();
+ // If we haven't started vibrating because we were waiting for the haptics info, cancel
+ // it and don't vibrate at all.
+ if (mVibrateFuture != null) {
+ mVibrateFuture.cancel(true);
+ }
+
if (mIsVibrating) {
Log.addEvent(mVibratingCall, LogUtils.Events.STOP_VIBRATOR);
mVibrator.cancel();
@@ -296,7 +484,7 @@
}
}
- private boolean shouldVibrate(Context context, Call call) {
+ private boolean isVibratorEnabled(Context context, Call call) {
AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
int ringerMode = audioManager.getRingerModeInternal();
boolean shouldVibrate;
@@ -327,6 +515,8 @@
if (!mVibrator.hasVibrator()) {
return false;
}
- return mSystemSettingsUtil.canVibrateWhenRinging(context);
+ return mSystemSettingsUtil.canVibrateWhenRinging(context)
+ || (mSystemSettingsUtil.applyRampingRinger(context)
+ && mSystemSettingsUtil.enableRampingRingerFromDeviceConfig());
}
}
diff --git a/src/com/android/server/telecom/RingtoneFactory.java b/src/com/android/server/telecom/RingtoneFactory.java
index b452338..4ea5008 100644
--- a/src/com/android/server/telecom/RingtoneFactory.java
+++ b/src/com/android/server/telecom/RingtoneFactory.java
@@ -16,12 +16,15 @@
package com.android.server.telecom;
+import android.annotation.Nullable;
import android.content.Context;
import android.content.pm.PackageManager;
import android.content.pm.UserInfo;
+import android.media.AudioAttributes;
import android.media.AudioManager;
import android.media.RingtoneManager;
import android.media.Ringtone;
+import android.media.VolumeShaper;
import android.net.Uri;
import android.os.UserHandle;
import android.os.UserManager;
@@ -52,7 +55,19 @@
mCallsManager = callsManager;
}
- public Ringtone getRingtone(Call incomingCall) {
+ /**
+ * Determines if a ringtone has haptic channels.
+ * @param ringtone The ringtone URI.
+ * @return {@code true} if there is a haptic channel, {@code false} otherwise.
+ */
+ public boolean hasHapticChannels(Ringtone ringtone) {
+ boolean hasHapticChannels = RingtoneManager.hasHapticChannels(ringtone.getUri());
+ Log.i(this, "hasHapticChannels %s -> %b", ringtone.getUri(), hasHapticChannels);
+ return hasHapticChannels;
+ }
+
+ public Ringtone getRingtone(Call incomingCall,
+ @Nullable VolumeShaper.Configuration volumeShaperConfig) {
// Use the default ringtone of the work profile if the contact is a work profile contact.
Context userContext = isWorkContact(incomingCall) ?
getWorkProfileContextForUser(mCallsManager.getCurrentUserHandle()) :
@@ -62,7 +77,7 @@
if(ringtoneUri != null && userContext != null) {
// Ringtone URI is explicitly specified. First, try to create a Ringtone with that.
- ringtone = RingtoneManager.getRingtone(userContext, ringtoneUri);
+ ringtone = RingtoneManager.getRingtone(userContext, ringtoneUri, volumeShaperConfig);
}
if(ringtone == null) {
// Contact didn't specify ringtone or custom Ringtone creation failed. Get default
@@ -78,14 +93,22 @@
if (defaultRingtoneUri == null) {
return null;
}
- ringtone = RingtoneManager.getRingtone(contextToUse, defaultRingtoneUri);
+ ringtone = RingtoneManager.getRingtone(
+ contextToUse, defaultRingtoneUri, volumeShaperConfig);
}
if (ringtone != null) {
- ringtone.setStreamType(AudioManager.STREAM_RING);
+ ringtone.setAudioAttributes(new AudioAttributes.Builder()
+ .setUsage(AudioAttributes.USAGE_NOTIFICATION_RINGTONE)
+ .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
+ .build());
}
return ringtone;
}
+ public Ringtone getRingtone(Call incomingCall) {
+ return getRingtone(incomingCall, null);
+ }
+
private Context getWorkProfileContextForUser(UserHandle userHandle) {
// UserManager.getEnabledProfiles returns the enabled profiles along with the user's handle
// itself (so we must filter out the user).
diff --git a/src/com/android/server/telecom/RoleManagerAdapter.java b/src/com/android/server/telecom/RoleManagerAdapter.java
new file mode 100644
index 0000000..a04ae57
--- /dev/null
+++ b/src/com/android/server/telecom/RoleManagerAdapter.java
@@ -0,0 +1,129 @@
+/*
+ * Copyright (C) 2018 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;
+
+import android.content.Intent;
+import android.os.UserHandle;
+
+import java.util.List;
+import java.util.concurrent.Executor;
+import java.util.function.IntConsumer;
+
+/**
+ * Provides a means of wrapping {@code RoleManager} operations which Telecom uses to aid in testing
+ * and remove direct dependencies.
+ */
+public interface RoleManagerAdapter {
+
+ /**
+ * The name of the dialer role.
+ *
+ * @see Intent#ACTION_DIAL
+ */
+ String ROLE_DIALER = "android.app.role.DIALER";
+
+ /**
+ * Returns the package name of the app which fills the {@link android.app.role.RoleManager} call
+ * redirection role.
+ * @return the package name of the app filling the role, {@code null} otherwise}.
+ */
+ String getDefaultCallRedirectionApp();
+
+ /**
+ * Override the {@link android.app.role.RoleManager} call redirection app with another value.
+ * Used for testing purposes only.
+ * @param packageName Package name of the app to fill the call redirection role. Where
+ * {@code null}, the override is removed.
+ */
+ void setTestDefaultCallRedirectionApp(String packageName);
+
+ /**
+ * Returns the package name of the app which fills the {@link android.app.role.RoleManager} call
+ * screening role.
+ * @return the package name of the app filling the role, {@code null} otherwise}.
+ */
+ String getDefaultCallScreeningApp();
+
+ /**
+ * Override the {@link android.app.role.RoleManager} call screening app with another value.
+ * Used for testing purposes only.
+ * @param packageName Package name of the app to fill the call screening role. Where
+ * {@code null}, the override is removed.
+ */
+ void setTestDefaultCallScreeningApp(String packageName);
+
+ /**
+ * Returns the package name of the app which fills the {@link android.app.role.RoleManager}
+ * {@link android.app.role.RoleManager#ROLE_DIALER} role.
+ * @return the package name of the app filling the role, {@code null} otherwise}.
+ */
+ String getDefaultDialerApp(int user);
+
+ /**
+ * Observe changes to the package name of the app which fills the
+ * {@link android.app.role.RoleManager} {@link android.app.role.RoleManager#ROLE_DIALER} role.
+ */
+ void observeDefaultDialerApp(Executor executor, IntConsumer observer);
+
+ /**
+ * Override the {@link android.app.role.RoleManager} default dialer app with another value.
+ * Used for testing purposes only.
+ * @param packageName Package name of the app to fill the default dialer role. Where
+ * {@code null}, the override is removed.
+ */
+ void setTestDefaultDialer(String packageName);
+
+ /**
+ * @return List of package names of companion apps, or empty list if there are none.
+ */
+ List<String> getCallCompanionApps();
+
+ /**
+ * Set a package to be added to the list of the companion apps. Used for testing purposes only.
+ * @param packageName Package name of the app to be added or removed as an override call
+ * companion app.
+ * @param isAdded {@code true} if the specified package should be added, {@code false} if it
+ * should be removed.
+ */
+ void addOrRemoveTestCallCompanionApp(String packageName, boolean isAdded);
+
+ /**
+ * @return Package name of the car more app or {@code null} if there are no apps that match.
+ */
+ String getCarModeDialerApp();
+
+ /**
+ * Override the automotive app with another value. Used for testing purposes only.
+ * @param packageName Package name of the automotive app. Where
+ * {@code null}, the override is removed.
+ */
+ void setTestAutoModeApp(String packageName);
+
+ /**
+ * Using role manager needs to know the current user handle. Need to make sure the role manager
+ * adapter can pass this to role manager. As it changes, we'll pass it in.
+ * @param currentUserHandle The new user handle.
+ */
+ void setCurrentUserHandle(UserHandle currentUserHandle);
+
+ /**
+ * Returns the application label that corresponds to the given package name.
+ * @param packageName A valid package name.
+ * @return Application label for the given package name, or null if not found.
+ */
+ String getApplicationLabelForPackageName(String packageName);
+}
diff --git a/src/com/android/server/telecom/RoleManagerAdapterImpl.java b/src/com/android/server/telecom/RoleManagerAdapterImpl.java
new file mode 100644
index 0000000..6f3fddd
--- /dev/null
+++ b/src/com/android/server/telecom/RoleManagerAdapterImpl.java
@@ -0,0 +1,237 @@
+/*
+ * Copyright (C) 2018 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;
+
+import android.app.role.RoleManager;
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
+import android.os.UserHandle;
+import android.telecom.Log;
+
+import com.android.internal.util.IndentingPrintWriter;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.Executor;
+import java.util.function.IntConsumer;
+import java.util.stream.Collectors;
+
+public class RoleManagerAdapterImpl implements RoleManagerAdapter {
+ private static final String ROLE_CALL_REDIRECTION_APP = RoleManager.ROLE_CALL_REDIRECTION;
+ private static final String ROLE_CALL_SCREENING = RoleManager.ROLE_CALL_SCREENING;
+ private static final String ROLE_DIALER = RoleManager.ROLE_DIALER;
+
+ private String mOverrideDefaultCallRedirectionApp = null;
+ private String mOverrideDefaultCallScreeningApp = null;
+ private String mOverrideDefaultCarModeApp = null;
+ private String mOverrideDefaultDialerApp = null;
+ private List<String> mOverrideCallCompanionApps = new ArrayList<>();
+ private Context mContext;
+ private RoleManager mRoleManager;
+ private UserHandle mCurrentUserHandle;
+
+ public RoleManagerAdapterImpl(Context context, RoleManager roleManager) {
+ mContext = context;
+ mRoleManager = roleManager;
+ }
+
+ @Override
+ public String getDefaultCallRedirectionApp() {
+ if (mOverrideDefaultCallRedirectionApp != null) {
+ return mOverrideDefaultCallRedirectionApp;
+ }
+ return getRoleManagerCallRedirectionApp();
+ }
+
+ @Override
+ public void setTestDefaultCallRedirectionApp(String packageName) {
+ mOverrideDefaultCallRedirectionApp = packageName;
+ }
+
+ @Override
+ public String getDefaultCallScreeningApp() {
+ if (mOverrideDefaultCallScreeningApp != null) {
+ return mOverrideDefaultCallScreeningApp;
+ }
+ return getRoleManagerCallScreeningApp();
+ }
+
+ @Override
+ public void setTestDefaultCallScreeningApp(String packageName) {
+ mOverrideDefaultCallScreeningApp = packageName;
+ }
+
+ @Override
+ public String getDefaultDialerApp(int user) {
+ if (mOverrideDefaultDialerApp != null) {
+ return mOverrideDefaultDialerApp;
+ }
+ return getRoleManagerDefaultDialerApp(user);
+ }
+
+ @Override
+ public void observeDefaultDialerApp(Executor executor, IntConsumer observer) {
+ mRoleManager.addOnRoleHoldersChangedListenerAsUser(executor, (roleName, user) ->
+ observer.accept(user.getIdentifier()), UserHandle.ALL);
+ }
+
+ @Override
+ public void setTestDefaultDialer(String packageName) {
+ mOverrideDefaultDialerApp = packageName;
+ }
+
+ @Override
+ public List<String> getCallCompanionApps() {
+ List<String> callCompanionApps = new ArrayList<>();
+ callCompanionApps.addAll(mOverrideCallCompanionApps);
+ return callCompanionApps;
+ }
+
+ @Override
+ public void addOrRemoveTestCallCompanionApp(String packageName, boolean isAdded) {
+ if (isAdded) {
+ mOverrideCallCompanionApps.add(packageName);
+ } else {
+ mOverrideCallCompanionApps.remove(packageName);
+ }
+ }
+
+ @Override
+ public String getCarModeDialerApp() {
+ if (mOverrideDefaultCarModeApp != null) {
+ return mOverrideDefaultCarModeApp;
+ }
+ return getRoleManagerCarModeDialerApp();
+ }
+
+ @Override
+ public void setTestAutoModeApp(String packageName) {
+ mOverrideDefaultCarModeApp = packageName;
+ }
+
+ @Override
+ public void setCurrentUserHandle(UserHandle currentUserHandle) {
+ mCurrentUserHandle = currentUserHandle;
+ }
+
+ private String getRoleManagerCallScreeningApp() {
+ List<String> roleHolders = mRoleManager.getRoleHoldersAsUser(ROLE_CALL_SCREENING,
+ mCurrentUserHandle);
+ if (roleHolders == null || roleHolders.isEmpty()) {
+ return null;
+ }
+ return roleHolders.get(0);
+ }
+
+ private String getRoleManagerDefaultDialerApp(int user) {
+ List<String> roleHolders = mRoleManager.getRoleHoldersAsUser(ROLE_DIALER,
+ new UserHandle(user));
+ if (roleHolders == null || roleHolders.isEmpty()) {
+ return null;
+ }
+ return roleHolders.get(0);
+ }
+
+ // TODO in R: query and return car mode apps
+ private String getRoleManagerCarModeDialerApp() {
+ return null;
+ }
+
+ // TODO in R: Use companion app manager
+ private List<String> getRoleManagerCallCompanionApps() {
+ return new ArrayList<>();
+ }
+
+ private String getRoleManagerCallRedirectionApp() {
+ List<String> roleHolders = mRoleManager.getRoleHoldersAsUser(ROLE_CALL_REDIRECTION_APP,
+ mCurrentUserHandle);
+ if (roleHolders == null || roleHolders.isEmpty()) {
+ return null;
+ }
+ return roleHolders.get(0);
+ }
+
+ /**
+ * Returns the application label that corresponds to the given package name
+ *
+ * @param packageName A valid package name.
+ *
+ * @return Application label for the given package name, or null if not found.
+ */
+ @Override
+ public String getApplicationLabelForPackageName(String packageName) {
+ PackageManager pm = mContext.getPackageManager();
+ ApplicationInfo info = null;
+ try {
+ info = pm.getApplicationInfo(packageName, 0);
+ } catch (PackageManager.NameNotFoundException e) {
+ Log.d(this, "Application info not found for packageName " + packageName);
+ }
+ if (info == null) {
+ return packageName;
+ } else {
+ return info.loadLabel(pm).toString();
+ }
+ }
+
+ /**
+ * Dumps the state of the {@link InCallController}.
+ *
+ * @param pw The {@code IndentingPrintWriter} to write the state to.
+ */
+ public void dump(IndentingPrintWriter pw) {
+ pw.print("DefaultCallRedirectionApp: ");
+ if (mOverrideDefaultCallRedirectionApp != null) {
+ pw.print("(override ");
+ pw.print(mOverrideDefaultCallRedirectionApp);
+ pw.print(") ");
+ pw.print(getRoleManagerCallRedirectionApp());
+ }
+ pw.println();
+
+ pw.print("DefaultCallScreeningApp: ");
+ if (mOverrideDefaultCallScreeningApp != null) {
+ pw.print("(override ");
+ pw.print(mOverrideDefaultCallScreeningApp);
+ pw.print(") ");
+ pw.print(getRoleManagerCallScreeningApp());
+ }
+ pw.println();
+
+ pw.print("DefaultCarModeDialerApp: ");
+ if (mOverrideDefaultCarModeApp != null) {
+ pw.print("(override ");
+ pw.print(mOverrideDefaultCarModeApp);
+ pw.print(") ");
+ pw.print(getRoleManagerCarModeDialerApp());
+ }
+ pw.println();
+
+ pw.print("DefaultCallCompanionApps: ");
+ if (mOverrideCallCompanionApps != null) {
+ pw.print("(override ");
+ pw.print(mOverrideCallCompanionApps.stream().collect(Collectors.joining(", ")));
+ pw.print(") ");
+ List<String> appsInRole = getRoleManagerCallCompanionApps();
+ if (appsInRole != null) {
+ pw.print(appsInRole.stream().collect(Collectors.joining(", ")));
+ }
+ }
+ pw.println();
+ }
+}
diff --git a/src/com/android/server/telecom/ServiceBinder.java b/src/com/android/server/telecom/ServiceBinder.java
index f15570b..c64fc73 100644
--- a/src/com/android/server/telecom/ServiceBinder.java
+++ b/src/com/android/server/telecom/ServiceBinder.java
@@ -39,7 +39,7 @@
* Subclasses supply the service intent and component name and this class will invoke protected
* methods when the class is bound, unbound, or upon failure.
*/
-abstract class ServiceBinder {
+public abstract class ServiceBinder {
/**
* Callback to notify after a binding succeeds or fails.
@@ -73,19 +73,22 @@
// Reset any abort request if we're asked to bind again.
clearAbort();
- if (!mCallbacks.isEmpty()) {
- // Binding already in progress, append to the list of callbacks and bail out.
+ synchronized (mCallbacks) {
+ if (!mCallbacks.isEmpty()) {
+ // Binding already in progress, append to the list of callbacks and bail out.
+ mCallbacks.add(callback);
+ return;
+ }
mCallbacks.add(callback);
- return;
}
- mCallbacks.add(callback);
if (mServiceConnection == null) {
Intent serviceIntent = new Intent(mServiceAction).setComponent(mComponentName);
ServiceConnection connection = new ServiceBinderConnection(call);
Log.addEvent(call, LogUtils.Events.BIND_CS, mComponentName);
- final int bindingFlags = Context.BIND_AUTO_CREATE | Context.BIND_FOREGROUND_SERVICE;
+ final int bindingFlags = Context.BIND_AUTO_CREATE | Context.BIND_FOREGROUND_SERVICE
+ | Context.BIND_ALLOW_BACKGROUND_ACTIVITY_STARTS;
final boolean isBound;
if (mUserHandle != null) {
isBound = mContext.bindServiceAsUser(serviceIntent, connection, bindingFlags,
@@ -351,10 +354,16 @@
* outstanding callbacks is cleared afterwards.
*/
private void handleSuccessfulConnection() {
- for (BindCallback callback : mCallbacks) {
+ // Make a copy so that we don't have a deadlock inside one of the callbacks.
+ Set<BindCallback> callbacksCopy = new ArraySet<>();
+ synchronized (mCallbacks) {
+ callbacksCopy.addAll(mCallbacks);
+ mCallbacks.clear();
+ }
+
+ for (BindCallback callback : callbacksCopy) {
callback.onSuccess();
}
- mCallbacks.clear();
}
/**
@@ -362,10 +371,16 @@
* outstanding callbacks is cleared afterwards.
*/
private void handleFailedConnection() {
- for (BindCallback callback : mCallbacks) {
+ // Make a copy so that we don't have a deadlock inside one of the callbacks.
+ Set<BindCallback> callbacksCopy = new ArraySet<>();
+ synchronized (mCallbacks) {
+ callbacksCopy.addAll(mCallbacks);
+ mCallbacks.clear();
+ }
+
+ for (BindCallback callback : callbacksCopy) {
callback.onFailure();
}
- mCallbacks.clear();
}
/**
diff --git a/src/com/android/server/telecom/SystemSettingsUtil.java b/src/com/android/server/telecom/SystemSettingsUtil.java
index 3c75e4d..62e1a68 100644
--- a/src/com/android/server/telecom/SystemSettingsUtil.java
+++ b/src/com/android/server/telecom/SystemSettingsUtil.java
@@ -17,7 +17,10 @@
package com.android.server.telecom;
import android.content.Context;
+import android.media.AudioManager;
+import android.provider.DeviceConfig;
import android.provider.Settings;
+import android.telecom.Log;
import com.android.internal.annotations.VisibleForTesting;
@@ -27,6 +30,20 @@
@VisibleForTesting
public class SystemSettingsUtil {
+ /** Flag for ringer ramping time in milliseconds. */
+ private static final String RAMPING_RINGER_DURATION_MILLIS = "ramping_ringer_duration";
+
+ /** Flag for vibration time in milliseconds before ramping ringer starts. */
+ private static final String RAMPING_RINGER_VIBRATION_DURATION =
+ "ramping_ringer_vibration_duration";
+
+ /** Flag for whether or not to apply ramping ringer on incoming phone calls. */
+ private static final String RAMPING_RINGER_ENABLED = "ramping_ringer_enabled";
+
+ /** Flag for whether or not to support audio coupled haptics in ramping ringer. */
+ private static final String RAMPING_RINGER_AUDIO_COUPLED_VIBRATION_ENABLED =
+ "ramping_ringer_audio_coupled_vibration_enabled";
+
public boolean isTheaterModeOn(Context context) {
return Settings.Global.getInt(context.getContentResolver(), Settings.Global.THEATER_MODE_ON,
0) == 1;
@@ -36,4 +53,44 @@
return Settings.System.getInt(context.getContentResolver(),
Settings.System.VIBRATE_WHEN_RINGING, 0) != 0;
}
+
+ public boolean isEnhancedCallBlockingEnabled(Context context) {
+ return Settings.System.getInt(context.getContentResolver(),
+ Settings.System.DEBUG_ENABLE_ENHANCED_CALL_BLOCKING, 0) != 0;
+ }
+
+ public boolean setEnhancedCallBlockingEnabled(Context context, boolean enabled) {
+ return Settings.System.putInt(context.getContentResolver(),
+ Settings.System.DEBUG_ENABLE_ENHANCED_CALL_BLOCKING, enabled ? 1 : 0);
+ }
+
+ public boolean applyRampingRinger(Context context) {
+ return Settings.Global.getInt(context.getContentResolver(),
+ Settings.Global.APPLY_RAMPING_RINGER, 0) == 1;
+ }
+
+ public boolean enableRampingRingerFromDeviceConfig() {
+ return DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_TELEPHONY, RAMPING_RINGER_ENABLED,
+ false);
+ }
+
+ public boolean enableAudioCoupledVibrationForRampingRinger() {
+ return DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_TELEPHONY,
+ RAMPING_RINGER_AUDIO_COUPLED_VIBRATION_ENABLED, false);
+ }
+
+ public int getRampingRingerDuration() {
+ return DeviceConfig.getInt(DeviceConfig.NAMESPACE_TELEPHONY,
+ RAMPING_RINGER_DURATION_MILLIS, -1);
+ }
+
+ public int getRampingRingerVibrationDuration() {
+ return DeviceConfig.getInt(DeviceConfig.NAMESPACE_TELEPHONY,
+ RAMPING_RINGER_VIBRATION_DURATION, 0);
+ }
+
+ public boolean isHapticPlaybackSupported(Context context) {
+ return context.getSystemService(AudioManager.class).isHapticPlaybackSupported();
+ }
}
+
diff --git a/src/com/android/server/telecom/SystemStateHelper.java b/src/com/android/server/telecom/SystemStateHelper.java
new file mode 100644
index 0000000..69a46c6
--- /dev/null
+++ b/src/com/android/server/telecom/SystemStateHelper.java
@@ -0,0 +1,210 @@
+/*
+ * Copyright (C) 2015 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;
+
+import android.app.UiModeManager;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.res.Configuration;
+import android.hardware.Sensor;
+import android.hardware.SensorEvent;
+import android.hardware.SensorEventListener;
+import android.hardware.SensorManager;
+import android.telecom.Log;
+
+import java.util.Set;
+import java.util.concurrent.CopyOnWriteArraySet;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicBoolean;
+
+/**
+ * Provides various system states to the rest of the telecom codebase.
+ */
+public class SystemStateHelper {
+ public static interface SystemStateListener {
+ public void onCarModeChanged(boolean isCarMode);
+ }
+
+ private final Context mContext;
+ private final BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ Log.startSession("SSP.oR");
+ try {
+ String action = intent.getAction();
+ if (UiModeManager.ACTION_ENTER_CAR_MODE.equals(action)) {
+ onEnterCarMode();
+ } else if (UiModeManager.ACTION_EXIT_CAR_MODE.equals(action)) {
+ onExitCarMode();
+ } else {
+ Log.w(this, "Unexpected intent received: %s", intent.getAction());
+ }
+ } finally {
+ Log.endSession();
+ }
+ }
+ };
+
+ private Set<SystemStateListener> mListeners = new CopyOnWriteArraySet<>();
+ private boolean mIsCarMode;
+
+ public SystemStateHelper(Context context) {
+ mContext = context;
+
+ IntentFilter intentFilter = new IntentFilter(UiModeManager.ACTION_ENTER_CAR_MODE);
+ intentFilter.addAction(UiModeManager.ACTION_EXIT_CAR_MODE);
+ mContext.registerReceiver(mBroadcastReceiver, intentFilter);
+ Log.i(this, "Registering car mode receiver: %s", intentFilter);
+
+ mIsCarMode = getSystemCarMode();
+ }
+
+ public void addListener(SystemStateListener listener) {
+ if (listener != null) {
+ mListeners.add(listener);
+ }
+ }
+
+ public boolean removeListener(SystemStateListener listener) {
+ return mListeners.remove(listener);
+ }
+
+ public boolean isCarMode() {
+ return mIsCarMode;
+ }
+
+ public boolean isDeviceAtEar() {
+ return isDeviceAtEar(mContext);
+ }
+
+ /**
+ * Returns a guess whether the phone is up to the user's ear. Use the proximity sensor and
+ * the gravity sensor to make a guess
+ * @return true if the proximity sensor is activated, the magnitude of gravity in directions
+ * parallel to the screen is greater than some configurable threshold, and the
+ * y-component of gravity isn't less than some other configurable threshold.
+ */
+ public static boolean isDeviceAtEar(Context context) {
+ SensorManager sm = context.getSystemService(SensorManager.class);
+ if (sm == null) {
+ return false;
+ }
+ Sensor grav = sm.getDefaultSensor(Sensor.TYPE_GRAVITY);
+ Sensor proximity = sm.getDefaultSensor(Sensor.TYPE_PROXIMITY);
+ if (grav == null || proximity == null) {
+ return false;
+ }
+
+ AtomicBoolean result = new AtomicBoolean(true);
+ CountDownLatch gravLatch = new CountDownLatch(1);
+ CountDownLatch proxLatch = new CountDownLatch(1);
+
+ final double xyGravityThreshold = context.getResources().getFloat(
+ R.dimen.device_on_ear_xy_gravity_threshold);
+ final double yGravityNegativeThreshold = context.getResources().getFloat(
+ R.dimen.device_on_ear_y_gravity_negative_threshold);
+
+ SensorEventListener listener = new SensorEventListener() {
+ @Override
+ public void onSensorChanged(SensorEvent event) {
+ if (event.sensor.getType() == Sensor.TYPE_GRAVITY) {
+ if (gravLatch.getCount() == 0) {
+ return;
+ }
+ double xyMag = Math.sqrt(event.values[0] * event.values[0]
+ + event.values[1] * event.values[1]);
+ if (xyMag < xyGravityThreshold
+ || event.values[1] < yGravityNegativeThreshold) {
+ result.set(false);
+ }
+ gravLatch.countDown();
+ } else if (event.sensor.getType() == Sensor.TYPE_PROXIMITY) {
+ if (proxLatch.getCount() == 0) {
+ return;
+ }
+ if (event.values[0] >= proximity.getMaximumRange()) {
+ result.set(false);
+ }
+ proxLatch.countDown();
+ }
+ }
+
+ @Override
+ public void onAccuracyChanged(Sensor sensor, int accuracy) {
+ }
+ };
+
+ try {
+ sm.registerListener(listener, grav, SensorManager.SENSOR_DELAY_FASTEST);
+ sm.registerListener(listener, proximity, SensorManager.SENSOR_DELAY_FASTEST);
+ boolean accelValid = gravLatch.await(100, TimeUnit.MILLISECONDS);
+ boolean proxValid = proxLatch.await(100, TimeUnit.MILLISECONDS);
+ if (accelValid && proxValid) {
+ return result.get();
+ } else {
+ Log.w(SystemStateHelper.class.getSimpleName(),
+ "Timed out waiting for sensors: %b %b", accelValid, proxValid);
+ return false;
+ }
+ } catch (InterruptedException e) {
+ return false;
+ } finally {
+ sm.unregisterListener(listener);
+ }
+ }
+
+ private void onEnterCarMode() {
+ if (!mIsCarMode) {
+ Log.i(this, "Entering carmode");
+ mIsCarMode = true;
+ notifyCarMode();
+ }
+ }
+
+ private void onExitCarMode() {
+ if (mIsCarMode) {
+ Log.i(this, "Exiting carmode");
+ mIsCarMode = false;
+ notifyCarMode();
+ }
+ }
+
+ private void notifyCarMode() {
+ for (SystemStateListener listener : mListeners) {
+ listener.onCarModeChanged(mIsCarMode);
+ }
+ }
+
+ /**
+ * Checks the system for the current car mode.
+ *
+ * @return True if in car mode, false otherwise.
+ */
+ private boolean getSystemCarMode() {
+ UiModeManager uiModeManager =
+ (UiModeManager) mContext.getSystemService(Context.UI_MODE_SERVICE);
+
+ if (uiModeManager != null) {
+ return uiModeManager.getCurrentModeType() == Configuration.UI_MODE_TYPE_CAR;
+ }
+
+ return false;
+ }
+}
diff --git a/src/com/android/server/telecom/SystemStateProvider.java b/src/com/android/server/telecom/SystemStateProvider.java
deleted file mode 100644
index e1938b1..0000000
--- a/src/com/android/server/telecom/SystemStateProvider.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Copyright (C) 2015 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;
-
-import android.app.UiModeManager;
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.content.res.Configuration;
-import android.telecom.Log;
-
-import java.util.Set;
-import java.util.concurrent.CopyOnWriteArraySet;
-
-/**
- * Provides various system states to the rest of the telecom codebase. So far, that's only car-mode.
- */
-public class SystemStateProvider {
-
- public static interface SystemStateListener {
- public void onCarModeChanged(boolean isCarMode);
- }
-
- private final Context mContext;
- private final BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
- @Override
- public void onReceive(Context context, Intent intent) {
- Log.startSession("SSP.oR");
- try {
- String action = intent.getAction();
- if (UiModeManager.ACTION_ENTER_CAR_MODE.equals(action)) {
- onEnterCarMode();
- } else if (UiModeManager.ACTION_EXIT_CAR_MODE.equals(action)) {
- onExitCarMode();
- } else {
- Log.w(this, "Unexpected intent received: %s", intent.getAction());
- }
- } finally {
- Log.endSession();
- }
- }
- };
-
- private Set<SystemStateListener> mListeners = new CopyOnWriteArraySet<>();
- private boolean mIsCarMode;
-
- public SystemStateProvider(Context context) {
- mContext = context;
-
- IntentFilter intentFilter = new IntentFilter(UiModeManager.ACTION_ENTER_CAR_MODE);
- intentFilter.addAction(UiModeManager.ACTION_EXIT_CAR_MODE);
- mContext.registerReceiver(mBroadcastReceiver, intentFilter);
- Log.i(this, "Registering car mode receiver: %s", intentFilter);
-
- mIsCarMode = getSystemCarMode();
- }
-
- public void addListener(SystemStateListener listener) {
- if (listener != null) {
- mListeners.add(listener);
- }
- }
-
- public boolean removeListener(SystemStateListener listener) {
- return mListeners.remove(listener);
- }
-
- public boolean isCarMode() {
- return mIsCarMode;
- }
-
- private void onEnterCarMode() {
- if (!mIsCarMode) {
- Log.i(this, "Entering carmode");
- mIsCarMode = true;
- notifyCarMode();
- }
- }
-
- private void onExitCarMode() {
- if (mIsCarMode) {
- Log.i(this, "Exiting carmode");
- mIsCarMode = false;
- notifyCarMode();
- }
- }
-
- private void notifyCarMode() {
- for (SystemStateListener listener : mListeners) {
- listener.onCarModeChanged(mIsCarMode);
- }
- }
-
- /**
- * Checks the system for the current car mode.
- *
- * @return True if in car mode, false otherwise.
- */
- private boolean getSystemCarMode() {
- UiModeManager uiModeManager =
- (UiModeManager) mContext.getSystemService(Context.UI_MODE_SERVICE);
-
- if (uiModeManager != null) {
- return uiModeManager.getCurrentModeType() == Configuration.UI_MODE_TYPE_CAR;
- }
-
- return false;
- }
-}
diff --git a/src/com/android/server/telecom/TelecomBroadcastIntentProcessor.java b/src/com/android/server/telecom/TelecomBroadcastIntentProcessor.java
index a51ef73..ca44cd4 100644
--- a/src/com/android/server/telecom/TelecomBroadcastIntentProcessor.java
+++ b/src/com/android/server/telecom/TelecomBroadcastIntentProcessor.java
@@ -21,6 +21,7 @@
import android.os.UserHandle;
import android.telecom.Log;
+import com.android.server.telecom.ui.CallRedirectionConfirmDialogActivity;
import com.android.server.telecom.ui.ConfirmCallDialogActivity;
public final class TelecomBroadcastIntentProcessor {
@@ -64,6 +65,27 @@
public static final String ACTION_CANCEL_CALL =
"com.android.server.telecom.CANCEL_CALL";
+ /**
+ * The action used to proceed with a redirected call being confirmed via
+ * {@link com.android.server.telecom.ui.CallRedirectionConfirmDialogActivity}.
+ */
+ public static final String ACTION_PLACE_REDIRECTED_CALL =
+ "com.android.server.telecom.PROCEED_WITH_REDIRECTED_CALL";
+
+ /**
+ * The action used to confirm to proceed the call without redirection via
+ * {@link com.android.server.telecom.ui.CallRedirectionConfirmDialogActivity}.
+ */
+ public static final String ACTION_PLACE_UNREDIRECTED_CALL =
+ "com.android.server.telecom.PROCEED_WITH_UNREDIRECTED_CALL";
+
+ /**
+ * The action used to cancel a redirected call being confirmed via
+ * {@link com.android.server.telecom.ui.CallRedirectionConfirmDialogActivity}.
+ */
+ public static final String ACTION_CANCEL_REDIRECTED_CALL =
+ "com.android.server.telecom.CANCEL_REDIRECTED_CALL";
+
public static final String EXTRA_USERHANDLE = "userhandle";
private final Context mContext;
@@ -155,6 +177,36 @@
} finally {
Log.endSession();
}
+ } else if (ACTION_PLACE_REDIRECTED_CALL.equals(action)) {
+ Log.startSession("TBIP.aPRC");
+ try {
+ mCallsManager.processRedirectedOutgoingCallAfterUserInteraction(
+ intent.getStringExtra(CallRedirectionConfirmDialogActivity
+ .EXTRA_REDIRECTION_OUTGOING_CALL_ID),
+ ACTION_PLACE_REDIRECTED_CALL);
+ } finally {
+ Log.endSession();
+ }
+ } else if (ACTION_PLACE_UNREDIRECTED_CALL.equals(action)) {
+ Log.startSession("TBIP.aPUC");
+ try {
+ mCallsManager.processRedirectedOutgoingCallAfterUserInteraction(
+ intent.getStringExtra(CallRedirectionConfirmDialogActivity
+ .EXTRA_REDIRECTION_OUTGOING_CALL_ID),
+ ACTION_PLACE_UNREDIRECTED_CALL);
+ } finally {
+ Log.endSession();
+ }
+ } else if (ACTION_CANCEL_REDIRECTED_CALL.equals(action)) {
+ Log.startSession("TBIP.aCRC");
+ try {
+ mCallsManager.processRedirectedOutgoingCallAfterUserInteraction(
+ intent.getStringExtra(CallRedirectionConfirmDialogActivity
+ .EXTRA_REDIRECTION_OUTGOING_CALL_ID),
+ ACTION_CANCEL_REDIRECTED_CALL);
+ } finally {
+ Log.endSession();
+ }
}
}
diff --git a/src/com/android/server/telecom/TelecomServiceImpl.java b/src/com/android/server/telecom/TelecomServiceImpl.java
index 0db1764..997723b 100644
--- a/src/com/android/server/telecom/TelecomServiceImpl.java
+++ b/src/com/android/server/telecom/TelecomServiceImpl.java
@@ -29,6 +29,7 @@
import android.app.ActivityManager;
import android.app.AppOpsManager;
import android.content.ComponentName;
+import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
@@ -36,9 +37,11 @@
import android.content.res.Resources;
import android.net.Uri;
import android.os.Binder;
+import android.os.Build;
import android.os.Bundle;
import android.os.Process;
import android.os.UserHandle;
+import android.provider.Settings;
import android.telecom.Log;
import android.telecom.PhoneAccount;
import android.telecom.PhoneAccountHandle;
@@ -78,8 +81,29 @@
}
}
+ public interface SettingsSecureAdapter {
+ void putStringForUser(ContentResolver resolver, String name, String value, int userHandle);
+
+ String getStringForUser(ContentResolver resolver, String name, int userHandle);
+ }
+
+ static class SettingsSecureAdapterImpl implements SettingsSecureAdapter {
+ @Override
+ public void putStringForUser(ContentResolver resolver, String name, String value,
+ int userHandle) {
+ Settings.Secure.putStringForUser(resolver, name, value, userHandle);
+ }
+
+ @Override
+ public String getStringForUser(ContentResolver resolver, String name, int userHandle) {
+ return Settings.Secure.getStringForUser(resolver, name, userHandle);
+ }
+ }
+
private static final String TIME_LINE_ARG = "timeline";
private static final int DEFAULT_VIDEO_STATE = -1;
+ private static final String PERMISSION_HANDLE_CALL_INTENT =
+ "android.permission.HANDLE_CALL_INTENT";
private final ITelecomService.Stub mBinderImpl = new ITelecomService.Stub() {
@Override
@@ -110,10 +134,14 @@
}
@Override
- public PhoneAccountHandle getUserSelectedOutgoingPhoneAccount() {
+ public PhoneAccountHandle getUserSelectedOutgoingPhoneAccount(String callingPackage) {
synchronized (mLock) {
try {
Log.startSession("TSI.gUSOPA");
+ if (!isDialerOrPrivileged(callingPackage, "getDefaultOutgoingPhoneAccount")) {
+ throw new SecurityException("Only the default dialer, or caller with "
+ + "READ_PRIVILEGED_PHONE_STATE can call this method.");
+ }
final UserHandle callingUserHandle = Binder.getCallingUserHandle();
return mPhoneAccountRegistrar.getUserSelectedOutgoingPhoneAccount(
callingUserHandle);
@@ -381,19 +409,27 @@
}
@Override
- public PhoneAccountHandle getSimCallManager() {
- try {
- Log.startSession("TSI.gSCM");
- long token = Binder.clearCallingIdentity();
- int user;
+ public PhoneAccountHandle getSimCallManager(int subId) {
+ synchronized (mLock) {
try {
- user = ActivityManager.getCurrentUser();
- return getSimCallManagerForUser(user);
+ Log.startSession("TSI.gSCM");
+ final int callingUid = Binder.getCallingUid();
+ final int user = UserHandle.getUserId(callingUid);
+ long token = Binder.clearCallingIdentity();
+ try {
+ if (user != ActivityManager.getCurrentUser()) {
+ enforceCrossUserPermission(callingUid);
+ }
+ return mPhoneAccountRegistrar.getSimCallManager(subId, UserHandle.of(user));
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ } catch (Exception e) {
+ Log.e(this, e, "getSimCallManager");
+ throw e;
} finally {
- Binder.restoreCallingIdentity(token);
+ Log.endSession();
}
- } finally {
- Log.endSession();
}
}
@@ -457,7 +493,15 @@
if (account.hasCapabilities(PhoneAccount.CAPABILITY_MULTI_USER)) {
enforceRegisterMultiUser();
}
- enforceUserHandleMatchesCaller(account.getAccountHandle());
+ Bundle extras = account.getExtras();
+ if (extras != null
+ && extras.getBoolean(PhoneAccount.EXTRA_SKIP_CALL_FILTERING)) {
+ enforceRegisterSkipCallFiltering();
+ }
+ final int callingUid = Binder.getCallingUid();
+ if (callingUid != Process.SHELL_UID) {
+ enforceUserHandleMatchesCaller(account.getAccountHandle());
+ }
final long token = Binder.clearCallingIdentity();
try {
mPhoneAccountRegistrar.registerPhoneAccount(account);
@@ -654,7 +698,7 @@
// No need to synchronize
Resources resources = mContext.getResources();
return new ComponentName(
- resources.getString(R.string.ui_default_package),
+ TelecomServiceImpl.getSystemDialerPackage(mContext),
resources.getString(R.string.dialer_default_class));
} finally {
Log.endSession();
@@ -690,7 +734,7 @@
public String getSystemDialerPackage() {
try {
Log.startSession("TSI.gSDP");
- return mContext.getResources().getString(R.string.ui_default_package);
+ return TelecomServiceImpl.getSystemDialerPackage(mContext);
} finally {
Log.endSession();
}
@@ -1044,10 +1088,9 @@
phoneAccountHandle);
if (phoneAccountHandle != null &&
phoneAccountHandle.getComponentName() != null) {
- // TODO(sail): Add unit tests for adding incoming calls from a SIM call
- // manager.
- if (isCallerSimCallManager() && TelephonyUtil.isPstnComponentName(
- phoneAccountHandle.getComponentName())) {
+ if (isCallerSimCallManager(phoneAccountHandle)
+ && TelephonyUtil.isPstnComponentName(
+ phoneAccountHandle.getComponentName())) {
Log.v(this, "Allowing call manager to add incoming call with PSTN" +
" handle");
} else {
@@ -1310,17 +1353,8 @@
synchronized (mLock) {
long token = Binder.clearCallingIdentity();
try {
- final boolean result = mDefaultDialerCache.setDefaultDialer(
- packageName, ActivityManager.getCurrentUser());
- if (result) {
- final Intent intent =
- new Intent(TelecomManager.ACTION_DEFAULT_DIALER_CHANGED);
- intent.putExtra(TelecomManager.EXTRA_CHANGE_DEFAULT_DIALER_PACKAGE_NAME,
- packageName);
- mContext.sendBroadcastAsUser(intent,
- new UserHandle(ActivityManager.getCurrentUser()));
- }
- return result;
+ return mDefaultDialerCache.setDefaultDialer(packageName,
+ ActivityManager.getCurrentUser());
} finally {
Binder.restoreCallingIdentity(token);
}
@@ -1462,6 +1496,180 @@
Log.endSession();
}
}
+
+ /**
+ * See {@link TelecomManager#isInEmergencyCall()}
+ */
+ @Override
+ public boolean isInEmergencyCall() {
+ try {
+ Log.startSession("TSI.iIEC");
+ enforceModifyPermission();
+ synchronized (mLock) {
+ long token = Binder.clearCallingIdentity();
+ try {
+ boolean isInEmergencyCall = mCallsManager.isInEmergencyCall();
+ Log.i(this, "isInEmergencyCall: %b", isInEmergencyCall);
+ return isInEmergencyCall;
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ }
+ } finally {
+ Log.endSession();
+ }
+ }
+
+ /**
+ * See {@link TelecomManager#handleCallIntent(Intent)} ()}
+ */
+ @Override
+ public void handleCallIntent(Intent intent) {
+ try {
+ Log.startSession("TSI.hCI");
+ synchronized (mLock) {
+ mContext.enforceCallingOrSelfPermission(PERMISSION_HANDLE_CALL_INTENT,
+ "handleCallIntent is for internal use only.");
+
+ long token = Binder.clearCallingIdentity();
+ try {
+ Log.i(this, "handleCallIntent: handling call intent");
+ mCallIntentProcessorAdapter.processOutgoingCallIntent(mContext,
+ mCallsManager, intent, null /* callingPackage */);
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ }
+ } finally {
+ Log.endSession();
+ }
+ }
+
+ @Override
+ public void setTestDefaultCallRedirectionApp(String packageName) {
+ try {
+ Log.startSession("TSI.sTDCRA");
+ enforceModifyPermission();
+ if (!Build.IS_USERDEBUG) {
+ throw new SecurityException("Test-only API.");
+ }
+ synchronized (mLock) {
+ long token = Binder.clearCallingIdentity();
+ try {
+ mCallsManager.getRoleManagerAdapter().setTestDefaultCallRedirectionApp(
+ packageName);
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ }
+ } finally {
+ Log.endSession();
+ }
+ }
+
+ @Override
+ public void setTestDefaultCallScreeningApp(String packageName) {
+ try {
+ Log.startSession("TSI.sTDCSA");
+ enforceModifyPermission();
+ if (!Build.IS_USERDEBUG) {
+ throw new SecurityException("Test-only API.");
+ }
+ synchronized (mLock) {
+ long token = Binder.clearCallingIdentity();
+ try {
+ mCallsManager.getRoleManagerAdapter().setTestDefaultCallScreeningApp(
+ packageName);
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ }
+ } finally {
+ Log.endSession();
+ }
+ }
+
+ @Override
+ public void addOrRemoveTestCallCompanionApp(String packageName, boolean isAdded) {
+ try {
+ Log.startSession("TSI.aORTCCA");
+ enforceModifyPermission();
+ if (!Build.IS_USERDEBUG) {
+ throw new SecurityException("Test-only API.");
+ }
+ synchronized (mLock) {
+ long token = Binder.clearCallingIdentity();
+ try {
+ mCallsManager.getRoleManagerAdapter().addOrRemoveTestCallCompanionApp(
+ packageName, isAdded);
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ }
+ } finally {
+ Log.endSession();
+ }
+ }
+
+ @Override
+ public void setTestAutoModeApp(String packageName) {
+ try {
+ Log.startSession("TSI.sTAMA");
+ enforceModifyPermission();
+ if (!Build.IS_USERDEBUG) {
+ throw new SecurityException("Test-only API.");
+ }
+ synchronized (mLock) {
+ long token = Binder.clearCallingIdentity();
+ try {
+ mCallsManager.getRoleManagerAdapter().setTestAutoModeApp(packageName);
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ }
+ } finally {
+ Log.endSession();
+ }
+ }
+
+ @Override
+ public void setTestPhoneAcctSuggestionComponent(String flattenedComponentName) {
+ try {
+ Log.startSession("TSI.sPASA");
+ enforceModifyPermission();
+ if (Binder.getCallingUid() != Process.SHELL_UID
+ && Binder.getCallingUid() != Process.ROOT_UID) {
+ throw new SecurityException("Shell-only API.");
+ }
+ synchronized (mLock) {
+ PhoneAccountSuggestionHelper.setOverrideServiceName(flattenedComponentName);
+ }
+ } finally {
+ Log.endSession();
+ }
+ }
+
+ @Override
+ public void setTestDefaultDialer(String packageName) {
+ try {
+ Log.startSession("TSI.sTDD");
+ enforceModifyPermission();
+ if (Binder.getCallingUid() != Process.SHELL_UID
+ && Binder.getCallingUid() != Process.ROOT_UID) {
+ throw new SecurityException("Shell-only API.");
+ }
+ synchronized (mLock) {
+ long token = Binder.clearCallingIdentity();
+ try {
+ mCallsManager.getRoleManagerAdapter().setTestDefaultDialer(packageName);
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ }
+ } finally {
+ Log.endSession();
+ }
+ }
};
/**
@@ -1512,6 +1720,7 @@
private final UserCallIntentProcessorFactory mUserCallIntentProcessorFactory;
private final DefaultDialerCache mDefaultDialerCache;
private final SubscriptionManagerAdapter mSubscriptionManagerAdapter;
+ private final SettingsSecureAdapter mSettingsSecureAdapter;
private final TelecomSystem.SyncRoot mLock;
public TelecomServiceImpl(
@@ -1522,6 +1731,7 @@
UserCallIntentProcessorFactory userCallIntentProcessorFactory,
DefaultDialerCache defaultDialerCache,
SubscriptionManagerAdapter subscriptionManagerAdapter,
+ SettingsSecureAdapter settingsSecureAdapter,
TelecomSystem.SyncRoot lock) {
mContext = context;
mAppOpsManager = (AppOpsManager) mContext.getSystemService(Context.APP_OPS_SERVICE);
@@ -1535,6 +1745,23 @@
mDefaultDialerCache = defaultDialerCache;
mCallIntentProcessorAdapter = callIntentProcessorAdapter;
mSubscriptionManagerAdapter = subscriptionManagerAdapter;
+ mSettingsSecureAdapter = settingsSecureAdapter;
+
+ mDefaultDialerCache.observeDefaultDialerApplication(mContext.getMainExecutor(), userId -> {
+ String defaultDialer = mDefaultDialerCache.getDefaultDialerApplication(userId);
+ if (defaultDialer == null) {
+ // We are replacing the dialer, just wait for the upcoming callback.
+ return;
+ }
+ final Intent intent = new Intent(TelecomManager.ACTION_DEFAULT_DIALER_CHANGED)
+ .putExtra(TelecomManager.EXTRA_CHANGE_DEFAULT_DIALER_PACKAGE_NAME,
+ defaultDialer);
+ mContext.sendBroadcastAsUser(intent, UserHandle.of(userId));
+ });
+ }
+
+ public static String getSystemDialerPackage(Context context) {
+ return context.getResources().getString(com.android.internal.R.string.config_defaultDialer);
}
public ITelecomService.Stub getBinder() {
@@ -1693,6 +1920,13 @@
}
}
+ private void enforceRegisterSkipCallFiltering() {
+ if (!isCallerSystemApp()) {
+ throw new SecurityException(
+ "EXTRA_SKIP_CALL_FILTERING is only available to system apps.");
+ }
+ }
+
private void enforceUserHandleMatchesCaller(PhoneAccountHandle accountHandle) {
if (!Binder.getCallingUserHandle().equals(accountHandle.getUserHandle())) {
throw new SecurityException("Calling UserHandle does not match PhoneAccountHandle's");
@@ -1737,6 +1971,19 @@
}
}
+ private boolean isDialerOrPrivileged(String callingPackage, String message) {
+ // The system/default dialer can always read phone state - so that emergency calls will
+ // still work.
+ if (isPrivilegedDialerCalling(callingPackage)) {
+ return true;
+ }
+
+ mContext.enforceCallingOrSelfPermission(READ_PRIVILEGED_PHONE_STATE, message);
+ // SKIP checking run-time OP_READ_PHONE_STATE since caller or self has PRIVILEGED
+ // permission
+ return true;
+ }
+
private boolean isSelfManagedConnectionService(PhoneAccountHandle phoneAccountHandle) {
if (phoneAccountHandle != null) {
PhoneAccount phoneAccount = mPhoneAccountRegistrar.getPhoneAccountUnchecked(
@@ -1761,11 +2008,12 @@
Binder.getCallingUid(), callingPackage) == AppOpsManager.MODE_ALLOWED;
}
- private boolean isCallerSimCallManager() {
+ private boolean isCallerSimCallManager(PhoneAccountHandle targetPhoneAccount) {
long token = Binder.clearCallingIdentity();
PhoneAccountHandle accountHandle = null;
try {
- accountHandle = mPhoneAccountRegistrar.getSimCallManagerOfCurrentUser();
+ accountHandle = mPhoneAccountRegistrar.getSimCallManagerFromHandle(targetPhoneAccount,
+ mCallsManager.getCurrentUserHandle());
} finally {
Binder.restoreCallingIdentity(token);
}
@@ -1783,8 +2031,17 @@
private boolean isPrivilegedDialerCalling(String callingPackage) {
mAppOpsManager.checkPackage(Binder.getCallingUid(), callingPackage);
- return mDefaultDialerCache.isDefaultOrSystemDialer(
- callingPackage, Binder.getCallingUserHandle().getIdentifier());
+
+ // Note: Important to clear the calling identity since the code below calls into RoleManager
+ // to check who holds the dialer role, and that requires MANAGE_ROLE_HOLDERS permission
+ // which is a system permission.
+ long token = Binder.clearCallingIdentity();
+ try {
+ return mDefaultDialerCache.isDefaultOrSystemDialer(
+ callingPackage, Binder.getCallingUserHandle().getIdentifier());
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
}
private TelephonyManager getTelephonyManager() {
@@ -1809,4 +2066,24 @@
// If only TX or RX were set (or neither), the video state is valid.
return remainingState == 0;
}
+
+ private void broadcastCallScreeningAppChangedIntent(String componentName,
+ boolean isDefault) {
+ if (TextUtils.isEmpty(componentName)) {
+ return;
+ }
+
+ ComponentName broadcastComponentName = ComponentName.unflattenFromString(componentName);
+
+ if (broadcastComponentName != null) {
+ Intent intent = new Intent(TelecomManager
+ .ACTION_DEFAULT_CALL_SCREENING_APP_CHANGED);
+ intent.putExtra(TelecomManager
+ .EXTRA_IS_DEFAULT_CALL_SCREENING_APP, isDefault);
+ intent.putExtra(TelecomManager
+ .EXTRA_DEFAULT_CALL_SCREENING_APP_COMPONENT_NAME, componentName);
+ intent.setPackage(broadcastComponentName.getPackageName());
+ mContext.sendBroadcast(intent);
+ }
+ }
}
diff --git a/src/com/android/server/telecom/TelecomSystem.java b/src/com/android/server/telecom/TelecomSystem.java
index 3fd0e21..e772eb4 100644
--- a/src/com/android/server/telecom/TelecomSystem.java
+++ b/src/com/android/server/telecom/TelecomSystem.java
@@ -37,6 +37,7 @@
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.UserHandle;
+import android.os.UserManager;
import android.telecom.Log;
import android.telecom.PhoneAccountHandle;
@@ -96,6 +97,8 @@
.addDataAuthority(DialerCodeReceiver.TELECOM_SECRET_CODE_DEBUG_OFF, null);
DIALER_SECRET_CODE_FILTER
.addDataAuthority(DialerCodeReceiver.TELECOM_SECRET_CODE_MARK, null);
+ DIALER_SECRET_CODE_FILTER
+ .addDataAuthority(DialerCodeReceiver.TELECOM_SECRET_CODE_MENU, null);
}
private static TelecomSystem INSTANCE = null;
@@ -193,14 +196,16 @@
PhoneNumberUtilsAdapter phoneNumberUtilsAdapter,
IncomingCallNotifier incomingCallNotifier,
InCallTonePlayer.ToneGeneratorFactory toneGeneratorFactory,
- ClockProxy clockProxy) {
+ CallAudioRouteStateMachine.Factory callAudioRouteStateMachineFactory,
+ ClockProxy clockProxy,
+ RoleManagerAdapter roleManagerAdapter) {
mContext = context.getApplicationContext();
LogUtils.initLogging(mContext);
DefaultDialerManagerAdapter defaultDialerAdapter =
new DefaultDialerCache.DefaultDialerManagerAdapterImpl();
DefaultDialerCache defaultDialerCache = new DefaultDialerCache(mContext,
- defaultDialerAdapter, mLock);
+ defaultDialerAdapter, roleManagerAdapter, mLock);
Log.startSession("TS.init");
mPhoneAccountRegistrar = new PhoneAccountRegistrar(mContext, defaultDialerCache,
@@ -227,7 +232,7 @@
}
});
BluetoothDeviceManager bluetoothDeviceManager = new BluetoothDeviceManager(mContext,
- new BluetoothAdapterProxy(), mLock);
+ new BluetoothAdapterProxy());
BluetoothRouteManager bluetoothRouteManager = new BluetoothRouteManager(mContext, mLock,
bluetoothDeviceManager, new Timeouts.Adapter());
BluetoothStateReceiver bluetoothStateReceiver = new BluetoothStateReceiver(
@@ -235,18 +240,22 @@
mContext.registerReceiver(bluetoothStateReceiver, BluetoothStateReceiver.INTENT_FILTER);
WiredHeadsetManager wiredHeadsetManager = new WiredHeadsetManager(mContext);
- SystemStateProvider systemStateProvider = new SystemStateProvider(mContext);
+ SystemStateHelper systemStateHelper = new SystemStateHelper(mContext);
mMissedCallNotifier = missedCallNotifierImplFactory
.makeMissedCallNotifierImpl(mContext, mPhoneAccountRegistrar, defaultDialerCache);
+ CallerInfoLookupHelper callerInfoLookupHelper =
+ new CallerInfoLookupHelper(context, callerInfoAsyncQueryFactory,
+ mContactsAsyncHelper, mLock);
+
EmergencyCallHelper emergencyCallHelper = new EmergencyCallHelper(mContext,
- mContext.getResources().getString(R.string.ui_default_package), timeoutsAdapter);
+ TelecomServiceImpl.getSystemDialerPackage(mContext), timeoutsAdapter);
InCallControllerFactory inCallControllerFactory = new InCallControllerFactory() {
@Override
public InCallController create(Context context, SyncRoot lock,
- CallsManager callsManager, SystemStateProvider systemStateProvider,
+ CallsManager callsManager, SystemStateHelper systemStateProvider,
DefaultDialerCache defaultDialerCache, Timeouts.Adapter timeoutsAdapter,
EmergencyCallHelper emergencyCallHelper) {
return new InCallController(context, lock, callsManager, systemStateProvider,
@@ -257,8 +266,7 @@
mCallsManager = new CallsManager(
mContext,
mLock,
- mContactsAsyncHelper,
- callerInfoAsyncQueryFactory,
+ callerInfoLookupHelper,
mMissedCallNotifier,
mPhoneAccountRegistrar,
headsetMediaButtonFactory,
@@ -268,7 +276,7 @@
audioServiceFactory,
bluetoothRouteManager,
wiredHeadsetManager,
- systemStateProvider,
+ systemStateHelper,
defaultDialerCache,
timeoutsAdapter,
asyncRingtonePlayer,
@@ -277,18 +285,25 @@
toneGeneratorFactory,
clockProxy,
bluetoothStateReceiver,
- inCallControllerFactory);
+ callAudioRouteStateMachineFactory,
+ new CallAudioModeStateMachine.Factory(),
+ inCallControllerFactory,
+ roleManagerAdapter);
mIncomingCallNotifier = incomingCallNotifier;
incomingCallNotifier.setCallsManagerProxy(new IncomingCallNotifier.CallsManagerProxy() {
@Override
- public boolean hasCallsForOtherPhoneAccount(PhoneAccountHandle phoneAccountHandle) {
- return mCallsManager.hasCallsForOtherPhoneAccount(phoneAccountHandle);
+ public boolean hasUnholdableCallsForOtherConnectionService(
+ PhoneAccountHandle phoneAccountHandle) {
+ return mCallsManager.hasUnholdableCallsForOtherConnectionService(
+ phoneAccountHandle);
}
@Override
- public int getNumCallsForOtherPhoneAccount(PhoneAccountHandle phoneAccountHandle) {
- return mCallsManager.getNumCallsForOtherPhoneAccount(phoneAccountHandle);
+ public int getNumUnholdableCallsForOtherConnectionService(
+ PhoneAccountHandle phoneAccountHandle) {
+ return mCallsManager.getNumUnholdableCallsForOtherConnectionService(
+ phoneAccountHandle);
}
@Override
@@ -316,6 +331,8 @@
mContext.registerReceiver(mDialerCodeReceiver, DIALER_SECRET_CODE_FILTER,
Manifest.permission.CONTROL_INCALL_EXPERIENCE, null);
+ // There is no USER_SWITCHED broadcast for user 0, handle it here explicitly.
+ final UserManager userManager = UserManager.get(mContext);
mTelecomServiceImpl = new TelecomServiceImpl(
mContext, mCallsManager, mPhoneAccountRegistrar,
new CallIntentProcessor.AdapterImpl(),
@@ -327,6 +344,7 @@
},
defaultDialerCache,
new TelecomServiceImpl.SubscriptionManagerAdapterImpl(),
+ new TelecomServiceImpl.SettingsSecureAdapterImpl(),
mLock);
Log.endSession();
}
diff --git a/src/com/android/server/telecom/TelephonyUtil.java b/src/com/android/server/telecom/TelephonyUtil.java
index f57aff5..70f774f 100644
--- a/src/com/android/server/telecom/TelephonyUtil.java
+++ b/src/com/android/server/telecom/TelephonyUtil.java
@@ -70,58 +70,8 @@
}
public static boolean shouldProcessAsEmergency(Context context, Uri handle) {
- return handle != null && PhoneNumberUtils.isLocalEmergencyNumber(
- context, handle.getSchemeSpecificPart());
- }
-
- public static void sortSimPhoneAccounts(Context context, List<PhoneAccount> accounts) {
- final TelephonyManager telephonyManager = TelephonyManager.from(context);
-
- // Sort the accounts according to how we want to display them.
- Collections.sort(accounts, new Comparator<PhoneAccount>() {
- @Override
- public int compare(PhoneAccount account1, PhoneAccount account2) {
- int retval = 0;
-
- // SIM accounts go first
- boolean isSim1 = account1.hasCapabilities(PhoneAccount.CAPABILITY_SIM_SUBSCRIPTION);
- boolean isSim2 = account2.hasCapabilities(PhoneAccount.CAPABILITY_SIM_SUBSCRIPTION);
- if (isSim1 != isSim2) {
- retval = isSim1 ? -1 : 1;
- }
-
- int subId1 = telephonyManager.getSubIdForPhoneAccount(account1);
- int subId2 = telephonyManager.getSubIdForPhoneAccount(account2);
- if (subId1 != SubscriptionManager.INVALID_SUBSCRIPTION_ID &&
- subId2 != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
- retval = (SubscriptionManager.getSlotIndex(subId1) <
- SubscriptionManager.getSlotIndex(subId2)) ? -1 : 1;
- }
-
- // Then order by package
- if (retval == 0) {
- String pkg1 = account1.getAccountHandle().getComponentName().getPackageName();
- String pkg2 = account2.getAccountHandle().getComponentName().getPackageName();
- retval = pkg1.compareTo(pkg2);
- }
-
- // Finally, order by label
- if (retval == 0) {
- String label1 = nullToEmpty(account1.getLabel().toString());
- String label2 = nullToEmpty(account2.getLabel().toString());
- retval = label1.compareTo(label2);
- }
-
- // Then by hashcode
- if (retval == 0) {
- retval = Integer.compare(account1.hashCode(), account2.hashCode());
- }
- return retval;
- }
- });
- }
-
- private static String nullToEmpty(String str) {
- return str == null ? "" : str;
+ TelephonyManager tm = (TelephonyManager) context.getSystemService(
+ Context.TELEPHONY_SERVICE);
+ return handle != null && tm.isEmergencyNumber(handle.getSchemeSpecificPart());
}
}
diff --git a/src/com/android/server/telecom/Timeouts.java b/src/com/android/server/telecom/Timeouts.java
index 5187641..37f9363 100644
--- a/src/com/android/server/telecom/Timeouts.java
+++ b/src/com/android/server/telecom/Timeouts.java
@@ -18,6 +18,7 @@
import android.content.ContentResolver;
import android.provider.Settings;
+import android.telecom.CallRedirectionService;
import java.util.concurrent.TimeUnit;
/**
@@ -49,6 +50,18 @@
public long getEmergencyCallbackWindowMillis(ContentResolver cr) {
return Timeouts.getEmergencyCallbackWindowMillis(cr);
}
+
+ public long getUserDefinedCallRedirectionTimeoutMillis(ContentResolver cr) {
+ return Timeouts.getUserDefinedCallRedirectionTimeoutMillis(cr);
+ }
+
+ public long getCarrierCallRedirectionTimeoutMillis(ContentResolver cr) {
+ return Timeouts.getCarrierCallRedirectionTimeoutMillis(cr);
+ }
+
+ public long getPhoneAccountSuggestionServiceTimeout(ContentResolver cr) {
+ return Timeouts.getPhoneAccountSuggestionServiceTimeout(cr);
+ }
}
/** A prefix to use for all keys so to not clobber the global namespace. */
@@ -143,6 +156,14 @@
}
/**
+ * Returns the amount of time to wait for the phone account suggestion service to reply.
+ */
+ public static long getPhoneAccountSuggestionServiceTimeout(ContentResolver contentResolver) {
+ return get(contentResolver, "phone_account_suggestion_service_timeout",
+ 5000L /* 5 seconds */);
+ }
+
+ /**
* Returns the amount of time to wait for the call screening service to allow or disallow a
* call.
*/
@@ -158,4 +179,23 @@
return get(contentResolver, "emergency_callback_window_millis",
TimeUnit.MILLISECONDS.convert(5, TimeUnit.MINUTES));
}
+
+ /**
+ * Returns the amount of time for an user-defined {@link CallRedirectionService}.
+ *
+ * @param contentResolver The content resolved.
+ */
+ public static long getUserDefinedCallRedirectionTimeoutMillis(ContentResolver contentResolver) {
+ return get(contentResolver, "user_defined_call_redirection_timeout",
+ 5000L /* 5 seconds */);
+ }
+
+ /**
+ * Returns the amount of time for a carrier {@link CallRedirectionService}.
+ *
+ * @param contentResolver The content resolved.
+ */
+ public static long getCarrierCallRedirectionTimeoutMillis(ContentResolver contentResolver) {
+ return get(contentResolver, "carrier_call_redirection_timeout", 5000L /* 5 seconds */);
+ }
}
diff --git a/src/com/android/server/telecom/VideoProviderProxy.java b/src/com/android/server/telecom/VideoProviderProxy.java
index 7d90a6d..364e0f4 100644
--- a/src/com/android/server/telecom/VideoProviderProxy.java
+++ b/src/com/android/server/telecom/VideoProviderProxy.java
@@ -20,7 +20,6 @@
import android.app.AppOpsManager;
import android.content.Context;
import android.net.Uri;
-import android.os.Binder;
import android.os.Build;
import android.os.IBinder;
import android.os.Looper;
@@ -33,6 +32,7 @@
import android.text.TextUtils;
import android.view.Surface;
+import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.telecom.IVideoCallback;
import com.android.internal.telecom.IVideoProvider;
@@ -40,8 +40,6 @@
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
-import static android.Manifest.permission.CALL_PHONE;
-
/**
* Proxies video provider messages from {@link InCallService.VideoCall}
* implementations to the underlying {@link Connection.VideoProvider} implementation. Also proxies
@@ -55,7 +53,7 @@
/**
* Listener for Telecom components interested in callbacks from the video provider.
*/
- interface Listener {
+ public interface Listener {
void onSessionModifyRequestReceived(Call call, VideoProfile videoProfile);
}
@@ -112,7 +110,7 @@
* @param call The current call.
* @throws RemoteException Remote exception.
*/
- VideoProviderProxy(TelecomSystem.SyncRoot lock,
+ public VideoProviderProxy(TelecomSystem.SyncRoot lock,
IVideoProvider videoProvider, Call call, CurrentUserProxy currentUserProxy)
throws RemoteException {
@@ -136,11 +134,16 @@
}
}
+ @VisibleForTesting
+ public VideoCallListenerBinder getVideoCallListenerBinder() {
+ return mVideoCallListenerBinder;
+ }
+
/**
* IVideoCallback stub implementation. An instance of this class receives callbacks from the
* {@code ConnectionService}'s video provider.
*/
- private final class VideoCallListenerBinder extends IVideoCallback.Stub {
+ public final class VideoCallListenerBinder extends IVideoCallback.Stub {
/**
* Proxies a request from the {@link #mConectionServiceVideoProvider} to the
* {@link InCallService} when a session modification request is received.
@@ -160,13 +163,14 @@
Analytics.RECEIVE_REMOTE_SESSION_MODIFY_REQUEST,
videoProfile.getVideoState());
- if (!mCall.isVideoCallingSupported() &&
- VideoProfile.isVideo(videoProfile.getVideoState())) {
- // If video calling is not supported by the phone account, and we receive
- // a request to upgrade to video, automatically reject it without informing
- // the InCallService.
-
- Log.addEvent(mCall, LogUtils.Events.SEND_VIDEO_RESPONSE, "video not supported");
+ if ((!mCall.isVideoCallingSupportedByPhoneAccount()
+ || !mCall.isLocallyVideoCapable())
+ && VideoProfile.isVideo(videoProfile.getVideoState())) {
+ // If video calling is not supported by the phone account, or is not
+ // locally video capable and we receive a request to upgrade to video,
+ // automatically reject it without informing the InCallService.
+ Log.addEvent(mCall, LogUtils.Events.SEND_VIDEO_RESPONSE,
+ "video not supported");
VideoProfile responseProfile = new VideoProfile(
VideoProfile.STATE_AUDIO_ONLY);
try {
@@ -434,6 +438,11 @@
logFromInCall("sendSessionModifyRequest: from=" + fromProfile + " to=" + toProfile);
Log.addEvent(mCall, LogUtils.Events.SEND_VIDEO_REQUEST,
VideoProfile.videoStateToString(toProfile.getVideoState()));
+ if (!VideoProfile.isVideo(fromProfile.getVideoState())
+ && VideoProfile.isVideo(toProfile.getVideoState())) {
+ // Upgrading to video; change to speaker potentially.
+ mCall.maybeEnableSpeakerForVideoUpgrade(toProfile.getVideoState());
+ }
mCall.getAnalytics().addVideoEvent(
Analytics.SEND_LOCAL_SESSION_MODIFY_REQUEST,
toProfile.getVideoState());
diff --git a/src/com/android/server/telecom/bluetooth/BluetoothDeviceManager.java b/src/com/android/server/telecom/bluetooth/BluetoothDeviceManager.java
index 26fe94e..23a086b 100644
--- a/src/com/android/server/telecom/bluetooth/BluetoothDeviceManager.java
+++ b/src/com/android/server/telecom/bluetooth/BluetoothDeviceManager.java
@@ -18,25 +18,22 @@
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothHeadset;
-import android.bluetooth.BluetoothManager;
+import android.bluetooth.BluetoothHearingAid;
import android.bluetooth.BluetoothProfile;
-import android.content.BroadcastReceiver;
import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
import android.telecom.Log;
import com.android.server.telecom.BluetoothAdapterProxy;
import com.android.server.telecom.BluetoothHeadsetProxy;
-import com.android.server.telecom.TelecomSystem;
+import java.util.ArrayList;
import java.util.Collection;
+import java.util.Collections;
import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
import java.util.LinkedList;
import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.stream.Collectors;
+import java.util.Set;
public class BluetoothDeviceManager {
private final BluetoothProfile.ServiceListener mBluetoothProfileServiceListener =
@@ -50,8 +47,12 @@
mBluetoothHeadsetService =
new BluetoothHeadsetProxy((BluetoothHeadset) proxy);
Log.i(this, "- Got BluetoothHeadset: " + mBluetoothHeadsetService);
+ } else if (profile == BluetoothProfile.HEARING_AID) {
+ mBluetoothHearingAidService = (BluetoothHearingAid) proxy;
+ Log.i(this, "- Got BluetoothHearingAid: "
+ + mBluetoothHearingAidService);
} else {
- Log.w(this, "Connected to non-headset bluetooth service." +
+ Log.w(this, "Connected to non-requested bluetooth service." +
" Not changing bluetooth headset.");
}
}
@@ -65,12 +66,27 @@
Log.startSession("BMSL.oSD");
try {
synchronized (mLock) {
- mBluetoothHeadsetService = null;
- Log.i(BluetoothDeviceManager.this, "Lost BluetoothHeadset service. " +
- "Removing all tracked devices.");
+ LinkedHashMap<String, BluetoothDevice> lostServiceDevices;
+ if (profile == BluetoothProfile.HEADSET) {
+ mBluetoothHeadsetService = null;
+ Log.i(BluetoothDeviceManager.this,
+ "Lost BluetoothHeadset service. " +
+ "Removing all tracked devices.");
+ lostServiceDevices = mHfpDevicesByAddress;
+ mBluetoothRouteManager.onActiveDeviceChanged(null, false);
+ } else if (profile == BluetoothProfile.HEARING_AID) {
+ mBluetoothHearingAidService = null;
+ Log.i(BluetoothDeviceManager.this,
+ "Lost BluetoothHearingAid service. " +
+ "Removing all tracked devices.");
+ lostServiceDevices = mHearingAidDevicesByAddress;
+ mBluetoothRouteManager.onActiveDeviceChanged(null, true);
+ } else {
+ return;
+ }
List<BluetoothDevice> devicesToRemove = new LinkedList<>(
- mConnectedDevicesByAddress.values());
- mConnectedDevicesByAddress.clear();
+ lostServiceDevices.values());
+ lostServiceDevices.clear();
for (BluetoothDevice device : devicesToRemove) {
mBluetoothRouteManager.onDeviceLost(device.getAddress());
}
@@ -81,20 +97,27 @@
}
};
- private final LinkedHashMap<String, BluetoothDevice> mConnectedDevicesByAddress =
+ private final LinkedHashMap<String, BluetoothDevice> mHfpDevicesByAddress =
new LinkedHashMap<>();
- private final TelecomSystem.SyncRoot mLock;
+ private final LinkedHashMap<String, BluetoothDevice> mHearingAidDevicesByAddress =
+ new LinkedHashMap<>();
+ private final LinkedHashMap<BluetoothDevice, Long> mHearingAidDeviceSyncIds =
+ new LinkedHashMap<>();
+
+ // This lock only protects internal state -- it doesn't lock on anything going into Telecom.
+ private final Object mLock = new Object();
private BluetoothRouteManager mBluetoothRouteManager;
private BluetoothHeadsetProxy mBluetoothHeadsetService;
+ private BluetoothHearingAid mBluetoothHearingAidService;
+ private BluetoothDevice mBluetoothHearingAidActiveDeviceCache;
- public BluetoothDeviceManager(Context context, BluetoothAdapterProxy bluetoothAdapter,
- TelecomSystem.SyncRoot lock) {
- mLock = lock;
-
+ public BluetoothDeviceManager(Context context, BluetoothAdapterProxy bluetoothAdapter) {
if (bluetoothAdapter != null) {
bluetoothAdapter.getProfileProxy(context, mBluetoothProfileServiceListener,
BluetoothProfile.HEADSET);
+ bluetoothAdapter.getProfileProxy(context, mBluetoothProfileServiceListener,
+ BluetoothProfile.HEARING_AID);
}
}
@@ -103,57 +126,175 @@
}
public int getNumConnectedDevices() {
- return mConnectedDevicesByAddress.size();
+ synchronized (mLock) {
+ return mHfpDevicesByAddress.size() + mHearingAidDevicesByAddress.size();
+ }
}
public Collection<BluetoothDevice> getConnectedDevices() {
- return mConnectedDevicesByAddress.values();
+ synchronized (mLock) {
+ ArrayList<BluetoothDevice> result = new ArrayList<>(mHfpDevicesByAddress.values());
+ result.addAll(mHearingAidDevicesByAddress.values());
+ return Collections.unmodifiableCollection(result);
+ }
}
- public String getMostRecentlyConnectedDevice(String excludeAddress) {
- String result = null;
+ // Same as getConnectedDevices except it filters out the hearing aid devices that are linked
+ // together by their hiSyncId.
+ public Collection<BluetoothDevice> getUniqueConnectedDevices() {
+ ArrayList<BluetoothDevice> result;
synchronized (mLock) {
- for (String addr : mConnectedDevicesByAddress.keySet()) {
- if (!Objects.equals(addr, excludeAddress)) {
- result = addr;
+ result = new ArrayList<>(mHfpDevicesByAddress.values());
+ }
+ Set<Long> seenHiSyncIds = new LinkedHashSet<>();
+ // Add the left-most active device to the seen list so that we match up with the list
+ // generated in BluetoothRouteManager.
+ if (mBluetoothHearingAidService != null) {
+ for (BluetoothDevice device : mBluetoothHearingAidService.getActiveDevices()) {
+ if (device != null) {
+ result.add(device);
+ seenHiSyncIds.add(mHearingAidDeviceSyncIds.getOrDefault(device, -1L));
+ break;
}
}
}
- return result;
+ synchronized (mLock) {
+ for (BluetoothDevice d : mHearingAidDevicesByAddress.values()) {
+ long hiSyncId = mHearingAidDeviceSyncIds.getOrDefault(d, -1L);
+ if (seenHiSyncIds.contains(hiSyncId)) {
+ continue;
+ }
+ result.add(d);
+ seenHiSyncIds.add(hiSyncId);
+ }
+ }
+ return Collections.unmodifiableCollection(result);
}
public BluetoothHeadsetProxy getHeadsetService() {
return mBluetoothHeadsetService;
}
+ public BluetoothHearingAid getHearingAidService() {
+ return mBluetoothHearingAidService;
+ }
+
public void setHeadsetServiceForTesting(BluetoothHeadsetProxy bluetoothHeadset) {
mBluetoothHeadsetService = bluetoothHeadset;
}
- public BluetoothDevice getDeviceFromAddress(String address) {
- return mConnectedDevicesByAddress.get(address);
+ public void setHearingAidServiceForTesting(BluetoothHearingAid bluetoothHearingAid) {
+ mBluetoothHearingAidService = bluetoothHearingAid;
}
- void onDeviceConnected(BluetoothDevice device) {
+ void onDeviceConnected(BluetoothDevice device, boolean isHearingAid) {
synchronized (mLock) {
- if (mBluetoothHeadsetService == null) {
- Log.w(this, "Headset service null when receiving device added broadcast");
- return;
+ LinkedHashMap<String, BluetoothDevice> targetDeviceMap;
+ if (isHearingAid) {
+ if (mBluetoothHearingAidService == null) {
+ Log.w(this, "Hearing aid service null when receiving device added broadcast");
+ return;
+ }
+ long hiSyncId = mBluetoothHearingAidService.getHiSyncId(device);
+ mHearingAidDeviceSyncIds.put(device, hiSyncId);
+ targetDeviceMap = mHearingAidDevicesByAddress;
+ } else {
+ if (mBluetoothHeadsetService == null) {
+ Log.w(this, "Headset service null when receiving device added broadcast");
+ return;
+ }
+ targetDeviceMap = mHfpDevicesByAddress;
}
-
- if (!mConnectedDevicesByAddress.containsKey(device.getAddress())) {
- mConnectedDevicesByAddress.put(device.getAddress(), device);
+ if (!targetDeviceMap.containsKey(device.getAddress())) {
+ targetDeviceMap.put(device.getAddress(), device);
mBluetoothRouteManager.onDeviceAdded(device.getAddress());
}
}
}
- void onDeviceDisconnected(BluetoothDevice device) {
+ void onDeviceDisconnected(BluetoothDevice device, boolean isHearingAid) {
synchronized (mLock) {
- if (mConnectedDevicesByAddress.containsKey(device.getAddress())) {
- mConnectedDevicesByAddress.remove(device.getAddress());
+ LinkedHashMap<String, BluetoothDevice> targetDeviceMap;
+ if (isHearingAid) {
+ mHearingAidDeviceSyncIds.remove(device);
+ targetDeviceMap = mHearingAidDevicesByAddress;
+ } else {
+ targetDeviceMap = mHfpDevicesByAddress;
+ }
+ if (targetDeviceMap.containsKey(device.getAddress())) {
+ targetDeviceMap.remove(device.getAddress());
mBluetoothRouteManager.onDeviceLost(device.getAddress());
}
}
}
+
+ public void disconnectAudio() {
+ if (mBluetoothHearingAidService == null) {
+ Log.w(this, "Trying to disconnect audio but no hearing aid service exists");
+ } else {
+ for (BluetoothDevice device : mBluetoothHearingAidService.getActiveDevices()) {
+ if (device != null) {
+ mBluetoothHearingAidService.setActiveDevice(null);
+ }
+ }
+ }
+ disconnectSco();
+ }
+
+ public void disconnectSco() {
+ if (mBluetoothHeadsetService == null) {
+ Log.w(this, "Trying to disconnect audio but no headset service exists.");
+ } else {
+ mBluetoothHeadsetService.disconnectAudio();
+ }
+ }
+
+ // Connect audio to the bluetooth device at address, checking to see whether it's a hearing aid
+ // or a HFP device, and using the proper BT API.
+ public boolean connectAudio(String address) {
+ if (mHearingAidDevicesByAddress.containsKey(address)) {
+ if (mBluetoothHearingAidService == null) {
+ Log.w(this, "Attempting to turn on audio when the hearing aid service is null");
+ return false;
+ }
+ return mBluetoothHearingAidService.setActiveDevice(
+ mHearingAidDevicesByAddress.get(address));
+ } else if (mHfpDevicesByAddress.containsKey(address)) {
+ BluetoothDevice device = mHfpDevicesByAddress.get(address);
+ if (mBluetoothHeadsetService == null) {
+ Log.w(this, "Attempting to turn on audio when the headset service is null");
+ return false;
+ }
+ boolean success = mBluetoothHeadsetService.setActiveDevice(device);
+ if (!success) {
+ Log.w(this, "Couldn't set active device to %s", address);
+ return false;
+ }
+ if (!mBluetoothHeadsetService.isAudioOn()) {
+ return mBluetoothHeadsetService.connectAudio();
+ }
+ return true;
+ } else {
+ Log.w(this, "Attempting to turn on audio for a disconnected device");
+ return false;
+ }
+ }
+
+ public void cacheHearingAidDevice() {
+ if (mBluetoothHearingAidService != null) {
+ for (BluetoothDevice device : mBluetoothHearingAidService.getActiveDevices()) {
+ if (device != null) {
+ mBluetoothHearingAidActiveDeviceCache = device;
+ }
+ }
+ }
+ }
+
+ public void restoreHearingAidDevice() {
+ if (mBluetoothHearingAidActiveDeviceCache != null && mBluetoothHearingAidService != null) {
+ mBluetoothHearingAidService.setActiveDevice(mBluetoothHearingAidActiveDeviceCache);
+ mBluetoothHearingAidActiveDeviceCache = null;
+ }
+ }
+
}
diff --git a/src/com/android/server/telecom/bluetooth/BluetoothRouteManager.java b/src/com/android/server/telecom/bluetooth/BluetoothRouteManager.java
index f72c342..fe34be3 100644
--- a/src/com/android/server/telecom/bluetooth/BluetoothRouteManager.java
+++ b/src/com/android/server/telecom/bluetooth/BluetoothRouteManager.java
@@ -18,6 +18,7 @@
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothHeadset;
+import android.bluetooth.BluetoothHearingAid;
import android.content.Context;
import android.os.Message;
import android.telecom.Log;
@@ -33,13 +34,10 @@
import com.android.server.telecom.TelecomSystem;
import com.android.server.telecom.Timeouts;
-import java.util.ArrayList;
import java.util.Collection;
-import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashSet;
-import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
@@ -57,8 +55,8 @@
put(CONNECT_HFP, "CONNECT_HFP");
put(DISCONNECT_HFP, "DISCONNECT_HFP");
put(RETRY_HFP_CONNECTION, "RETRY_HFP_CONNECTION");
- put(HFP_IS_ON, "HFP_IS_ON");
- put(HFP_LOST, "HFP_LOST");
+ put(BT_AUDIO_IS_ON, "BT_AUDIO_IS_ON");
+ put(BT_AUDIO_LOST, "BT_AUDIO_LOST");
put(CONNECTION_TIMEOUT, "CONNECTION_TIMEOUT");
put(GET_CURRENT_STATE, "GET_CURRENT_STATE");
put(RUN_RUNNABLE, "RUN_RUNNABLE");
@@ -77,6 +75,12 @@
void onBluetoothActiveDeviceGone();
void onBluetoothAudioConnected();
void onBluetoothAudioDisconnected();
+ /**
+ * This gets called when we get an unexpected state change from Bluetooth. Their stack does
+ * weird things sometimes, so this is really a signal for the listener to refresh their
+ * internal state and make sure it matches up with what the BT stack is doing.
+ */
+ void onUnexpectedBluetoothStateChange();
}
/**
@@ -97,9 +101,9 @@
public static final int RETRY_HFP_CONNECTION = 102;
// arg2: the address of the device that is on
- public static final int HFP_IS_ON = 200;
- // arg2: the address of the device that lost HFP
- public static final int HFP_LOST = 201;
+ public static final int BT_AUDIO_IS_ON = 200;
+ // arg2: the address of the device that lost BT audio
+ public static final int BT_AUDIO_LOST = 201;
// No args; only used internally
public static final int CONNECTION_TIMEOUT = 300;
@@ -125,8 +129,9 @@
BluetoothDevice erroneouslyConnectedDevice = getBluetoothAudioConnectedDevice();
if (erroneouslyConnectedDevice != null) {
Log.w(LOG_TAG, "Entering AudioOff state but device %s appears to be connected. " +
- "Disconnecting.", erroneouslyConnectedDevice);
- disconnectAudio();
+ "Switching to audio-on state for that device.", erroneouslyConnectedDevice);
+ // change this to just transition to the new audio on state
+ transitionToActualState();
}
cleanupStatesForDisconnectedDevices();
if (mListener != null) {
@@ -151,7 +156,7 @@
removeDevice((String) args.arg2);
break;
case CONNECT_HFP:
- String actualAddress = connectHfpAudio((String) args.arg2);
+ String actualAddress = connectBtAudio((String) args.arg2);
if (actualAddress != null) {
transitionTo(getConnectingStateForAddress(actualAddress,
@@ -166,7 +171,7 @@
break;
case RETRY_HFP_CONNECTION:
Log.i(LOG_TAG, "Retrying HFP connection to %s", (String) args.arg2);
- String retryAddress = connectHfpAudio((String) args.arg2, args.argi1);
+ String retryAddress = connectBtAudio((String) args.arg2, args.argi1);
if (retryAddress != null) {
transitionTo(getConnectingStateForAddress(retryAddress,
@@ -178,14 +183,16 @@
case CONNECTION_TIMEOUT:
// Ignore.
break;
- case HFP_IS_ON:
+ case BT_AUDIO_IS_ON:
String address = (String) args.arg2;
Log.w(LOG_TAG, "HFP audio unexpectedly turned on from device %s", address);
- transitionTo(getConnectedStateForAddress(address, "AudioOff/HFP_IS_ON"));
+ transitionTo(getConnectedStateForAddress(address,
+ "AudioOff/BT_AUDIO_IS_ON"));
break;
- case HFP_LOST:
+ case BT_AUDIO_LOST:
Log.i(LOG_TAG, "Received HFP off for device %s while HFP off.",
(String) args.arg2);
+ mListener.onUnexpectedBluetoothStateChange();
break;
case GET_CURRENT_STATE:
BlockingQueue<IState> sink = (BlockingQueue<IState>) args.arg3;
@@ -253,7 +260,7 @@
// Ignore repeated connection attempts to the same device
break;
}
- String actualAddress = connectHfpAudio(address);
+ String actualAddress = connectBtAudio(address);
if (actualAddress != null) {
transitionTo(getConnectingStateForAddress(actualAddress,
@@ -264,14 +271,13 @@
}
break;
case DISCONNECT_HFP:
- disconnectAudio();
- transitionTo(mAudioOffState);
+ mDeviceManager.disconnectAudio();
break;
case RETRY_HFP_CONNECTION:
if (Objects.equals(address, mDeviceAddress)) {
Log.d(LOG_TAG, "Retry message came through while connecting.");
} else {
- String retryAddress = connectHfpAudio(address, args.argi1);
+ String retryAddress = connectBtAudio(address, args.argi1);
if (retryAddress != null) {
transitionTo(getConnectingStateForAddress(retryAddress,
"AudioConnecting/RETRY_HFP_CONNECTION"));
@@ -285,7 +291,7 @@
mDeviceAddress);
transitionToActualState();
break;
- case HFP_IS_ON:
+ case BT_AUDIO_IS_ON:
if (Objects.equals(mDeviceAddress, address)) {
Log.i(LOG_TAG, "HFP connection success for device %s.", mDeviceAddress);
transitionTo(mAudioConnectedStates.get(mDeviceAddress));
@@ -293,17 +299,18 @@
Log.w(LOG_TAG, "In connecting state for device %s but %s" +
" is now connected", mDeviceAddress, address);
transitionTo(getConnectedStateForAddress(address,
- "AudioConnecting/HFP_IS_ON"));
+ "AudioConnecting/BT_AUDIO_IS_ON"));
}
break;
- case HFP_LOST:
- if (Objects.equals(mDeviceAddress, address)) {
+ case BT_AUDIO_LOST:
+ if (Objects.equals(mDeviceAddress, address) || address == null) {
Log.i(LOG_TAG, "Connection with device %s failed.",
mDeviceAddress);
transitionToActualState();
} else {
Log.w(LOG_TAG, "Got HFP lost message for device %s while" +
" connecting to %s.", address, mDeviceAddress);
+ mListener.onUnexpectedBluetoothStateChange();
}
break;
case GET_CURRENT_STATE:
@@ -366,7 +373,7 @@
// Ignore connection to already connected device.
break;
}
- String actualAddress = connectHfpAudio(address);
+ String actualAddress = connectBtAudio(address);
if (actualAddress != null) {
transitionTo(getConnectingStateForAddress(address,
@@ -377,14 +384,13 @@
}
break;
case DISCONNECT_HFP:
- disconnectAudio();
- transitionTo(mAudioOffState);
+ mDeviceManager.disconnectAudio();
break;
case RETRY_HFP_CONNECTION:
if (Objects.equals(address, mDeviceAddress)) {
Log.d(LOG_TAG, "Retry message came through while connected.");
} else {
- String retryAddress = connectHfpAudio(address, args.argi1);
+ String retryAddress = connectBtAudio(address, args.argi1);
if (retryAddress != null) {
transitionTo(getConnectingStateForAddress(retryAddress,
"AudioConnected/RETRY_HFP_CONNECTION"));
@@ -396,23 +402,25 @@
case CONNECTION_TIMEOUT:
Log.w(LOG_TAG, "Received CONNECTION_TIMEOUT while connected.");
break;
- case HFP_IS_ON:
+ case BT_AUDIO_IS_ON:
if (Objects.equals(mDeviceAddress, address)) {
- Log.i(LOG_TAG, "Received redundant HFP_IS_ON for %s", mDeviceAddress);
+ Log.i(LOG_TAG,
+ "Received redundant BT_AUDIO_IS_ON for %s", mDeviceAddress);
} else {
Log.w(LOG_TAG, "In connected state for device %s but %s" +
" is now connected", mDeviceAddress, address);
transitionTo(getConnectedStateForAddress(address,
- "AudioConnected/HFP_IS_ON"));
+ "AudioConnected/BT_AUDIO_IS_ON"));
}
break;
- case HFP_LOST:
- if (Objects.equals(mDeviceAddress, address)) {
+ case BT_AUDIO_LOST:
+ if (Objects.equals(mDeviceAddress, address) || address == null) {
Log.i(LOG_TAG, "HFP connection with device %s lost.", mDeviceAddress);
transitionToActualState();
} else {
Log.w(LOG_TAG, "Got HFP lost message for device %s while" +
" connected to %s.", address, mDeviceAddress);
+ mListener.onUnexpectedBluetoothStateChange();
}
break;
case GET_CURRENT_STATE:
@@ -439,8 +447,10 @@
private BluetoothStateListener mListener;
private BluetoothDeviceManager mDeviceManager;
- // Tracks the active device in the BT stack.
- private BluetoothDevice mActiveDeviceCache = null;
+ // Tracks the active devices in the BT stack (HFP or hearing aid).
+ private BluetoothDevice mHfpActiveDeviceCache = null;
+ private BluetoothDevice mHearingAidActiveDeviceCache = null;
+ private BluetoothDevice mMostRecentlyReportedActiveDevice = null;
public BluetoothRouteManager(Context context, TelecomSystem.SyncRoot lock,
BluetoothDeviceManager deviceManager, Timeouts.Adapter timeoutsAdapter) {
@@ -537,6 +547,18 @@
sendMessage(DISCONNECT_HFP, args);
}
+ public void disconnectSco() {
+ mDeviceManager.disconnectSco();
+ }
+
+ public void cacheHearingAidDevice() {
+ mDeviceManager.cacheHearingAidDevice();
+ }
+
+ public void restoreHearingAidDevice() {
+ mDeviceManager.restoreHearingAidDevice();
+ }
+
public void setListener(BluetoothStateListener listener) {
mListener = listener;
}
@@ -559,29 +581,41 @@
mListener.onBluetoothDeviceListChanged();
}
- public void onActiveDeviceChanged(BluetoothDevice device) {
- BluetoothDevice oldActiveDevice = mActiveDeviceCache;
- mActiveDeviceCache = device;
- if ((oldActiveDevice == null) ^ (device == null)) {
- if (device == null) {
- mListener.onBluetoothActiveDeviceGone();
- } else {
- mListener.onBluetoothActiveDevicePresent();
- }
+ public void onActiveDeviceChanged(BluetoothDevice device, boolean isHearingAid) {
+ boolean wasActiveDevicePresent = mHearingAidActiveDeviceCache != null
+ || mHfpActiveDeviceCache != null;
+ if (isHearingAid) {
+ mHearingAidActiveDeviceCache = device;
+ } else {
+ mHfpActiveDeviceCache = device;
+ }
+
+ if (device != null) mMostRecentlyReportedActiveDevice = device;
+
+ boolean isActiveDevicePresent = mHearingAidActiveDeviceCache != null
+ || mHfpActiveDeviceCache != null;
+
+ if (wasActiveDevicePresent && !isActiveDevicePresent) {
+ mListener.onBluetoothActiveDeviceGone();
+ } else if (!wasActiveDevicePresent && isActiveDevicePresent) {
+ mListener.onBluetoothActiveDevicePresent();
}
}
- public Collection<BluetoothDevice> getConnectedDevices() {
- return Collections.unmodifiableCollection(
- new ArrayList<>(mDeviceManager.getConnectedDevices()));
+ public boolean hasBtActiveDevice() {
+ return mHearingAidActiveDeviceCache != null || mHfpActiveDeviceCache != null;
}
- private String connectHfpAudio(String address) {
- return connectHfpAudio(address, 0);
+ public Collection<BluetoothDevice> getConnectedDevices() {
+ return mDeviceManager.getUniqueConnectedDevices();
+ }
+
+ private String connectBtAudio(String address) {
+ return connectBtAudio(address, 0);
}
/**
- * Initiates a HFP connection to the BT address specified.
+ * Initiates a connection to the BT address specified.
* Note: This method is not synchronized on the Telecom lock, so don't try and call back into
* Telecom from within it.
* @param address The address that should be tried first. May be null.
@@ -589,8 +623,8 @@
* @return The address of the device that's actually being connected to, or null if no
* connection was successful.
*/
- private String connectHfpAudio(String address, int retryCount) {
- Collection<BluetoothDevice> deviceList = getConnectedDevices();
+ private String connectBtAudio(String address, int retryCount) {
+ Collection<BluetoothDevice> deviceList = mDeviceManager.getConnectedDevices();
Optional<BluetoothDevice> matchingDevice = deviceList.stream()
.filter(d -> Objects.equals(d.getAddress(), address))
.findAny();
@@ -611,7 +645,7 @@
Log.i(this, "No device with address %s available. Using %s instead.",
address, actualAddress);
}
- if (!connectAudio(actualAddress)) {
+ if (!mDeviceManager.connectAudio(actualAddress)) {
boolean shouldRetry = retryCount < MAX_CONNECTION_RETRIES;
Log.w(LOG_TAG, "Could not connect to %s. Will %s", actualAddress,
shouldRetry ? "retry" : "not retry");
@@ -631,7 +665,13 @@
}
private String getActiveDeviceAddress() {
- return mActiveDeviceCache == null ? null : mActiveDeviceCache.getAddress();
+ if (mHfpActiveDeviceCache != null) {
+ return mHfpActiveDeviceCache.getAddress();
+ }
+ if (mHearingAidActiveDeviceCache != null) {
+ return mHearingAidActiveDeviceCache.getAddress();
+ }
+ return null;
}
private void transitionToActualState() {
@@ -652,23 +692,45 @@
@VisibleForTesting
public BluetoothDevice getBluetoothAudioConnectedDevice() {
BluetoothHeadsetProxy bluetoothHeadset = mDeviceManager.getHeadsetService();
- if (bluetoothHeadset == null) {
- Log.i(this, "getBluetoothAudioConnectedDevice: no headset service available.");
+ BluetoothHearingAid bluetoothHearingAid = mDeviceManager.getHearingAidService();
+
+ BluetoothDevice hfpAudioOnDevice = null;
+ BluetoothDevice hearingAidActiveDevice = null;
+
+ if (bluetoothHeadset == null && bluetoothHearingAid == null) {
+ Log.i(this, "getBluetoothAudioConnectedDevice: no service available.");
return null;
}
- List<BluetoothDevice> deviceList = bluetoothHeadset.getConnectedDevices();
- for (int i = 0; i < deviceList.size(); i++) {
- BluetoothDevice device = deviceList.get(i);
- boolean isAudioOn = bluetoothHeadset.getAudioState(device)
- != BluetoothHeadset.STATE_AUDIO_DISCONNECTED;
- Log.v(this, "isBluetoothAudioConnected: ==> isAudioOn = " + isAudioOn
- + "for headset: " + device);
- if (isAudioOn) {
- return device;
+ if (bluetoothHeadset != null) {
+ hfpAudioOnDevice = bluetoothHeadset.getActiveDevice();
+
+ if (bluetoothHeadset.getAudioState(hfpAudioOnDevice)
+ == BluetoothHeadset.STATE_AUDIO_DISCONNECTED) {
+ hfpAudioOnDevice = null;
}
}
- return null;
+
+ if (bluetoothHearingAid != null) {
+ for (BluetoothDevice device : bluetoothHearingAid.getActiveDevices()) {
+ if (device != null) {
+ hearingAidActiveDevice = device;
+ break;
+ }
+ }
+ }
+
+ // Return the active device reported by either HFP or hearing aid. If both are reporting
+ // active devices, go with the most recent one as reported by the receiver.
+ if (hfpAudioOnDevice != null) {
+ if (hearingAidActiveDevice != null) {
+ Log.i(this, "Both HFP and hearing aid are reporting active devices. Going with"
+ + " the most recently reported active device: %s");
+ return mMostRecentlyReportedActiveDevice;
+ }
+ return hfpAudioOnDevice;
+ }
+ return hearingAidActiveDevice;
}
/**
@@ -687,37 +749,6 @@
return bluetoothHeadset.isInbandRingingEnabled();
}
- private boolean connectAudio(String address) {
- BluetoothHeadsetProxy bluetoothHeadset = mDeviceManager.getHeadsetService();
- if (bluetoothHeadset == null) {
- Log.w(this, "Trying to connect audio but no headset service exists.");
- return false;
- }
- BluetoothDevice device = mDeviceManager.getDeviceFromAddress(address);
- if (device == null) {
- Log.w(this, "Attempting to turn on audio for a disconnected device");
- return false;
- }
- boolean success = bluetoothHeadset.setActiveDevice(device);
- if (!success) {
- Log.w(LOG_TAG, "Couldn't set active device to %s", address);
- return false;
- }
- if (!bluetoothHeadset.isAudioOn()) {
- return bluetoothHeadset.connectAudio();
- }
- return true;
- }
-
- private void disconnectAudio() {
- BluetoothHeadsetProxy bluetoothHeadset = mDeviceManager.getHeadsetService();
- if (bluetoothHeadset == null) {
- Log.w(this, "Trying to disconnect audio but no headset service exists.");
- } else {
- bluetoothHeadset.disconnectAudio();
- }
- }
-
private boolean addDevice(String address) {
if (mAudioConnectingStates.containsKey(address)) {
Log.i(this, "Attempting to add device %s twice.", address);
@@ -776,23 +807,30 @@
@VisibleForTesting
public void setInitialStateForTesting(String stateName, BluetoothDevice device) {
- switch (stateName) {
- case AUDIO_OFF_STATE_NAME:
- transitionTo(mAudioOffState);
- break;
- case AUDIO_CONNECTING_STATE_NAME_PREFIX:
- transitionTo(getConnectingStateForAddress(device.getAddress(),
- "setInitialStateForTesting"));
- break;
- case AUDIO_CONNECTED_STATE_NAME_PREFIX:
- transitionTo(getConnectedStateForAddress(device.getAddress(),
- "setInitialStateForTesting"));
- break;
- }
+ sendMessage(RUN_RUNNABLE, (Runnable) () -> {
+ switch (stateName) {
+ case AUDIO_OFF_STATE_NAME:
+ transitionTo(mAudioOffState);
+ break;
+ case AUDIO_CONNECTING_STATE_NAME_PREFIX:
+ transitionTo(getConnectingStateForAddress(device.getAddress(),
+ "setInitialStateForTesting"));
+ break;
+ case AUDIO_CONNECTED_STATE_NAME_PREFIX:
+ transitionTo(getConnectedStateForAddress(device.getAddress(),
+ "setInitialStateForTesting"));
+ break;
+ }
+ Log.i(LOG_TAG, "transition for testing done: %s", stateName);
+ });
}
@VisibleForTesting
- public void setActiveDeviceCacheForTesting(BluetoothDevice device) {
- mActiveDeviceCache = device;
+ public void setActiveDeviceCacheForTesting(BluetoothDevice device, boolean isHearingAid) {
+ if (isHearingAid) {
+ mHearingAidActiveDeviceCache = device;
+ } else {
+ mHfpActiveDeviceCache = device;
+ }
}
}
diff --git a/src/com/android/server/telecom/bluetooth/BluetoothStateReceiver.java b/src/com/android/server/telecom/bluetooth/BluetoothStateReceiver.java
index f9c6437..9e64b56 100644
--- a/src/com/android/server/telecom/bluetooth/BluetoothStateReceiver.java
+++ b/src/com/android/server/telecom/bluetooth/BluetoothStateReceiver.java
@@ -18,6 +18,8 @@
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothHeadset;
+import android.bluetooth.BluetoothHearingAid;
+import android.bluetooth.BluetoothProfile;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
@@ -27,8 +29,8 @@
import com.android.internal.os.SomeArgs;
-import static com.android.server.telecom.bluetooth.BluetoothRouteManager.HFP_IS_ON;
-import static com.android.server.telecom.bluetooth.BluetoothRouteManager.HFP_LOST;
+import static com.android.server.telecom.bluetooth.BluetoothRouteManager.BT_AUDIO_IS_ON;
+import static com.android.server.telecom.bluetooth.BluetoothRouteManager.BT_AUDIO_LOST;
public class BluetoothStateReceiver extends BroadcastReceiver {
@@ -39,6 +41,8 @@
INTENT_FILTER.addAction(BluetoothHeadset.ACTION_CONNECTION_STATE_CHANGED);
INTENT_FILTER.addAction(BluetoothHeadset.ACTION_AUDIO_STATE_CHANGED);
INTENT_FILTER.addAction(BluetoothHeadset.ACTION_ACTIVE_DEVICE_CHANGED);
+ INTENT_FILTER.addAction(BluetoothHearingAid.ACTION_CONNECTION_STATE_CHANGED);
+ INTENT_FILTER.addAction(BluetoothHearingAid.ACTION_ACTIVE_DEVICE_CHANGED);
}
// If not in a call, BSR won't listen to the Bluetooth stack's HFP on/off messages, since
@@ -55,9 +59,11 @@
case BluetoothHeadset.ACTION_AUDIO_STATE_CHANGED:
handleAudioStateChanged(intent);
break;
+ case BluetoothHearingAid.ACTION_CONNECTION_STATE_CHANGED:
case BluetoothHeadset.ACTION_CONNECTION_STATE_CHANGED:
handleConnectionStateChanged(intent);
break;
+ case BluetoothHearingAid.ACTION_ACTIVE_DEVICE_CHANGED:
case BluetoothHeadset.ACTION_ACTIVE_DEVICE_CHANGED:
handleActiveDeviceChanged(intent);
break;
@@ -68,10 +74,6 @@
}
private void handleAudioStateChanged(Intent intent) {
- if (!mIsInCall) {
- Log.i(LOG_TAG, "Ignoring BT audio state change since we're not in a call");
- return;
- }
int bluetoothHeadsetAudioState =
intent.getIntExtra(BluetoothHeadset.EXTRA_STATE,
BluetoothHeadset.STATE_AUDIO_DISCONNECTED);
@@ -91,10 +93,14 @@
args.arg2 = device.getAddress();
switch (bluetoothHeadsetAudioState) {
case BluetoothHeadset.STATE_AUDIO_CONNECTED:
- mBluetoothRouteManager.sendMessage(HFP_IS_ON, args);
+ if (!mIsInCall) {
+ Log.i(LOG_TAG, "Ignoring BT audio on since we're not in a call");
+ return;
+ }
+ mBluetoothRouteManager.sendMessage(BT_AUDIO_IS_ON, args);
break;
case BluetoothHeadset.STATE_AUDIO_DISCONNECTED:
- mBluetoothRouteManager.sendMessage(HFP_LOST, args);
+ mBluetoothRouteManager.sendMessage(BT_AUDIO_LOST, args);
break;
}
}
@@ -114,19 +120,36 @@
Log.i(LOG_TAG, "Device %s changed state to %d",
device.getAddress(), bluetoothHeadsetState);
- if (bluetoothHeadsetState == BluetoothHeadset.STATE_CONNECTED) {
- mBluetoothDeviceManager.onDeviceConnected(device);
- } else if (bluetoothHeadsetState == BluetoothHeadset.STATE_DISCONNECTED
- || bluetoothHeadsetState == BluetoothHeadset.STATE_DISCONNECTING) {
- mBluetoothDeviceManager.onDeviceDisconnected(device);
+ boolean isHearingAid = BluetoothHearingAid.ACTION_CONNECTION_STATE_CHANGED
+ .equals(intent.getAction());
+ if (bluetoothHeadsetState == BluetoothProfile.STATE_CONNECTED) {
+ mBluetoothDeviceManager.onDeviceConnected(device, isHearingAid);
+ } else if (bluetoothHeadsetState == BluetoothProfile.STATE_DISCONNECTED
+ || bluetoothHeadsetState == BluetoothProfile.STATE_DISCONNECTING) {
+ mBluetoothDeviceManager.onDeviceDisconnected(device, isHearingAid);
}
}
private void handleActiveDeviceChanged(Intent intent) {
BluetoothDevice device =
intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
- Log.i(LOG_TAG, "Device %s is now the preferred HFP device", device);
- mBluetoothRouteManager.onActiveDeviceChanged(device);
+ boolean isHearingAid =
+ BluetoothHearingAid.ACTION_ACTIVE_DEVICE_CHANGED.equals(intent.getAction());
+ Log.i(LOG_TAG, "Device %s is now the preferred BT device for %s", device,
+ isHearingAid ? "hearing aid" : "HFP");
+
+ mBluetoothRouteManager.onActiveDeviceChanged(device, isHearingAid);
+ if (isHearingAid) {
+ Session session = Log.createSubsession();
+ SomeArgs args = SomeArgs.obtain();
+ args.arg1 = session;
+ if (device == null) {
+ mBluetoothRouteManager.sendMessage(BT_AUDIO_LOST, args);
+ } else {
+ args.arg2 = device.getAddress();
+ mBluetoothRouteManager.sendMessage(BT_AUDIO_IS_ON, args);
+ }
+ }
}
public BluetoothStateReceiver(BluetoothDeviceManager deviceManager,
diff --git a/src/com/android/server/telecom/callfiltering/AsyncBlockCheckFilter.java b/src/com/android/server/telecom/callfiltering/AsyncBlockCheckFilter.java
index 748d15e..0abd15d 100644
--- a/src/com/android/server/telecom/callfiltering/AsyncBlockCheckFilter.java
+++ b/src/com/android/server/telecom/callfiltering/AsyncBlockCheckFilter.java
@@ -21,6 +21,7 @@
import android.os.AsyncTask;
import android.os.Bundle;
import android.provider.BlockedNumberContract;
+import android.provider.CallLog;
import android.telecom.Log;
import android.telecom.Logging.Session;
import android.telecom.TelecomManager;
@@ -40,17 +41,20 @@
implements IncomingCallFilter.CallFilter {
private final Context mContext;
private final BlockCheckerAdapter mBlockCheckerAdapter;
+ private final CallBlockListener mCallBlockListener;
private Call mIncomingCall;
private Session mBackgroundTaskSubsession;
private Session mPostExecuteSubsession;
private CallFilterResultCallback mCallback;
private CallerInfoLookupHelper mCallerInfoLookupHelper;
+ private int mBlockStatus = BlockedNumberContract.STATUS_NOT_BLOCKED;
public AsyncBlockCheckFilter(Context context, BlockCheckerAdapter blockCheckerAdapter,
- CallerInfoLookupHelper callerInfoLookupHelper) {
+ CallerInfoLookupHelper callerInfoLookupHelper, CallBlockListener callBlockListener) {
mContext = context;
mBlockCheckerAdapter = blockCheckerAdapter;
mCallerInfoLookupHelper = callerInfoLookupHelper;
+ mCallBlockListener = callBlockListener;
}
@Override
@@ -104,7 +108,8 @@
extras.putBoolean(BlockedNumberContract.EXTRA_CONTACT_EXIST,
Boolean.valueOf(params[2]));
}
- return mBlockCheckerAdapter.isBlocked(mContext, params[0], extras);
+ mBlockStatus = mBlockCheckerAdapter.getBlockStatus(mContext, params[0], extras);
+ return mBlockStatus != BlockedNumberContract.STATUS_NOT_BLOCKED;
} finally {
Log.endSession();
}
@@ -119,9 +124,18 @@
result = new CallFilteringResult(
false, // shouldAllowCall
true, //shouldReject
- false, //shouldAddToCallLog
- false // shouldShowNotification
+ true, //shouldAddToCallLog
+ false, // shouldShowNotification
+ convertBlockStatusToReason(), //callBlockReason
+ null, //callScreeningAppName
+ null //callScreeningComponentName
);
+ if (mCallBlockListener != null) {
+ String number = mIncomingCall.getHandle() == null ? null
+ : mIncomingCall.getHandle().getSchemeSpecificPart();
+ mCallBlockListener.onCallBlocked(mBlockStatus, number,
+ mIncomingCall.getInitiatingUser());
+ }
} else {
result = new CallFilteringResult(
true, // shouldAllowCall
@@ -130,10 +144,36 @@
true // shouldShowNotification
);
}
- Log.addEvent(mIncomingCall, LogUtils.Events.BLOCK_CHECK_FINISHED, result);
+ Log.addEvent(mIncomingCall, LogUtils.Events.BLOCK_CHECK_FINISHED,
+ BlockedNumberContract.SystemContract.blockStatusToString(mBlockStatus) + " "
+ + result);
mCallback.onCallFilteringComplete(mIncomingCall, result);
} finally {
Log.endSession();
}
}
+
+ private int convertBlockStatusToReason() {
+ switch (mBlockStatus) {
+ case BlockedNumberContract.STATUS_BLOCKED_IN_LIST:
+ return CallLog.Calls.BLOCK_REASON_BLOCKED_NUMBER;
+
+ case BlockedNumberContract.STATUS_BLOCKED_UNKNOWN_NUMBER:
+ return CallLog.Calls.BLOCK_REASON_UNKNOWN_NUMBER;
+
+ case BlockedNumberContract.STATUS_BLOCKED_RESTRICTED:
+ return CallLog.Calls.BLOCK_REASON_RESTRICTED_NUMBER;
+
+ case BlockedNumberContract.STATUS_BLOCKED_PAYPHONE:
+ return CallLog.Calls.BLOCK_REASON_PAY_PHONE;
+
+ case BlockedNumberContract.STATUS_BLOCKED_NOT_IN_CONTACTS:
+ return CallLog.Calls.BLOCK_REASON_NOT_IN_CONTACTS;
+
+ default:
+ Log.w(AsyncBlockCheckFilter.class.getSimpleName(),
+ "There's no call log block reason can be converted");
+ return CallLog.Calls.BLOCK_REASON_BLOCKED_NUMBER;
+ }
+ }
}
diff --git a/src/com/android/server/telecom/callfiltering/BlockCheckerAdapter.java b/src/com/android/server/telecom/callfiltering/BlockCheckerAdapter.java
index 8c74fa9..4a5ac60 100644
--- a/src/com/android/server/telecom/callfiltering/BlockCheckerAdapter.java
+++ b/src/com/android/server/telecom/callfiltering/BlockCheckerAdapter.java
@@ -30,9 +30,15 @@
* @param context the context of the caller.
* @param number the number to check.
* @param extras the extra attribute of the number.
- * @return {@code true} if the number is blocked. {@code false} otherwise.
+ * @return result code indicating if the number should be blocked, and if so why.
+ * Valid values are: {@link android.provider.BlockedNumberContract#STATUS_NOT_BLOCKED},
+ * {@link android.provider.BlockedNumberContract#STATUS_BLOCKED_IN_LIST},
+ * {@link android.provider.BlockedNumberContract#STATUS_BLOCKED_NOT_IN_CONTACTS},
+ * {@link android.provider.BlockedNumberContract#STATUS_BLOCKED_PAYPHONE},
+ * {@link android.provider.BlockedNumberContract#STATUS_BLOCKED_RESTRICTED},
+ * {@link android.provider.BlockedNumberContract#STATUS_BLOCKED_UNKNOWN_NUMBER}.
*/
- public boolean isBlocked(Context context, String number, Bundle extras) {
- return BlockChecker.isBlocked(context, number, extras);
+ public int getBlockStatus(Context context, String number, Bundle extras) {
+ return BlockChecker.getBlockStatus(context, number, extras);
}
}
diff --git a/src/com/android/server/telecom/callfiltering/CallBlockListener.java b/src/com/android/server/telecom/callfiltering/CallBlockListener.java
new file mode 100644
index 0000000..d0a9949
--- /dev/null
+++ b/src/com/android/server/telecom/callfiltering/CallBlockListener.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2018 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.callfiltering;
+
+import android.os.UserHandle;
+
+/**
+ * Listener for components which wish to be notified when a call is blocked.
+ */
+public interface CallBlockListener {
+ void onCallBlocked(int blockStatus, String number, UserHandle userHandle);
+}
diff --git a/src/com/android/server/telecom/callfiltering/CallFilteringResult.java b/src/com/android/server/telecom/callfiltering/CallFilteringResult.java
index 9e35d86..af3ee1e 100644
--- a/src/com/android/server/telecom/callfiltering/CallFilteringResult.java
+++ b/src/com/android/server/telecom/callfiltering/CallFilteringResult.java
@@ -16,36 +16,133 @@
package com.android.server.telecom.callfiltering;
+import android.provider.CallLog;
+import android.provider.CallLog.Calls;
+import android.text.TextUtils;
+
public class CallFilteringResult {
public boolean shouldAllowCall;
public boolean shouldReject;
+ public boolean shouldSilence;
public boolean shouldAddToCallLog;
public boolean shouldShowNotification;
+ public int mCallBlockReason = CallLog.Calls.BLOCK_REASON_NOT_BLOCKED;
+ public CharSequence mCallScreeningAppName = null;
+ public String mCallScreeningComponentName = null;
public CallFilteringResult(boolean shouldAllowCall, boolean shouldReject, boolean
shouldAddToCallLog, boolean shouldShowNotification) {
this.shouldAllowCall = shouldAllowCall;
this.shouldReject = shouldReject;
+ this.shouldSilence = false;
this.shouldAddToCallLog = shouldAddToCallLog;
this.shouldShowNotification = shouldShowNotification;
}
+ public CallFilteringResult(boolean shouldAllowCall, boolean shouldReject, boolean
+ shouldAddToCallLog, boolean shouldShowNotification, int callBlockReason,
+ CharSequence callScreeningAppName, String callScreeningComponentName) {
+ this.shouldAllowCall = shouldAllowCall;
+ this.shouldReject = shouldReject;
+ this.shouldSilence = false;
+ this.shouldAddToCallLog = shouldAddToCallLog;
+ this.shouldShowNotification = shouldShowNotification;
+ this.mCallBlockReason = callBlockReason;
+ this.mCallScreeningAppName = callScreeningAppName;
+ this.mCallScreeningComponentName = callScreeningComponentName;
+ }
+
+ public CallFilteringResult(boolean shouldAllowCall, boolean shouldReject, boolean
+ shouldSilence, boolean shouldAddToCallLog, boolean shouldShowNotification) {
+ this.shouldAllowCall = shouldAllowCall;
+ this.shouldReject = shouldReject;
+ this.shouldSilence = shouldSilence;
+ this.shouldAddToCallLog = shouldAddToCallLog;
+ this.shouldShowNotification = shouldShowNotification;
+ }
+
+ public CallFilteringResult(boolean shouldAllowCall, boolean shouldReject, boolean
+ shouldSilence, boolean shouldAddToCallLog, boolean shouldShowNotification, int
+ callBlockReason, CharSequence callScreeningAppName, String callScreeningComponentName) {
+ this.shouldAllowCall = shouldAllowCall;
+ this.shouldReject = shouldReject;
+ this.shouldSilence = shouldSilence;
+ this.shouldAddToCallLog = shouldAddToCallLog;
+ this.shouldShowNotification = shouldShowNotification;
+ this.mCallBlockReason = callBlockReason;
+ this.mCallScreeningAppName = callScreeningAppName;
+ this.mCallScreeningComponentName = callScreeningComponentName;
+ }
+
/**
- * Combine this CallFilteringResult with another, returning a CallFilteringResult with
- * the more restrictive properties of the two.
+ * Combine this CallFilteringResult with another, returning a CallFilteringResult with the more
+ * restrictive properties of the two. Where there are multiple call filtering components which
+ * block a call, the first filter from {@link AsyncBlockCheckFilter},
+ * {@link DirectToVoicemailCallFilter}, {@link CallScreeningServiceFilter} which blocked a call
+ * shall be used to populate the call block reason, component name, etc.
*/
public CallFilteringResult combine(CallFilteringResult other) {
if (other == null) {
return this;
}
+ if (isBlockedByProvider(mCallBlockReason)) {
+ return getCombinedCallFilteringResult(other, mCallBlockReason,
+ null /*callScreeningAppName*/, null /*callScreeningComponentName*/);
+ } else if (isBlockedByProvider(other.mCallBlockReason)) {
+ return getCombinedCallFilteringResult(other, other.mCallBlockReason,
+ null /*callScreeningAppName*/, null /*callScreeningComponentName*/);
+ }
+
+ if (mCallBlockReason == Calls.BLOCK_REASON_DIRECT_TO_VOICEMAIL
+ || other.mCallBlockReason == Calls.BLOCK_REASON_DIRECT_TO_VOICEMAIL) {
+ return getCombinedCallFilteringResult(other, Calls.BLOCK_REASON_DIRECT_TO_VOICEMAIL,
+ null /*callScreeningAppName*/, null /*callScreeningComponentName*/);
+ }
+
+ if (shouldReject && mCallBlockReason == CallLog.Calls.BLOCK_REASON_CALL_SCREENING_SERVICE) {
+ return getCombinedCallFilteringResult(other, Calls.BLOCK_REASON_CALL_SCREENING_SERVICE,
+ mCallScreeningAppName, mCallScreeningComponentName);
+ } else if (other.shouldReject && other.mCallBlockReason == CallLog.Calls
+ .BLOCK_REASON_CALL_SCREENING_SERVICE) {
+ return getCombinedCallFilteringResult(other, Calls.BLOCK_REASON_CALL_SCREENING_SERVICE,
+ other.mCallScreeningAppName, other.mCallScreeningComponentName);
+ }
+
return new CallFilteringResult(
- shouldAllowCall && other.shouldAllowCall,
- shouldReject || other.shouldReject,
- shouldAddToCallLog && other.shouldAddToCallLog,
- shouldShowNotification && other.shouldShowNotification);
+ shouldAllowCall && other.shouldAllowCall,
+ shouldReject || other.shouldReject,
+ shouldSilence || other.shouldSilence,
+ shouldAddToCallLog && other.shouldAddToCallLog,
+ shouldShowNotification && other.shouldShowNotification);
}
+ private boolean isBlockedByProvider(int blockReason) {
+ if (blockReason == Calls.BLOCK_REASON_BLOCKED_NUMBER
+ || blockReason == Calls.BLOCK_REASON_UNKNOWN_NUMBER
+ || blockReason == Calls.BLOCK_REASON_RESTRICTED_NUMBER
+ || blockReason == Calls.BLOCK_REASON_PAY_PHONE
+ || blockReason == Calls.BLOCK_REASON_NOT_IN_CONTACTS) {
+ return true;
+ }
+
+ return false;
+ }
+
+ private CallFilteringResult getCombinedCallFilteringResult(CallFilteringResult other,
+ int callBlockReason, CharSequence callScreeningAppName, String callScreeningComponentName) {
+ return new CallFilteringResult(
+ shouldAllowCall && other.shouldAllowCall,
+ shouldReject || other.shouldReject,
+ shouldSilence|| other.shouldSilence,
+ shouldAddToCallLog && other.shouldAddToCallLog,
+ shouldShowNotification && other.shouldShowNotification,
+ callBlockReason,
+ callScreeningAppName,
+ callScreeningComponentName);
+ }
+
+
@Override
public boolean equals(Object o) {
if (this == o) return true;
@@ -55,14 +152,33 @@
if (shouldAllowCall != that.shouldAllowCall) return false;
if (shouldReject != that.shouldReject) return false;
+ if (shouldSilence != that.shouldSilence) return false;
if (shouldAddToCallLog != that.shouldAddToCallLog) return false;
- return shouldShowNotification == that.shouldShowNotification;
+ if (shouldShowNotification != that.shouldShowNotification) return false;
+ if (mCallBlockReason != that.mCallBlockReason) return false;
+
+ if ((TextUtils.isEmpty(mCallScreeningAppName) &&
+ TextUtils.isEmpty(that.mCallScreeningAppName)) &&
+ (TextUtils.isEmpty(mCallScreeningComponentName) &&
+ TextUtils.isEmpty(that.mCallScreeningComponentName))) {
+ return true;
+ } else if (!TextUtils.isEmpty(mCallScreeningAppName) &&
+ !TextUtils.isEmpty(that.mCallScreeningAppName) &&
+ mCallScreeningAppName.equals(that.mCallScreeningAppName) &&
+ !TextUtils.isEmpty(mCallScreeningComponentName) &&
+ !TextUtils.isEmpty(that.mCallScreeningComponentName) &&
+ mCallScreeningComponentName.equals(that.mCallScreeningComponentName)) {
+ return true;
+ }
+
+ return false;
}
@Override
public int hashCode() {
int result = (shouldAllowCall ? 1 : 0);
result = 31 * result + (shouldReject ? 1 : 0);
+ result = 31 * result + (shouldSilence ? 1 : 0);
result = 31 * result + (shouldAddToCallLog ? 1 : 0);
result = 31 * result + (shouldShowNotification ? 1 : 0);
return result;
@@ -76,6 +192,8 @@
sb.append("Allow");
} else if (shouldReject) {
sb.append("Reject");
+ } else if (shouldSilence) {
+ sb.append("Silence");
} else {
sb.append("Ignore");
}
@@ -87,6 +205,21 @@
if (shouldShowNotification) {
sb.append(", notified");
}
+
+ if (mCallBlockReason != 0) {
+ sb.append(", mCallBlockReason = ");
+ sb.append(mCallBlockReason);
+ }
+
+ if (!TextUtils.isEmpty(mCallScreeningAppName)) {
+ sb.append(", mCallScreeningAppName = ");
+ sb.append(mCallScreeningAppName);
+ }
+
+ if (!TextUtils.isEmpty(mCallScreeningComponentName)) {
+ sb.append(", mCallScreeningComponentName = ");
+ sb.append(mCallScreeningComponentName);
+ }
sb.append("]");
return sb.toString();
diff --git a/src/com/android/server/telecom/callfiltering/CallScreeningServiceController.java b/src/com/android/server/telecom/callfiltering/CallScreeningServiceController.java
new file mode 100644
index 0000000..5b1971e
--- /dev/null
+++ b/src/com/android/server/telecom/callfiltering/CallScreeningServiceController.java
@@ -0,0 +1,273 @@
+/*
+ * Copyright (C) 2018 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.callfiltering;
+
+import android.content.ComponentName;
+import android.content.Context;
+import android.net.Uri;
+import android.os.Handler;
+import android.os.Looper;
+import android.os.PersistableBundle;
+import android.provider.CallLog;
+import android.telecom.Log;
+import android.telecom.Logging.Runnable;
+import android.telecom.TelecomManager;
+import android.telephony.CarrierConfigManager;
+import android.text.TextUtils;
+
+import com.android.internal.telephony.CallerInfo;
+import com.android.server.telecom.Call;
+import com.android.server.telecom.CallScreeningServiceHelper;
+import com.android.server.telecom.CallerInfoLookupHelper;
+import com.android.server.telecom.CallsManager;
+import com.android.server.telecom.LogUtils;
+import com.android.server.telecom.ParcelableCallUtils;
+import com.android.server.telecom.PhoneAccountRegistrar;
+import com.android.server.telecom.TelecomServiceImpl;
+import com.android.server.telecom.TelecomSystem;
+
+/**
+ * This class supports binding to the various {@link android.telecom.CallScreeningService}:
+ * carrier, default dialer and user chosen. Carrier's CallScreeningService implementation will be
+ * bound first, and then default dialer's and user chosen's. If Carrier's CallScreeningService
+ * blocks a call, no further CallScreeningService after it will be bound.
+ */
+public class CallScreeningServiceController implements IncomingCallFilter.CallFilter,
+ CallScreeningServiceFilter.CallScreeningFilterResultCallback {
+
+ private final Context mContext;
+ private final CallsManager mCallsManager;
+ private final PhoneAccountRegistrar mPhoneAccountRegistrar;
+ private final ParcelableCallUtils.Converter mParcelableCallUtilsConverter;
+ private final TelecomSystem.SyncRoot mTelecomLock;
+ private final TelecomServiceImpl.SettingsSecureAdapter mSettingsSecureAdapter;
+ private final CallerInfoLookupHelper mCallerInfoLookupHelper;
+ private final CallScreeningServiceHelper.AppLabelProxy mAppLabelProxy;
+
+ private final int CARRIER_CALL_FILTERING_TIMED_OUT = 2000; // 2 seconds
+ private final int CALL_FILTERING_TIMED_OUT = 4500; // 4.5 seconds
+
+ private final Handler mHandler = new Handler(Looper.getMainLooper());
+
+ private Call mCall;
+ private CallFilterResultCallback mCallback;
+
+ private CallFilteringResult mResult = new CallFilteringResult(
+ true, // shouldAllowCall
+ false, // shouldReject
+ true, // shouldAddToCallLog
+ true // shouldShowNotification
+ );
+
+ private boolean mIsFinished;
+ private boolean mIsCarrierFinished;
+ private boolean mIsDefaultDialerFinished;
+ private boolean mIsUserChosenFinished;
+
+ public CallScreeningServiceController(
+ Context context,
+ CallsManager callsManager,
+ PhoneAccountRegistrar phoneAccountRegistrar,
+ ParcelableCallUtils.Converter parcelableCallUtilsConverter,
+ TelecomSystem.SyncRoot lock,
+ TelecomServiceImpl.SettingsSecureAdapter settingsSecureAdapter,
+ CallerInfoLookupHelper callerInfoLookupHelper,
+ CallScreeningServiceHelper.AppLabelProxy appLabelProxy) {
+ mContext = context;
+ mCallsManager = callsManager;
+ mPhoneAccountRegistrar = phoneAccountRegistrar;
+ mParcelableCallUtilsConverter = parcelableCallUtilsConverter;
+ mTelecomLock = lock;
+ mSettingsSecureAdapter = settingsSecureAdapter;
+ mCallerInfoLookupHelper = callerInfoLookupHelper;
+ mAppLabelProxy = appLabelProxy;
+ }
+
+ @Override
+ public void startFilterLookup(Call call, CallFilterResultCallback callBack) {
+ mCall = call;
+ mCallback = callBack;
+ mIsFinished = false;
+ mIsCarrierFinished = false;
+ mIsDefaultDialerFinished = false;
+ mIsUserChosenFinished = false;
+
+ bindCarrierService();
+
+ // Call screening filtering timed out
+ mHandler.postDelayed(new Runnable("ICF.pFTO", mTelecomLock) {
+ @Override
+ public void loggedRun() {
+ if (!mIsFinished) {
+ Log.i(CallScreeningServiceController.this, "Call screening has timed out.");
+ finishCallScreening();
+ }
+ }
+ }.prepare(), CALL_FILTERING_TIMED_OUT);
+ }
+
+ @Override
+ public void onCallScreeningFilterComplete(Call call, CallFilteringResult result,
+ String packageName) {
+ synchronized (mTelecomLock) {
+ mResult = result.combine(mResult);
+ if (!TextUtils.isEmpty(packageName) && packageName.equals(getCarrierPackageName())) {
+ mIsCarrierFinished = true;
+ if (result.mCallBlockReason == CallLog.Calls.BLOCK_REASON_CALL_SCREENING_SERVICE) {
+ finishCallScreening();
+ } else {
+ checkContactExistsAndBindService();
+ }
+ } else if (!TextUtils.isEmpty(packageName) &&
+ packageName.equals(getDefaultDialerPackageName())) {
+ // Default dialer defined CallScreeningService cannot skip the call log.
+ mResult.shouldAddToCallLog = true;
+ mIsDefaultDialerFinished = true;
+ if (result.mCallBlockReason == CallLog.Calls.BLOCK_REASON_CALL_SCREENING_SERVICE ||
+ mIsUserChosenFinished) {
+ finishCallScreening();
+ }
+ } else if (!TextUtils.isEmpty(packageName) &&
+ packageName.equals(getUserChosenPackageName())) {
+ // User defined CallScreeningService cannot skip the call log.
+ mResult.shouldAddToCallLog = true;
+ mIsUserChosenFinished = true;
+ if (mIsDefaultDialerFinished) {
+ finishCallScreening();
+ }
+ }
+ }
+ }
+
+ private void bindCarrierService() {
+ String carrierPackageName = getCarrierPackageName();
+ if (TextUtils.isEmpty(carrierPackageName)) {
+ mIsCarrierFinished = true;
+ bindDefaultDialerAndUserChosenService();
+ } else {
+ createCallScreeningServiceFilter().startCallScreeningFilter(mCall, this,
+ carrierPackageName, mAppLabelProxy.getAppLabel(carrierPackageName),
+ CallScreeningServiceFilter.CALL_SCREENING_FILTER_TYPE_CARRIER);
+ }
+
+ // Carrier filtering timed out
+ mHandler.postDelayed(new Runnable("ICF.pFTO", mTelecomLock) {
+ @Override
+ public void loggedRun() {
+ if (!mIsCarrierFinished) {
+ mIsCarrierFinished = true;
+ checkContactExistsAndBindService();
+ }
+ }
+ }.prepare(), CARRIER_CALL_FILTERING_TIMED_OUT);
+ }
+
+ private void bindDefaultDialerAndUserChosenService() {
+ if (mIsCarrierFinished) {
+ String dialerPackageName = getDefaultDialerPackageName();
+ String systemDialerPackageName = getSystemDialerPackageName();
+ if (TextUtils.isEmpty(dialerPackageName)) {
+ mIsDefaultDialerFinished = true;
+ } else {
+ int dialerType = dialerPackageName.equals(systemDialerPackageName) ?
+ CallScreeningServiceFilter.CALL_SCREENING_FILTER_TYPE_SYSTEM_DIALER :
+ CallScreeningServiceFilter.CALL_SCREENING_FILTER_TYPE_DEFAULT_DIALER;
+ createCallScreeningServiceFilter().startCallScreeningFilter(mCall,
+ CallScreeningServiceController.this, dialerPackageName,
+ mAppLabelProxy.getAppLabel(dialerPackageName), dialerType);
+ }
+
+ String userChosenPackageName = getUserChosenPackageName();
+ if (TextUtils.isEmpty(userChosenPackageName)) {
+ mIsUserChosenFinished = true;
+ } else {
+ createCallScreeningServiceFilter().startCallScreeningFilter(mCall,
+ CallScreeningServiceController.this, userChosenPackageName,
+ mAppLabelProxy.getAppLabel(userChosenPackageName),
+ CallScreeningServiceFilter.CALL_SCREENING_FILTER_TYPE_USER_SELECTED);
+ }
+
+ if (mIsDefaultDialerFinished && mIsUserChosenFinished) {
+ finishCallScreening();
+ }
+ }
+ }
+
+ private CallScreeningServiceFilter createCallScreeningServiceFilter() {
+ return new CallScreeningServiceFilter(
+ mContext,
+ mCallsManager,
+ mPhoneAccountRegistrar,
+ mParcelableCallUtilsConverter,
+ mTelecomLock,
+ mSettingsSecureAdapter);
+ }
+
+ private void checkContactExistsAndBindService() {
+ mCallerInfoLookupHelper.startLookup(mCall.getHandle(),
+ new CallerInfoLookupHelper.OnQueryCompleteListener() {
+ @Override
+ public void onCallerInfoQueryComplete(Uri handle, CallerInfo info) {
+ boolean contactExists = info != null && info.contactExists;
+ Log.i(CallScreeningServiceController.this, "Contact exists: " +
+ contactExists);
+ if (!contactExists) {
+ bindDefaultDialerAndUserChosenService();
+ } else {
+ finishCallScreening();
+ }
+ }
+
+ @Override
+ public void onContactPhotoQueryComplete(Uri handle, CallerInfo
+ info) {
+ // ignore
+ }
+ });
+ }
+
+ private void finishCallScreening() {
+ Log.addEvent(mCall, LogUtils.Events.CONTROLLER_SCREENING_COMPLETED, mResult);
+ mCallback.onCallFilteringComplete(mCall, mResult);
+ mIsFinished = true;
+ }
+
+ private String getCarrierPackageName() {
+ ComponentName componentName = null;
+ CarrierConfigManager configManager = (CarrierConfigManager) mContext.getSystemService
+ (Context.CARRIER_CONFIG_SERVICE);
+ PersistableBundle configBundle = configManager.getConfig();
+ if (configBundle != null) {
+ componentName = ComponentName.unflattenFromString(configBundle.getString
+ (CarrierConfigManager.KEY_CARRIER_CALL_SCREENING_APP_STRING));
+ }
+
+ return componentName != null ? componentName.getPackageName() : null;
+ }
+
+ private String getDefaultDialerPackageName() {
+ return TelecomManager.from(mContext).getDefaultDialerPackage();
+ }
+
+ private String getSystemDialerPackageName() {
+ return TelecomManager.from(mContext).getSystemDialerPackage();
+ }
+
+ private String getUserChosenPackageName() {
+ return mCallsManager.getRoleManagerAdapter().getDefaultCallScreeningApp();
+ }
+}
diff --git a/src/com/android/server/telecom/callfiltering/CallScreeningServiceFilter.java b/src/com/android/server/telecom/callfiltering/CallScreeningServiceFilter.java
index 4830b31..c8ec18a 100644
--- a/src/com/android/server/telecom/callfiltering/CallScreeningServiceFilter.java
+++ b/src/com/android/server/telecom/callfiltering/CallScreeningServiceFilter.java
@@ -16,38 +16,48 @@
package com.android.server.telecom.callfiltering;
-import android.Manifest;
import android.content.ComponentName;
import android.content.Context;
-import android.content.Intent;
import android.content.ServiceConnection;
-import android.content.pm.ResolveInfo;
import android.os.Binder;
import android.os.IBinder;
+import android.os.PersistableBundle;
import android.os.RemoteException;
import android.os.UserHandle;
-import android.telecom.CallScreeningService;
+import android.provider.CallLog;
+import android.provider.Settings;
import android.telecom.Log;
+import android.telecom.TelecomManager;
+import android.telephony.CarrierConfigManager;
import android.text.TextUtils;
import com.android.internal.telecom.ICallScreeningAdapter;
import com.android.internal.telecom.ICallScreeningService;
import com.android.server.telecom.Call;
+import com.android.server.telecom.CallScreeningServiceHelper;
import com.android.server.telecom.CallsManager;
-import com.android.server.telecom.DefaultDialerCache;
import com.android.server.telecom.LogUtils;
import com.android.server.telecom.ParcelableCallUtils;
import com.android.server.telecom.PhoneAccountRegistrar;
-import com.android.server.telecom.TelecomServiceImpl;
+import com.android.server.telecom.TelecomServiceImpl.SettingsSecureAdapter;
import com.android.server.telecom.TelecomSystem;
-import java.util.List;
-
/**
* Binds to {@link ICallScreeningService} to allow call blocking. A single instance of this class
* handles a single call.
*/
-public class CallScreeningServiceFilter implements IncomingCallFilter.CallFilter {
+public class CallScreeningServiceFilter {
+
+ public static final int CALL_SCREENING_FILTER_TYPE_USER_SELECTED = 1;
+ public static final int CALL_SCREENING_FILTER_TYPE_DEFAULT_DIALER = 2;
+ public static final int CALL_SCREENING_FILTER_TYPE_SYSTEM_DIALER = 3;
+ public static final int CALL_SCREENING_FILTER_TYPE_CARRIER = 4;
+
+ public interface CallScreeningFilterResultCallback {
+ void onCallScreeningFilterComplete(Call call, CallFilteringResult result, String
+ packageName);
+ }
+
private class CallScreeningServiceConnection implements ServiceConnection {
@Override
public void onServiceConnected(ComponentName componentName, IBinder service) {
@@ -89,6 +99,7 @@
mResult = new CallFilteringResult(
true, // shouldAllowCall
false, //shouldReject
+ false, //shouldSilence
true, //shouldAddToCallLog
true // shouldShowNotification
);
@@ -108,20 +119,27 @@
String callId,
boolean shouldReject,
boolean shouldAddToCallLog,
- boolean shouldShowNotification) {
+ boolean shouldShowNotification,
+ ComponentName componentName) {
Log.startSession("CSCR.dC");
long token = Binder.clearCallingIdentity();
try {
synchronized (mTelecomLock) {
+ boolean isServiceRequestingLogging = isLoggable(componentName,
+ shouldAddToCallLog);
Log.i(this, "disallowCall(%s), shouldReject: %b, shouldAddToCallLog: %b, "
+ "shouldShowNotification: %b", callId, shouldReject,
- shouldAddToCallLog, shouldShowNotification);
+ isServiceRequestingLogging, shouldShowNotification);
if (mCall != null && mCall.getId().equals(callId)) {
mResult = new CallFilteringResult(
false, // shouldAllowCall
shouldReject, //shouldReject
- shouldAddToCallLog, //shouldAddToCallLog
- shouldShowNotification // shouldShowNotification
+ false, // shouldSilenceCall
+ isServiceRequestingLogging, //shouldAddToCallLog
+ shouldShowNotification, // shouldShowNotification
+ CallLog.Calls.BLOCK_REASON_CALL_SCREENING_SERVICE, //callBlockReason
+ mAppName, //callScreeningAppName
+ componentName.flattenToString() //callScreeningComponentName
);
} else {
Log.w(this, "disallowCall, unknown call id: %s", callId);
@@ -133,21 +151,49 @@
Log.endSession();
}
}
+
+ @Override
+ public void silenceCall(String callId) {
+ Log.startSession("CSCR.sC");
+ long token = Binder.clearCallingIdentity();
+ try {
+ synchronized (mTelecomLock) {
+ Log.d(this, "silenceCall(%s)", callId);
+ if (mCall != null && mCall.getId().equals(callId)) {
+ mResult = new CallFilteringResult(
+ true, // shouldAllowCall
+ false, //shouldReject
+ true, //shouldSilence
+ true, //shouldAddToCallLog
+ true // shouldShowNotification
+ );
+ } else {
+ Log.w(this, "silenceCall, unknown call id: %s", callId);
+ }
+ finishCallScreening();
+ }
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ Log.endSession();
+ }
+ }
}
private final Context mContext;
- private final PhoneAccountRegistrar mPhoneAccountRegistrar;
private final CallsManager mCallsManager;
- private final DefaultDialerCache mDefaultDialerCache;
private final ParcelableCallUtils.Converter mParcelableCallUtilsConverter;
private final TelecomSystem.SyncRoot mTelecomLock;
+ private final SettingsSecureAdapter mSettingsSecureAdapter;
private Call mCall;
- private CallFilterResultCallback mCallback;
+ private CallScreeningFilterResultCallback mCallback;
private ICallScreeningService mService;
private ServiceConnection mConnection;
-
+ private String mPackageName;
+ private CharSequence mAppName;
private boolean mHasFinished = false;
+ private int mCallScreeningServiceType;
+
private CallFilteringResult mResult = new CallFilteringResult(
true, // shouldAllowCall
false, //shouldReject
@@ -159,27 +205,37 @@
Context context,
CallsManager callsManager,
PhoneAccountRegistrar phoneAccountRegistrar,
- DefaultDialerCache defaultDialerCache,
ParcelableCallUtils.Converter parcelableCallUtilsConverter,
- TelecomSystem.SyncRoot lock) {
+ TelecomSystem.SyncRoot lock,
+ SettingsSecureAdapter settingsSecureAdapter) {
mContext = context;
- mPhoneAccountRegistrar = phoneAccountRegistrar;
mCallsManager = callsManager;
- mDefaultDialerCache = defaultDialerCache;
mParcelableCallUtilsConverter = parcelableCallUtilsConverter;
mTelecomLock = lock;
+ mSettingsSecureAdapter = settingsSecureAdapter;
}
- @Override
- public void startFilterLookup(Call call, CallFilterResultCallback callback) {
+ public void startCallScreeningFilter(Call call,
+ CallScreeningFilterResultCallback callback,
+ String packageName,
+ CharSequence appName,
+ int callScreeningServiceType) {
if (mHasFinished) {
Log.w(this, "Attempting to reuse CallScreeningServiceFilter. Ignoring.");
return;
}
- Log.addEvent(call, LogUtils.Events.SCREENING_SENT);
+ Log.addEvent(call, LogUtils.Events.SCREENING_SENT, packageName);
mCall = call;
mCallback = callback;
- if (!bindService()) {
+ mPackageName = packageName;
+ mAppName = appName;
+ mCallScreeningServiceType = callScreeningServiceType;
+
+ mConnection = new CallScreeningServiceConnection();
+ if (!CallScreeningServiceHelper.bindCallScreeningService(mContext,
+ mCallsManager.getCurrentUserHandle(),
+ mPackageName,
+ mConnection)) {
Log.i(this, "Could not bind to call screening service");
finishCallScreening();
}
@@ -188,11 +244,15 @@
private void finishCallScreening() {
if (!mHasFinished) {
Log.addEvent(mCall, LogUtils.Events.SCREENING_COMPLETED, mResult);
- mCallback.onCallFilteringComplete(mCall, mResult);
+ mCallback.onCallScreeningFilterComplete(mCall, mResult, mPackageName);
if (mConnection != null) {
// We still need to call unbind even if the service disconnected.
- mContext.unbindService(mConnection);
+ try {
+ mContext.unbindService(mConnection);
+ } catch (IllegalArgumentException ie) {
+ Log.e(this, ie, "Unbind error");
+ }
mConnection = null;
}
mService = null;
@@ -200,65 +260,73 @@
}
}
- private boolean bindService() {
- String dialerPackage = mDefaultDialerCache
- .getDefaultDialerApplication(UserHandle.USER_CURRENT);
- if (TextUtils.isEmpty(dialerPackage)) {
- Log.i(this, "Default dialer is empty. Not performing call screening.");
- return false;
+ private void onServiceBound(ICallScreeningService service) {
+ mService = service;
+ try {
+ boolean isSystemDialer =
+ mCallScreeningServiceType
+ == CallScreeningServiceFilter.CALL_SCREENING_FILTER_TYPE_SYSTEM_DIALER;
+ // Important: Only send a minimal subset of the call to the screening service.
+ // We will send some of the call extras to the call screening service which the system
+ // dialer implements.
+ mService.screenCall(new CallScreeningAdapter(),
+ mParcelableCallUtilsConverter.toParcelableCallForScreening(mCall,
+ isSystemDialer));
+ } catch (RemoteException e) {
+ Log.e(this, e, "Failed to set the call screening adapter.");
+ finishCallScreening();
+ }
+ }
+
+ private boolean isLoggable(ComponentName componentName, boolean shouldAddToCallLog) {
+ if (isCarrierCallScreeningApp(componentName)) {
+ return shouldAddToCallLog;
+ } else if (isDefaultDialer(componentName) || isUserChosenCallScreeningApp(componentName)) {
+ return true;
}
- Intent intent = new Intent(CallScreeningService.SERVICE_INTERFACE)
- .setPackage(dialerPackage);
- List<ResolveInfo> entries = mContext.getPackageManager().queryIntentServicesAsUser(
- intent, 0, mCallsManager.getCurrentUserHandle().getIdentifier());
- if (entries.isEmpty()) {
- Log.i(this, "There are no call screening services installed on this device.");
- return false;
+ return shouldAddToCallLog;
+ }
+
+ private boolean isCarrierCallScreeningApp(ComponentName componentName) {
+ String carrierCallScreeningApp = null;
+ CarrierConfigManager configManager = (CarrierConfigManager) mContext
+ .getSystemService(Context.CARRIER_CONFIG_SERVICE);
+ PersistableBundle configBundle = configManager.getConfig();
+ if (configBundle != null) {
+ carrierCallScreeningApp = configBundle
+ .getString(CarrierConfigManager.KEY_CARRIER_CALL_SCREENING_APP_STRING);
}
- ResolveInfo entry = entries.get(0);
- if (entry.serviceInfo == null) {
- Log.w(this, "The call screening service has invalid service info");
- return false;
- }
-
- if (entry.serviceInfo.permission == null || !entry.serviceInfo.permission.equals(
- Manifest.permission.BIND_SCREENING_SERVICE)) {
- Log.w(this, "CallScreeningService must require BIND_SCREENING_SERVICE permission: " +
- entry.serviceInfo.packageName);
- return false;
- }
-
- ComponentName componentName =
- new ComponentName(entry.serviceInfo.packageName, entry.serviceInfo.name);
- Log.addEvent(mCall, LogUtils.Events.BIND_SCREENING, componentName);
- intent.setComponent(componentName);
- ServiceConnection connection = new CallScreeningServiceConnection();
- if (mContext.bindServiceAsUser(
- intent,
- connection,
- Context.BIND_AUTO_CREATE | Context.BIND_FOREGROUND_SERVICE,
- UserHandle.CURRENT)) {
- Log.d(this, "bindService, found service, waiting for it to connect");
- mConnection = connection;
+ if (!TextUtils.isEmpty(carrierCallScreeningApp) && carrierCallScreeningApp
+ .equals(componentName.flattenToString())) {
return true;
}
return false;
}
- private void onServiceBound(ICallScreeningService service) {
- mService = service;
- try {
- mService.screenCall(new CallScreeningAdapter(),
- mParcelableCallUtilsConverter.toParcelableCall(
- mCall,
- false, /* includeVideoProvider */
- mPhoneAccountRegistrar));
- } catch (RemoteException e) {
- Log.e(this, e, "Failed to set the call screening adapter.");
- finishCallScreening();
+ private boolean isDefaultDialer(ComponentName componentName) {
+ String defaultDialer = TelecomManager.from(mContext).getDefaultDialerPackage();
+
+ if (!TextUtils.isEmpty(defaultDialer) && defaultDialer
+ .equals(componentName.getPackageName())) {
+ return true;
}
+
+ return false;
+ }
+
+ private boolean isUserChosenCallScreeningApp(ComponentName componentName) {
+ String defaultCallScreeningApplication = mSettingsSecureAdapter
+ .getStringForUser(mContext.getContentResolver(),
+ Settings.Secure.CALL_SCREENING_DEFAULT_COMPONENT, UserHandle.USER_CURRENT);
+
+ if (!TextUtils.isEmpty(defaultCallScreeningApplication) && defaultCallScreeningApplication
+ .equals(componentName.flattenToString())) {
+ return true;
+ }
+
+ return false;
}
}
diff --git a/src/com/android/server/telecom/callfiltering/DirectToVoicemailCallFilter.java b/src/com/android/server/telecom/callfiltering/DirectToVoicemailCallFilter.java
index 2ac82dc..3a8ff7d 100644
--- a/src/com/android/server/telecom/callfiltering/DirectToVoicemailCallFilter.java
+++ b/src/com/android/server/telecom/callfiltering/DirectToVoicemailCallFilter.java
@@ -17,6 +17,7 @@
package com.android.server.telecom.callfiltering;
import android.net.Uri;
+import android.provider.CallLog;
import android.telecom.Log;
import com.android.internal.telephony.CallerInfo;
@@ -49,7 +50,11 @@
false, // shouldAllowCall
true, // shouldReject
true, // shouldAddToCallLog
- true // shouldShowNotification
+ true, // shouldShowNotification
+ CallLog.Calls.BLOCK_REASON_DIRECT_TO_VOICEMAIL,
+ //callBlockReason
+ null, //callScreeningAppName
+ null // callScreeningComponentName
);
} else {
result = new CallFilteringResult(
diff --git a/src/com/android/server/telecom/callredirection/CallRedirectionCallback.java b/src/com/android/server/telecom/callredirection/CallRedirectionCallback.java
new file mode 100644
index 0000000..24ac326
--- /dev/null
+++ b/src/com/android/server/telecom/callredirection/CallRedirectionCallback.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2018 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.callredirection;
+
+import com.android.server.telecom.Call;
+
+public interface CallRedirectionCallback {
+ void onCallRedirectionComplete(Call call);
+}
diff --git a/src/com/android/server/telecom/callredirection/CallRedirectionProcessor.java b/src/com/android/server/telecom/callredirection/CallRedirectionProcessor.java
new file mode 100644
index 0000000..7a54118
--- /dev/null
+++ b/src/com/android/server/telecom/callredirection/CallRedirectionProcessor.java
@@ -0,0 +1,431 @@
+/*
+ * Copyright (C) 2018 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.callredirection;
+
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.ServiceConnection;
+import android.net.Uri;
+import android.os.Binder;
+import android.os.Handler;
+import android.os.IBinder;
+import android.os.Looper;
+import android.os.RemoteException;
+import android.os.UserHandle;
+import android.telecom.CallRedirectionService;
+import android.telecom.GatewayInfo;
+import android.telecom.Log;
+import android.telecom.Logging.Runnable;
+import android.telecom.PhoneAccountHandle;
+import com.android.internal.annotations.VisibleForTesting;
+import com.android.internal.telecom.ICallRedirectionAdapter;
+import com.android.internal.telecom.ICallRedirectionService;
+import com.android.server.telecom.Call;
+import com.android.server.telecom.CallsManager;
+import com.android.server.telecom.LogUtils;
+import com.android.server.telecom.PhoneAccountRegistrar;
+import com.android.server.telecom.TelecomSystem;
+import com.android.server.telecom.Timeouts;
+
+/**
+ * A single instance of call redirection processor that handles the call redirection with
+ * user-defined {@link CallRedirectionService} and carrier {@link CallRedirectionService} for a
+ * single call.
+ *
+ * A user-defined call redirection will be performed firstly and a carrier call redirection will be
+ * performed after that; there will be a total of two call redirection cycles.
+ *
+ * A call redirection cycle is a cycle:
+ * 1) Telecom requests a call redirection of a call with a specific {@link CallRedirectionService},
+ * 2) Telecom receives the response either from a specific {@link CallRedirectionService} or from
+ * the timeout.
+ *
+ * Telecom should return to {@link CallsManager} at the end of current call redirection
+ * cycle, if
+ * 1) {@link CallRedirectionService} sends {@link CallRedirectionService#cancelCall()} response
+ * before timeout;
+ * or 2) Telecom finishes call redirection with carrier {@link CallRedirectionService}.
+ */
+public class CallRedirectionProcessor implements CallRedirectionCallback {
+
+ private class CallRedirectionAttempt {
+ private final ComponentName mComponentName;
+ private final String mServiceType;
+ private ServiceConnection mConnection;
+ private ICallRedirectionService mService;
+
+ private CallRedirectionAttempt(ComponentName componentName, String serviceType) {
+ mComponentName = componentName;
+ mServiceType = serviceType;
+ }
+
+ private void process() {
+ Intent intent = new Intent(CallRedirectionService.SERVICE_INTERFACE)
+ .setComponent(mComponentName);
+ ServiceConnection connection = new CallRedirectionServiceConnection();
+ if (mContext.bindServiceAsUser(
+ intent,
+ connection,
+ Context.BIND_AUTO_CREATE | Context.BIND_FOREGROUND_SERVICE
+ | Context.BIND_ALLOW_BACKGROUND_ACTIVITY_STARTS,
+ UserHandle.CURRENT)) {
+ Log.d(this, "bindService, found " + mServiceType + " call redirection service,"
+ + " waiting for it to connect");
+ mConnection = connection;
+ }
+ }
+
+ private void onServiceBound(ICallRedirectionService service) {
+ mService = service;
+ try {
+ // Telecom does not perform user interactions for carrier call redirection.
+ mService.placeCall(new CallRedirectionAdapter(), mProcessedDestinationUri,
+ mPhoneAccountHandle, mAllowInteractiveResponse
+ && mServiceType.equals(SERVICE_TYPE_USER_DEFINED));
+ Log.addEvent(mCall, mServiceType.equals(SERVICE_TYPE_USER_DEFINED)
+ ? LogUtils.Events.REDIRECTION_SENT_USER
+ : LogUtils.Events.REDIRECTION_SENT_CARRIER, mComponentName);
+ Log.d(this, "Requested placeCall with [Destination Uri] "
+ + Log.pii(mProcessedDestinationUri)
+ + " [phoneAccountHandle]" + mPhoneAccountHandle);
+ } catch (RemoteException e) {
+ Log.e(this, e, "Failed to request with the found " + mServiceType + " call"
+ + " redirection service");
+ finishCallRedirection();
+ }
+ }
+
+ private void finishCallRedirection() {
+ if (((mServiceType.equals(SERVICE_TYPE_CARRIER)) && mIsCarrierRedirectionPending)
+ || ((mServiceType.equals(SERVICE_TYPE_USER_DEFINED))
+ && mIsUserDefinedRedirectionPending)) {
+ if (mConnection != null) {
+ // We still need to call unbind even if the service disconnected.
+ mContext.unbindService(mConnection);
+ mConnection = null;
+ }
+ mService = null;
+ onCallRedirectionComplete(mCall);
+ }
+ }
+
+ private class CallRedirectionServiceConnection implements ServiceConnection {
+ @Override
+ public void onServiceConnected(ComponentName componentName, IBinder service) {
+ Log.startSession("CRSC.oSC");
+ try {
+ synchronized (mTelecomLock) {
+ Log.addEvent(mCall, mServiceType.equals(SERVICE_TYPE_USER_DEFINED)
+ ? LogUtils.Events.REDIRECTION_BOUND_USER
+ : LogUtils.Events.REDIRECTION_BOUND_CARRIER, componentName);
+ onServiceBound(ICallRedirectionService.Stub.asInterface(service));
+ }
+ } finally {
+ Log.endSession();
+ }
+ }
+
+ @Override
+ public void onServiceDisconnected(ComponentName componentName) {
+ Log.startSession("CRSC.oSD");
+ try {
+ synchronized (mTelecomLock) {
+ finishCallRedirection();
+ }
+ } finally {
+ Log.endSession();
+ }
+ }
+ }
+
+ private class CallRedirectionAdapter extends ICallRedirectionAdapter.Stub {
+ @Override
+ public void cancelCall() {
+ Log.startSession("CRA.cC");
+ long token = Binder.clearCallingIdentity();
+ try {
+ synchronized (mTelecomLock) {
+ Log.d(this, "Received cancelCall from " + mServiceType + " call"
+ + " redirection service");
+ mShouldCancelCall = true;
+ finishCallRedirection();
+ }
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ Log.endSession();
+ }
+ }
+
+ @Override
+ public void placeCallUnmodified() {
+ Log.startSession("CRA.pCU");
+ long token = Binder.clearCallingIdentity();
+ try {
+ synchronized (mTelecomLock) {
+ Log.d(this, "Received placeCallUnmodified from " + mServiceType + " call"
+ + " redirection service");
+ finishCallRedirection();
+ }
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ Log.endSession();
+ }
+ }
+
+ @Override
+ public void redirectCall(Uri gatewayUri, PhoneAccountHandle targetPhoneAccount,
+ boolean confirmFirst) {
+ Log.startSession("CRA.rC");
+ long token = Binder.clearCallingIdentity();
+ try {
+ synchronized (mTelecomLock) {
+ mRedirectionGatewayInfo = mCallRedirectionProcessorHelper
+ .getGatewayInfoFromGatewayUri(mComponentName.getPackageName(),
+ gatewayUri, mDestinationUri);
+ mPhoneAccountHandle = targetPhoneAccount;
+ // If carrier redirects call, we should skip to notify users about
+ // the user-defined call redirection service.
+ mUiAction = (confirmFirst && mServiceType.equals(SERVICE_TYPE_USER_DEFINED)
+ && mAllowInteractiveResponse)
+ ? UI_TYPE_USER_DEFINED_ASK_FOR_CONFIRM : UI_TYPE_NO_ACTION;
+ Log.d(this, "Received redirectCall with [gatewayUri]"
+ + Log.pii(gatewayUri) + " [phoneAccountHandle]"
+ + mPhoneAccountHandle + "[confirmFirst]" + confirmFirst + " from "
+ + mServiceType + " call redirection service");
+ finishCallRedirection();
+ }
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ Log.endSession();
+ }
+ }
+ }
+ }
+
+ private final Context mContext;
+ private final CallsManager mCallsManager;
+ private final Call mCall;
+ private final boolean mAllowInteractiveResponse;
+ private GatewayInfo mRedirectionGatewayInfo;
+ private final boolean mSpeakerphoneOn;
+ private final int mVideoState;
+ private final Timeouts.Adapter mTimeoutsAdapter;
+ private final TelecomSystem.SyncRoot mTelecomLock;
+ private final Handler mHandler = new Handler(Looper.getMainLooper());
+
+ private CallRedirectionAttempt mAttempt;
+ private CallRedirectionProcessorHelper mCallRedirectionProcessorHelper;
+
+ public static final String SERVICE_TYPE_CARRIER = "carrier";
+ public static final String SERVICE_TYPE_USER_DEFINED = "user_defined";
+ public static final String UI_TYPE_NO_ACTION = "no_action";
+ public static final String UI_TYPE_USER_DEFINED_TIMEOUT = "user_defined_timeout";
+ public static final String UI_TYPE_USER_DEFINED_ASK_FOR_CONFIRM
+ = "user_defined_ask_for_confirm";
+
+ private PhoneAccountHandle mPhoneAccountHandle;
+ private Uri mDestinationUri;
+ /**
+ * Try to send the implemented service with processed destination uri by formatting it to E.164
+ * and removing post dial digits.
+ */
+ private Uri mProcessedDestinationUri;
+
+ /**
+ * Indicates if Telecom should cancel the call when the whole call redirection finishes.
+ */
+ private boolean mShouldCancelCall = false;
+ /**
+ * Indicates Telecom should handle different types of UI if need.
+ */
+ private String mUiAction = UI_TYPE_NO_ACTION;
+ /**
+ * Indicates if Telecom is waiting for a callback from a user-defined
+ * {@link CallRedirectionService}.
+ */
+ private boolean mIsUserDefinedRedirectionPending = false;
+ /**
+ * Indicates if Telecom is waiting for a callback from a carrier
+ * {@link CallRedirectionService}.
+ */
+ private boolean mIsCarrierRedirectionPending = false;
+
+ public CallRedirectionProcessor(
+ Context context,
+ CallsManager callsManager,
+ Call call,
+ Uri handle,
+ PhoneAccountRegistrar phoneAccountRegistrar,
+ GatewayInfo gatewayInfo,
+ boolean speakerphoneOn,
+ int videoState) {
+ mContext = context;
+ mCallsManager = callsManager;
+ mCall = call;
+ mDestinationUri = handle;
+ mPhoneAccountHandle = call.getTargetPhoneAccount();
+ mRedirectionGatewayInfo = gatewayInfo;
+ mSpeakerphoneOn = speakerphoneOn;
+ mVideoState = videoState;
+ mTimeoutsAdapter = callsManager.getTimeoutsAdapter();
+ mTelecomLock = callsManager.getLock();
+ /**
+ * The current rule to decide whether the implemented {@link CallRedirectionService} should
+ * allow interactive responses with users is only based on whether it is in car mode.
+ */
+ mAllowInteractiveResponse = !callsManager.getSystemStateHelper().isCarMode();
+ mCallRedirectionProcessorHelper = new CallRedirectionProcessorHelper(
+ context, callsManager, phoneAccountRegistrar);
+ mProcessedDestinationUri = mCallRedirectionProcessorHelper.formatNumberForRedirection(
+ mDestinationUri);
+ }
+
+ @Override
+ public void onCallRedirectionComplete(Call call) {
+ // synchronized on mTelecomLock to enter into Telecom.
+ mHandler.post(new Runnable("CRP.oCRC", mTelecomLock) {
+ @Override
+ public void loggedRun() {
+ if (mIsUserDefinedRedirectionPending) {
+ Log.addEvent(mCall, LogUtils.Events.REDIRECTION_COMPLETED_USER);
+ mIsUserDefinedRedirectionPending = false;
+ if (mShouldCancelCall) {
+ mCallsManager.onCallRedirectionComplete(mCall, mDestinationUri,
+ mPhoneAccountHandle, mRedirectionGatewayInfo, mSpeakerphoneOn,
+ mVideoState, mShouldCancelCall, mUiAction);
+ } else {
+ performCarrierCallRedirection();
+ }
+ }
+ if (mIsCarrierRedirectionPending) {
+ Log.addEvent(mCall, LogUtils.Events.REDIRECTION_COMPLETED_CARRIER);
+ mIsCarrierRedirectionPending = false;
+ mCallsManager.onCallRedirectionComplete(mCall, mDestinationUri,
+ mPhoneAccountHandle, mRedirectionGatewayInfo, mSpeakerphoneOn,
+ mVideoState, mShouldCancelCall, mUiAction);
+ }
+ }
+ }.prepare());
+ }
+
+ /**
+ * The entry to perform call redirection of the call from (@link CallsManager)
+ */
+ public void performCallRedirection() {
+ // If the Gateway Info is set with intent, only request with carrier call redirection.
+ if (mRedirectionGatewayInfo != null) {
+ performCarrierCallRedirection();
+ } else {
+ performUserDefinedCallRedirection();
+ }
+ }
+
+ private void performUserDefinedCallRedirection() {
+ Log.d(this, "performUserDefinedCallRedirection");
+ ComponentName componentName =
+ mCallRedirectionProcessorHelper.getUserDefinedCallRedirectionService();
+ if (componentName != null) {
+ mAttempt = new CallRedirectionAttempt(componentName, SERVICE_TYPE_USER_DEFINED);
+ mAttempt.process();
+ mIsUserDefinedRedirectionPending = true;
+ processTimeoutForCallRedirection(SERVICE_TYPE_USER_DEFINED);
+ } else {
+ Log.i(this, "There are no user-defined call redirection services installed on this"
+ + " device.");
+ performCarrierCallRedirection();
+ }
+ }
+
+ private void performCarrierCallRedirection() {
+ Log.d(this, "performCarrierCallRedirection");
+ ComponentName componentName =
+ mCallRedirectionProcessorHelper.getCarrierCallRedirectionService(
+ mPhoneAccountHandle);
+ if (componentName != null) {
+ mAttempt = new CallRedirectionAttempt(componentName, SERVICE_TYPE_CARRIER);
+ mAttempt.process();
+ mIsCarrierRedirectionPending = true;
+ processTimeoutForCallRedirection(SERVICE_TYPE_CARRIER);
+ } else {
+ Log.i(this, "There are no carrier call redirection services installed on this"
+ + " device.");
+ mCallsManager.onCallRedirectionComplete(mCall, mDestinationUri,
+ mPhoneAccountHandle, mRedirectionGatewayInfo, mSpeakerphoneOn, mVideoState,
+ mShouldCancelCall, mUiAction);
+ }
+ }
+
+ private void processTimeoutForCallRedirection(String serviceType) {
+ long timeout = serviceType.equals(SERVICE_TYPE_USER_DEFINED) ?
+ mTimeoutsAdapter.getUserDefinedCallRedirectionTimeoutMillis(
+ mContext.getContentResolver()) : mTimeoutsAdapter
+ .getCarrierCallRedirectionTimeoutMillis(mContext.getContentResolver());
+
+ mHandler.postDelayed(new Runnable("CRP.pTFCR", null) {
+ @Override
+ public void loggedRun() {
+ boolean isCurrentRedirectionPending =
+ serviceType.equals(SERVICE_TYPE_USER_DEFINED) ?
+ mIsUserDefinedRedirectionPending : mIsCarrierRedirectionPending;
+ if (isCurrentRedirectionPending) {
+ Log.i(this, serviceType + " call redirection has timed out.");
+ Log.addEvent(mCall, serviceType.equals(SERVICE_TYPE_USER_DEFINED)
+ ? LogUtils.Events.REDIRECTION_TIMED_OUT_USER
+ : LogUtils.Events.REDIRECTION_TIMED_OUT_CARRIER);
+ if (serviceType.equals(SERVICE_TYPE_USER_DEFINED)) {
+ mUiAction = UI_TYPE_USER_DEFINED_TIMEOUT;
+ mShouldCancelCall = true;
+ }
+ onCallRedirectionComplete(mCall);
+ }
+ }
+ }.prepare(), timeout);
+ }
+
+ /**
+ * Checks if Telecom can make call redirection with any available call redirection service.
+ *
+ * @return {@code true} if it can; {@code false} otherwise.
+ */
+ public boolean canMakeCallRedirectionWithService() {
+ boolean canMakeCallRedirectionWithService =
+ mCallRedirectionProcessorHelper.getUserDefinedCallRedirectionService() != null
+ || mCallRedirectionProcessorHelper.getCarrierCallRedirectionService(
+ mPhoneAccountHandle) != null;
+ Log.i(this, "Can make call redirection with any available service: "
+ + canMakeCallRedirectionWithService);
+ return canMakeCallRedirectionWithService;
+ }
+
+ /**
+ * Returns the handler, for testing purposes.
+ */
+ @VisibleForTesting
+ public Handler getHandler() {
+ return mHandler;
+ }
+
+ /**
+ * Set CallRedirectionProcessorHelper for testing purposes.
+ */
+ @VisibleForTesting
+ public void setCallRedirectionServiceHelper(
+ CallRedirectionProcessorHelper callRedirectionProcessorHelper) {
+ mCallRedirectionProcessorHelper = callRedirectionProcessorHelper;
+ }
+}
diff --git a/src/com/android/server/telecom/callredirection/CallRedirectionProcessorHelper.java b/src/com/android/server/telecom/callredirection/CallRedirectionProcessorHelper.java
new file mode 100644
index 0000000..12c8c57
--- /dev/null
+++ b/src/com/android/server/telecom/callredirection/CallRedirectionProcessorHelper.java
@@ -0,0 +1,173 @@
+/*
+ * Copyright (C) 2018 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.callredirection;
+
+import android.Manifest;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ResolveInfo;
+import android.net.Uri;
+import android.os.PersistableBundle;
+import android.telecom.CallRedirectionService;
+import android.telecom.GatewayInfo;
+import android.telecom.Log;
+import android.telecom.PhoneAccountHandle;
+import android.telephony.CarrierConfigManager;
+import android.telephony.PhoneNumberUtils;
+import android.telephony.TelephonyManager;
+import android.text.TextUtils;
+import com.android.internal.annotations.VisibleForTesting;
+import com.android.server.telecom.CallsManager;
+import com.android.server.telecom.PhoneAccountRegistrar;
+
+import java.util.List;
+
+public class CallRedirectionProcessorHelper {
+
+ private final Context mContext;
+ private final CallsManager mCallsManager;
+ private final PhoneAccountRegistrar mPhoneAccountRegistrar;
+
+ public CallRedirectionProcessorHelper(
+ Context context,
+ CallsManager callsManager,
+ PhoneAccountRegistrar phoneAccountRegistrar) {
+ mContext = context;
+ mCallsManager = callsManager;
+ mPhoneAccountRegistrar = phoneAccountRegistrar;
+ }
+
+ @VisibleForTesting
+ public ComponentName getUserDefinedCallRedirectionService() {
+ String packageName = mCallsManager.getRoleManagerAdapter().getDefaultCallRedirectionApp();
+ if (TextUtils.isEmpty(packageName)) {
+ Log.i(this, "PackageName is empty. Not performing user-defined call redirection.");
+ return null;
+ }
+ Intent intent = new Intent(CallRedirectionService.SERVICE_INTERFACE)
+ .setPackage(packageName);
+ return getComponentName(intent, CallRedirectionProcessor.SERVICE_TYPE_USER_DEFINED);
+ }
+
+ @VisibleForTesting
+ public ComponentName getCarrierCallRedirectionService(
+ PhoneAccountHandle targetPhoneAccountHandle) {
+ CarrierConfigManager configManager = (CarrierConfigManager)
+ mContext.getSystemService(Context.CARRIER_CONFIG_SERVICE);
+ if (configManager == null) {
+ Log.i(this, "Cannot get CarrierConfigManager.");
+ return null;
+ }
+ PersistableBundle pb = configManager.getConfigForSubId(mPhoneAccountRegistrar
+ .getSubscriptionIdForPhoneAccount(targetPhoneAccountHandle));
+ if (pb == null) {
+ Log.i(this, "Cannot get PersistableBundle.");
+ return null;
+ }
+ String componentNameString = pb.getString(
+ CarrierConfigManager.KEY_CALL_REDIRECTION_SERVICE_COMPONENT_NAME_STRING);
+ if (componentNameString == null) {
+ Log.i(this, "Cannot get carrier componentNameString.");
+ return null;
+ }
+ ComponentName componentName = ComponentName.unflattenFromString(componentNameString);
+ if (componentName == null) {
+ Log.w(this, "ComponentName is null from string: " + componentNameString);
+ return null;
+ }
+ Intent intent = new Intent(CallRedirectionService.SERVICE_INTERFACE);
+ intent.setComponent(componentName);
+ return getComponentName(intent, CallRedirectionProcessor.SERVICE_TYPE_CARRIER);
+ }
+
+ protected ComponentName getComponentName(Intent intent, String serviceType) {
+ List<ResolveInfo> entries = mContext.getPackageManager().queryIntentServicesAsUser(
+ intent, 0, mCallsManager.getCurrentUserHandle().getIdentifier());
+ if (entries.isEmpty()) {
+ Log.i(this, "There are no " + serviceType + " call redirection services installed" +
+ " on this device.");
+ return null;
+ } else if (entries.size() != 1) {
+ Log.i(this, "There are multiple " + serviceType + " call redirection services" +
+ " installed on this device.");
+ return null;
+ }
+ ResolveInfo entry = entries.get(0);
+ if (entry.serviceInfo == null) {
+ Log.w(this, "The " + serviceType + " call redirection service has invalid" +
+ " service info");
+ return null;
+ }
+ if (entry.serviceInfo.permission == null || !entry.serviceInfo.permission.equals(
+ Manifest.permission.BIND_CALL_REDIRECTION_SERVICE)) {
+ Log.w(this, "CallRedirectionService must require BIND_CALL_REDIRECTION_SERVICE"
+ + " permission: " + entry.serviceInfo.packageName);
+ return null;
+ }
+ return new ComponentName(entry.serviceInfo.packageName, entry.serviceInfo.name);
+ }
+
+ /**
+ * Format Number to E164, and remove post dial digits.
+ */
+ protected Uri formatNumberForRedirection(Uri handle) {
+ return removePostDialDigits(formatNumberToE164(handle));
+ }
+
+ protected Uri formatNumberToE164(Uri handle) {
+ String number = handle.getSchemeSpecificPart();
+
+ // Format number to E164
+ TelephonyManager tm = (TelephonyManager) mContext.getSystemService(
+ Context.TELEPHONY_SERVICE);
+ Log.i(this, "formatNumberToE164, original number: " + Log.pii(number));
+ number = PhoneNumberUtils.formatNumberToE164(number, tm.getNetworkCountryIso());
+ Log.i(this, "formatNumberToE164, formatted E164 number: " + Log.pii(number));
+ // if there is a problem with parsing the phone number, formatNumberToE164 will return null;
+ // and should just use the original number in that case.
+ if (number == null) {
+ return handle;
+ } else {
+ return Uri.fromParts(handle.getScheme(), number, null);
+ }
+ }
+
+ protected Uri removePostDialDigits(Uri handle) {
+ String number = handle.getSchemeSpecificPart();
+
+ // Extract the post dial portion
+ number = PhoneNumberUtils.extractNetworkPortionAlt(number);
+ Log.i(this, "removePostDialDigits, number after being extracted post dial digits: "
+ + Log.pii(number));
+ // if there is a problem with parsing the phone number, removePostDialDigits will return
+ // null; and should just use the original number in that case.
+ if (number == null) {
+ return handle;
+ } else {
+ return Uri.fromParts(handle.getScheme(), number, null);
+ }
+ }
+
+ protected GatewayInfo getGatewayInfoFromGatewayUri(
+ String gatewayPackageName, Uri gatewayUri, Uri destinationUri) {
+ if (!TextUtils.isEmpty(gatewayPackageName) && gatewayUri != null) {
+ return new GatewayInfo(gatewayPackageName, gatewayUri, destinationUri);
+ }
+ return null;
+ }
+}
diff --git a/src/com/android/server/telecom/components/PhoneAccountBroadcastReceiver.java b/src/com/android/server/telecom/components/AppUninstallBroadcastReceiver.java
similarity index 68%
rename from src/com/android/server/telecom/components/PhoneAccountBroadcastReceiver.java
rename to src/com/android/server/telecom/components/AppUninstallBroadcastReceiver.java
index 7737cd8..3a0d517 100644
--- a/src/com/android/server/telecom/components/PhoneAccountBroadcastReceiver.java
+++ b/src/com/android/server/telecom/components/AppUninstallBroadcastReceiver.java
@@ -19,9 +19,12 @@
import com.android.server.telecom.PhoneAccountRegistrar;
import android.content.BroadcastReceiver;
+import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
+import android.os.UserHandle;
+import android.provider.Settings;
import android.telecom.TelecomManager;
import java.lang.String;
@@ -30,14 +33,20 @@
* Captures {@code android.intent.action.ACTION_PACKAGE_FULLY_REMOVED} intents and triggers the
* removal of associated {@link android.telecom.PhoneAccount}s via the
* {@link com.android.telecom.PhoneAccountRegistrar}.
+ *
* Note: This class listens for the {@code PACKAGE_FULLY_REMOVED} intent rather than
* {@code PACKAGE_REMOVED} as {@code PACKAGE_REMOVED} is triggered on re-installation of the same
* package, where {@code PACKAGE_FULLY_REMOVED} is triggered only when an application is completely
- * uninstalled. This is desirable as we do not wish to un-register all
+ * uninstalled.
+ *
+ * This is desirable as we do not wish to un-register all
* {@link android.telecom.PhoneAccount}s associated with a package being re-installed to ensure
* the enabled state of the accounts is retained.
+ *
+ * When default call screening application is removed, set
+ * {@link Settings.Secure.CALL_SCREENING_DEFAULT_APPLICATION} as null into provider.
*/
-public class PhoneAccountBroadcastReceiver extends BroadcastReceiver {
+public class AppUninstallBroadcastReceiver extends BroadcastReceiver {
/**
* Receives the intents the class is configured to received.
*
@@ -54,6 +63,7 @@
String packageName = uri.getSchemeSpecificPart();
handlePackageRemoved(context, packageName);
+ handleUninstallOfCallScreeningService(context, packageName);
}
}
@@ -69,4 +79,20 @@
telecomManager.clearAccountsForPackage(packageName);
}
}
+
+ private void handleUninstallOfCallScreeningService(Context context, String packageName) {
+ ComponentName componentName = null;
+ String defaultCallScreeningApp = Settings.Secure
+ .getStringForUser(context.getContentResolver(),
+ Settings.Secure.CALL_SCREENING_DEFAULT_COMPONENT, UserHandle.USER_CURRENT);
+
+ if (defaultCallScreeningApp != null) {
+ componentName = ComponentName.unflattenFromString(defaultCallScreeningApp);
+ }
+
+ if (componentName != null && componentName.getPackageName().equals(packageName)) {
+ Settings.Secure.putStringForUser(context.getContentResolver(),
+ Settings.Secure.CALL_SCREENING_DEFAULT_COMPONENT, null, UserHandle.USER_CURRENT);
+ }
+ }
}
diff --git a/src/com/android/server/telecom/components/ChangeDefaultDialerDialog.java b/src/com/android/server/telecom/components/ChangeDefaultDialerDialog.java
deleted file mode 100644
index 2becabc..0000000
--- a/src/com/android/server/telecom/components/ChangeDefaultDialerDialog.java
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- * Copyright (C) 2015 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.components;
-
-import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS;
-
-import android.content.Context;
-import android.content.DialogInterface;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageManager;
-import android.content.pm.PackageManager.NameNotFoundException;
-import android.graphics.Color;
-import android.graphics.Typeface;
-import android.os.Bundle;
-import android.telecom.DefaultDialerManager;
-import android.telecom.TelecomManager;
-import android.telephony.TelephonyManager;
-import android.text.Spannable;
-import android.text.SpannableString;
-import android.text.SpannableStringBuilder;
-import android.text.TextUtils;
-import android.text.style.ForegroundColorSpan;
-import android.text.style.StyleSpan;
-import android.util.Log;
-import android.view.WindowManager;
-import android.view.Window;
-
-import com.android.internal.app.AlertActivity;
-import com.android.internal.app.AlertController;
-import com.android.server.telecom.R;
-
-/**
- * Activity that shows a dialog for the user to confirm whether or not the default dialer should
- * be changed.
- *
- * This dialog can be skipped directly for CTS tests using the adb command:
- * adb shell am start -a android.telecom.action.CHANGE_DEFAULT_DIALER_PRIVILEGED -e android.telecom.extra.CHANGE_DEFAULT_DIALER_PACKAGE_NAME <packageName>
- */
-public class ChangeDefaultDialerDialog extends AlertActivity implements
- DialogInterface.OnClickListener{
- private static final String TAG = ChangeDefaultDialerDialog.class.getSimpleName();
- private String mNewPackage;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- final String oldPackage = DefaultDialerManager.getDefaultDialerApplication(this);
- mNewPackage = getIntent().getStringExtra(
- TelecomManager.EXTRA_CHANGE_DEFAULT_DIALER_PACKAGE_NAME);
- if (!canChangeToProvidedPackage(oldPackage, mNewPackage)) {
- setResult(RESULT_CANCELED);
- finish();
- }
-
- // Show dialog to require user confirmation.
- buildDialog(mNewPackage);
- }
-
- @Override
- public void onClick(DialogInterface dialog, int which) {
- switch (which) {
- case BUTTON_POSITIVE:
- TelecomManager.from(this).setDefaultDialer(mNewPackage);
- setResult(RESULT_OK);
- break;
- case BUTTON_NEGATIVE:
- setResult(RESULT_CANCELED);
- break;
- }
- }
-
- @Override
- public void onStart() {
- super.onStart();
- getWindow().addPrivateFlags(PRIVATE_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS);
- }
-
- @Override
- public void onStop() {
- final Window window = getWindow();
- final WindowManager.LayoutParams attrs = window.getAttributes();
- attrs.privateFlags &= ~PRIVATE_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS;
- window.setAttributes(attrs);
- super.onStop();
- }
-
- private boolean canChangeToProvidedPackage(String oldPackage, String newPackage) {
- final TelephonyManager tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
- if (!tm.isVoiceCapable()) {
- Log.w(TAG, "Dialog launched but device is not voice capable.");
- return false;
- }
-
- if (!DefaultDialerManager.getInstalledDialerApplications(this).contains(newPackage)) {
- Log.w(TAG, "Provided package name does not correspond to an installed Phone "
- + "application.");
- return false;
- }
-
- if (!TextUtils.isEmpty(oldPackage) && TextUtils.equals(oldPackage, newPackage)) {
- Log.w(TAG, "Provided package name is already the current default Phone application.");
- return false;
- }
- return true;
- }
-
- private boolean buildDialog(String newPackage) {
- final PackageManager pm = getPackageManager();
- final String newPackageLabel = getApplicationLabelForPackageName(pm, newPackage);
- final AlertController.AlertParams p = mAlertParams;
- p.mTitle = getString(R.string.change_default_dialer_dialog_title, newPackageLabel);
- p.mMessage = getString(R.string.change_default_dialer_warning_message, newPackageLabel);
- p.mPositiveButtonText = getString(R.string.change_default_dialer_dialog_affirmative);
- p.mNegativeButtonText = getString(R.string.change_default_dialer_dialog_negative);
- p.mPositiveButtonListener = this;
- p.mNegativeButtonListener = this;
- setupAlert();
-
- return true;
- }
-
- /**
- * Returns the application label that corresponds to the given package name
- *
- * @param pm An instance of a {@link PackageManager}.
- * @param packageName A valid package name.
- *
- * @return Application label for the given package name, or null if not found.
- */
- private String getApplicationLabelForPackageName(PackageManager pm, String packageName) {
- ApplicationInfo info = null;
- try {
- info = pm.getApplicationInfo(packageName, 0);
- } catch (NameNotFoundException e) {
- Log.w(TAG, "Application info not found for packageName " + packageName);
- }
- if (info == null) {
- return packageName;
- } else {
- return info.loadLabel(pm).toString();
- }
- }
-}
diff --git a/src/com/android/server/telecom/components/PrimaryCallReceiver.java b/src/com/android/server/telecom/components/PrimaryCallReceiver.java
deleted file mode 100644
index f19a243..0000000
--- a/src/com/android/server/telecom/components/PrimaryCallReceiver.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package com.android.server.telecom.components;
-
-import com.android.server.telecom.TelecomSystem;
-
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.telecom.Log;
-
-/**
- * Single point of entry for all outgoing and incoming calls. {@link UserCallIntentProcessor} serves
- * as a trampoline that captures call intents for individual users and forwards it to
- * the {@link PrimaryCallReceiver} which interacts with the rest of Telecom, both of which run only as
- * the primary user.
- */
-public class PrimaryCallReceiver extends BroadcastReceiver implements TelecomSystem.Component {
-
- @Override
- public void onReceive(Context context, Intent intent) {
- Log.startSession("PCR.oR");
- synchronized (getTelecomSystem().getLock()) {
- getTelecomSystem().getCallIntentProcessor().processIntent(intent);
- }
- Log.endSession();
- }
-
- @Override
- public TelecomSystem getTelecomSystem() {
- return TelecomSystem.getInstance();
- }
-}
diff --git a/src/com/android/server/telecom/components/TelecomService.java b/src/com/android/server/telecom/components/TelecomService.java
index 9a09636..956274a 100644
--- a/src/com/android/server/telecom/components/TelecomService.java
+++ b/src/com/android/server/telecom/components/TelecomService.java
@@ -17,6 +17,7 @@
package com.android.server.telecom.components;
import android.app.Service;
+import android.app.role.RoleManager;
import android.bluetooth.BluetoothAdapter;
import android.content.Context;
import android.content.Intent;
@@ -33,6 +34,7 @@
import com.android.server.telecom.AsyncRingtonePlayer;
import com.android.server.telecom.BluetoothAdapterProxy;
import com.android.server.telecom.BluetoothPhoneServiceImpl;
+import com.android.server.telecom.CallAudioRouteStateMachine;
import com.android.server.telecom.CallerInfoAsyncQueryFactory;
import com.android.server.telecom.CallsManager;
import com.android.server.telecom.ClockProxy;
@@ -49,6 +51,8 @@
import com.android.server.telecom.InCallWakeLockController;
import com.android.server.telecom.ProximitySensorManager;
import com.android.server.telecom.R;
+import com.android.server.telecom.RoleManagerAdapter;
+import com.android.server.telecom.RoleManagerAdapterImpl;
import com.android.server.telecom.TelecomSystem;
import com.android.server.telecom.TelecomWakeLock;
import com.android.server.telecom.Timeouts;
@@ -167,20 +171,13 @@
phoneAccountRegistrar);
}
},
- new ConnectionServiceFocusManager
- .ConnectionServiceFocusManagerFactory() {
- @Override
- public ConnectionServiceFocusManager create(
- ConnectionServiceFocusManager.CallsManagerRequester requester,
- Looper looper) {
- return new ConnectionServiceFocusManager(requester, looper);
- }
- },
+ ConnectionServiceFocusManager::new,
new Timeouts.Adapter(),
new AsyncRingtonePlayer(shouldPauseBetweenRingtoneRepeat),
new PhoneNumberUtilsAdapterImpl(),
new IncomingCallNotifier(context),
ToneGenerator::new,
+ new CallAudioRouteStateMachine.Factory(),
new ClockProxy() {
@Override
public long currentTimeMillis() {
@@ -191,7 +188,9 @@
public long elapsedRealtime() {
return SystemClock.elapsedRealtime();
}
- }));
+ },
+ new RoleManagerAdapterImpl(context,
+ (RoleManager) context.getSystemService(Context.ROLE_SERVICE))));
}
if (BluetoothAdapter.getDefaultAdapter() != null) {
context.startService(new Intent(context, BluetoothPhoneService.class));
diff --git a/src/com/android/server/telecom/components/UserCallIntentProcessor.java b/src/com/android/server/telecom/components/UserCallIntentProcessor.java
index 0c8525f..ae4a7d8 100644
--- a/src/com/android/server/telecom/components/UserCallIntentProcessor.java
+++ b/src/com/android/server/telecom/components/UserCallIntentProcessor.java
@@ -159,7 +159,7 @@
// Save the user handle of current user before forwarding the intent to primary user.
intent.putExtra(CallIntentProcessor.KEY_INITIATING_USER, mUserHandle);
- sendIntentToDestination(intent, isLocalInvocation);
+ sendIntentToDestination(intent, isLocalInvocation, callingPackageName);
}
private boolean isDefaultOrSystemDialer(String callingPackageName) {
@@ -189,27 +189,29 @@
}
/**
- * Potentially trampolines the intent to the broadcast receiver that runs only as the primary
- * user. If the caller is local to the Telecom service, we send the intent to Telecom without
- * rebroadcasting it.
+ * Potentially trampolines the intent to Telecom via TelecomServiceImpl.
+ * If the caller is local to the Telecom service, we send the intent to Telecom without
+ * sending it through TelecomServiceImpl.
*/
- private boolean sendIntentToDestination(Intent intent, boolean isLocalInvocation) {
+ private boolean sendIntentToDestination(Intent intent, boolean isLocalInvocation,
+ String callingPackage) {
intent.putExtra(CallIntentProcessor.KEY_IS_INCOMING_CALL, false);
intent.setFlags(Intent.FLAG_RECEIVER_FOREGROUND);
- intent.setClass(mContext, PrimaryCallReceiver.class);
if (isLocalInvocation) {
// We are invoking this from TelecomServiceImpl, so TelecomSystem is available. Don't
// bother trampolining the intent, just sent it directly to the call intent processor.
// TODO: We should not be using an intent here; this whole flows needs cleanup.
Log.i(this, "sendIntentToDestination: send intent to Telecom directly.");
synchronized (TelecomSystem.getInstance().getLock()) {
- TelecomSystem.getInstance().getCallIntentProcessor().processIntent(intent);
+ TelecomSystem.getInstance().getCallIntentProcessor().processIntent(intent,
+ callingPackage);
}
} else {
// We're calling from the UserCallActivity, so the TelecomSystem is not in the same
// process; we need to trampoline to TelecomSystem in the system server process.
Log.i(this, "sendIntentToDestination: trampoline to Telecom.");
- mContext.sendBroadcastAsUser(intent, UserHandle.SYSTEM);
+ TelecomManager tm = (TelecomManager) mContext.getSystemService(Context.TELECOM_SERVICE);
+ tm.handleCallIntent(intent);
}
return true;
}
diff --git a/src/com/android/server/telecom/settings/BlockedNumbersActivity.java b/src/com/android/server/telecom/settings/BlockedNumbersActivity.java
index ae7e661..1593e23 100644
--- a/src/com/android/server/telecom/settings/BlockedNumbersActivity.java
+++ b/src/com/android/server/telecom/settings/BlockedNumbersActivity.java
@@ -121,6 +121,7 @@
mAddButton = (TextView) findViewById(R.id.add_blocked);
mAddButton.setOnClickListener(this);
+ mAddButton.setContentDescription(getText(R.string.block_number));
mProgressBar = (ProgressBar) findViewById(R.id.progress_bar);
String[] fromColumns = {BlockedNumberContract.BlockedNumbers.COLUMN_ORIGINAL_NUMBER};
diff --git a/src/com/android/server/telecom/settings/BlockedNumbersUtil.java b/src/com/android/server/telecom/settings/BlockedNumbersUtil.java
index 4f45720..5acfe64 100644
--- a/src/com/android/server/telecom/settings/BlockedNumbersUtil.java
+++ b/src/com/android/server/telecom/settings/BlockedNumbersUtil.java
@@ -33,6 +33,7 @@
import android.widget.Toast;
import com.android.server.telecom.R;
+import com.android.server.telecom.SystemSettingsUtil;
import com.android.server.telecom.ui.NotificationChannelManager;
import java.util.Locale;
@@ -134,7 +135,8 @@
carrierConfig = configManager.getDefaultConfig();
}
return carrierConfig.getBoolean(
- CarrierConfigManager.KEY_SUPPORT_ENHANCED_CALL_BLOCKING_BOOL);
+ CarrierConfigManager.KEY_SUPPORT_ENHANCED_CALL_BLOCKING_BOOL)
+ || new SystemSettingsUtil().isEnhancedCallBlockingEnabled(context);
}
/**
diff --git a/src/com/android/server/telecom/settings/EnhancedCallBlockingFragment.java b/src/com/android/server/telecom/settings/EnhancedCallBlockingFragment.java
index 219c3e9..ecc019f 100644
--- a/src/com/android/server/telecom/settings/EnhancedCallBlockingFragment.java
+++ b/src/com/android/server/telecom/settings/EnhancedCallBlockingFragment.java
@@ -16,12 +16,17 @@
package com.android.server.telecom.settings;
+import android.content.Context;
import android.os.Bundle;
+import android.os.PersistableBundle;
import android.preference.Preference;
import android.preference.PreferenceFragment;
import android.preference.PreferenceScreen;
import android.preference.SwitchPreference;
import android.provider.BlockedNumberContract.SystemContract;
+import android.telephony.CarrierConfigManager;
+import android.telephony.SubscriptionManager;
+import android.telecom.Log;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
@@ -31,16 +36,64 @@
public class EnhancedCallBlockingFragment extends PreferenceFragment
implements Preference.OnPreferenceChangeListener {
+ private static final String BLOCK_NUMBERS_NOT_IN_CONTACTS_KEY =
+ "block_numbers_not_in_contacts_setting";
+ private static final String BLOCK_RESTRICTED_NUMBERS_KEY =
+ "block_private_number_calls_setting";
+ private static final String BLOCK_UNKNOWN_NUMBERS_KEY =
+ "block_unknown_calls_setting";
+ private boolean mIsCombiningRestrictedAndUnknownOption = false;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.enhanced_call_blocking_settings);
+ maybeConfigureCallBlockingOptions();
+
setOnPreferenceChangeListener(SystemContract.ENHANCED_SETTING_KEY_BLOCK_UNREGISTERED);
setOnPreferenceChangeListener(SystemContract.ENHANCED_SETTING_KEY_BLOCK_PRIVATE);
setOnPreferenceChangeListener(SystemContract.ENHANCED_SETTING_KEY_BLOCK_PAYPHONE);
setOnPreferenceChangeListener(SystemContract.ENHANCED_SETTING_KEY_BLOCK_UNKNOWN);
+ if (!showPayPhoneBlocking()) {
+ Preference payPhoneOption = getPreferenceScreen().findPreference(SystemContract.ENHANCED_SETTING_KEY_BLOCK_PAYPHONE);
+ getPreferenceScreen().removePreference(payPhoneOption);
+ }
+ }
+
+ private boolean showPayPhoneBlocking() {
+ CarrierConfigManager configManager =
+ (CarrierConfigManager) getContext()
+ .getSystemService(Context.CARRIER_CONFIG_SERVICE);
+ if (configManager == null) {
+ return false;
+ }
+
+ int subId = SubscriptionManager.getDefaultVoiceSubscriptionId();
+ PersistableBundle b = configManager.getConfigForSubId(subId);
+ if (b == null) {
+ return false;
+ }
+ return b.getBoolean(CarrierConfigManager.KEY_SHOW_BLOCKING_PAY_PHONE_OPTION_BOOL);
+ }
+
+ private void maybeConfigureCallBlockingOptions() {
+ PreferenceScreen screen = getPreferenceScreen();
+ boolean isShowingNotInContactsOption =
+ getResources().getBoolean(R.bool.show_option_to_block_callers_not_in_contacts);
+ if (!isShowingNotInContactsOption) {
+ Preference pref = findPreference(BLOCK_NUMBERS_NOT_IN_CONTACTS_KEY);
+ screen.removePreference(pref);
+ Log.i(this, "onCreate: removed block not in contacts preference.");
+ }
+
+ mIsCombiningRestrictedAndUnknownOption = getResources().getBoolean(
+ R.bool.combine_options_to_block_restricted_and_unknown_callers);
+ if (mIsCombiningRestrictedAndUnknownOption) {
+ Preference pref = findPreference(BLOCK_RESTRICTED_NUMBERS_KEY);
+ screen.removePreference(pref);
+ Log.i(this, "onCreate: removed block restricted preference.");
+ }
}
/**
@@ -59,7 +112,9 @@
updateEnhancedBlockPref(SystemContract.ENHANCED_SETTING_KEY_BLOCK_UNREGISTERED);
updateEnhancedBlockPref(SystemContract.ENHANCED_SETTING_KEY_BLOCK_PRIVATE);
- updateEnhancedBlockPref(SystemContract.ENHANCED_SETTING_KEY_BLOCK_PAYPHONE);
+ if (showPayPhoneBlocking()) {
+ updateEnhancedBlockPref(SystemContract.ENHANCED_SETTING_KEY_BLOCK_PAYPHONE);
+ }
updateEnhancedBlockPref(SystemContract.ENHANCED_SETTING_KEY_BLOCK_UNKNOWN);
}
@@ -75,6 +130,13 @@
@Override
public boolean onPreferenceChange(Preference preference, Object objValue) {
+ if (mIsCombiningRestrictedAndUnknownOption
+ && preference.getKey().equals(BLOCK_UNKNOWN_NUMBERS_KEY)) {
+ Log.i(this, "onPreferenceChange: changing %s and %s to %b",
+ preference.getKey(), BLOCK_RESTRICTED_NUMBERS_KEY, (boolean) objValue);
+ BlockedNumbersUtil.setEnhancedBlockSetting(getActivity(), BLOCK_RESTRICTED_NUMBERS_KEY,
+ (boolean) objValue);
+ }
BlockedNumbersUtil.setEnhancedBlockSetting(getActivity(), preference.getKey(),
(boolean) objValue);
return true;
diff --git a/src/com/android/server/telecom/ui/CallRedirectionConfirmDialogActivity.java b/src/com/android/server/telecom/ui/CallRedirectionConfirmDialogActivity.java
new file mode 100644
index 0000000..0d3599e
--- /dev/null
+++ b/src/com/android/server/telecom/ui/CallRedirectionConfirmDialogActivity.java
@@ -0,0 +1,161 @@
+/*
+ * Copyright (C) 2019 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 com.android.server.telecom.R;
+import com.android.server.telecom.TelecomBroadcastIntentProcessor;
+import com.android.server.telecom.components.TelecomBroadcastReceiver;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.graphics.Color;
+import android.graphics.drawable.ColorDrawable;
+import android.os.Bundle;
+import android.telecom.Log;
+import android.view.LayoutInflater;
+import android.view.View.OnClickListener;
+import android.view.View;
+import android.widget.Button;
+
+/**
+ * Dialog activity used when there is an ongoing call redirected by the call redirection service.
+ * The dialog prompts the user to see if they want to place the redirected outgoing call.
+ */
+public class CallRedirectionConfirmDialogActivity extends Activity {
+ public static final String EXTRA_REDIRECTION_OUTGOING_CALL_ID =
+ "android.telecom.extra.REDIRECTION_OUTGOING_CALL_ID";
+ public static final String EXTRA_REDIRECTION_APP_NAME =
+ "android.telecom.extra.REDIRECTION_APP_NAME";
+
+ private String mCallId;
+ private AlertDialog mConfirmDialog;
+ /**
+ * Tracks whether the activity has stopped due to a loss of focus (e.g. use hitting the home
+ * button) or whether its going to stop because a button in the dialog was pressed.
+ */
+ private boolean mHasLostFocus = true;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ Log.i(this, "CallRedirectionConfirmDialogActivity onCreate.");
+ final CharSequence redirectionAppName = getIntent().getStringExtra(
+ EXTRA_REDIRECTION_APP_NAME);
+ mCallId = getIntent().getStringExtra(EXTRA_REDIRECTION_OUTGOING_CALL_ID);
+ showDialog(redirectionAppName);
+ }
+
+ @Override
+ protected void onStop() {
+ super.onStop();
+ if (mHasLostFocus) {
+ Log.i(this, "onStop: dialog lost focus; canceling redirection for call %s", mCallId);
+ mConfirmDialog.dismiss();
+ cancelRedirection();
+ }
+ }
+
+ private void showDialog(final CharSequence redirectionAppName) {
+ Log.i(this, "showDialog: confirming redirection with %s", redirectionAppName);
+
+ mConfirmDialog = new AlertDialog.Builder(this).create();
+ LayoutInflater layoutInflater = LayoutInflater.from(this);
+ View dialogView = layoutInflater.inflate(R.layout.call_redirection_confirm_dialog, null);
+
+ Button buttonFirstLine = (Button) dialogView.findViewById(R.id.buttonFirstLine);
+ buttonFirstLine.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ Intent proceedWithoutRedirectedCall = new Intent(
+ TelecomBroadcastIntentProcessor.ACTION_PLACE_UNREDIRECTED_CALL,
+ null, CallRedirectionConfirmDialogActivity.this,
+ TelecomBroadcastReceiver.class);
+ proceedWithoutRedirectedCall.putExtra(EXTRA_REDIRECTION_OUTGOING_CALL_ID, mCallId);
+ sendBroadcast(proceedWithoutRedirectedCall);
+ mConfirmDialog.dismiss();
+ mHasLostFocus = false;
+ finish();
+ }
+ });
+
+ Button buttonSecondLine = (Button) dialogView.findViewById(R.id.buttonSecondLine);
+ buttonSecondLine.setText(getString(R.string.alert_place_outgoing_call_with_redirection,
+ redirectionAppName));
+ buttonSecondLine.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ Intent proceedWithRedirectedCall = new Intent(
+ TelecomBroadcastIntentProcessor
+ .ACTION_PLACE_REDIRECTED_CALL, null,
+ CallRedirectionConfirmDialogActivity.this,
+ TelecomBroadcastReceiver.class);
+ proceedWithRedirectedCall.putExtra(EXTRA_REDIRECTION_OUTGOING_CALL_ID, mCallId);
+ sendBroadcast(proceedWithRedirectedCall);
+ mConfirmDialog.dismiss();
+ mHasLostFocus = false;
+ finish();
+ }
+ });
+
+ Button buttonThirdLine = (Button) dialogView.findViewById(R.id.buttonThirdLine);
+ buttonThirdLine.setOnClickListener(new OnClickListener() {
+ public void onClick(View v) {
+ Intent cancelRedirectedCall = new Intent(
+ TelecomBroadcastIntentProcessor.ACTION_CANCEL_REDIRECTED_CALL,
+ null, CallRedirectionConfirmDialogActivity.this,
+ TelecomBroadcastReceiver.class);
+ cancelRedirectedCall.putExtra(EXTRA_REDIRECTION_OUTGOING_CALL_ID, mCallId);
+ sendBroadcast(cancelRedirectedCall);
+ mConfirmDialog.dismiss();
+ mHasLostFocus = false;
+ finish();
+ }
+ });
+
+ mConfirmDialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
+ @Override
+ public void onCancel(DialogInterface dialog) {
+ cancelRedirection();
+ dialog.dismiss();
+ mHasLostFocus = false;
+ finish();
+ }
+ });
+
+ mConfirmDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
+
+ mConfirmDialog.setCancelable(false);
+ mConfirmDialog.setCanceledOnTouchOutside(false);
+ mConfirmDialog.setView(dialogView);
+
+ mConfirmDialog.show();
+ }
+
+ /**
+ * Signals to Telecom that redirection of the call is to be cancelled.
+ */
+ private void cancelRedirection() {
+ Intent cancelRedirectedCall = new Intent(
+ TelecomBroadcastIntentProcessor.ACTION_CANCEL_REDIRECTED_CALL,
+ null, CallRedirectionConfirmDialogActivity.this,
+ TelecomBroadcastReceiver.class);
+ cancelRedirectedCall.putExtra(EXTRA_REDIRECTION_OUTGOING_CALL_ID, mCallId);
+ sendBroadcast(cancelRedirectedCall);
+ }
+}
diff --git a/src/com/android/server/telecom/ui/CallRedirectionTimeoutDialogActivity.java b/src/com/android/server/telecom/ui/CallRedirectionTimeoutDialogActivity.java
new file mode 100644
index 0000000..5aa80c6
--- /dev/null
+++ b/src/com/android/server/telecom/ui/CallRedirectionTimeoutDialogActivity.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2019 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 com.android.server.telecom.R;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.content.DialogInterface;
+import android.os.Bundle;
+import android.telecom.Log;
+
+/**
+ * Dialog activity used when there is an ongoing call redirected by the call redirection service.
+ * The dialog prompts the user to inform the redirected outgoing call is canceled due to timeout.
+ */
+public class CallRedirectionTimeoutDialogActivity extends Activity {
+ public static final String EXTRA_REDIRECTION_APP_NAME =
+ "android.telecom.extra.REDIRECTION_APP_NAME";
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ Log.i(this, "CallRedirectionTimeoutDialogActivity onCreate.");
+ final CharSequence redirectionAppName = getIntent().getStringExtra(
+ EXTRA_REDIRECTION_APP_NAME);
+ showDialog(redirectionAppName);
+ }
+
+ private void showDialog(final CharSequence redirectionAppName) {
+ Log.i(this, "showDialog: timeout redirection with %s", redirectionAppName);
+ CharSequence message = getString(
+ R.string.alert_redirect_outgoing_call_timeout, redirectionAppName);
+ final AlertDialog errorDialog = new AlertDialog.Builder(this)
+ .setMessage(message)
+ .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ dialog.dismiss();
+ finish();
+ }
+ })
+ .setOnCancelListener(new DialogInterface.OnCancelListener() {
+ @Override
+ public void onCancel(DialogInterface dialog) {
+ dialog.dismiss();
+ finish();
+ }
+ })
+ .create();
+
+ errorDialog.show();
+ }
+}
diff --git a/src/com/android/server/telecom/ui/IncomingCallNotifier.java b/src/com/android/server/telecom/ui/IncomingCallNotifier.java
index 0c90e06..6e203aa 100644
--- a/src/com/android/server/telecom/ui/IncomingCallNotifier.java
+++ b/src/com/android/server/telecom/ui/IncomingCallNotifier.java
@@ -58,8 +58,8 @@
* Eliminates strict dependency between this class and CallsManager.
*/
public interface CallsManagerProxy {
- boolean hasCallsForOtherPhoneAccount(PhoneAccountHandle phoneAccountHandle);
- int getNumCallsForOtherPhoneAccount(PhoneAccountHandle phoneAccountHandle);
+ boolean hasUnholdableCallsForOtherConnectionService(PhoneAccountHandle phoneAccountHandle);
+ int getNumUnholdableCallsForOtherConnectionService(PhoneAccountHandle phoneAccountHandle);
Call getActiveCall();
}
@@ -137,7 +137,7 @@
.findFirst();
Call incomingCall = incomingCallOp.orElse(null);
if (incomingCall != null && mCallsManagerProxy != null &&
- !mCallsManagerProxy.hasCallsForOtherPhoneAccount(
+ !mCallsManagerProxy.hasUnholdableCallsForOtherConnectionService(
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.
@@ -210,7 +210,7 @@
boolean isOngoingVideo = ongoingCall != null ?
VideoProfile.isVideo(ongoingCall.getVideoState()) : false;
int numOtherCalls = ongoingCall != null ?
- mCallsManagerProxy.getNumCallsForOtherPhoneAccount(
+ mCallsManagerProxy.getNumUnholdableCallsForOtherConnectionService(
incomingCall.getTargetPhoneAccount()) : 1;
// Build the "IncomingApp call from John Smith" message.
diff --git a/src/com/android/server/telecom/ui/TelecomDeveloperMenu.java b/src/com/android/server/telecom/ui/TelecomDeveloperMenu.java
new file mode 100644
index 0000000..ae2e853
--- /dev/null
+++ b/src/com/android/server/telecom/ui/TelecomDeveloperMenu.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2018 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.Activity;
+import android.os.Bundle;
+import android.widget.Switch;
+
+import com.android.server.telecom.R;
+import com.android.server.telecom.SystemSettingsUtil;
+
+/**
+ * Telecom Developer Settings Menu.
+ */
+public class TelecomDeveloperMenu extends Activity {
+
+ private Switch mEnhancedCallingSwitch;
+ private SystemSettingsUtil mSystemSettingsUtil;
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ mSystemSettingsUtil = new SystemSettingsUtil();
+ setContentView(R.layout.telecom_developer_menu);
+
+ mEnhancedCallingSwitch = findViewById(R.id.switchEnhancedCallBlocking);
+ mEnhancedCallingSwitch.setOnClickListener(l -> {
+ handleEnhancedCallingToggle();
+ });
+ loadPreferences();
+ }
+
+ private void handleEnhancedCallingToggle() {
+ mSystemSettingsUtil.setEnhancedCallBlockingEnabled(this,
+ mEnhancedCallingSwitch.isChecked());
+ }
+
+ private void loadPreferences() {
+ mEnhancedCallingSwitch.setChecked(mSystemSettingsUtil.isEnhancedCallBlockingEnabled(this));
+ }
+}
\ No newline at end of file
diff --git a/testapps/Android.bp b/testapps/Android.bp
new file mode 100644
index 0000000..26347fe
--- /dev/null
+++ b/testapps/Android.bp
@@ -0,0 +1,27 @@
+//
+// Copyright (C) 2013 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.
+//
+
+android_test {
+ name: "TelecomTestApps",
+ static_libs: [
+ "androidx.legacy_legacy-support-v4",
+ "android-ex-camera2",
+ "guava",
+ ],
+ srcs: ["src/**/*.java"],
+ platform_apis: true,
+ certificate: "platform",
+}
diff --git a/testapps/Android.mk b/testapps/Android.mk
deleted file mode 100644
index b600dca..0000000
--- a/testapps/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-# Copyright (C) 2013 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.
-#
-
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
- android-support-v4 \
- android-ex-camera2 \
- guava
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := TelecomTestApps
-LOCAL_PRIVATE_PLATFORM_APIS := true
-LOCAL_CERTIFICATE := platform
-
-LOCAL_MODULE_TAGS := tests
-
-include $(BUILD_PACKAGE)
diff --git a/testapps/AndroidManifest.xml b/testapps/AndroidManifest.xml
index 48451d1..e339356 100644
--- a/testapps/AndroidManifest.xml
+++ b/testapps/AndroidManifest.xml
@@ -19,9 +19,10 @@
package="com.android.server.telecom.testapps">
<uses-sdk
- android:minSdkVersion="23"
- android:targetSdkVersion="23" />
+ android:minSdkVersion="28"
+ android:targetSdkVersion="28" />
+ <uses-permission android:name="android.permission.ACCEPT_HANDOVER" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.CALL_PHONE" />
@@ -237,5 +238,40 @@
<receiver android:exported="false"
android:process="com.android.server.telecom.testapps.SelfMangingCallingApp"
android:name="com.android.server.telecom.testapps.SelfManagedCallNotificationReceiver" />
+
+ <receiver android:exported="true"
+ android:name="com.android.server.telecom.testapps.NuisanceReportReceiver">
+ <intent-filter>
+ <action android:name="android.telecom.action.NUISANCE_CALL_STATUS_CHANGED" />
+ </intent-filter>
+ </receiver>
+
+ <service
+ android:name=".TestCallScreeningService"
+ android:permission="android.permission.BIND_SCREENING_SERVICE">
+ <intent-filter>
+ <action android:name="android.telecom.CallScreeningService"/>
+ </intent-filter>
+ </service>
+
+ <activity android:name=".CallScreeningActivity"
+ android:configChanges="orientation|screenSize|keyboardHidden"
+ android:excludeFromRecents="true"
+ android:launchMode="singleInstance">
+ </activity>
+
+ <service
+ android:name=".TestCallRedirectionService"
+ android:permission="android.permission.BIND_CALL_REDIRECTION_SERVICE">
+ <intent-filter>
+ <action android:name="android.telecom.CallRedirectionService"/>
+ </intent-filter>
+ </service>
+
+ <activity android:name=".CallRedirectionActivity"
+ android:configChanges="orientation|screenSize|keyboardHidden"
+ android:excludeFromRecents="true"
+ android:launchMode="singleInstance">
+ </activity>
</application>
</manifest>
diff --git a/testapps/res/layout/call_list_item.xml b/testapps/res/layout/call_list_item.xml
index c9f2ff7..ecaa237 100644
--- a/testapps/res/layout/call_list_item.xml
+++ b/testapps/res/layout/call_list_item.xml
@@ -39,4 +39,37 @@
android:layout_height="wrap_content"
android:textSize="25dp"
android:text="TextView" />
+ <ImageView
+ android:id="@+id/callIdPhoto"
+ android:layout_gravity="left"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content" />
+ <TextView
+ android:id="@+id/callIdName"
+ android:layout_gravity="left"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:textSize="25dp"
+ android:text="TextView" />
+ <TextView
+ android:id="@+id/callIdDescription"
+ android:layout_gravity="left"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:textSize="25dp"
+ android:text="TextView" />
+ <TextView
+ android:id="@+id/callIdDetails"
+ android:layout_gravity="left"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:textSize="25dp"
+ android:text="TextView" />
+ <TextView
+ android:id="@+id/callIdType"
+ android:layout_gravity="left"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:textSize="25dp"
+ android:text="TextView" />
</LinearLayout>
diff --git a/testapps/res/layout/self_managed_call_list_item.xml b/testapps/res/layout/self_managed_call_list_item.xml
index 66b5b21..6a31a50 100644
--- a/testapps/res/layout/self_managed_call_list_item.xml
+++ b/testapps/res/layout/self_managed_call_list_item.xml
@@ -65,13 +65,18 @@
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:text="Speaker"
+ android:text="🔊"
android:id="@+id/speakerButton" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:text="Earpiece"
+ android:text="👂"
android:id="@+id/earpieceButton" />
+ <Button
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="🎧"
+ android:id="@+id/bluetoothButton" />
<CheckBox
android:id="@+id/holdable"
android:layout_width="wrap_content"
diff --git a/testapps/res/layout/self_managed_sample_main.xml b/testapps/res/layout/self_managed_sample_main.xml
index 68ae65c..28f4473 100644
--- a/testapps/res/layout/self_managed_sample_main.xml
+++ b/testapps/res/layout/self_managed_sample_main.xml
@@ -106,6 +106,11 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Accept Handover"/>
+ <Button
+ android:id="@+id/requestCallScreeningRole"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="Req CallScreen Role"/>
</LinearLayout>
<ListView
diff --git a/testapps/res/layout/testdialer_main.xml b/testapps/res/layout/testdialer_main.xml
index e6c56b7..9da3789 100644
--- a/testapps/res/layout/testdialer_main.xml
+++ b/testapps/res/layout/testdialer_main.xml
@@ -30,6 +30,16 @@
android:layout_height="wrap_content"
android:text="@string/placeCallButton" />
<Button
+ android:id="@+id/report_nuisance_button"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="Report Nuisance" />
+ <Button
+ android:id="@+id/report_not_nuisance_button"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="Report Not Nuisance" />
+ <Button
android:id="@+id/set_default_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
diff --git a/testapps/src/com/android/server/telecom/testapps/CallListAdapter.java b/testapps/src/com/android/server/telecom/testapps/CallListAdapter.java
index 85785d5..4de6eed 100644
--- a/testapps/src/com/android/server/telecom/testapps/CallListAdapter.java
+++ b/testapps/src/com/android/server/telecom/testapps/CallListAdapter.java
@@ -18,6 +18,7 @@
import android.content.Context;
import android.net.Uri;
+import android.os.Bundle;
import android.os.Handler;
import android.telecom.Call;
import android.util.Log;
@@ -25,6 +26,7 @@
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
+import android.widget.ImageView;
import android.widget.TextView;
public class CallListAdapter extends BaseAdapter {
@@ -90,9 +92,14 @@
convertView = mLayoutInflater.inflate(R.layout.call_list_item, parent, false);
}
- TextView phoneNumber = (TextView) convertView.findViewById(R.id.phoneNumber);
- TextView duration = (TextView) convertView.findViewById(R.id.duration);
- TextView state = (TextView) convertView.findViewById(R.id.callState);
+ TextView phoneNumber = convertView.findViewById(R.id.phoneNumber);
+ TextView duration = convertView.findViewById(R.id.duration);
+ TextView state = convertView.findViewById(R.id.callState);
+ TextView callIdName = convertView.findViewById(R.id.callIdName);
+ TextView callIdDescription = convertView.findViewById(R.id.callIdDescription);
+ TextView callIdDetails = convertView.findViewById(R.id.callIdDetails);
+ TextView callIdType = convertView.findViewById(R.id.callIdType);
+ ImageView callIdPhoto = convertView.findViewById(R.id.callIdPhoto);
Call call = mCallList.getCall(position);
Uri handle = call.getDetails().getHandle();
@@ -105,10 +112,24 @@
Log.i(TAG, "Call found: " + ((handle == null) ? "null" : handle.getSchemeSpecificPart())
+ ", " + durationMs);
+ Log.i(TAG, "Call extras: " + extrasToString(call.getDetails().getExtras()));
+ Log.i(TAG, "Call intent extras: " + extrasToString(call.getDetails().getIntentExtras()));
return convertView;
}
+ private String extrasToString(Bundle bundle) {
+ StringBuilder sb = new StringBuilder("[");
+ for (String key : bundle.keySet()) {
+ sb.append(key);
+ sb.append(": ");
+ sb.append(bundle.get(key));
+ sb.append("\n");
+ }
+ sb.append("]");
+ return sb.toString();
+ }
+
private static String getStateString(Call call) {
switch (call.getState()) {
case Call.STATE_ACTIVE:
diff --git a/testapps/src/com/android/server/telecom/testapps/CallNotificationReceiver.java b/testapps/src/com/android/server/telecom/testapps/CallNotificationReceiver.java
index 2d43e76..1549443 100644
--- a/testapps/src/com/android/server/telecom/testapps/CallNotificationReceiver.java
+++ b/testapps/src/com/android/server/telecom/testapps/CallNotificationReceiver.java
@@ -22,7 +22,7 @@
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
-import android.support.v4.content.LocalBroadcastManager;
+import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import android.telecom.PhoneAccountHandle;
import android.telecom.TelecomManager;
import android.telecom.VideoProfile;
diff --git a/testapps/src/com/android/server/telecom/testapps/CallRedirectionActivity.java b/testapps/src/com/android/server/telecom/testapps/CallRedirectionActivity.java
new file mode 100644
index 0000000..044e271
--- /dev/null
+++ b/testapps/src/com/android/server/telecom/testapps/CallRedirectionActivity.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2019 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.testapps;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.content.DialogInterface;
+import android.os.Bundle;
+import android.telecom.Log;
+
+public class CallRedirectionActivity extends Activity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ Log.i(this, "onCreate: CallRedirectionActivity");
+
+ AlertDialog alertDialog = new AlertDialog.Builder(this)
+ .setTitle("Test Call Redirection")
+ .setMessage("Decision for call redirection?")
+ .setNegativeButton("Timeout", new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ // No action is needed for timeout
+ finish();
+ }
+ })
+ .setPositiveButton("Redirect and confirm", new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ if (TestCallRedirectionService.getInstance() != null) {
+ TestCallRedirectionService.getInstance().tryRedirectCallAndAskToConfirm();
+ }
+ finish();
+ }
+ }).create();
+ alertDialog.show();
+ }
+}
\ No newline at end of file
diff --git a/testapps/src/com/android/server/telecom/testapps/CallScreeningActivity.java b/testapps/src/com/android/server/telecom/testapps/CallScreeningActivity.java
new file mode 100644
index 0000000..05ba500
--- /dev/null
+++ b/testapps/src/com/android/server/telecom/testapps/CallScreeningActivity.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2018 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.testapps;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.content.DialogInterface;
+import android.os.Bundle;
+import android.telecom.CallScreeningService;
+import android.view.WindowManager;
+
+public class CallScreeningActivity extends Activity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ AlertDialog alertDialog = new AlertDialog.Builder(this)
+ .setTitle("Test Call Screening")
+ .setMessage("Allow the call?")
+ .setNegativeButton("Block", new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ if (TestCallScreeningService.getInstance() != null) {
+ TestCallScreeningService.getInstance().blockCall();
+ }
+ finish();
+ }
+ })
+ .setPositiveButton("Allow", new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ if (TestCallScreeningService.getInstance() != null) {
+ TestCallScreeningService.getInstance().allowCall();
+ }
+ finish();
+ }
+ }).create();
+ alertDialog.show();
+ }
+}
diff --git a/testapps/src/com/android/server/telecom/testapps/CallServiceNotifier.java b/testapps/src/com/android/server/telecom/testapps/CallServiceNotifier.java
index 758ae4f..1c84d29 100644
--- a/testapps/src/com/android/server/telecom/testapps/CallServiceNotifier.java
+++ b/testapps/src/com/android/server/telecom/testapps/CallServiceNotifier.java
@@ -19,6 +19,7 @@
import com.android.server.telecom.testapps.R;
import android.app.Notification;
+import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.ComponentName;
@@ -26,6 +27,7 @@
import android.content.Intent;
import android.graphics.Color;
import android.graphics.drawable.Icon;
+import android.media.AudioAttributes;
import android.net.Uri;
import android.os.Bundle;
import android.telecom.PhoneAccount;
@@ -45,6 +47,7 @@
*/
public class CallServiceNotifier {
private static final CallServiceNotifier INSTANCE = new CallServiceNotifier();
+ private static final String CHANNEL_ID = "channel1";
public static final String CALL_PROVIDER_ID = "testapps_TestConnectionService_CALL_PROVIDER_ID";
public static final String SIM_SUBSCRIPTION_ID =
@@ -86,6 +89,9 @@
*/
public void updateNotification(Context context) {
log("adding the notification ------------");
+ NotificationChannel channel = new NotificationChannel(CHANNEL_ID, "Test Channel",
+ NotificationManager.IMPORTANCE_DEFAULT);
+ getNotificationManager(context).createNotificationChannel(channel);
getNotificationManager(context).notify(CALL_NOTIFICATION_ID, getMainNotification(context));
getNotificationManager(context).notify(
PHONE_ACCOUNT_NOTIFICATION_ID, getPhoneAccountNotification(context));
@@ -219,7 +225,7 @@
* Creates a notification object for using the telecom APIs.
*/
private Notification getPhoneAccountNotification(Context context) {
- final Notification.Builder builder = new Notification.Builder(context);
+ final Notification.Builder builder = new Notification.Builder(context, CHANNEL_ID);
// Both notifications have buttons and only the first one with buttons will show its
// buttons. Since the phone accounts notification is always first, setting false ensures
// it can be dismissed to use the other notification.
@@ -244,7 +250,7 @@
* Creates a notification object out of the current calls state.
*/
private Notification getMainNotification(Context context) {
- final Notification.Builder builder = new Notification.Builder(context);
+ final Notification.Builder builder = new Notification.Builder(context, CHANNEL_ID);
builder.setOngoing(true);
builder.setPriority(Notification.PRIORITY_HIGH);
builder.setSmallIcon(android.R.drawable.stat_sys_phone_call);
diff --git a/testapps/src/com/android/server/telecom/testapps/SelfManagedCallListAdapter.java b/testapps/src/com/android/server/telecom/testapps/SelfManagedCallListAdapter.java
index 8eaa282..75ceb62 100644
--- a/testapps/src/com/android/server/telecom/testapps/SelfManagedCallListAdapter.java
+++ b/testapps/src/com/android/server/telecom/testapps/SelfManagedCallListAdapter.java
@@ -104,6 +104,16 @@
}
};
+ private View.OnClickListener mBluetoothListener = new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ View parent = (View) v.getParent().getParent();
+ SelfManagedConnection connection = (SelfManagedConnection) parent.getTag();
+ connection.setAudioRoute(CallAudioState.ROUTE_BLUETOOTH);
+ notifyDataSetChanged();
+ }
+ };
+
private View.OnClickListener mHoldableListener = new View.OnClickListener() {
@Override
public void onClick (View v) {
@@ -221,6 +231,8 @@
speakerButton.setOnClickListener(mSpeakerListener);
View earpieceButton = view.findViewById(R.id.earpieceButton);
earpieceButton.setOnClickListener(mEarpieceListener);
+ View bluetoothButton = view.findViewById(R.id.bluetoothButton);
+ bluetoothButton.setOnClickListener(mBluetoothListener);
View missedButton = view.findViewById(R.id.missedButton);
missedButton.setOnClickListener(mMissedListener);
missedButton.setVisibility(isRinging ? View.VISIBLE : View.GONE);
diff --git a/testapps/src/com/android/server/telecom/testapps/SelfManagedCallingActivity.java b/testapps/src/com/android/server/telecom/testapps/SelfManagedCallingActivity.java
index a7b1350..fd12a2e 100644
--- a/testapps/src/com/android/server/telecom/testapps/SelfManagedCallingActivity.java
+++ b/testapps/src/com/android/server/telecom/testapps/SelfManagedCallingActivity.java
@@ -17,6 +17,12 @@
package com.android.server.telecom.testapps;
import android.app.Activity;
+import android.app.NotificationChannel;
+import android.app.NotificationManager;
+import android.app.role.RoleManager;
+import android.content.Intent;
+import android.media.AudioAttributes;
+import android.media.RingtoneManager;
import android.net.Uri;
import android.os.Bundle;
import android.telecom.ConnectionRequest;
@@ -44,11 +50,13 @@
*/
public class SelfManagedCallingActivity extends Activity {
private static final String TAG = "SelfMgCallActivity";
+ private static final int REQUEST_ID = 1;
private SelfManagedCallList mCallList = SelfManagedCallList.getInstance();
private CheckBox mCheckIfPermittedBeforeCalling;
private Button mPlaceOutgoingCallButton;
private Button mPlaceIncomingCallButton;
private Button mHandoverFrom;
+ private Button mRequestCallScreeningRole;
private RadioButton mUseAcct1Button;
private RadioButton mUseAcct2Button;
private CheckBox mHoldableCheckbox;
@@ -100,6 +108,7 @@
| WindowManager.LayoutParams.FLAG_IGNORE_CHEEK_PRESSES;
getWindow().addFlags(flags);
+ configureNotificationChannel();
setContentView(R.layout.self_managed_sample_main);
mCheckIfPermittedBeforeCalling = (CheckBox) findViewById(
R.id.checkIfPermittedBeforeCalling);
@@ -114,12 +123,16 @@
mPlaceIncomingCallButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- placeIncomingCall(false /* isHandoverFrom */);
+ placeIncomingCall();
}
});
mHandoverFrom = (Button) findViewById(R.id.handoverFrom);
mHandoverFrom.setOnClickListener((v -> {
- placeIncomingCall(true /* isHandoverFrom */);
+ initiateHandover();
+ }));
+ mRequestCallScreeningRole = (Button) findViewById(R.id.requestCallScreeningRole);
+ mRequestCallScreeningRole.setOnClickListener((v -> {
+ requestCallScreeningRole();
}));
mUseAcct1Button = findViewById(R.id.useAcct1Button);
@@ -171,7 +184,14 @@
tm.placeCall(Uri.parse(mNumber.getText().toString()), extras);
}
- private void placeIncomingCall(boolean isHandoverFrom) {
+ private void initiateHandover() {
+ TelecomManager tm = TelecomManager.from(this);
+ PhoneAccountHandle phoneAccountHandle = getSelectedPhoneAccountHandle();
+ Uri address = Uri.parse(mNumber.getText().toString());
+ tm.acceptHandover(address, VideoProfile.STATE_BIDIRECTIONAL, phoneAccountHandle);
+ }
+
+ private void placeIncomingCall() {
TelecomManager tm = TelecomManager.from(this);
PhoneAccountHandle phoneAccountHandle = getSelectedPhoneAccountHandle();
@@ -191,9 +211,39 @@
extras.putInt(TelecomManager.EXTRA_INCOMING_VIDEO_STATE,
VideoProfile.STATE_BIDIRECTIONAL);
}
- if (isHandoverFrom) {
- extras.putBoolean(TelecomManager.EXTRA_IS_HANDOVER, true);
- }
tm.addNewIncomingCall(getSelectedPhoneAccountHandle(), extras);
}
+
+ private void configureNotificationChannel() {
+ NotificationChannel channel = new NotificationChannel(
+ SelfManagedConnection.INCOMING_CALL_CHANNEL_ID, "Incoming Calls",
+ NotificationManager.IMPORTANCE_MAX);
+ channel.setShowBadge(false);
+ Uri ringtoneUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE);
+ channel.setSound(ringtoneUri, new AudioAttributes.Builder()
+ .setUsage(AudioAttributes.USAGE_NOTIFICATION_RINGTONE)
+ .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
+ .build());
+ channel.enableLights(true);
+
+ NotificationManager mgr = getSystemService(NotificationManager.class);
+ mgr.createNotificationChannel(channel);
+ }
+
+ @Override
+ public void onActivityResult(int requestCode, int resultCode, Intent data) {
+ if (requestCode == REQUEST_ID) {
+ if (resultCode == android.app.Activity.RESULT_OK) {
+ Toast.makeText(this, "Call screening role granted.", Toast.LENGTH_SHORT).show();
+ } else {
+ Toast.makeText(this, "Call screening role NOT granted.", Toast.LENGTH_SHORT).show();
+ }
+ }
+ }
+
+ private void requestCallScreeningRole() {
+ RoleManager roleManager = (RoleManager) getSystemService(ROLE_SERVICE);
+ Intent intent = roleManager.createRequestRoleIntent(RoleManager.ROLE_CALL_SCREENING);
+ startActivityForResult(intent, REQUEST_ID);
+ }
}
\ 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 8d0af04..ebd7423 100644
--- a/testapps/src/com/android/server/telecom/testapps/SelfManagedConnection.java
+++ b/testapps/src/com/android/server/telecom/testapps/SelfManagedConnection.java
@@ -22,7 +22,10 @@
import android.content.Context;
import android.content.Intent;
import android.graphics.drawable.Icon;
+import android.media.AudioAttributes;
import android.media.MediaPlayer;
+import android.media.RingtoneManager;
+import android.net.Uri;
import android.os.Bundle;
import android.telecom.Call;
import android.telecom.CallAudioState;
@@ -43,7 +46,7 @@
public void onConnectionStateChanged(SelfManagedConnection connection) {}
public void onConnectionRemoved(SelfManagedConnection connection) {}
}
-
+ public static final String INCOMING_CALL_CHANNEL_ID = "INCOMING_CALL_CHANNEL_ID";
public static final String EXTRA_PHONE_ACCOUNT_HANDLE =
"com.android.server.telecom.testapps.extra.PHONE_ACCOUNT_HANDLE";
public static final String CALL_NOTIFICATION = "com.android.server.telecom.testapps.CALL";
@@ -58,6 +61,7 @@
private boolean mIsIncomingCallUiShowing;
private Listener mListener;
private boolean mIsHandover;
+ private Notification.Builder mNotificationBuilder;
SelfManagedConnection(SelfManagedCallList callList, Context context, boolean isIncoming) {
mCallList = callList;
@@ -93,7 +97,8 @@
PendingIntent pendingIntent = PendingIntent.getActivity(mContext, 1, intent, 0);
// Build the notification as an ongoing high priority item.
- final Notification.Builder builder = new Notification.Builder(mContext);
+ final Notification.Builder builder = new Notification.Builder(mContext,
+ INCOMING_CALL_CHANNEL_ID);
builder.setOngoing(true);
builder.setPriority(Notification.PRIORITY_HIGH);
@@ -131,9 +136,12 @@
PendingIntent.FLAG_UPDATE_CURRENT))
.build());
+ Notification notification = builder.build();
+ notification.flags |= Notification.FLAG_INSISTENT;
NotificationManager notificationManager = mContext.getSystemService(
NotificationManager.class);
- notificationManager.notify(CALL_NOTIFICATION, mCallId, builder.build());
+ mNotificationBuilder = builder;
+ notificationManager.notify(CALL_NOTIFICATION, mCallId, notification);
}
@Override
@@ -172,6 +180,15 @@
setConnectionDisconnected(DisconnectCause.LOCAL);
}
+ @Override
+ public void onSilence() {
+ // Re-post our notification without a ringtone.
+ mNotificationBuilder.setOnlyAlertOnce(true);
+ NotificationManager notificationManager = mContext.getSystemService(
+ NotificationManager.class);
+ notificationManager.notify(CALL_NOTIFICATION, mCallId, mNotificationBuilder.build());
+ }
+
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 d5d79af..e6e35d8 100644
--- a/testapps/src/com/android/server/telecom/testapps/SelfManagedConnectionService.java
+++ b/testapps/src/com/android/server/telecom/testapps/SelfManagedConnectionService.java
@@ -24,9 +24,7 @@
import android.telecom.Log;
import android.telecom.PhoneAccountHandle;
import android.telecom.TelecomManager;
-import android.telecom.VideoProfile;
-import java.util.Objects;
import java.util.Random;
/**
@@ -45,13 +43,25 @@
PhoneAccountHandle connectionManagerAccount,
final ConnectionRequest request) {
- return createSelfManagedConnection(request, false);
+ return createSelfManagedConnection(request, false, false /* isHandover */);
}
@Override
public Connection onCreateIncomingConnection(PhoneAccountHandle connectionManagerPhoneAccount,
ConnectionRequest request) {
- return createSelfManagedConnection(request, true);
+ return createSelfManagedConnection(request, true, false /* isHandover */);
+ }
+
+ @Override
+ public Connection onCreateOutgoingHandoverConnection(PhoneAccountHandle fromPhoneAccountHandle,
+ ConnectionRequest request) {
+ return createSelfManagedConnection(request, false, true /* isHandover */);
+ }
+
+ @Override
+ public Connection onCreateIncomingHandoverConnection(PhoneAccountHandle fromPhoneAccountHandle,
+ ConnectionRequest request) {
+ return createSelfManagedConnection(request, true, true /* isHandover */);
}
@Override
@@ -77,13 +87,15 @@
mCallList.notifyConnectionServiceFocusGained();
}
- private Connection createSelfManagedConnection(ConnectionRequest request, boolean isIncoming) {
+ private Connection createSelfManagedConnection(ConnectionRequest request, boolean isIncoming,
+ boolean isHandover) {
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);
+ // Purposely do not set the audio mode to voip since we expect this to be the default:
+ // connection.setAudioModeIsVoip(true);
connection.setVideoState(request.getVideoState());
Random random = new Random();
connection.setCallerDisplayName(TEST_NAMES[random.nextInt(TEST_NAMES.length)],
@@ -92,16 +104,17 @@
if (isIncoming) {
connection.setIsIncomingCallUiShowing(request.shouldShowIncomingCallUi());
connection.setRinging();
+ } else {
+ connection.setDialing();
}
Bundle requestExtras = request.getExtras();
if (requestExtras != null) {
boolean isHoldable = requestExtras.getBoolean(EXTRA_HOLDABLE, false);
Log.i(this, "createConnection: isHandover=%b, handoverFrom=%s, holdable=%b",
- requestExtras.getBoolean(TelecomManager.EXTRA_IS_HANDOVER),
+ isHandover,
requestExtras.getString(TelecomManager.EXTRA_HANDOVER_FROM_PHONE_ACCOUNT),
isHoldable);
- connection.setIsHandover(requestExtras.getBoolean(TelecomManager.EXTRA_IS_HANDOVER,
- false));
+ connection.setIsHandover(isHandover);
if (isHoldable) {
connection.setConnectionCapabilities(connection.getConnectionCapabilities() |
Connection.CAPABILITY_HOLD | Connection.CAPABILITY_SUPPORT_HOLD);
diff --git a/testapps/src/com/android/server/telecom/testapps/TestCallRedirectionService.java b/testapps/src/com/android/server/telecom/testapps/TestCallRedirectionService.java
new file mode 100644
index 0000000..ce48b3e
--- /dev/null
+++ b/testapps/src/com/android/server/telecom/testapps/TestCallRedirectionService.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2019 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.testapps;
+
+import android.annotation.NonNull;
+import android.content.ComponentName;
+import android.content.Intent;
+import android.net.Uri;
+import android.telecom.CallRedirectionService;
+import android.telecom.Log;
+import android.telecom.PhoneAccount;
+import android.telecom.PhoneAccountHandle;
+
+public class TestCallRedirectionService extends CallRedirectionService {
+
+ public static TestCallRedirectionService getInstance() {
+ return sTestCallRedirectionService;
+ }
+
+ private static TestCallRedirectionService sTestCallRedirectionService;
+
+ private static final Uri SAMPLE_HANDLE = Uri.fromParts(PhoneAccount.SCHEME_TEL, "0001112222",
+ null);
+
+ private static final PhoneAccountHandle SAMPLE_PHONE_ACCOUNT = new PhoneAccountHandle(
+ new ComponentName("com.android.server.telecom.testapps",
+ "com.android.server.telecom.testapps.TestCallRedirectionService"),
+ "TELECOM_TEST_APP_PHONE_ACCOUNT_ID");
+
+ private PhoneAccountHandle mDestinationPhoneAccount = SAMPLE_PHONE_ACCOUNT;
+
+ /**
+ * Handles request from the system to redirect an outgoing call.
+ */
+ @Override
+ public void onPlaceCall(@NonNull Uri handle, @NonNull PhoneAccountHandle initialPhoneAccount,
+ boolean allowInteractiveResponse) {
+ Log.i(this, "onPlaceCall: received call %s", handle);
+ sTestCallRedirectionService = this;
+ mDestinationPhoneAccount = initialPhoneAccount;
+ Intent intent = new Intent(this, CallRedirectionActivity.class);
+ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ startActivity(intent);
+ }
+
+ public void tryRedirectCallAndAskToConfirm() {
+ // Provide call identification
+ redirectCall(SAMPLE_HANDLE, mDestinationPhoneAccount, true);
+ }
+}
diff --git a/testapps/src/com/android/server/telecom/testapps/TestCallScreeningService.java b/testapps/src/com/android/server/telecom/testapps/TestCallScreeningService.java
new file mode 100644
index 0000000..5f7f4d5
--- /dev/null
+++ b/testapps/src/com/android/server/telecom/testapps/TestCallScreeningService.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2018 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.testapps;
+
+import android.content.Intent;
+import android.graphics.drawable.Icon;
+import android.telecom.Call;
+import android.telecom.CallScreeningService;
+import android.telecom.Log;
+
+public class TestCallScreeningService extends CallScreeningService {
+ private Call.Details mDetails;
+ private static TestCallScreeningService sTestCallScreeningService;
+
+ public static TestCallScreeningService getInstance() {
+ return sTestCallScreeningService;
+ }
+
+ /**
+ * Handles request from the system to screen an incoming call.
+ * @param callDetails Information about a new incoming call, see {@link Call.Details}.
+ */
+ @Override
+ public void onScreenCall(Call.Details callDetails) {
+ Log.i(this, "onScreenCall: received call %s", callDetails);
+ sTestCallScreeningService = this;
+
+ mDetails = callDetails;
+ if (callDetails.getCallDirection() == Call.Details.DIRECTION_INCOMING) {
+ Intent errorIntent = new Intent(this, CallScreeningActivity.class);
+ errorIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ startActivity(errorIntent);
+ }
+ }
+
+ public void blockCall() {
+ CallScreeningService.CallResponse
+ response = new CallScreeningService.CallResponse.Builder()
+ .setDisallowCall(true)
+ .setRejectCall(true)
+ .setSkipCallLog(false)
+ .setSkipNotification(true)
+ .build();
+ respondToCall(mDetails, response);
+ }
+
+ public void allowCall() {
+ CallScreeningService.CallResponse
+ response = new CallScreeningService.CallResponse.Builder()
+ .setDisallowCall(false)
+ .setRejectCall(false)
+ .setSkipCallLog(false)
+ .setSkipNotification(false)
+ .build();
+ respondToCall(mDetails, response);
+ }
+}
diff --git a/testapps/src/com/android/server/telecom/testapps/TestConnectionService.java b/testapps/src/com/android/server/telecom/testapps/TestConnectionService.java
index 52dcadb..c438c4a 100644
--- a/testapps/src/com/android/server/telecom/testapps/TestConnectionService.java
+++ b/testapps/src/com/android/server/telecom/testapps/TestConnectionService.java
@@ -16,16 +16,22 @@
package com.android.server.telecom.testapps;
+import static android.media.AudioAttributes.CONTENT_TYPE_SPEECH;
+import static android.media.AudioAttributes.USAGE_VOICE_COMMUNICATION;
+
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
+import android.media.AudioAttributes;
+import android.media.AudioManager;
import android.media.MediaPlayer;
+import android.media.ToneGenerator;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
-import android.support.v4.content.LocalBroadcastManager;
+import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import android.telecom.Conference;
import android.telecom.Connection;
import android.telecom.DisconnectCause;
@@ -57,6 +63,11 @@
public static final String EXTRA_HANDLE = "extra_handle";
+ /**
+ * If an outgoing call ends with 2879 (BUSY), the test CS will indicate the call is busy.
+ */
+ public static final String BUSY_SUFFIX = "2879";
+
private static final String LOG_TAG = TestConnectionService.class.getSimpleName();
private static TestConnectionService INSTANCE;
@@ -204,8 +215,15 @@
void startOutgoing() {
setDialing();
mHandler.postDelayed(() -> {
- setActive();
- activateCall(TestConnection.this);
+ if (getAddress().getSchemeSpecificPart().endsWith(BUSY_SUFFIX)) {
+ setDisconnected(new DisconnectCause(DisconnectCause.REMOTE, "Line busy",
+ "Line busy", "Line busy", ToneGenerator.TONE_SUP_BUSY));
+ destroyCall(this);
+ destroy();
+ } else {
+ setActive();
+ activateCall(TestConnection.this);
+ }
}, 4000);
if (mOriginalRequest.isRequestingRtt()) {
Log.i(LOG_TAG, "Is RTT call. Starting chatbot service.");
@@ -582,8 +600,16 @@
}
private MediaPlayer createMediaPlayer() {
+ AudioAttributes attributes = new AudioAttributes.Builder()
+ .setUsage(USAGE_VOICE_COMMUNICATION)
+ .setContentType(CONTENT_TYPE_SPEECH)
+ .build();
+
+ final int audioSessionId = ((AudioManager) getSystemService(
+ Context.AUDIO_SERVICE)).generateAudioSessionId();
// Prepare the media player to play a tone when there is a call.
- MediaPlayer mediaPlayer = MediaPlayer.create(getApplicationContext(), R.raw.beep_boop);
+ MediaPlayer mediaPlayer = MediaPlayer.create(getApplicationContext(), R.raw.beep_boop, attributes,
+ audioSessionId);
mediaPlayer.setLooping(true);
return mediaPlayer;
}
diff --git a/testapps/src/com/android/server/telecom/testapps/TestInCallUI.java b/testapps/src/com/android/server/telecom/testapps/TestInCallUI.java
index 9851253..2a5b33a 100644
--- a/testapps/src/com/android/server/telecom/testapps/TestInCallUI.java
+++ b/testapps/src/com/android/server/telecom/testapps/TestInCallUI.java
@@ -18,6 +18,7 @@
import android.app.Activity;
import android.bluetooth.BluetoothDevice;
+import android.content.ComponentName;
import android.content.Intent;
import android.os.Bundle;
import android.telecom.Call;
@@ -209,11 +210,8 @@
handoverButton.setOnClickListener((v) -> {
Call call = mCallList.getCall(0);
- Bundle extras = new Bundle();
- extras.putParcelable(Call.EXTRA_HANDOVER_PHONE_ACCOUNT_HANDLE,
- getHandoverToPhoneAccountHandle());
- extras.putInt(Call.EXTRA_HANDOVER_VIDEO_STATE, VideoProfile.STATE_BIDIRECTIONAL);
- call.sendCallEvent(Call.EVENT_REQUEST_HANDOVER, extras);
+ call.handoverTo(getHandoverToPhoneAccountHandle(), VideoProfile.STATE_BIDIRECTIONAL,
+ null);
});
}
@@ -263,17 +261,8 @@
}
private PhoneAccountHandle getHandoverToPhoneAccountHandle() {
- TelecomManager tm = TelecomManager.from(this);
-
- List<PhoneAccountHandle> handles = tm.getAllPhoneAccountHandles();
- Optional<PhoneAccountHandle> found = handles.stream().filter(h -> {
- PhoneAccount account = tm.getPhoneAccount(h);
- Bundle extras = account.getExtras();
- return extras != null && extras.getBoolean(PhoneAccount.EXTRA_SUPPORTS_HANDOVER_TO);
- }).findFirst();
- PhoneAccountHandle foundHandle = found.orElse(null);
- Log.i(TestInCallUI.class.getSimpleName(), "getHandoverToPhoneAccountHandle() = " +
- foundHandle);
- return foundHandle;
+ return new PhoneAccountHandle(new ComponentName(
+ SelfManagedCallList.class.getPackage().getName(),
+ SelfManagedConnectionService.class.getName()), "1");
}
}
diff --git a/tests/Android.mk b/tests/Android.mk
deleted file mode 100644
index 5f083de..0000000
--- a/tests/Android.mk
+++ /dev/null
@@ -1,74 +0,0 @@
-#
-# Copyright (C) 2013 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.
-#
-
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
- android-ex-camera2 \
- guava \
- mockito-target \
- android-support-test \
- platform-test-annotations
-
-LOCAL_STATIC_ANDROID_LIBRARIES := \
- android-support-core-ui \
- android-support-core-utils \
- android-support-compat \
- android-support-fragment
-
-LOCAL_SRC_FILES := \
- $(call all-java-files-under, src) \
- $(call all-java-files-under, ../src) \
- $(call all-proto-files-under, ../proto)
-
-LOCAL_PROTOC_OPTIMIZE_TYPE := nano
-LOCAL_PROTOC_FLAGS := --proto_path=$(LOCAL_PATH)/../proto/
-LOCAL_PROTO_JAVA_OUTPUT_PARAMS := optional_field_style=accessors
-
-LOCAL_RESOURCE_DIR := \
- $(LOCAL_PATH)/res \
- $(LOCAL_PATH)/../res
-
-LOCAL_JAVA_LIBRARIES := \
- android.test.mock \
- android.test.base \
- android.test.runner \
- telephony-common
-
-LOCAL_USE_AAPT2 := true
-
-LOCAL_AAPT_FLAGS := \
- --auto-add-overlay \
- --extra-packages com.android.server.telecom
-
-LOCAL_JACK_FLAGS := --multi-dex native
-
-LOCAL_PROGUARD_ENABLED := disabled
-
-LOCAL_PACKAGE_NAME := TelecomUnitTests
-LOCAL_PRIVATE_PLATFORM_APIS := true
-LOCAL_CERTIFICATE := platform
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_JACK_COVERAGE_INCLUDE_FILTER := com.android.server.telecom.*
-LOCAL_JACK_COVERAGE_EXCLUDE_FILTER := com.android.server.telecom.tests.*
-
-LOCAL_COMPATIBILITY_SUITE := device-tests
-include frameworks/base/packages/SettingsLib/common.mk
-
-include $(BUILD_PACKAGE)
diff --git a/tests/AndroidManifest.xml b/tests/AndroidManifest.xml
index 0e79fce..22f5348 100644
--- a/tests/AndroidManifest.xml
+++ b/tests/AndroidManifest.xml
@@ -34,6 +34,7 @@
<!-- Used to access TelephonyManager APIs -->
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
+ <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
<application android:label="@string/app_name"
android:debuggable="true">
@@ -51,7 +52,7 @@
adb shell am instrument -w -e class com.android.server.telecom.tests.unit.FooUnitTest \
com.android.server.telecom.tests/android.test.InstrumentationTestRunner
-->
- <instrumentation android:name="android.support.test.runner.AndroidJUnitRunner"
+ <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
android:targetPackage="com.android.server.telecom.tests"
android:label="Telecomm application tests"
android:debuggable="true"/>
diff --git a/tests/AndroidTest.xml b/tests/AndroidTest.xml
index d3db2e3..3fb2a84 100644
--- a/tests/AndroidTest.xml
+++ b/tests/AndroidTest.xml
@@ -24,7 +24,7 @@
<option name="test-tag" value="TelecomUnitTests" />
<test class="com.android.tradefed.testtype.AndroidJUnitTest" >
<option name="package" value="com.android.server.telecom.tests" />
- <option name="runner" value="android.support.test.runner.AndroidJUnitRunner" />
+ <option name="runner" value="androidx.test.runner.AndroidJUnitRunner" />
<option name="hidden-api-checks" value="false"/>
</test>
</configuration>
diff --git a/tests/src/com/android/server/telecom/tests/AnalyticsTests.java b/tests/src/com/android/server/telecom/tests/AnalyticsTests.java
index 9d64f18..1fad3f7 100644
--- a/tests/src/com/android/server/telecom/tests/AnalyticsTests.java
+++ b/tests/src/com/android/server/telecom/tests/AnalyticsTests.java
@@ -16,10 +16,18 @@
package com.android.server.telecom.tests;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyInt;
+import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.mock;
+
import android.content.Context;
import android.os.Build;
-import android.os.Handler;
-import android.os.Looper;
import android.telecom.CallAudioState;
import android.telecom.Connection;
import android.telecom.DisconnectCause;
@@ -31,11 +39,12 @@
import android.telecom.TelecomManager;
import android.telecom.VideoCallImpl;
import android.telecom.VideoProfile;
-import android.support.test.filters.FlakyTest;
import android.test.suitebuilder.annotation.MediumTest;
import android.test.suitebuilder.annotation.SmallTest;
import android.util.Base64;
+import androidx.test.filters.FlakyTest;
+
import com.android.internal.util.IndentingPrintWriter;
import com.android.server.telecom.Analytics;
import com.android.server.telecom.CallAudioRouteStateMachine;
@@ -59,16 +68,6 @@
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.anyInt;
-import static org.mockito.Mockito.doAnswer;
-import static org.mockito.Mockito.mock;
-
@RunWith(JUnit4.class)
public class AnalyticsTests extends TelecomSystemTest {
@Override
diff --git a/tests/src/com/android/server/telecom/tests/AsyncBlockCheckFilterTest.java b/tests/src/com/android/server/telecom/tests/AsyncBlockCheckFilterTest.java
index 9b2b3fb..91ddf5a 100644
--- a/tests/src/com/android/server/telecom/tests/AsyncBlockCheckFilterTest.java
+++ b/tests/src/com/android/server/telecom/tests/AsyncBlockCheckFilterTest.java
@@ -16,10 +16,14 @@
package com.android.server.telecom.tests;
+import static android.provider.BlockedNumberContract.STATUS_BLOCKED_IN_LIST;
+import static android.provider.BlockedNumberContract.STATUS_NOT_BLOCKED;
+
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import android.os.PersistableBundle;
+import android.provider.CallLog;
import android.telecom.TelecomManager;
import android.telephony.CarrierConfigManager;
import android.test.suitebuilder.annotation.SmallTest;
@@ -49,7 +53,6 @@
@RunWith(JUnit4.class)
public class AsyncBlockCheckFilterTest extends TelecomTestCase {
- @Mock private Context mContext;
@Mock private BlockCheckerAdapter mBlockCheckerAdapter;
@Mock private Call mCall;
@Mock private CallFilterResultCallback mCallback;
@@ -60,8 +63,12 @@
private static final CallFilteringResult BLOCK_RESULT = new CallFilteringResult(
false, // shouldAllowCall
true, //shouldReject
- false, //shouldAddToCallLog
- false // shouldShowNotification
+ true, //shouldAddToCallLog
+ false, // shouldShowNotification
+ CallLog.Calls.BLOCK_REASON_BLOCKED_NUMBER, //blockReason
+ null, // callScreeningAppName
+ null //callScreeningComponentName
+
);
private static final CallFilteringResult PASS_RESULT = new CallFilteringResult(
@@ -72,7 +79,7 @@
);
private static final Uri TEST_HANDLE = Uri.parse("tel:1235551234");
- private static final int TEST_TIMEOUT = 100;
+ private static final int TEST_TIMEOUT = 1000;
@Override
@Before
@@ -80,7 +87,7 @@
super.setUp();
when(mCall.getHandle()).thenReturn(TEST_HANDLE);
mFilter = new AsyncBlockCheckFilter(mContext, mBlockCheckerAdapter,
- mCallerInfoLookupHelper);
+ mCallerInfoLookupHelper, null);
}
@SmallTest
@@ -89,9 +96,9 @@
final CountDownLatch latch = new CountDownLatch(1);
doAnswer(invocation -> {
latch.countDown();
- return true;
+ return STATUS_BLOCKED_IN_LIST;
}).when(mBlockCheckerAdapter)
- .isBlocked(any(Context.class), eq(TEST_HANDLE.getSchemeSpecificPart()),
+ .getBlockStatus(any(Context.class), eq(TEST_HANDLE.getSchemeSpecificPart()),
any(Bundle.class));
setEnhancedBlockingEnabled(false);
@@ -108,9 +115,9 @@
final CountDownLatch latch = new CountDownLatch(1);
doAnswer(invocation -> {
latch.countDown();
- return true;
+ return STATUS_BLOCKED_IN_LIST;
}).when(mBlockCheckerAdapter)
- .isBlocked(any(Context.class), eq(TEST_HANDLE.getSchemeSpecificPart()),
+ .getBlockStatus(any(Context.class), eq(TEST_HANDLE.getSchemeSpecificPart()),
any(Bundle.class));
setEnhancedBlockingEnabled(true);
@@ -128,9 +135,9 @@
final CountDownLatch latch = new CountDownLatch(1);
doAnswer(invocation -> {
latch.countDown();
- return false;
+ return STATUS_NOT_BLOCKED;
}).when(mBlockCheckerAdapter)
- .isBlocked(any(Context.class), eq(TEST_HANDLE.getSchemeSpecificPart()),
+ .getBlockStatus(any(Context.class), eq(TEST_HANDLE.getSchemeSpecificPart()),
any(Bundle.class));
setEnhancedBlockingEnabled(false);
@@ -147,9 +154,9 @@
final CountDownLatch latch = new CountDownLatch(1);
doAnswer(invocation -> {
latch.countDown();
- return false;
+ return STATUS_NOT_BLOCKED;
}).when(mBlockCheckerAdapter)
- .isBlocked(any(Context.class), eq(TEST_HANDLE.getSchemeSpecificPart()),
+ .getBlockStatus(any(Context.class), eq(TEST_HANDLE.getSchemeSpecificPart()),
any(Bundle.class));
setEnhancedBlockingEnabled(true);
diff --git a/tests/src/com/android/server/telecom/tests/BasicCallTests.java b/tests/src/com/android/server/telecom/tests/BasicCallTests.java
index e304d34..95ca3f3 100644
--- a/tests/src/com/android/server/telecom/tests/BasicCallTests.java
+++ b/tests/src/com/android/server/telecom/tests/BasicCallTests.java
@@ -20,6 +20,7 @@
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.nullable;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyInt;
import static org.mockito.Matchers.anyString;
@@ -52,10 +53,11 @@
import android.telecom.PhoneAccountHandle;
import android.telecom.TelecomManager;
import android.telecom.VideoProfile;
-import android.support.test.filters.FlakyTest;
import android.test.suitebuilder.annotation.LargeTest;
import android.test.suitebuilder.annotation.MediumTest;
+import androidx.test.filters.FlakyTest;
+
import com.android.internal.telecom.IInCallAdapter;
import com.android.internal.telephony.CallerInfo;
@@ -66,6 +68,7 @@
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
+import org.mockito.ArgumentCaptor;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
@@ -75,8 +78,6 @@
import java.util.concurrent.CyclicBarrier;
import java.util.concurrent.TimeUnit;
-import org.mockito.ArgumentCaptor;
-
/**
* Performs various basic call tests in Telecom.
*/
@@ -331,12 +332,17 @@
int startingNumCalls = mInCallServiceFixtureX.mCallById.size();
String callId = startOutgoingPhoneCallWithNoPhoneAccount("650-555-1212",
mConnectionServiceFixtureA);
+ mTelecomSystem.getCallsManager().getLatestPreAccountSelectionFuture().join();
+ waitForHandlerAction(new Handler(Looper.getMainLooper()), TEST_TIMEOUT);
assertEquals(Call.STATE_SELECT_PHONE_ACCOUNT,
mInCallServiceFixtureX.getCall(callId).getState());
assertEquals(Call.STATE_SELECT_PHONE_ACCOUNT,
mInCallServiceFixtureY.getCall(callId).getState());
mInCallServiceFixtureX.mInCallAdapter.phoneAccountSelected(callId,
mPhoneAccountA0.getAccountHandle(), false);
+ waitForHandlerAction(new Handler(Looper.getMainLooper()), TEST_TIMEOUT);
+ waitForHandlerAction(new Handler(Looper.getMainLooper()), TEST_TIMEOUT);
+ verifyAndProcessOutgoingCallBroadcast(mPhoneAccountA0.getAccountHandle());
IdPair ids = outgoingCallPhoneAccountSelected(mPhoneAccountA0.getAccountHandle(),
startingNumConnections, startingNumCalls, mConnectionServiceFixtureA);
@@ -548,8 +554,10 @@
// TODO: We have to use the same PhoneAccount for both; see http://b/18461539
IdPair outgoing = startAndMakeActiveOutgoingCall("650-555-1212",
mPhoneAccountA0.getAccountHandle(), mConnectionServiceFixtureA);
+ waitForHandlerAction(new Handler(Looper.getMainLooper()), TEST_TIMEOUT);
IdPair incoming = startAndMakeActiveIncomingCall("650-555-2323",
mPhoneAccountA0.getAccountHandle(), mConnectionServiceFixtureA);
+ waitForHandlerAction(new Handler(Looper.getMainLooper()), TEST_TIMEOUT);
verify(mConnectionServiceFixtureA.getTestDouble())
.hold(eq(outgoing.mConnectionId), any());
mConnectionServiceFixtureA.mConnectionById.get(outgoing.mConnectionId).state =
@@ -585,10 +593,15 @@
.setMicrophoneMute(eq(false), any(String.class), any(Integer.class));
mInCallServiceFixtureX.mInCallAdapter.setAudioRoute(CallAudioState.ROUTE_SPEAKER, null);
+ waitForHandlerAction(mTelecomSystem.getCallsManager().getCallAudioManager()
+ .getCallAudioRouteStateMachine().getHandler(), TEST_TIMEOUT);
verify(audioManager, timeout(TEST_TIMEOUT))
.setSpeakerphoneOn(true);
mInCallServiceFixtureX.mInCallAdapter.setAudioRoute(CallAudioState.ROUTE_EARPIECE, null);
- verify(audioManager, timeout(TEST_TIMEOUT))
+ waitForHandlerAction(mTelecomSystem.getCallsManager().getCallAudioManager()
+ .getCallAudioRouteStateMachine().getHandler(), TEST_TIMEOUT);
+ // setSpeakerPhoneOn(false) gets called once during the call initiation phase
+ verify(audioManager, timeout(TEST_TIMEOUT).atLeast(2))
.setSpeakerphoneOn(false);
mConnectionServiceFixtureA.
@@ -784,7 +797,7 @@
anyString(),
eq(BlockedNumberContract.SystemContract.METHOD_SHOULD_SYSTEM_BLOCK_NUMBER),
eq(phoneNumber),
- isNull(Bundle.class))).thenAnswer(answer);
+ nullable(Bundle.class))).thenAnswer(answer);
}
private void verifyNoBlockChecks() {
@@ -912,12 +925,12 @@
Process.myUserHandle(), VideoProfile.STATE_BIDIRECTIONAL);
com.android.server.telecom.Call call = mTelecomSystem.getCallsManager().getCalls()
.iterator().next();
- assert(call.isVideoCallingSupported());
+ assert(call.isVideoCallingSupportedByPhoneAccount());
assertEquals(VideoProfile.STATE_BIDIRECTIONAL, call.getVideoState());
// Change the phone account to one which supports video calling.
call.setTargetPhoneAccount(mPhoneAccountA1.getAccountHandle());
- assert(call.isVideoCallingSupported());
+ assert(call.isVideoCallingSupportedByPhoneAccount());
assertEquals(VideoProfile.STATE_BIDIRECTIONAL, call.getVideoState());
}
@@ -935,12 +948,12 @@
Process.myUserHandle(), VideoProfile.STATE_BIDIRECTIONAL);
com.android.server.telecom.Call call = mTelecomSystem.getCallsManager().getCalls()
.iterator().next();
- assert(call.isVideoCallingSupported());
+ assert(call.isVideoCallingSupportedByPhoneAccount());
assertEquals(VideoProfile.STATE_BIDIRECTIONAL, call.getVideoState());
// Change the phone account to one which does not support video calling.
call.setTargetPhoneAccount(mPhoneAccountA2.getAccountHandle());
- assert(!call.isVideoCallingSupported());
+ assert(!call.isVideoCallingSupportedByPhoneAccount());
assertEquals(VideoProfile.STATE_AUDIO_ONLY, call.getVideoState());
}
@@ -1045,8 +1058,13 @@
mConnectionServiceFixtureA);
// Should have reverted back to earpiece.
- assertEquals(CallAudioState.ROUTE_EARPIECE,
- mInCallServiceFixtureX.mCallAudioState.getRoute());
+ assertTrueWithTimeout(new Predicate<Void>() {
+ @Override
+ public boolean apply(Void aVoid) {
+ return mInCallServiceFixtureX.mCallAudioState.getRoute()
+ == CallAudioState.ROUTE_EARPIECE;
+ }
+ });
}
/**
@@ -1098,6 +1116,7 @@
*/
@LargeTest
@Test
+ @FlakyTest
public void testUnmuteDuringEmergencyCall() throws Exception {
// Make an outgoing call and turn ON mute.
IdPair outgoingCall = startAndMakeActiveOutgoingCall("650-555-1212",
diff --git a/tests/src/com/android/server/telecom/tests/BluetoothDeviceManagerTest.java b/tests/src/com/android/server/telecom/tests/BluetoothDeviceManagerTest.java
index cb7671a..2129ffa 100644
--- a/tests/src/com/android/server/telecom/tests/BluetoothDeviceManagerTest.java
+++ b/tests/src/com/android/server/telecom/tests/BluetoothDeviceManagerTest.java
@@ -18,16 +18,15 @@
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothHeadset;
+import android.bluetooth.BluetoothHearingAid;
import android.bluetooth.BluetoothProfile;
import android.content.BroadcastReceiver;
import android.content.Intent;
-import android.content.IntentFilter;
import android.os.Parcel;
import android.test.suitebuilder.annotation.SmallTest;
import com.android.server.telecom.BluetoothAdapterProxy;
import com.android.server.telecom.BluetoothHeadsetProxy;
-import com.android.server.telecom.TelecomSystem;
import com.android.server.telecom.bluetooth.BluetoothDeviceManager;
import com.android.server.telecom.bluetooth.BluetoothRouteManager;
import com.android.server.telecom.bluetooth.BluetoothStateReceiver;
@@ -41,15 +40,21 @@
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.isNull;
+import static org.mockito.ArgumentMatchers.nullable;
import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import java.util.Arrays;
@RunWith(JUnit4.class)
public class BluetoothDeviceManagerTest extends TelecomTestCase {
@Mock BluetoothRouteManager mRouteManager;
@Mock BluetoothHeadsetProxy mHeadsetProxy;
@Mock BluetoothAdapterProxy mAdapterProxy;
+ @Mock BluetoothHearingAid mBluetoothHearingAid;
BluetoothDeviceManager mBluetoothDeviceManager;
BluetoothProfile.ServiceListener serviceListenerUnderTest;
@@ -58,18 +63,24 @@
private BluetoothDevice device1;
private BluetoothDevice device2;
private BluetoothDevice device3;
+ private BluetoothDevice device4;
@Override
@Before
public void setUp() throws Exception {
super.setUp();
device1 = makeBluetoothDevice("00:00:00:00:00:01");
+ // hearing aid
device2 = makeBluetoothDevice("00:00:00:00:00:02");
device3 = makeBluetoothDevice("00:00:00:00:00:03");
+ // hearing aid
+ device4 = makeBluetoothDevice("00:00:00:00:00:04");
+
+ when(mBluetoothHearingAid.getHiSyncId(device2)).thenReturn(100L);
+ when(mBluetoothHearingAid.getHiSyncId(device4)).thenReturn(100L);
mContext = mComponentContextFixture.getTestDouble().getApplicationContext();
- mBluetoothDeviceManager = new BluetoothDeviceManager(mContext, mAdapterProxy,
- new TelecomSystem.SyncRoot() { });
+ mBluetoothDeviceManager = new BluetoothDeviceManager(mContext, mAdapterProxy);
mBluetoothDeviceManager.setBluetoothRouteManager(mRouteManager);
ArgumentCaptor<BluetoothProfile.ServiceListener> serviceCaptor =
@@ -82,29 +93,30 @@
null /* route mgr not needed here */);
mBluetoothDeviceManager.setHeadsetServiceForTesting(mHeadsetProxy);
+ mBluetoothDeviceManager.setHearingAidServiceForTesting(mBluetoothHearingAid);
}
@SmallTest
@Test
public void testSingleDeviceConnectAndDisconnect() {
receiverUnderTest.onReceive(mContext,
- buildConnectionActionIntent(BluetoothHeadset.STATE_CONNECTED, device1));
+ buildConnectionActionIntent(BluetoothHeadset.STATE_CONNECTED, device1, false));
assertEquals(1, mBluetoothDeviceManager.getNumConnectedDevices());
- assertEquals(device1.getAddress(),
- mBluetoothDeviceManager.getMostRecentlyConnectedDevice(null));
receiverUnderTest.onReceive(mContext,
- buildConnectionActionIntent(BluetoothHeadset.STATE_DISCONNECTED, device1));
+ buildConnectionActionIntent(BluetoothHeadset.STATE_DISCONNECTED, device1, false));
assertEquals(0, mBluetoothDeviceManager.getNumConnectedDevices());
- assertNull(mBluetoothDeviceManager.getMostRecentlyConnectedDevice(null));
}
@SmallTest
@Test
public void testAddDeviceFailsWhenServicesAreNull() {
mBluetoothDeviceManager.setHeadsetServiceForTesting(null);
+ mBluetoothDeviceManager.setHearingAidServiceForTesting(null);
receiverUnderTest.onReceive(mContext,
- buildConnectionActionIntent(BluetoothHeadset.STATE_CONNECTED, device1));
+ buildConnectionActionIntent(BluetoothHeadset.STATE_CONNECTED, device1, false));
+ receiverUnderTest.onReceive(mContext,
+ buildConnectionActionIntent(BluetoothHeadset.STATE_CONNECTED, device2, true));
assertEquals(0, mBluetoothDeviceManager.getNumConnectedDevices());
}
@@ -113,60 +125,107 @@
@Test
public void testMultiDeviceConnectAndDisconnect() {
receiverUnderTest.onReceive(mContext,
- buildConnectionActionIntent(BluetoothHeadset.STATE_CONNECTED, device1));
+ buildConnectionActionIntent(BluetoothHeadset.STATE_CONNECTED, device1, false));
receiverUnderTest.onReceive(mContext,
- buildConnectionActionIntent(BluetoothHeadset.STATE_CONNECTED, device2));
+ buildConnectionActionIntent(BluetoothHeadset.STATE_CONNECTED, device2, true));
receiverUnderTest.onReceive(mContext,
- buildConnectionActionIntent(BluetoothHeadset.STATE_DISCONNECTED, device1));
+ buildConnectionActionIntent(BluetoothHeadset.STATE_DISCONNECTED, device1, false));
receiverUnderTest.onReceive(mContext,
- buildConnectionActionIntent(BluetoothHeadset.STATE_CONNECTED, device3));
- receiverUnderTest.onReceive(mContext,
- buildConnectionActionIntent(BluetoothHeadset.STATE_CONNECTED, device2));
+ buildConnectionActionIntent(BluetoothHeadset.STATE_CONNECTED, device3, false));
assertEquals(2, mBluetoothDeviceManager.getNumConnectedDevices());
- assertEquals(device3.getAddress(),
- mBluetoothDeviceManager.getMostRecentlyConnectedDevice(null));
receiverUnderTest.onReceive(mContext,
- buildConnectionActionIntent(BluetoothHeadset.STATE_DISCONNECTED, device3));
+ buildConnectionActionIntent(BluetoothHeadset.STATE_DISCONNECTED, device3, false));
assertEquals(1, mBluetoothDeviceManager.getNumConnectedDevices());
- assertEquals(device2.getAddress(),
- mBluetoothDeviceManager.getMostRecentlyConnectedDevice(null));
}
@SmallTest
@Test
- public void testExclusionaryGetRecentDevices() {
+ public void testHearingAidDedup() {
receiverUnderTest.onReceive(mContext,
- buildConnectionActionIntent(BluetoothHeadset.STATE_CONNECTED, device1));
+ buildConnectionActionIntent(BluetoothHeadset.STATE_CONNECTED, device1, false));
receiverUnderTest.onReceive(mContext,
- buildConnectionActionIntent(BluetoothHeadset.STATE_CONNECTED, device2));
+ buildConnectionActionIntent(BluetoothHeadset.STATE_CONNECTED, device2, true));
receiverUnderTest.onReceive(mContext,
- buildConnectionActionIntent(BluetoothHeadset.STATE_DISCONNECTED, device1));
- receiverUnderTest.onReceive(mContext,
- buildConnectionActionIntent(BluetoothHeadset.STATE_CONNECTED, device3));
- receiverUnderTest.onReceive(mContext,
- buildConnectionActionIntent(BluetoothHeadset.STATE_CONNECTED, device2));
- assertEquals(2, mBluetoothDeviceManager.getNumConnectedDevices());
- assertEquals(device2.getAddress(),
- mBluetoothDeviceManager.getMostRecentlyConnectedDevice(device3.getAddress()));
+ buildConnectionActionIntent(BluetoothHeadset.STATE_CONNECTED, device4, true));
+ assertEquals(3, mBluetoothDeviceManager.getNumConnectedDevices());
+ assertEquals(2, mBluetoothDeviceManager.getUniqueConnectedDevices().size());
}
@SmallTest
@Test
public void testHeadsetServiceDisconnect() {
receiverUnderTest.onReceive(mContext,
- buildConnectionActionIntent(BluetoothHeadset.STATE_CONNECTED, device1));
+ buildConnectionActionIntent(BluetoothHeadset.STATE_CONNECTED, device1, false));
receiverUnderTest.onReceive(mContext,
- buildConnectionActionIntent(BluetoothHeadset.STATE_CONNECTED, device2));
- serviceListenerUnderTest.onServiceDisconnected(0);
+ buildConnectionActionIntent(BluetoothHeadset.STATE_CONNECTED, device3, false));
+ receiverUnderTest.onReceive(mContext,
+ buildConnectionActionIntent(BluetoothHeadset.STATE_CONNECTED, device2, true));
+ serviceListenerUnderTest.onServiceDisconnected(BluetoothProfile.HEADSET);
+ verify(mRouteManager).onActiveDeviceChanged(isNull(), eq(false));
verify(mRouteManager).onDeviceLost(device1.getAddress());
- verify(mRouteManager).onDeviceLost(device2.getAddress());
+ verify(mRouteManager).onDeviceLost(device3.getAddress());
+ verify(mRouteManager, never()).onDeviceLost(device2.getAddress());
assertNull(mBluetoothDeviceManager.getHeadsetService());
- assertEquals(0, mBluetoothDeviceManager.getNumConnectedDevices());
+ assertEquals(1, mBluetoothDeviceManager.getNumConnectedDevices());
}
- private Intent buildConnectionActionIntent(int state, BluetoothDevice device) {
- Intent i = new Intent(BluetoothHeadset.ACTION_CONNECTION_STATE_CHANGED);
+ @SmallTest
+ @Test
+ public void testHearingAidServiceDisconnect() {
+ receiverUnderTest.onReceive(mContext,
+ buildConnectionActionIntent(BluetoothHeadset.STATE_CONNECTED, device1, false));
+ receiverUnderTest.onReceive(mContext,
+ buildConnectionActionIntent(BluetoothHeadset.STATE_CONNECTED, device3, false));
+ receiverUnderTest.onReceive(mContext,
+ buildConnectionActionIntent(BluetoothHeadset.STATE_CONNECTED, device2, true));
+ serviceListenerUnderTest.onServiceDisconnected(BluetoothProfile.HEARING_AID);
+
+ verify(mRouteManager).onActiveDeviceChanged(isNull(), eq(true));
+ verify(mRouteManager).onDeviceLost(device2.getAddress());
+ verify(mRouteManager, never()).onDeviceLost(device1.getAddress());
+ verify(mRouteManager, never()).onDeviceLost(device3.getAddress());
+ assertNull(mBluetoothDeviceManager.getHearingAidService());
+ assertEquals(2, mBluetoothDeviceManager.getNumConnectedDevices());
+ }
+
+ @SmallTest
+ @Test
+ public void testConnectDisconnectAudioHeadset() {
+ receiverUnderTest.onReceive(mContext,
+ buildConnectionActionIntent(BluetoothHeadset.STATE_CONNECTED, device1, false));
+ when(mHeadsetProxy.setActiveDevice(nullable(BluetoothDevice.class))).thenReturn(true);
+ mBluetoothDeviceManager.connectAudio(device1.getAddress());
+ verify(mHeadsetProxy).setActiveDevice(device1);
+ verify(mHeadsetProxy).connectAudio();
+ verify(mBluetoothHearingAid, never()).setActiveDevice(nullable(BluetoothDevice.class));
+
+ mBluetoothDeviceManager.disconnectAudio();
+ verify(mHeadsetProxy).disconnectAudio();
+ }
+
+ @SmallTest
+ @Test
+ public void testConnectDisconnectAudioHearingAid() {
+ receiverUnderTest.onReceive(mContext,
+ buildConnectionActionIntent(BluetoothHeadset.STATE_CONNECTED, device2, true));
+ mBluetoothDeviceManager.connectAudio(device2.getAddress());
+ verify(mBluetoothHearingAid).setActiveDevice(device2);
+ verify(mHeadsetProxy, never()).connectAudio();
+ verify(mHeadsetProxy, never()).setActiveDevice(nullable(BluetoothDevice.class));
+
+ when(mBluetoothHearingAid.getActiveDevices()).thenReturn(Arrays.asList(device2, null));
+
+ mBluetoothDeviceManager.disconnectAudio();
+ verify(mBluetoothHearingAid).setActiveDevice(null);
+ verify(mHeadsetProxy).disconnectAudio();
+ }
+
+ private Intent buildConnectionActionIntent(int state, BluetoothDevice device,
+ boolean isHearingAid) {
+ Intent i = new Intent(isHearingAid
+ ? BluetoothHearingAid.ACTION_CONNECTION_STATE_CHANGED
+ : BluetoothHeadset.ACTION_CONNECTION_STATE_CHANGED);
i.putExtra(BluetoothHeadset.EXTRA_STATE, state);
i.putExtra(BluetoothDevice.EXTRA_DEVICE, device);
return i;
diff --git a/tests/src/com/android/server/telecom/tests/BluetoothPhoneServiceTest.java b/tests/src/com/android/server/telecom/tests/BluetoothPhoneServiceTest.java
index a5feab7..882f437 100644
--- a/tests/src/com/android/server/telecom/tests/BluetoothPhoneServiceTest.java
+++ b/tests/src/com/android/server/telecom/tests/BluetoothPhoneServiceTest.java
@@ -273,6 +273,26 @@
@MediumTest
@Test
+ public void testListCurrentCallsSilentRinging() throws Exception {
+ ArrayList<Call> calls = new ArrayList<>();
+ Call silentRingingCall = createActiveCall();
+ when(silentRingingCall.getState()).thenReturn(CallState.RINGING);
+ when(silentRingingCall.isSilentRingingRequested()).thenReturn(true);
+ calls.add(silentRingingCall);
+ when(silentRingingCall.isConference()).thenReturn(false);
+ when(silentRingingCall.getHandle()).thenReturn(Uri.parse("tel:555-000"));
+ when(mMockCallsManager.getCalls()).thenReturn(calls);
+ when(mMockCallsManager.getRingingCall()).thenReturn(silentRingingCall);
+
+ mBluetoothPhoneService.mBinder.listCurrentCalls();
+
+ verify(mMockBluetoothHeadset, never()).clccResponse(eq(1), eq(0), eq(0), eq(0), eq(false),
+ eq("555000"), eq(PhoneNumberUtils.TOA_Unknown));
+ verify(mMockBluetoothHeadset).clccResponse(0, 0, 0, 0, false, null, 0);
+ }
+
+ @MediumTest
+ @Test
public void testConferenceInProgressCDMA() throws Exception {
// If two calls are being conferenced and updateHeadsetWithCallState runs while this is
// still occuring, it will look like there is an active and held call still while we are
@@ -309,17 +329,18 @@
mBluetoothPhoneService.mBinder.queryPhoneState();
verify(mMockBluetoothHeadset).phoneStateChanged(eq(1), eq(1), eq(CALL_STATE_IDLE),
- eq(""), eq(128));
+ eq(""), eq(128), nullable(String.class));
when(parentCall.wasConferencePreviouslyMerged()).thenReturn(true);
mBluetoothPhoneService.mCallsManagerListener.onIsConferencedChanged(parentCall);
verify(mMockBluetoothHeadset).phoneStateChanged(eq(1), eq(0), eq(CALL_STATE_IDLE),
- eq(""), eq(128));
+ eq(""), eq(128), nullable(String.class));
when(mMockCallsManager.getHeldCall()).thenReturn(null);
// Spurious call to onIsConferencedChanged.
mBluetoothPhoneService.mCallsManagerListener.onIsConferencedChanged(parentCall);
// Make sure the call has only occurred collectively 2 times (not on the third)
verify(mMockBluetoothHeadset, times(2)).phoneStateChanged(any(int.class),
- any(int.class), any(int.class), nullable(String.class), any(int.class));
+ any(int.class), any(int.class), nullable(String.class), any(int.class),
+ nullable(String.class));
}
@MediumTest
@@ -611,7 +632,7 @@
mBluetoothPhoneService.mBinder.queryPhoneState();
verify(mMockBluetoothHeadset).phoneStateChanged(eq(0), eq(0), eq(CALL_STATE_INCOMING),
- eq("5550000"), eq(PhoneNumberUtils.TOA_Unknown));
+ eq("5550000"), eq(PhoneNumberUtils.TOA_Unknown), nullable(String.class));
}
@MediumTest
@@ -632,7 +653,7 @@
mBluetoothPhoneService.mBinder.queryPhoneState();
verify(mMockBluetoothHeadset).phoneStateChanged(eq(1), eq(0), eq(CALL_STATE_IDLE),
- eq(""), eq(128));
+ eq(""), eq(128), nullable(String.class));
}
@MediumTest
@@ -681,7 +702,8 @@
CHLD_TYPE_RELEASEACTIVE_ACCEPTHELD);
verify(mMockCallsManager).disconnectCall(eq(activeCall));
- verify(mMockCallsManager).unholdCall(eq(heldCall));
+ // Call unhold will occur as part of CallsManager auto-unholding the background call on its
+ // own.
assertEquals(didProcess, true);
}
@@ -771,7 +793,7 @@
verify(parentCall).swapConference();
verify(mMockBluetoothHeadset).phoneStateChanged(eq(1), eq(1), eq(CALL_STATE_IDLE), eq(""),
- eq(128));
+ eq(128), nullable(String.class));
assertEquals(didProcess, true);
}
@@ -785,8 +807,20 @@
mBluetoothPhoneService.mCallsManagerListener.onCallAdded(ringingCall);
verify(mMockBluetoothHeadset).phoneStateChanged(eq(0), eq(0), eq(CALL_STATE_INCOMING),
- eq("555000"), eq(PhoneNumberUtils.TOA_Unknown));
+ eq("555000"), eq(PhoneNumberUtils.TOA_Unknown), nullable(String.class));
+ }
+ @MediumTest
+ @Test
+ public void testSilentRingingCallState() throws Exception {
+ Call ringingCall = createRingingCall();
+ when(ringingCall.isSilentRingingRequested()).thenReturn(true);
+ when(ringingCall.getHandle()).thenReturn(Uri.parse("tel:555000"));
+
+ mBluetoothPhoneService.mCallsManagerListener.onCallAdded(ringingCall);
+
+ verify(mMockBluetoothHeadset).phoneStateChanged(eq(0), eq(0), eq(CALL_STATE_IDLE),
+ eq(""), eq(128), nullable(String.class));
}
@MediumTest
@@ -807,8 +841,7 @@
mBluetoothPhoneService.mCallsManagerListener.onCallAdded(parentCall);
verify(mMockBluetoothHeadset).phoneStateChanged(eq(1), eq(1), eq(CALL_STATE_IDLE),
- eq(""), eq(128));
-
+ eq(""), eq(128), nullable(String.class));
}
@MediumTest
@@ -820,7 +853,7 @@
mBluetoothPhoneService.mCallsManagerListener.onCallRemoved(activeCall);
verify(mMockBluetoothHeadset).phoneStateChanged(eq(0), eq(0), eq(CALL_STATE_IDLE),
- eq(""), eq(128));
+ eq(""), eq(128), nullable(String.class));
}
@MediumTest
@@ -838,7 +871,7 @@
CallState.ACTIVE, CallState.ON_HOLD);
verify(mMockBluetoothHeadset, never()).phoneStateChanged(anyInt(), anyInt(), anyInt(),
- anyString(), anyInt());
+ anyString(), anyInt(), nullable(String.class));
}
@MediumTest
@@ -850,7 +883,7 @@
CallState.CONNECTING, CallState.DIALING);
verify(mMockBluetoothHeadset, never()).phoneStateChanged(anyInt(), anyInt(), anyInt(),
- anyString(), anyInt());
+ anyString(), anyInt(), nullable(String.class));
}
@MediumTest
@@ -861,8 +894,10 @@
mBluetoothPhoneService.mCallsManagerListener.onCallStateChanged(outgoingCall,
CallState.NEW, CallState.DIALING);
- verify(mMockBluetoothHeadset).phoneStateChanged(0, 0, CALL_STATE_DIALING, "", 128);
- verify(mMockBluetoothHeadset).phoneStateChanged(0, 0, CALL_STATE_ALERTING, "", 128);
+ verify(mMockBluetoothHeadset).phoneStateChanged(eq(0), eq(0), eq(CALL_STATE_DIALING),
+ eq(""), eq(128), nullable(String.class));
+ verify(mMockBluetoothHeadset).phoneStateChanged(eq(0), eq(0), eq(CALL_STATE_ALERTING),
+ eq(""), eq(128), nullable(String.class));
}
@MediumTest
@@ -873,16 +908,16 @@
mBluetoothPhoneService.mCallsManagerListener.onCallStateChanged(disconnectedCall,
CallState.DISCONNECTING, CallState.DISCONNECTED);
verify(mMockBluetoothHeadset).phoneStateChanged(eq(0), eq(0), eq(CALL_STATE_DISCONNECTED),
- eq(""), eq(128));
+ eq(""), eq(128), nullable(String.class));
doReturn(false).when(mMockCallsManager).hasOnlyDisconnectedCalls();
mBluetoothPhoneService.mCallsManagerListener.onDisconnectedTonePlaying(true);
verify(mMockBluetoothHeadset).phoneStateChanged(eq(0), eq(0), eq(CALL_STATE_DISCONNECTED),
- eq(""), eq(128));
+ eq(""), eq(128), nullable(String.class));
mBluetoothPhoneService.mCallsManagerListener.onDisconnectedTonePlaying(false);
verify(mMockBluetoothHeadset).phoneStateChanged(eq(0), eq(0), eq(CALL_STATE_IDLE),
- eq(""), eq(128));
+ eq(""), eq(128), nullable(String.class));
}
@MediumTest
@@ -893,7 +928,7 @@
mBluetoothPhoneService.mCallsManagerListener.onCallAdded(ringingCall);
verify(mMockBluetoothHeadset).phoneStateChanged(eq(0), eq(0), eq(CALL_STATE_INCOMING),
- eq("555-0000"), eq(PhoneNumberUtils.TOA_Unknown));
+ eq("555-0000"), eq(PhoneNumberUtils.TOA_Unknown), nullable(String.class));
//Switch to active
doReturn(null).when(mMockCallsManager).getRingingCall();
@@ -903,7 +938,7 @@
CallState.RINGING, CallState.ACTIVE);
verify(mMockBluetoothHeadset).phoneStateChanged(eq(1), eq(0), eq(CALL_STATE_IDLE),
- eq(""), eq(128));
+ eq(""), eq(128), nullable(String.class));
}
@MediumTest
@@ -916,7 +951,7 @@
CallState.ACTIVE, CallState.ON_HOLD);
verify(mMockBluetoothHeadset, never()).phoneStateChanged(eq(0), eq(2), eq(CALL_STATE_HELD),
- eq("5550000"), eq(PhoneNumberUtils.TOA_Unknown));
+ eq("5550000"), eq(PhoneNumberUtils.TOA_Unknown), nullable(String.class));
}
@MediumTest
@@ -942,18 +977,18 @@
// CDMA "conference"
mBluetoothPhoneService.mCallsManagerListener.onIsConferencedChanged(activeCall);
verify(mMockBluetoothHeadset, never()).phoneStateChanged(anyInt(), anyInt(), anyInt(),
- anyString(), anyInt());
+ anyString(), anyInt(), nullable(String.class));
mBluetoothPhoneService.mCallsManagerListener.onIsConferencedChanged(heldCall);
verify(mMockBluetoothHeadset, never()).phoneStateChanged(anyInt(), anyInt(), anyInt(),
- anyString(), anyInt());
+ anyString(), anyInt(), nullable(String.class));
mBluetoothPhoneService.mCallsManagerListener.onIsConferencedChanged(parentCall);
verify(mMockBluetoothHeadset, never()).phoneStateChanged(anyInt(), anyInt(), anyInt(),
- anyString(), anyInt());
+ anyString(), anyInt(), nullable(String.class));
calls.add(heldCall);
mBluetoothPhoneService.mCallsManagerListener.onIsConferencedChanged(parentCall);
verify(mMockBluetoothHeadset).phoneStateChanged(eq(1), eq(1), eq(CALL_STATE_IDLE),
- eq(""), eq(128));
+ eq(""), eq(128), nullable(String.class));
}
@MediumTest
@@ -967,7 +1002,7 @@
mBluetoothPhoneService.mBluetoothAdapterReceiver.onReceive(mContext, intent);
verify(mMockBluetoothHeadset).phoneStateChanged(eq(0), eq(0), eq(CALL_STATE_INCOMING),
- eq("5550000"), eq(PhoneNumberUtils.TOA_Unknown));
+ eq("5550000"), eq(PhoneNumberUtils.TOA_Unknown), nullable(String.class));
}
private void addCallCapability(Call call, int capability) {
diff --git a/tests/src/com/android/server/telecom/tests/BluetoothRouteManagerTest.java b/tests/src/com/android/server/telecom/tests/BluetoothRouteManagerTest.java
index 5b45828..93c2909 100644
--- a/tests/src/com/android/server/telecom/tests/BluetoothRouteManagerTest.java
+++ b/tests/src/com/android/server/telecom/tests/BluetoothRouteManagerTest.java
@@ -18,6 +18,7 @@
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothHeadset;
+import android.bluetooth.BluetoothHearingAid;
import android.content.ContentResolver;
import android.os.Parcel;
import android.telecom.Log;
@@ -37,13 +38,14 @@
import org.mockito.Mock;
import java.util.Arrays;
-import java.util.Objects;
+import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
import static org.junit.Assert.assertEquals;
+import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.nullable;
import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.atLeast;
-import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.reset;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
@@ -55,9 +57,11 @@
static final BluetoothDevice DEVICE1 = makeBluetoothDevice("00:00:00:00:00:01");
static final BluetoothDevice DEVICE2 = makeBluetoothDevice("00:00:00:00:00:02");
static final BluetoothDevice DEVICE3 = makeBluetoothDevice("00:00:00:00:00:03");
+ static final BluetoothDevice HEARING_AID_DEVICE = makeBluetoothDevice("00:00:00:00:00:04");
@Mock private BluetoothDeviceManager mDeviceManager;
@Mock private BluetoothHeadsetProxy mHeadsetProxy;
+ @Mock private BluetoothHearingAid mBluetoothHearingAid;
@Mock private Timeouts.Adapter mTimeoutsAdapter;
@Mock private BluetoothRouteManager.BluetoothStateListener mListener;
@@ -72,7 +76,7 @@
public void testConnectHfpRetryWhileNotConnected() {
BluetoothRouteManager sm = setupStateMachine(
BluetoothRouteManager.AUDIO_OFF_STATE_NAME, null);
- setupConnectedDevices(new BluetoothDevice[]{DEVICE1}, null);
+ setupConnectedDevices(new BluetoothDevice[]{DEVICE1}, null, null, null);
when(mTimeoutsAdapter.getRetryBluetoothConnectAudioBackoffMillis(
nullable(ContentResolver.class))).thenReturn(0L);
when(mHeadsetProxy.connectAudio()).thenReturn(false);
@@ -91,10 +95,45 @@
@SmallTest
@Test
+ public void testAmbiguousActiveDevice() {
+ BluetoothRouteManager sm = setupStateMachine(
+ BluetoothRouteManager.AUDIO_CONNECTED_STATE_NAME_PREFIX, DEVICE1);
+ setupConnectedDevices(new BluetoothDevice[]{DEVICE1},
+ new BluetoothDevice[]{HEARING_AID_DEVICE}, DEVICE1, HEARING_AID_DEVICE);
+ sm.onActiveDeviceChanged(DEVICE1, false);
+ sm.onActiveDeviceChanged(HEARING_AID_DEVICE, true);
+ executeRoutingAction(sm, BluetoothRouteManager.BT_AUDIO_LOST, DEVICE1.getAddress());
+
+ verifyConnectionAttempt(HEARING_AID_DEVICE, 0);
+ verifyConnectionAttempt(DEVICE1, 0);
+ assertEquals(BluetoothRouteManager.AUDIO_CONNECTED_STATE_NAME_PREFIX
+ + ":" + HEARING_AID_DEVICE.getAddress(),
+ sm.getCurrentState().getName());
+ sm.quitNow();
+ }
+
+ @SmallTest
+ @Test
+ public void testAudioOnDeviceWithScoOffActiveDevice() {
+ BluetoothRouteManager sm = setupStateMachine(
+ BluetoothRouteManager.AUDIO_CONNECTED_STATE_NAME_PREFIX, DEVICE1);
+ setupConnectedDevices(new BluetoothDevice[]{DEVICE1}, null, DEVICE1, null);
+ when(mHeadsetProxy.getAudioState(DEVICE1))
+ .thenReturn(BluetoothHeadset.STATE_AUDIO_DISCONNECTED);
+ executeRoutingAction(sm, BluetoothRouteManager.BT_AUDIO_LOST, DEVICE1.getAddress());
+
+ verifyConnectionAttempt(DEVICE1, 0);
+ assertEquals(BluetoothRouteManager.AUDIO_OFF_STATE_NAME,
+ sm.getCurrentState().getName());
+ sm.quitNow();
+ }
+
+ @SmallTest
+ @Test
public void testConnectHfpRetryWhileConnectedToAnotherDevice() {
BluetoothRouteManager sm = setupStateMachine(
BluetoothRouteManager.AUDIO_CONNECTED_STATE_NAME_PREFIX, DEVICE1);
- setupConnectedDevices(new BluetoothDevice[]{DEVICE1, DEVICE2}, null);
+ setupConnectedDevices(new BluetoothDevice[]{DEVICE1, DEVICE2}, null, null, null);
when(mTimeoutsAdapter.getRetryBluetoothConnectAudioBackoffMillis(
nullable(ContentResolver.class))).thenReturn(0L);
when(mHeadsetProxy.connectAudio()).thenReturn(false);
@@ -126,22 +165,28 @@
return sm;
}
- private void setupConnectedDevices(BluetoothDevice[] devices, BluetoothDevice activeDevice) {
- when(mDeviceManager.getNumConnectedDevices()).thenReturn(devices.length);
- when(mDeviceManager.getConnectedDevices()).thenReturn(Arrays.asList(devices));
- when(mHeadsetProxy.getConnectedDevices()).thenReturn(Arrays.asList(devices));
- if (activeDevice != null) {
- when(mHeadsetProxy.getAudioState(eq(activeDevice)))
- .thenReturn(BluetoothHeadset.STATE_AUDIO_CONNECTED);
- }
- doAnswer(invocation -> {
- BluetoothDevice first = getFirstExcluding(devices,
- (String) invocation.getArguments()[0]);
- return first == null ? null : first.getAddress();
- }).when(mDeviceManager).getMostRecentlyConnectedDevice(nullable(String.class));
- for (BluetoothDevice device : devices) {
- when(mDeviceManager.getDeviceFromAddress(device.getAddress())).thenReturn(device);
- }
+ private void setupConnectedDevices(BluetoothDevice[] hfpDevices,
+ BluetoothDevice[] hearingAidDevices,
+ BluetoothDevice hfpActiveDevice, BluetoothDevice hearingAidActiveDevice) {
+ if (hfpDevices == null) hfpDevices = new BluetoothDevice[]{};
+ if (hearingAidDevices == null) hearingAidDevices = new BluetoothDevice[]{};
+
+ when(mDeviceManager.getNumConnectedDevices()).thenReturn(
+ hfpDevices.length + hearingAidDevices.length);
+ List<BluetoothDevice> allDevices = Stream.concat(
+ Arrays.stream(hfpDevices), Arrays.stream(hearingAidDevices))
+ .collect(Collectors.toList());
+
+ when(mDeviceManager.getConnectedDevices()).thenReturn(allDevices);
+ when(mHeadsetProxy.getConnectedDevices()).thenReturn(Arrays.asList(hfpDevices));
+ when(mHeadsetProxy.getActiveDevice()).thenReturn(hfpActiveDevice);
+ when(mHeadsetProxy.getAudioState(hfpActiveDevice))
+ .thenReturn(BluetoothHeadset.STATE_AUDIO_CONNECTED);
+
+ when(mBluetoothHearingAid.getConnectedDevices())
+ .thenReturn(Arrays.asList(hearingAidDevices));
+ when(mBluetoothHearingAid.getActiveDevices())
+ .thenReturn(Arrays.asList(hearingAidActiveDevice, null));
}
static void executeRoutingAction(BluetoothRouteManager brm, int message, String
@@ -165,6 +210,7 @@
private void resetMocks() {
reset(mDeviceManager, mListener, mHeadsetProxy, mTimeoutsAdapter);
when(mDeviceManager.getHeadsetService()).thenReturn(mHeadsetProxy);
+ when(mDeviceManager.getHearingAidService()).thenReturn(mBluetoothHearingAid);
when(mHeadsetProxy.connectAudio()).thenReturn(true);
when(mHeadsetProxy.setActiveDevice(nullable(BluetoothDevice.class))).thenReturn(true);
when(mTimeoutsAdapter.getRetryBluetoothConnectAudioBackoffMillis(
@@ -174,17 +220,6 @@
}
private void verifyConnectionAttempt(BluetoothDevice device, int numTimes) {
- verify(mHeadsetProxy, times(numTimes)).setActiveDevice(device);
- verify(mHeadsetProxy, atLeast(numTimes)).connectAudio();
- }
-
- private static BluetoothDevice getFirstExcluding(
- BluetoothDevice[] devices, String excludeAddress) {
- for (BluetoothDevice x : devices) {
- if (!Objects.equals(excludeAddress, x.getAddress())) {
- return x;
- }
- }
- return null;
+ verify(mDeviceManager, times(numTimes)).connectAudio(device.getAddress());
}
}
diff --git a/tests/src/com/android/server/telecom/tests/BluetoothRouteTransitionTests.java b/tests/src/com/android/server/telecom/tests/BluetoothRouteTransitionTests.java
index e7cd6ee..2584f33 100644
--- a/tests/src/com/android/server/telecom/tests/BluetoothRouteTransitionTests.java
+++ b/tests/src/com/android/server/telecom/tests/BluetoothRouteTransitionTests.java
@@ -18,9 +18,12 @@
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothHeadset;
+import android.bluetooth.BluetoothHearingAid;
import android.content.ContentResolver;
+import android.telecom.Log;
import android.test.suitebuilder.annotation.SmallTest;
+import com.android.internal.os.SomeArgs;
import com.android.server.telecom.BluetoothHeadsetProxy;
import com.android.server.telecom.TelecomSystem;
import com.android.server.telecom.Timeouts;
@@ -36,19 +39,20 @@
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
+import java.util.Collections;
import java.util.List;
-import java.util.Objects;
import static com.android.server.telecom.tests.BluetoothRouteManagerTest.DEVICE1;
import static com.android.server.telecom.tests.BluetoothRouteManagerTest.DEVICE2;
import static com.android.server.telecom.tests.BluetoothRouteManagerTest.DEVICE3;
import static com.android.server.telecom.tests.BluetoothRouteManagerTest.executeRoutingAction;
import static org.junit.Assert.assertEquals;
+import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.ArgumentMatchers.nullable;
+import static org.mockito.Mockito.clearInvocations;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.reset;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -56,7 +60,7 @@
public class BluetoothRouteTransitionTests extends TelecomTestCase {
private enum ListenerUpdate {
DEVICE_LIST_CHANGED, ACTIVE_DEVICE_PRESENT, ACTIVE_DEVICE_GONE,
- AUDIO_CONNECTED, AUDIO_DISCONNECTED
+ AUDIO_CONNECTED, AUDIO_DISCONNECTED, UNEXPECTED_STATE_CHANGE
}
private static class BluetoothRouteTestParametersBuilder {
@@ -73,6 +77,7 @@
private BluetoothDevice[] connectedDevices;
// the active device as returned by BluetoothHeadset#getActiveDevice
private BluetoothDevice activeDevice = null;
+ private List<BluetoothDevice> hearingAidBtDevices = Collections.emptyList();
public BluetoothRouteTestParametersBuilder setName(String name) {
this.name = name;
@@ -141,6 +146,12 @@
return this;
}
+ public BluetoothRouteTestParametersBuilder setHearingAidBtDevices(
+ List<BluetoothDevice> hearingAidBtDevices) {
+ this.hearingAidBtDevices = hearingAidBtDevices;
+ return this;
+ }
+
public BluetoothRouteTestParameters build() {
return new BluetoothRouteTestParameters(name,
initialBluetoothState,
@@ -153,7 +164,8 @@
connectedDevices,
messageDevice,
audioOnDevice,
- activeDevice);
+ activeDevice,
+ hearingAidBtDevices);
}
}
@@ -172,13 +184,15 @@
public BluetoothDevice[] connectedDevices; // array of connected devices
// the active device as returned by BluetoothHeadset#getActiveDevice
private BluetoothDevice activeDevice = null;
+ private List<BluetoothDevice> hearingAidBtDevices;
public BluetoothRouteTestParameters(String name, String initialBluetoothState,
BluetoothDevice initialDevice, int messageType, ListenerUpdate[]
expectedListenerUpdates, int expectedBluetoothInteraction, BluetoothDevice
expectedConnectionDevice, String expectedFinalStateName,
BluetoothDevice[] connectedDevices, BluetoothDevice messageDevice,
- BluetoothDevice audioOnDevice, BluetoothDevice activeDevice) {
+ BluetoothDevice audioOnDevice, BluetoothDevice activeDevice,
+ List<BluetoothDevice> hearingAidBtDevices) {
this.name = name;
this.initialBluetoothState = initialBluetoothState;
this.initialDevice = initialDevice;
@@ -191,6 +205,7 @@
this.messageDevice = messageDevice;
this.audioOnDevice = audioOnDevice;
this.activeDevice = activeDevice;
+ this.hearingAidBtDevices = hearingAidBtDevices;
}
@Override
@@ -207,6 +222,7 @@
", expectedFinalStateName='" + expectedFinalStateName + '\'' +
", connectedDevices=" + Arrays.toString(connectedDevices) +
", activeDevice='" + activeDevice + '\'' +
+ ", hearingAidBtDevices ='" + hearingAidBtDevices + '\'' +
'}';
}
}
@@ -220,6 +236,7 @@
private final BluetoothRouteTestParameters mParams;
@Mock private BluetoothDeviceManager mDeviceManager;
@Mock private BluetoothHeadsetProxy mHeadsetProxy;
+ @Mock private BluetoothHearingAid mBluetoothHearingAid;
@Mock private Timeouts.Adapter mTimeoutsAdapter;
@Mock private BluetoothRouteManager.BluetoothStateListener mListener;
@@ -241,21 +258,41 @@
setupConnectedDevices(mParams.connectedDevices,
mParams.audioOnDevice, mParams.activeDevice);
- sm.setActiveDeviceCacheForTesting(mParams.activeDevice);
+ sm.setActiveDeviceCacheForTesting(mParams.activeDevice,
+ mParams.hearingAidBtDevices.contains(mParams.messageDevice));
+ if (mParams.initialDevice != null) {
+ doAnswer(invocation -> {
+ SomeArgs args = SomeArgs.obtain();
+ args.arg1 = Log.createSubsession();
+ args.arg2 = mParams.initialDevice.getAddress();
+ when(mHeadsetProxy.getActiveDevice()).thenReturn(null);
+ sm.sendMessage(BluetoothRouteManager.BT_AUDIO_LOST, args);
+ return true;
+ }).when(mDeviceManager).disconnectAudio();
+ }
// Go through the utility methods for these two messages
if (mParams.messageType == BluetoothRouteManager.NEW_DEVICE_CONNECTED) {
sm.onDeviceAdded(mParams.messageDevice.getAddress());
- sm.onActiveDeviceChanged(mParams.messageDevice);
+ sm.onActiveDeviceChanged(mParams.messageDevice,
+ mParams.hearingAidBtDevices.contains(mParams.messageDevice));
} else if (mParams.messageType == BluetoothRouteManager.LOST_DEVICE) {
+ sm.onActiveDeviceChanged(null,
+ mParams.hearingAidBtDevices.contains(mParams.messageDevice));
+ if (mParams.hearingAidBtDevices.contains(mParams.messageDevice)) {
+ when(mBluetoothHearingAid.getActiveDevices()).thenReturn(Arrays.asList(null, null));
+ } else {
+ when(mHeadsetProxy.getActiveDevice()).thenReturn(null);
+ }
sm.onDeviceLost(mParams.messageDevice.getAddress());
- sm.onActiveDeviceChanged(null);
} else {
executeRoutingAction(sm, mParams.messageType,
mParams.messageDevice == null ? null : mParams.messageDevice.getAddress());
}
waitForHandlerAction(sm.getHandler(), TEST_TIMEOUT);
+ waitForHandlerAction(sm.getHandler(), TEST_TIMEOUT);
+ waitForHandlerAction(sm.getHandler(), TEST_TIMEOUT);
assertEquals(mParams.expectedFinalStateName, sm.getCurrentState().getName());
for (ListenerUpdate lu : mParams.expectedListenerUpdates) {
@@ -280,19 +317,15 @@
switch (mParams.expectedBluetoothInteraction) {
case NONE:
- verify(mHeadsetProxy, never()).connectAudio();
- verify(mHeadsetProxy, never()).setActiveDevice(nullable(BluetoothDevice.class));
- verify(mHeadsetProxy, never()).disconnectAudio();
+ verify(mDeviceManager, never()).connectAudio(nullable(String.class));
break;
case CONNECT:
- verify(mHeadsetProxy).connectAudio();
- verify(mHeadsetProxy).setActiveDevice(mParams.expectedConnectionDevice);
- verify(mHeadsetProxy, never()).disconnectAudio();
+ verify(mDeviceManager).connectAudio(mParams.expectedConnectionDevice.getAddress());
+ verify(mDeviceManager, never()).disconnectAudio();
break;
case DISCONNECT:
- verify(mHeadsetProxy, never()).connectAudio();
- verify(mHeadsetProxy, never()).setActiveDevice(nullable(BluetoothDevice.class));
- verify(mHeadsetProxy).disconnectAudio();
+ verify(mDeviceManager, never()).connectAudio(nullable(String.class));
+ verify(mDeviceManager).disconnectAudio();
break;
}
@@ -307,22 +340,22 @@
when(mHeadsetProxy.getConnectedDevices()).thenReturn(Arrays.asList(devices));
when(mHeadsetProxy.getActiveDevice()).thenReturn(activeDevice);
if (audioOnDevice != null) {
- when(mHeadsetProxy.getAudioState(eq(audioOnDevice)))
+ when(mHeadsetProxy.getActiveDevice()).thenReturn(audioOnDevice);
+ when(mHeadsetProxy.getAudioState(audioOnDevice))
.thenReturn(BluetoothHeadset.STATE_AUDIO_CONNECTED);
}
- doAnswer(invocation -> {
- BluetoothDevice first = getFirstExcluding(devices,
- (String) invocation.getArguments()[0]);
- return first == null ? null : first.getAddress();
- }).when(mDeviceManager).getMostRecentlyConnectedDevice(nullable(String.class));
- for (BluetoothDevice device : devices) {
- when(mDeviceManager.getDeviceFromAddress(device.getAddress())).thenReturn(device);
- }
}
private BluetoothRouteManager setupStateMachine(String initialState,
BluetoothDevice initialDevice) {
resetMocks();
+ when(mDeviceManager.getHeadsetService()).thenReturn(mHeadsetProxy);
+ when(mDeviceManager.getHearingAidService()).thenReturn(mBluetoothHearingAid);
+ when(mDeviceManager.connectAudio(nullable(String.class))).thenReturn(true);
+ when(mTimeoutsAdapter.getRetryBluetoothConnectAudioBackoffMillis(
+ nullable(ContentResolver.class))).thenReturn(100000L);
+ when(mTimeoutsAdapter.getBluetoothPendingTimeoutMillis(
+ nullable(ContentResolver.class))).thenReturn(100000L);
BluetoothRouteManager sm = new BluetoothRouteManager(mContext,
new TelecomSystem.SyncRoot() { }, mDeviceManager, mTimeoutsAdapter);
sm.setListener(mListener);
@@ -333,24 +366,7 @@
}
private void resetMocks() {
- reset(mDeviceManager, mListener, mHeadsetProxy, mTimeoutsAdapter);
- when(mDeviceManager.getHeadsetService()).thenReturn(mHeadsetProxy);
- when(mHeadsetProxy.connectAudio()).thenReturn(true);
- when(mHeadsetProxy.setActiveDevice(nullable(BluetoothDevice.class))).thenReturn(true);
- when(mTimeoutsAdapter.getRetryBluetoothConnectAudioBackoffMillis(
- nullable(ContentResolver.class))).thenReturn(100000L);
- when(mTimeoutsAdapter.getBluetoothPendingTimeoutMillis(
- nullable(ContentResolver.class))).thenReturn(100000L);
- }
-
- private static BluetoothDevice getFirstExcluding(
- BluetoothDevice[] devices, String excludeAddress) {
- for (BluetoothDevice x : devices) {
- if (!Objects.equals(excludeAddress, x.getAddress())) {
- return x;
- }
- }
- return null;
+ clearInvocations(mDeviceManager, mListener, mHeadsetProxy, mTimeoutsAdapter);
}
@Parameterized.Parameters(name = "{0}")
@@ -390,7 +406,7 @@
.setInitialDevice(DEVICE2)
.setAudioOnDevice(DEVICE2)
.setConnectedDevices(DEVICE2, DEVICE1)
- .setMessageType(BluetoothRouteManager.HFP_IS_ON)
+ .setMessageType(BluetoothRouteManager.BT_AUDIO_IS_ON)
.setMessageDevice(DEVICE2)
.setExpectedListenerUpdates(ListenerUpdate.AUDIO_CONNECTED)
.setExpectedBluetoothInteraction(NONE)
@@ -404,7 +420,7 @@
.setInitialBluetoothState(BluetoothRouteManager.AUDIO_CONNECTED_STATE_NAME_PREFIX)
.setInitialDevice(DEVICE2)
.setConnectedDevices(DEVICE2)
- .setMessageType(BluetoothRouteManager.HFP_LOST)
+ .setMessageType(BluetoothRouteManager.BT_AUDIO_LOST)
.setMessageDevice(DEVICE2)
.setExpectedListenerUpdates(ListenerUpdate.AUDIO_DISCONNECTED)
.setExpectedBluetoothInteraction(NONE)
@@ -418,7 +434,7 @@
.setInitialBluetoothState(BluetoothRouteManager.AUDIO_CONNECTED_STATE_NAME_PREFIX)
.setInitialDevice(DEVICE2)
.setConnectedDevices(DEVICE2, DEVICE1, DEVICE3)
- .setMessageType(BluetoothRouteManager.HFP_LOST)
+ .setMessageType(BluetoothRouteManager.BT_AUDIO_LOST)
.setMessageDevice(DEVICE2)
.setExpectedListenerUpdates(ListenerUpdate.AUDIO_DISCONNECTED)
.setExpectedBluetoothInteraction(NONE)
@@ -503,7 +519,7 @@
.setInitialDevice(DEVICE2)
.setConnectedDevices(DEVICE2, DEVICE1)
.setAudioOnDevice(DEVICE1)
- .setMessageType(BluetoothRouteManager.HFP_IS_ON)
+ .setMessageType(BluetoothRouteManager.BT_AUDIO_IS_ON)
.setMessageDevice(DEVICE1)
.setExpectedListenerUpdates(ListenerUpdate.AUDIO_CONNECTED)
.setExpectedBluetoothInteraction(NONE)
@@ -526,6 +542,18 @@
.build());
result.add(new BluetoothRouteTestParametersBuilder()
+ .setName("Audio disconnect comes with a null device")
+ .setInitialBluetoothState(BluetoothRouteManager.AUDIO_CONNECTED_STATE_NAME_PREFIX)
+ .setInitialDevice(DEVICE2)
+ .setConnectedDevices(DEVICE2)
+ .setMessageType(BluetoothRouteManager.BT_AUDIO_LOST)
+ .setMessageDevice(null)
+ .setExpectedListenerUpdates(ListenerUpdate.AUDIO_DISCONNECTED)
+ .setExpectedBluetoothInteraction(NONE)
+ .setExpectedFinalStateName(BluetoothRouteManager.AUDIO_OFF_STATE_NAME)
+ .build());
+
+ result.add(new BluetoothRouteTestParametersBuilder()
.setName("Device gets disconnected while pending. No fallback.")
.setInitialBluetoothState(BluetoothRouteManager.AUDIO_CONNECTING_STATE_NAME_PREFIX)
.setInitialDevice(DEVICE2)
@@ -539,6 +567,19 @@
.build());
result.add(new BluetoothRouteTestParametersBuilder()
+ .setName("Device gets audio-off while in another device's audio on state")
+ .setInitialBluetoothState(BluetoothRouteManager.AUDIO_CONNECTED_STATE_NAME_PREFIX)
+ .setInitialDevice(DEVICE2)
+ .setConnectedDevices(DEVICE2, DEVICE1)
+ .setMessageType(BluetoothRouteManager.BT_AUDIO_LOST)
+ .setMessageDevice(DEVICE1)
+ .setExpectedListenerUpdates(ListenerUpdate.UNEXPECTED_STATE_CHANGE)
+ .setExpectedBluetoothInteraction(NONE)
+ .setExpectedFinalStateName(BluetoothRouteManager.AUDIO_CONNECTED_STATE_NAME_PREFIX
+ + ":" + DEVICE2)
+ .build());
+
+ result.add(new BluetoothRouteTestParametersBuilder()
.setName("Audio routing requests HFP disconnection while a device is active")
.setInitialBluetoothState(BluetoothRouteManager.AUDIO_CONNECTED_STATE_NAME_PREFIX)
.setInitialDevice(DEVICE2)
@@ -565,7 +606,7 @@
.setInitialBluetoothState(BluetoothRouteManager.AUDIO_OFF_STATE_NAME)
.setInitialDevice(null)
.setConnectedDevices(DEVICE2, DEVICE3)
- .setMessageType(BluetoothRouteManager.HFP_IS_ON)
+ .setMessageType(BluetoothRouteManager.BT_AUDIO_IS_ON)
.setMessageDevice(DEVICE3)
.setExpectedListenerUpdates(ListenerUpdate.AUDIO_CONNECTED)
.setExpectedBluetoothInteraction(NONE)
@@ -573,6 +614,19 @@
+ ":" + DEVICE3)
.build());
+ result.add(new BluetoothRouteTestParametersBuilder()
+ .setName("Hearing aid device disconnects with headset present")
+ .setInitialBluetoothState(BluetoothRouteManager.AUDIO_CONNECTED_STATE_NAME_PREFIX)
+ .setInitialDevice(DEVICE2)
+ .setConnectedDevices(DEVICE2, DEVICE3)
+ .setHearingAidBtDevices(Collections.singletonList(DEVICE2))
+ .setMessageType(BluetoothRouteManager.LOST_DEVICE)
+ .setMessageDevice(DEVICE2)
+ .setExpectedListenerUpdates(ListenerUpdate.AUDIO_DISCONNECTED,
+ ListenerUpdate.DEVICE_LIST_CHANGED)
+ .setExpectedBluetoothInteraction(NONE)
+ .setExpectedFinalStateName(BluetoothRouteManager.AUDIO_OFF_STATE_NAME)
+ .build());
return result;
}
}
diff --git a/tests/src/com/android/server/telecom/tests/CallAudioManagerTest.java b/tests/src/com/android/server/telecom/tests/CallAudioManagerTest.java
index 5e23dcc..01add22 100644
--- a/tests/src/com/android/server/telecom/tests/CallAudioManagerTest.java
+++ b/tests/src/com/android/server/telecom/tests/CallAudioManagerTest.java
@@ -77,7 +77,7 @@
InCallTonePlayer mockInCallTonePlayer = mock(InCallTonePlayer.class);
doAnswer((invocation2) -> {
mCallAudioManager.setIsTonePlaying(true);
- return null;
+ return true;
}).when(mockInCallTonePlayer).startTone();
return mockInCallTonePlayer;
}).when(mPlayerFactory).createPlayer(anyInt());
@@ -198,13 +198,16 @@
Call call = createIncomingCall();
when(call.can(android.telecom.Call.Details.CAPABILITY_SPEED_UP_MT_AUDIO))
.thenReturn(true);
+ when(call.getState()).thenReturn(CallState.ANSWERED);
ArgumentCaptor<CallAudioModeStateMachine.MessageArgs> captor =
ArgumentCaptor.forClass(CallAudioModeStateMachine.MessageArgs.class);
// Answer the incoming call
- mCallAudioManager.onIncomingCallAnswered(call);
+ mCallAudioManager.onCallStateChanged(call, CallState.RINGING, CallState.ANSWERED);
verify(mCallAudioModeStateMachine).sendMessageWithArgs(
- eq(CallAudioModeStateMachine.MT_AUDIO_SPEEDUP_FOR_RINGING_CALL), captor.capture());
+ eq(CallAudioModeStateMachine.NEW_ACTIVE_OR_DIALING_CALL), captor.capture());
+ verify(mCallAudioModeStateMachine).sendMessageWithArgs(
+ eq(CallAudioModeStateMachine.NO_MORE_RINGING_CALLS), captor.capture());
CallAudioModeStateMachine.MessageArgs correctArgs =
new CallAudioModeStateMachine.MessageArgs(
true, // hasActiveOrDialingCalls
@@ -217,7 +220,7 @@
assertMessageArgEquality(correctArgs, captor.getValue());
assertMessageArgEquality(correctArgs, captor.getValue());
when(call.getState()).thenReturn(CallState.ACTIVE);
- mCallAudioManager.onCallStateChanged(call, CallState.RINGING, CallState.ACTIVE);
+ mCallAudioManager.onCallStateChanged(call, CallState.ANSWERED, CallState.ACTIVE);
disconnectCall(call);
stopTone();
diff --git a/tests/src/com/android/server/telecom/tests/CallAudioModeStateMachineTest.java b/tests/src/com/android/server/telecom/tests/CallAudioModeStateMachineTest.java
index f253d19..56f585f 100644
--- a/tests/src/com/android/server/telecom/tests/CallAudioModeStateMachineTest.java
+++ b/tests/src/com/android/server/telecom/tests/CallAudioModeStateMachineTest.java
@@ -22,6 +22,7 @@
import com.android.server.telecom.CallAudioManager;
import com.android.server.telecom.CallAudioModeStateMachine;
import com.android.server.telecom.CallAudioRouteStateMachine;
+import com.android.server.telecom.SystemStateHelper;
import org.junit.Before;
import org.junit.Test;
@@ -30,9 +31,11 @@
import org.mockito.Mock;
import static org.junit.Assert.assertEquals;
+import static org.mockito.ArgumentMatchers.nullable;
import static org.mockito.Matchers.anyInt;
+import static org.mockito.Mockito.clearInvocations;
import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.reset;
+import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -40,6 +43,7 @@
public class CallAudioModeStateMachineTest extends TelecomTestCase {
private static final int TEST_TIMEOUT = 1000;
+ @Mock private SystemStateHelper mSystemStateHelper;
@Mock private AudioManager mAudioManager;
@Mock private CallAudioManager mCallAudioManager;
@@ -52,7 +56,8 @@
@SmallTest
@Test
public void testNoFocusWhenRingerSilenced() throws Throwable {
- CallAudioModeStateMachine sm = new CallAudioModeStateMachine(mAudioManager);
+ CallAudioModeStateMachine sm = new CallAudioModeStateMachine(mSystemStateHelper,
+ mAudioManager);
sm.setCallAudioManager(mCallAudioManager);
sm.sendMessage(CallAudioModeStateMachine.ABANDON_FOCUS_FOR_TESTING);
waitForHandlerAction(sm.getHandler(), TEST_TIMEOUT);
@@ -83,8 +88,47 @@
@SmallTest
@Test
+ public void testNoRingWhenDeviceIsAtEar() {
+ CallAudioModeStateMachine sm = new CallAudioModeStateMachine(mSystemStateHelper,
+ mAudioManager);
+ sm.setCallAudioManager(mCallAudioManager);
+ sm.sendMessage(CallAudioModeStateMachine.ABANDON_FOCUS_FOR_TESTING);
+ sm.sendMessage(CallAudioModeStateMachine.NEW_HOLDING_CALL,
+ new CallAudioModeStateMachine.MessageArgs(
+ false, // hasActiveOrDialingCalls
+ false, // hasRingingCalls
+ true, // hasHoldingCalls
+ false, // isTonePlaying
+ false, // foregroundCallIsVoip
+ null // session
+ ));
+ waitForHandlerAction(sm.getHandler(), TEST_TIMEOUT);
+ assertEquals(CallAudioModeStateMachine.TONE_HOLD_STATE_NAME, sm.getCurrentStateName());
+ when(mSystemStateHelper.isDeviceAtEar()).thenReturn(true);
+
+ resetMocks();
+ sm.sendMessage(CallAudioModeStateMachine.NEW_RINGING_CALL,
+ new CallAudioModeStateMachine.MessageArgs(
+ false, // hasActiveOrDialingCalls
+ true, // hasRingingCalls
+ true, // hasHoldingCalls
+ false, // isTonePlaying
+ false, // foregroundCallIsVoip
+ null // session
+ ));
+ waitForHandlerAction(sm.getHandler(), TEST_TIMEOUT);
+
+ verify(mAudioManager, never()).requestAudioFocusForCall(anyInt(), anyInt());
+ verify(mAudioManager, never()).setMode(anyInt());
+ verify(mCallAudioManager, never()).startRinging();
+ verify(mCallAudioManager).startCallWaiting(nullable(String.class));
+ }
+
+ @SmallTest
+ @Test
public void testRegainFocusWhenHfpIsConnectedSilenced() throws Throwable {
- CallAudioModeStateMachine sm = new CallAudioModeStateMachine(mAudioManager);
+ CallAudioModeStateMachine sm = new CallAudioModeStateMachine(mSystemStateHelper,
+ mAudioManager);
sm.setCallAudioManager(mCallAudioManager);
sm.sendMessage(CallAudioModeStateMachine.ABANDON_FOCUS_FOR_TESTING);
waitForHandlerAction(sm.getHandler(), TEST_TIMEOUT);
@@ -117,7 +161,7 @@
sm.sendMessage(CallAudioModeStateMachine.RINGER_MODE_CHANGE);
waitForHandlerAction(sm.getHandler(), TEST_TIMEOUT);
- verify(mCallAudioManager).startRinging();
+ verify(mCallAudioManager, times(2)).startRinging();
verify(mAudioManager).requestAudioFocusForCall(AudioManager.STREAM_RING,
AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);
verify(mAudioManager).setMode(AudioManager.MODE_RINGTONE);
@@ -127,6 +171,6 @@
private void resetMocks() {
- reset(mCallAudioManager, mAudioManager);
+ clearInvocations(mCallAudioManager, mAudioManager);
}
}
diff --git a/tests/src/com/android/server/telecom/tests/CallAudioModeTransitionTests.java b/tests/src/com/android/server/telecom/tests/CallAudioModeTransitionTests.java
index b8b4859..81339ed 100644
--- a/tests/src/com/android/server/telecom/tests/CallAudioModeTransitionTests.java
+++ b/tests/src/com/android/server/telecom/tests/CallAudioModeTransitionTests.java
@@ -16,11 +16,13 @@
package com.android.server.telecom.tests;
+import android.content.Context;
import android.media.AudioManager;
import android.test.suitebuilder.annotation.SmallTest;
import com.android.server.telecom.CallAudioManager;
import com.android.server.telecom.CallAudioModeStateMachine;
+import com.android.server.telecom.SystemStateHelper;
import org.junit.Before;
import org.junit.Test;
@@ -35,6 +37,7 @@
import static org.junit.Assert.assertEquals;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.ArgumentMatchers.nullable;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.reset;
import static org.mockito.Mockito.verify;
@@ -95,6 +98,7 @@
private static final int TEST_TIMEOUT = 1000;
+ @Mock private SystemStateHelper mSystemStateHelper;
@Mock private AudioManager mAudioManager;
@Mock private CallAudioManager mCallAudioManager;
private final ModeTestParameters mParams;
@@ -112,7 +116,8 @@
@Test
@SmallTest
public void modeTransitionTest() {
- CallAudioModeStateMachine sm = new CallAudioModeStateMachine(mAudioManager);
+ CallAudioModeStateMachine sm = new CallAudioModeStateMachine(mSystemStateHelper,
+ mAudioManager);
sm.setCallAudioManager(mCallAudioManager);
sm.sendMessage(mParams.initialAudioState);
waitForHandlerAction(sm.getHandler(), TEST_TIMEOUT);
@@ -163,11 +168,11 @@
switch (mParams.expectedCallWaitingInteraction) {
case NO_CHANGE:
- verify(mCallAudioManager, never()).startCallWaiting();
+ verify(mCallAudioManager, never()).startCallWaiting(nullable(String.class));
verify(mCallAudioManager, never()).stopCallWaiting();
break;
case ON:
- verify(mCallAudioManager).startCallWaiting();
+ verify(mCallAudioManager).startCallWaiting(nullable(String.class));
break;
case OFF:
verify(mCallAudioManager).stopCallWaiting();
diff --git a/tests/src/com/android/server/telecom/tests/CallAudioRouteStateMachineTest.java b/tests/src/com/android/server/telecom/tests/CallAudioRouteStateMachineTest.java
index 9c90d3e..7f289b8 100644
--- a/tests/src/com/android/server/telecom/tests/CallAudioRouteStateMachineTest.java
+++ b/tests/src/com/android/server/telecom/tests/CallAudioRouteStateMachineTest.java
@@ -538,12 +538,35 @@
initializationTestHelper(expectedState, CallAudioRouteStateMachine.EARPIECE_FORCE_DISABLED);
}
+ @SmallTest
+ @Test
+ public void testInitializationWithAvailableButInactiveBtDevice() {
+ CallAudioState expectedState = new CallAudioState(false, CallAudioState.ROUTE_EARPIECE,
+ CallAudioState.ROUTE_SPEAKER | CallAudioState.ROUTE_BLUETOOTH
+ | CallAudioState.ROUTE_EARPIECE);
+ when(mockBluetoothRouteManager.isBluetoothAvailable()).thenReturn(true);
+ when(mockBluetoothRouteManager.hasBtActiveDevice()).thenReturn(false);
+
+ CallAudioRouteStateMachine stateMachine = new CallAudioRouteStateMachine(
+ mContext,
+ mockCallsManager,
+ mockBluetoothRouteManager,
+ mockWiredHeadsetManager,
+ mockStatusBarNotifier,
+ mAudioServiceFactory,
+ CallAudioRouteStateMachine.EARPIECE_FORCE_ENABLED);
+ stateMachine.initialize();
+ assertEquals(expectedState, stateMachine.getCurrentCallAudioState());
+ }
+
private void initializationTestHelper(CallAudioState expectedState,
int earpieceControl) {
when(mockWiredHeadsetManager.isPluggedIn()).thenReturn(
(expectedState.getSupportedRouteMask() & CallAudioState.ROUTE_WIRED_HEADSET) != 0);
when(mockBluetoothRouteManager.isBluetoothAvailable()).thenReturn(
(expectedState.getSupportedRouteMask() & CallAudioState.ROUTE_BLUETOOTH) != 0);
+ when(mockBluetoothRouteManager.hasBtActiveDevice()).thenReturn(
+ (expectedState.getSupportedRouteMask() & CallAudioState.ROUTE_BLUETOOTH) != 0);
CallAudioRouteStateMachine stateMachine = new CallAudioRouteStateMachine(
mContext,
diff --git a/tests/src/com/android/server/telecom/tests/CallAudioRouteTransitionTests.java b/tests/src/com/android/server/telecom/tests/CallAudioRouteTransitionTests.java
index 19630b1..e63fe9b 100644
--- a/tests/src/com/android/server/telecom/tests/CallAudioRouteTransitionTests.java
+++ b/tests/src/com/android/server/telecom/tests/CallAudioRouteTransitionTests.java
@@ -16,6 +16,18 @@
package com.android.server.telecom.tests;
+import static org.junit.Assert.assertEquals;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.nullable;
+import static org.mockito.ArgumentMatchers.same;
+import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.timeout;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
import android.bluetooth.BluetoothDevice;
import android.content.Context;
import android.media.AudioManager;
@@ -26,7 +38,6 @@
import com.android.server.telecom.Call;
import com.android.server.telecom.CallAudioManager;
-import com.android.server.telecom.CallAudioModeStateMachine;
import com.android.server.telecom.CallAudioRouteStateMachine;
import com.android.server.telecom.CallsManager;
import com.android.server.telecom.ConnectionServiceWrapper;
@@ -41,6 +52,7 @@
import org.junit.runners.Parameterized;
import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
+import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
import java.util.ArrayList;
@@ -48,21 +60,6 @@
import java.util.Collection;
import java.util.Collections;
import java.util.List;
-import java.util.concurrent.CountDownLatch;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.nullable;
-import static org.mockito.ArgumentMatchers.same;
-import static org.mockito.Mockito.doAnswer;
-import static org.mockito.Mockito.doNothing;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.reset;
-import static org.mockito.Mockito.timeout;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
@RunWith(Parameterized.class)
public class CallAudioRouteTransitionTests extends TelecomTestCase {
@@ -191,16 +188,16 @@
private void setupMocksForParams(final CallAudioRouteStateMachine sm,
RoutingTestParameters params) {
// Set up bluetooth and speakerphone state
- when(mockBluetoothRouteManager.isBluetoothAudioConnectedOrPending()).thenReturn(
- params.initialRoute == CallAudioState.ROUTE_BLUETOOTH);
- when(mockBluetoothRouteManager.isBluetoothAvailable()).thenReturn(
- (params.availableRoutes & CallAudioState.ROUTE_BLUETOOTH) != 0
- || (params.expectedAvailableRoutes & CallAudioState.ROUTE_BLUETOOTH) != 0);
- when(mockBluetoothRouteManager.getConnectedDevices())
- .thenReturn(params.availableBluetoothDevices);
+ doReturn(params.initialRoute == CallAudioState.ROUTE_BLUETOOTH)
+ .when(mockBluetoothRouteManager).isBluetoothAudioConnectedOrPending();
+ doReturn((params.availableRoutes & CallAudioState.ROUTE_BLUETOOTH) != 0
+ || (params.expectedAvailableRoutes & CallAudioState.ROUTE_BLUETOOTH) != 0)
+ .when(mockBluetoothRouteManager).isBluetoothAvailable();
+ doReturn(params.availableBluetoothDevices)
+ .when(mockBluetoothRouteManager).getConnectedDevices();
if (params.initialBluetoothDevice != null) {
- when(mockBluetoothRouteManager.getBluetoothAudioConnectedDevice())
- .thenReturn(params.initialBluetoothDevice);
+ doReturn(params.initialBluetoothDevice)
+ .when(mockBluetoothRouteManager).getBluetoothAudioConnectedDevice();
}
@@ -264,9 +261,8 @@
}
waitForHandlerAction(stateMachine.getHandler(), TEST_TIMEOUT);
- // Reset mocks to discard stuff from initialization
- resetMocks();
- setupMocksForParams(stateMachine, mParams);
+ // Clear invocations on mocks to discard stuff from initialization
+ clearInvocations();
sendActionToStateMachine(stateMachine);
@@ -337,11 +333,11 @@
stateMachine.setCallAudioManager(mockCallAudioManager);
// Set up bluetooth and speakerphone state
- when(mockBluetoothRouteManager.isBluetoothAvailable()).thenReturn(
- (mParams.availableRoutes & CallAudioState.ROUTE_BLUETOOTH) != 0
- || (mParams.expectedAvailableRoutes & CallAudioState.ROUTE_BLUETOOTH) != 0);
- when(mockBluetoothRouteManager.getConnectedDevices())
- .thenReturn(mParams.availableBluetoothDevices);
+ doReturn((mParams.availableRoutes & CallAudioState.ROUTE_BLUETOOTH) != 0 ||
+ (mParams.expectedAvailableRoutes & CallAudioState.ROUTE_BLUETOOTH) != 0)
+ .when(mockBluetoothRouteManager).isBluetoothAvailable();
+ doReturn(mParams.availableBluetoothDevices)
+ .when(mockBluetoothRouteManager).getConnectedDevices();
when(mockAudioManager.isSpeakerphoneOn()).thenReturn(
mParams.initialRoute == CallAudioState.ROUTE_SPEAKER);
when(fakeCall.getSupportedAudioRoutes()).thenReturn(mParams.callSupportedRoutes);
@@ -511,7 +507,7 @@
CallAudioState.ROUTE_BLUETOOTH, // initialRoute
CallAudioState.ROUTE_EARPIECE | CallAudioState.ROUTE_BLUETOOTH, // availableRoutes
OPTIONAL, // speakerInteraction
- OFF, // bluetoothInteraction
+ NONE, // bluetoothInteraction
SPECIAL_DISCONNECT_BT_ACTION, // action
CallAudioState.ROUTE_EARPIECE, // expectedRoute
CallAudioState.ROUTE_EARPIECE, // expectedAvailableRoutes
@@ -523,7 +519,7 @@
CallAudioState.ROUTE_BLUETOOTH, // initialRoute
CallAudioState.ROUTE_WIRED_HEADSET | CallAudioState.ROUTE_BLUETOOTH, // availableRou
OPTIONAL, // speakerInteraction
- OFF, // bluetoothInteraction
+ NONE, // bluetoothInteraction
SPECIAL_DISCONNECT_BT_ACTION, // action
CallAudioState.ROUTE_WIRED_HEADSET, // expectedRoute
CallAudioState.ROUTE_WIRED_HEADSET, // expectedAvailableRoutes
@@ -715,7 +711,7 @@
CallAudioState.ROUTE_BLUETOOTH, // initialRoute
CallAudioState.ROUTE_BLUETOOTH, // availableRoutes
ON, // speakerInteraction
- OFF, // bluetoothInteraction
+ NONE, // bluetoothInteraction
SPECIAL_DISCONNECT_BT_ACTION, // action
CallAudioState.ROUTE_SPEAKER, // expectedRoute
CallAudioState.ROUTE_SPEAKER, // expectedAvailableRoutes
@@ -727,7 +723,7 @@
CallAudioState.ROUTE_BLUETOOTH, // initialRoute
CallAudioState.ROUTE_EARPIECE | CallAudioState.ROUTE_BLUETOOTH, // availableRoutes
OPTIONAL, // speakerInteraction
- OFF, // bluetoothInteraction
+ NONE, // bluetoothInteraction
CallAudioRouteStateMachine.BT_ACTIVE_DEVICE_GONE, // action
CallAudioState.ROUTE_EARPIECE, // expectedRoute
CallAudioState.ROUTE_EARPIECE | CallAudioState.ROUTE_BLUETOOTH, // expectedAvailabl
@@ -777,16 +773,8 @@
any(Call.class), any(CallAudioState.class));
}
- private void resetMocks() {
- reset(mockAudioManager, mockBluetoothRouteManager, mockCallsManager,
+ private void clearInvocations() {
+ Mockito.clearInvocations(mockAudioManager, mockBluetoothRouteManager, mockCallsManager,
mockConnectionServiceWrapper);
- fakeCall = mock(Call.class);
- when(mockCallsManager.getForegroundCall()).thenReturn(fakeCall);
- when(fakeCall.getConnectionService()).thenReturn(mockConnectionServiceWrapper);
- when(fakeCall.isAlive()).thenReturn(true);
- when(fakeCall.getSupportedAudioRoutes()).thenReturn(CallAudioState.ROUTE_ALL);
- when(mockCallsManager.getLock()).thenReturn(mLock);
- doNothing().when(mockConnectionServiceWrapper).onCallAudioStateChanged(any(Call.class),
- any(CallAudioState.class));
}
-}
+}
\ No newline at end of file
diff --git a/tests/src/com/android/server/telecom/tests/CallExtrasTest.java b/tests/src/com/android/server/telecom/tests/CallExtrasTest.java
index 44578c5..b97f819 100644
--- a/tests/src/com/android/server/telecom/tests/CallExtrasTest.java
+++ b/tests/src/com/android/server/telecom/tests/CallExtrasTest.java
@@ -16,6 +16,11 @@
package com.android.server.telecom.tests;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
import android.os.Bundle;
import android.telecom.Call;
import android.telecom.Conference;
@@ -25,6 +30,8 @@
import android.test.suitebuilder.annotation.LargeTest;
import android.test.suitebuilder.annotation.MediumTest;
+import androidx.test.filters.FlakyTest;
+
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -34,11 +41,6 @@
import java.util.ArrayList;
import java.util.Arrays;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
/**
* Tests the {@link Connection} and {@link Call} extras functionality.
*/
@@ -398,6 +400,7 @@
* @throws Exception
*/
@LargeTest
+ @FlakyTest(bugId = 117751305)
@Test
public void testConferenceExtraOperations() throws Exception {
ParcelableCall call = makeConferenceCall();
diff --git a/tests/src/com/android/server/telecom/tests/CallLogManagerTest.java b/tests/src/com/android/server/telecom/tests/CallLogManagerTest.java
index 690a38a..5be30fb 100644
--- a/tests/src/com/android/server/telecom/tests/CallLogManagerTest.java
+++ b/tests/src/com/android/server/telecom/tests/CallLogManagerTest.java
@@ -17,6 +17,21 @@
package com.android.server.telecom.tests;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyString;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.timeout;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
import android.content.ComponentName;
import android.content.ContentProvider;
import android.content.ContentValues;
@@ -34,7 +49,7 @@
import android.os.UserManager;
import android.provider.CallLog;
import android.provider.CallLog.Calls;
-import android.support.test.filters.FlakyTest;
+import android.telecom.Connection;
import android.telecom.DisconnectCause;
import android.telecom.PhoneAccount;
import android.telecom.PhoneAccountHandle;
@@ -44,6 +59,8 @@
import android.test.suitebuilder.annotation.MediumTest;
import android.test.suitebuilder.annotation.SmallTest;
+import androidx.test.filters.FlakyTest;
+
import com.android.server.telecom.Call;
import com.android.server.telecom.CallLogManager;
import com.android.server.telecom.CallState;
@@ -52,20 +69,6 @@
import com.android.server.telecom.PhoneAccountRegistrar;
import com.android.server.telecom.TelephonyUtil;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.anyString;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.doAnswer;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.timeout;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -538,6 +541,7 @@
}
@MediumTest
+ @FlakyTest(bugId = 117751305)
@Test
public void testLogCallDirectionIncomingWithMultiUserCapability() {
when(mMockPhoneAccountRegistrar.getPhoneAccountUnchecked(any(PhoneAccountHandle.class)))
@@ -779,6 +783,136 @@
assertEquals(TEST_ISO_2, resultIso2);
}
+ @SmallTest
+ @Test
+ public void testLogConferenceWithNoChildren() {
+ Call fakeCall = makeFakeCall(
+ DisconnectCause.LOCAL, // disconnectCauseCode
+ true, // isConference
+ true, // isIncoming
+ 1L, // creationTimeMillis
+ 1000L, // ageMillis
+ TEL_PHONEHANDLE, // callHandle
+ mDefaultAccountHandle, // phoneAccountHandle
+ NO_VIDEO_STATE, // callVideoState
+ POST_DIAL_STRING, // postDialDigits
+ VIA_NUMBER_STRING, // viaNumber
+ UserHandle.of(CURRENT_USER_ID)
+ );
+ when(fakeCall.hadChildren()).thenReturn(false);
+
+ assertTrue(mCallLogManager.shouldLogDisconnectedCall(fakeCall, CallState.DISCONNECTED,
+ false /* isCanceled */));
+ }
+
+ @SmallTest
+ @Test
+ public void testDoNotLogConferenceWithChildren() {
+ Call fakeCall = makeFakeCall(
+ DisconnectCause.LOCAL, // disconnectCauseCode
+ true, // isConference
+ true, // isIncoming
+ 1L, // creationTimeMillis
+ 1000L, // ageMillis
+ TEL_PHONEHANDLE, // callHandle
+ mDefaultAccountHandle, // phoneAccountHandle
+ NO_VIDEO_STATE, // callVideoState
+ POST_DIAL_STRING, // postDialDigits
+ VIA_NUMBER_STRING, // viaNumber
+ UserHandle.of(CURRENT_USER_ID)
+ );
+ when(fakeCall.hadChildren()).thenReturn(true);
+
+ assertFalse(mCallLogManager.shouldLogDisconnectedCall(fakeCall, CallState.DISCONNECTED,
+ false /* isCanceled */));
+ }
+
+ @SmallTest
+ @Test
+ public void testLogRemotelyHostedConferenceWithChildren() {
+ Call fakeCall = makeFakeCall(
+ DisconnectCause.LOCAL, // disconnectCauseCode
+ true, // isConference
+ true, // isIncoming
+ 1L, // creationTimeMillis
+ 1000L, // ageMillis
+ TEL_PHONEHANDLE, // callHandle
+ mDefaultAccountHandle, // phoneAccountHandle
+ NO_VIDEO_STATE, // callVideoState
+ POST_DIAL_STRING, // postDialDigits
+ VIA_NUMBER_STRING, // viaNumber
+ UserHandle.of(CURRENT_USER_ID)
+ );
+ when(fakeCall.hadChildren()).thenReturn(true);
+ when(fakeCall.hasProperty(eq(Connection.PROPERTY_REMOTELY_HOSTED))).thenReturn(true);
+
+ assertTrue(mCallLogManager.shouldLogDisconnectedCall(fakeCall, CallState.DISCONNECTED,
+ false /* isCanceled */));
+ }
+
+ @SmallTest
+ @Test
+ public void testLogRemotelyHostedConferenceWithNoChildren() {
+ Call fakeCall = makeFakeCall(
+ DisconnectCause.LOCAL, // disconnectCauseCode
+ true, // isConference
+ true, // isIncoming
+ 1L, // creationTimeMillis
+ 1000L, // ageMillis
+ TEL_PHONEHANDLE, // callHandle
+ mDefaultAccountHandle, // phoneAccountHandle
+ NO_VIDEO_STATE, // callVideoState
+ POST_DIAL_STRING, // postDialDigits
+ VIA_NUMBER_STRING, // viaNumber
+ UserHandle.of(CURRENT_USER_ID)
+ );
+ when(fakeCall.hadChildren()).thenReturn(false);
+ when(fakeCall.hasProperty(eq(Connection.PROPERTY_REMOTELY_HOSTED))).thenReturn(true);
+
+ assertTrue(mCallLogManager.shouldLogDisconnectedCall(fakeCall, CallState.DISCONNECTED,
+ false /* isCanceled */));
+ }
+
+ @SmallTest
+ @Test
+ public void testDoNotLogChildOfRemotelyHostedConference() {
+ Call fakeConfCall = makeFakeCall(
+ DisconnectCause.LOCAL, // disconnectCauseCode
+ true, // isConference
+ true, // isIncoming
+ 1L, // creationTimeMillis
+ 1000L, // ageMillis
+ TEL_PHONEHANDLE, // callHandle
+ mDefaultAccountHandle, // phoneAccountHandle
+ NO_VIDEO_STATE, // callVideoState
+ POST_DIAL_STRING, // postDialDigits
+ VIA_NUMBER_STRING, // viaNumber
+ UserHandle.of(CURRENT_USER_ID)
+ );
+ when(fakeConfCall.hadChildren()).thenReturn(true);
+ when(fakeConfCall.hasProperty(eq(Connection.PROPERTY_REMOTELY_HOSTED))).thenReturn(true);
+
+ Call fakeChild = makeFakeCall(
+ DisconnectCause.LOCAL, // disconnectCauseCode
+ false, // isConference
+ true, // isIncoming
+ 1L, // creationTimeMillis
+ 1000L, // ageMillis
+ TEL_PHONEHANDLE, // callHandle
+ mDefaultAccountHandle, // phoneAccountHandle
+ NO_VIDEO_STATE, // callVideoState
+ POST_DIAL_STRING, // postDialDigits
+ VIA_NUMBER_STRING, // viaNumber
+ UserHandle.of(CURRENT_USER_ID)
+ );
+ when(fakeChild.hadChildren()).thenReturn(false);
+ when(fakeChild.getParentCall()).thenReturn(fakeConfCall);
+ when(fakeChild.hasProperty(eq(Connection.PROPERTY_REMOTELY_HOSTED))).thenReturn(true);
+
+ assertFalse(mCallLogManager.shouldLogDisconnectedCall(fakeChild, CallState.DISCONNECTED,
+ false /* isCanceled */));
+ }
+
private ArgumentCaptor<CountryListener> verifyCountryIso(CountryDetector mockDetector,
String resultIso) {
ArgumentCaptor<CountryListener> captor = ArgumentCaptor.forClass(CountryListener.class);
@@ -860,6 +994,9 @@
when(fakeCall.getCallDataUsage()).thenReturn(callDataUsage);
when(fakeCall.isEmergencyCall()).thenReturn(
phoneAccountHandle.equals(EMERGENCY_ACCT_HANDLE));
+ when(fakeCall.getParentCall()).thenReturn(null);
+ when(fakeCall.hadChildren()).thenReturn(true);
+ when(fakeCall.hasProperty(eq(Connection.PROPERTY_REMOTELY_HOSTED))).thenReturn(false);
return fakeCall;
}
diff --git a/tests/src/com/android/server/telecom/tests/CallRedirectionProcessorTest.java b/tests/src/com/android/server/telecom/tests/CallRedirectionProcessorTest.java
new file mode 100644
index 0000000..169c56a
--- /dev/null
+++ b/tests/src/com/android/server/telecom/tests/CallRedirectionProcessorTest.java
@@ -0,0 +1,283 @@
+/*
+ * Copyright (C) 2018 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.content.ComponentName;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.ServiceConnection;
+import android.content.pm.PackageManager;
+import android.net.Uri;
+import android.os.IBinder;
+import android.os.UserHandle;
+import android.telecom.GatewayInfo;
+import android.telecom.PhoneAccountHandle;
+import android.telephony.TelephonyManager;
+import com.android.internal.telecom.ICallRedirectionService;
+import com.android.server.telecom.Call;
+import com.android.server.telecom.CallsManager;
+import com.android.server.telecom.PhoneAccountRegistrar;
+import com.android.server.telecom.SystemStateHelper;
+import com.android.server.telecom.TelecomSystem;
+import com.android.server.telecom.Timeouts;
+
+import com.android.server.telecom.callredirection.CallRedirectionProcessor;
+import com.android.server.telecom.callredirection.CallRedirectionProcessorHelper;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+import org.mockito.Mock;
+
+import org.junit.Before;
+
+import static org.mockito.ArgumentMatchers.nullable;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyInt;
+import static org.mockito.Matchers.anyString;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+@RunWith(JUnit4.class)
+public class CallRedirectionProcessorTest extends TelecomTestCase {
+ @Mock private Context mContext;
+ @Mock private CallsManager mCallsManager;
+ @Mock private PhoneAccountRegistrar mPhoneAccountRegistrar;
+ @Mock private PhoneAccountHandle mPhoneAccountHandle;
+ private TelecomSystem.SyncRoot mLock = new TelecomSystem.SyncRoot() { };
+
+ @Mock private Call mCall;
+
+ @Mock private PackageManager mPackageManager;
+ @Mock private TelephonyManager mTelephonyManager;
+ @Mock private IBinder mBinder;
+ @Mock private ICallRedirectionService mCallRedirectionService;
+
+ @Mock private SystemStateHelper mSystemStateHelper;
+ @Mock private CallRedirectionProcessorHelper mCallRedirectionProcessorHelper;
+
+ @Mock private Uri mHandle;
+ @Mock private GatewayInfo mGatewayInfo;
+ @Mock private UserHandle mUserHandle;
+ @Mock private ContentResolver mContentResolver;
+
+ @Mock private Timeouts.Adapter mTimeoutsAdapter;
+
+ private static final String USER_DEFINED_PKG_NAME = "user_defined_pkg";
+ private static final String USER_DEFINED_CLS_NAME = "user_defined_cls";
+ private static final String CARRIER_PKG_NAME = "carrier_pkg";
+ private static final String CARRIER_CLS_NAME = "carrier_cls";
+
+ private static final long HANDLER_TIMEOUT_DELAY = 5000;
+ private static final long USER_DEFINED_SHORT_TIMEOUT_MS = 1200;
+ private static final long CARRIER_SHORT_TIMEOUT_MS = 400;
+ private static final long CODE_EXECUTION_DELAY = 500;
+
+ // TODO integerate with a test user-defined service
+ private static final ComponentName USER_DEFINED_SERVICE_TEST_COMPONENT_NAME =
+ new ComponentName(USER_DEFINED_PKG_NAME, USER_DEFINED_CLS_NAME);
+ // TODO integerate with a test carrier service
+ private static final ComponentName CARRIER_SERVICE_TEST_COMPONENT_NAME =
+ new ComponentName(CARRIER_PKG_NAME, CARRIER_CLS_NAME);
+
+ private static final boolean SPEAKER_PHONE_ON = true;
+ private static final int VIDEO_STATE = 0;
+
+ private CallRedirectionProcessor mProcessor;
+
+ @Override
+ @Before
+ public void setUp() throws Exception {
+ super.setUp();
+ when(mCall.getTargetPhoneAccount()).thenReturn(mPhoneAccountHandle);
+ when(mCallsManager.getCurrentUserHandle()).thenReturn(UserHandle.CURRENT);
+ when(mContext.getPackageManager()).thenReturn(mPackageManager);
+ when(mContext.getContentResolver()).thenReturn(mContentResolver);
+ doReturn(mCallRedirectionService).when(mBinder).queryLocalInterface(anyString());
+ when(mCallsManager.getSystemStateHelper()).thenReturn(mSystemStateHelper);
+ when(mCallsManager.getTimeoutsAdapter()).thenReturn(mTimeoutsAdapter);
+ when(mTimeoutsAdapter.getUserDefinedCallRedirectionTimeoutMillis(mContentResolver))
+ .thenReturn(USER_DEFINED_SHORT_TIMEOUT_MS);
+ when(mTimeoutsAdapter.getCarrierCallRedirectionTimeoutMillis(mContentResolver))
+ .thenReturn(CARRIER_SHORT_TIMEOUT_MS);
+ when(mCallsManager.getLock()).thenReturn(mLock);
+ when(mCallsManager.getCurrentUserHandle()).thenReturn(mUserHandle);
+ when(mContext.getSystemService(Context.TELEPHONY_SERVICE)).thenReturn(mTelephonyManager);
+ when(mTelephonyManager.getNetworkCountryIso()).thenReturn("");
+ when(mContext.bindServiceAsUser(nullable(Intent.class), nullable(ServiceConnection.class),
+ anyInt(), eq(UserHandle.CURRENT))).thenReturn(true);
+ }
+
+ private void setIsInCarMode(boolean isInCarMode) {
+ when(mSystemStateHelper.isCarMode()).thenReturn(isInCarMode);
+ }
+
+ private void enableUserDefinedCallRedirectionService() {
+ when(mCallRedirectionProcessorHelper.getUserDefinedCallRedirectionService()).thenReturn(
+ USER_DEFINED_SERVICE_TEST_COMPONENT_NAME);
+ }
+
+ private void enableCarrierCallRedirectionService() {
+ when(mCallRedirectionProcessorHelper.getCarrierCallRedirectionService(
+ any(PhoneAccountHandle.class))).thenReturn(CARRIER_SERVICE_TEST_COMPONENT_NAME);
+ }
+
+ private void disableUserDefinedCallRedirectionService() {
+ when(mCallRedirectionProcessorHelper.getUserDefinedCallRedirectionService()).thenReturn(
+ null);
+ }
+
+ private void disableCarrierCallRedirectionService() {
+ when(mCallRedirectionProcessorHelper.getCarrierCallRedirectionService(any())).thenReturn(
+ null);
+ }
+
+ private void startProcessWithNoGateWayInfo() {
+ mProcessor = new CallRedirectionProcessor(mContext, mCallsManager, mCall, mHandle,
+ mPhoneAccountRegistrar, null, SPEAKER_PHONE_ON, VIDEO_STATE);
+ mProcessor.setCallRedirectionServiceHelper(mCallRedirectionProcessorHelper);
+ }
+
+ private void startProcessWithGateWayInfo() {
+ mProcessor = new CallRedirectionProcessor(mContext, mCallsManager, mCall, mHandle,
+ mPhoneAccountRegistrar, mGatewayInfo, SPEAKER_PHONE_ON, VIDEO_STATE);
+ mProcessor.setCallRedirectionServiceHelper(mCallRedirectionProcessorHelper);
+ }
+
+ @Test
+ public void testNoUserDefinedServiceNoCarrierSerivce() {
+ startProcessWithNoGateWayInfo();
+ disableUserDefinedCallRedirectionService();
+ disableCarrierCallRedirectionService();
+ mProcessor.performCallRedirection();
+ verify(mContext, times(0)).bindServiceAsUser(any(Intent.class),
+ any(ServiceConnection.class), anyInt(), any(UserHandle.class));
+ verify(mCallsManager, times(1)).onCallRedirectionComplete(eq(mCall), eq(mHandle),
+ eq(mPhoneAccountHandle), eq(null), eq(SPEAKER_PHONE_ON), eq(VIDEO_STATE),
+ eq(false), eq(CallRedirectionProcessor.UI_TYPE_NO_ACTION));
+ }
+
+ @Test
+ public void testCarrierServiceTimeoutNoUserDefinedService() throws Exception {
+ startProcessWithNoGateWayInfo();
+ // To make sure tests are not flaky, clean all the previous handler messages
+ waitForHandlerAction(mProcessor.getHandler(), HANDLER_TIMEOUT_DELAY);
+ disableUserDefinedCallRedirectionService();
+ enableCarrierCallRedirectionService();
+ mProcessor.performCallRedirection();
+ verify(mContext, times(1)).bindServiceAsUser(any(Intent.class),
+ any(ServiceConnection.class), anyInt(), any(UserHandle.class));
+ verify(mCallsManager, times(0)).onCallRedirectionComplete(eq(mCall), any(),
+ eq(mPhoneAccountHandle), eq(null), eq(SPEAKER_PHONE_ON), eq(VIDEO_STATE),
+ eq(false), eq(CallRedirectionProcessor.UI_TYPE_NO_ACTION));
+ waitForHandlerActionDelayed(mProcessor.getHandler(), HANDLER_TIMEOUT_DELAY,
+ CARRIER_SHORT_TIMEOUT_MS + CODE_EXECUTION_DELAY);
+ verify(mCallsManager, times(1)).onCallRedirectionComplete(eq(mCall), any(),
+ eq(mPhoneAccountHandle), eq(null), eq(SPEAKER_PHONE_ON), eq(VIDEO_STATE),
+ eq(false), eq(CallRedirectionProcessor.UI_TYPE_NO_ACTION));
+ }
+
+ @Test
+ public void testUserDefinedServiceTimeoutNoCarrierService() throws Exception {
+ startProcessWithNoGateWayInfo();
+ // To make sure tests are not flaky, clean all the previous handler messages
+ waitForHandlerAction(mProcessor.getHandler(), HANDLER_TIMEOUT_DELAY);
+ enableUserDefinedCallRedirectionService();
+ disableCarrierCallRedirectionService();
+ mProcessor.performCallRedirection();
+ verify(mContext, times(1)).bindServiceAsUser(any(Intent.class),
+ any(ServiceConnection.class), anyInt(), any(UserHandle.class));
+ verify(mCallsManager, times(0)).onCallRedirectionComplete(eq(mCall), any(),
+ eq(mPhoneAccountHandle), eq(null), eq(SPEAKER_PHONE_ON), eq(VIDEO_STATE),
+ eq(false), eq(CallRedirectionProcessor.UI_TYPE_USER_DEFINED_TIMEOUT));
+
+ // Test it is waiting for a User-defined timeout, not a Carrier timeout
+ Thread.sleep(CARRIER_SHORT_TIMEOUT_MS + CODE_EXECUTION_DELAY);
+ verify(mCallsManager, times(0)).onCallRedirectionComplete(eq(mCall), any(),
+ eq(mPhoneAccountHandle), eq(null), eq(SPEAKER_PHONE_ON), eq(VIDEO_STATE),
+ eq(false), eq(CallRedirectionProcessor.UI_TYPE_USER_DEFINED_TIMEOUT));
+
+ // Wait for the rest of user-defined timeout time.
+ waitForHandlerActionDelayed(mProcessor.getHandler(), HANDLER_TIMEOUT_DELAY,
+ USER_DEFINED_SHORT_TIMEOUT_MS - CARRIER_SHORT_TIMEOUT_MS + CODE_EXECUTION_DELAY);
+ verify(mCallsManager, times(1)).onCallRedirectionComplete(eq(mCall), any(),
+ eq(mPhoneAccountHandle), eq(null), eq(SPEAKER_PHONE_ON), eq(VIDEO_STATE),
+ eq(true), eq(CallRedirectionProcessor.UI_TYPE_USER_DEFINED_TIMEOUT));
+ }
+
+ @Test
+ public void testUserDefinedServiceTimeoutAndCarrierServiceTimeout() throws Exception {
+ startProcessWithNoGateWayInfo();
+ // To make sure tests are not flaky, clean all the previous handler messages
+ waitForHandlerAction(mProcessor.getHandler(), HANDLER_TIMEOUT_DELAY);
+ enableUserDefinedCallRedirectionService();
+ enableCarrierCallRedirectionService();
+ mProcessor.performCallRedirection();
+
+ verify(mContext, times(1)).bindServiceAsUser(any(Intent.class),
+ any(ServiceConnection.class), anyInt(), any(UserHandle.class));
+ verify(mCallsManager, times(0)).onCallRedirectionComplete(eq(mCall), any(),
+ eq(mPhoneAccountHandle), eq(null), eq(SPEAKER_PHONE_ON), eq(VIDEO_STATE),
+ eq(false), eq(CallRedirectionProcessor.UI_TYPE_USER_DEFINED_TIMEOUT));
+
+ // Test it is waiting for a User-defined timeout, not a Carrier timeout
+ Thread.sleep(CARRIER_SHORT_TIMEOUT_MS + CODE_EXECUTION_DELAY);
+ verify(mContext, times(1)).bindServiceAsUser(any(Intent.class),
+ any(ServiceConnection.class), anyInt(), any(UserHandle.class));
+ verify(mCallsManager, times(0)).onCallRedirectionComplete(eq(mCall), any(),
+ eq(mPhoneAccountHandle), eq(null), eq(SPEAKER_PHONE_ON), eq(VIDEO_STATE),
+ eq(false), eq(CallRedirectionProcessor.UI_TYPE_USER_DEFINED_TIMEOUT));
+
+ // Wait for the rest of user-defined timeout time.
+ waitForHandlerActionDelayed(mProcessor.getHandler(), HANDLER_TIMEOUT_DELAY,
+ USER_DEFINED_SHORT_TIMEOUT_MS - CARRIER_SHORT_TIMEOUT_MS + CODE_EXECUTION_DELAY);
+ verify(mCallsManager, times(1)).onCallRedirectionComplete(eq(mCall), any(),
+ eq(mPhoneAccountHandle), eq(null), eq(SPEAKER_PHONE_ON), eq(VIDEO_STATE),
+ eq(true), eq(CallRedirectionProcessor.UI_TYPE_USER_DEFINED_TIMEOUT));
+
+ // Wait for another carrier timeout time, but should not expect any carrier service request
+ // is triggered.
+ Thread.sleep(CARRIER_SHORT_TIMEOUT_MS + CODE_EXECUTION_DELAY);
+ verify(mContext, times(1)).bindServiceAsUser(any(Intent.class),
+ any(ServiceConnection.class), anyInt(), any(UserHandle.class));
+ verify(mCallsManager, times(1)).onCallRedirectionComplete(eq(mCall), any(),
+ eq(mPhoneAccountHandle), eq(null), eq(SPEAKER_PHONE_ON), eq(VIDEO_STATE),
+ eq(true), eq(CallRedirectionProcessor.UI_TYPE_USER_DEFINED_TIMEOUT));
+ }
+
+ @Test
+ public void testProcessGatewayCall() {
+ startProcessWithGateWayInfo();
+ enableUserDefinedCallRedirectionService();
+ enableCarrierCallRedirectionService();
+ mProcessor.performCallRedirection();
+ verify(mContext, times(1)).bindServiceAsUser(any(Intent.class),
+ any(ServiceConnection.class), anyInt(), any(UserHandle.class));
+ verify(mCallsManager, times(0)).onCallRedirectionComplete(eq(mCall), any(),
+ eq(mPhoneAccountHandle), eq(null), eq(SPEAKER_PHONE_ON), eq(VIDEO_STATE),
+ eq(false), eq(CallRedirectionProcessor.UI_TYPE_NO_ACTION));
+ waitForHandlerActionDelayed(mProcessor.getHandler(), HANDLER_TIMEOUT_DELAY,
+ CARRIER_SHORT_TIMEOUT_MS + CODE_EXECUTION_DELAY);
+ verify(mCallsManager, times(1)).onCallRedirectionComplete(eq(mCall), eq(mHandle),
+ eq(mPhoneAccountHandle), eq(mGatewayInfo), eq(SPEAKER_PHONE_ON), eq(VIDEO_STATE),
+ eq(false), eq(CallRedirectionProcessor.UI_TYPE_NO_ACTION));
+ }
+}
diff --git a/tests/src/com/android/server/telecom/tests/CallScreeningServiceControllerTest.java b/tests/src/com/android/server/telecom/tests/CallScreeningServiceControllerTest.java
new file mode 100644
index 0000000..1a01a95
--- /dev/null
+++ b/tests/src/com/android/server/telecom/tests/CallScreeningServiceControllerTest.java
@@ -0,0 +1,373 @@
+/*
+ * Copyright (C) 2018 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.Manifest;
+import android.content.ComponentName;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.ServiceConnection;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.content.pm.ServiceInfo;
+import android.net.Uri;
+import android.os.PersistableBundle;
+import android.os.UserHandle;
+import android.provider.CallLog;
+import android.telecom.TelecomManager;
+import android.telephony.CarrierConfigManager;
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.internal.telephony.CallerInfo;
+import com.android.server.telecom.Call;
+import com.android.server.telecom.CallScreeningServiceHelper;
+import com.android.server.telecom.CallerInfoLookupHelper;
+import com.android.server.telecom.CallsManager;
+import com.android.server.telecom.ParcelableCallUtils;
+import com.android.server.telecom.PhoneAccountRegistrar;
+import com.android.server.telecom.RoleManagerAdapter;
+import com.android.server.telecom.TelecomServiceImpl;
+import com.android.server.telecom.TelecomSystem;
+import com.android.server.telecom.callfiltering.CallFilterResultCallback;
+import com.android.server.telecom.callfiltering.CallFilteringResult;
+import com.android.server.telecom.callfiltering.CallScreeningServiceController;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+
+import java.util.Collections;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyBoolean;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.ArgumentMatchers.nullable;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+@RunWith(JUnit4.class)
+public class CallScreeningServiceControllerTest extends TelecomTestCase {
+
+ @Mock Context mContext;
+ @Mock Call mCall;
+ @Mock private CallFilterResultCallback mCallback;
+ @Mock CallsManager mCallsManager;
+ @Mock RoleManagerAdapter mRoleManagerAdapter;
+ @Mock CarrierConfigManager mCarrierConfigManager;
+ @Mock private TelecomManager mTelecomManager;
+ @Mock PackageManager mPackageManager;
+ @Mock ParcelableCallUtils.Converter mParcelableCallUtilsConverter;
+ @Mock PhoneAccountRegistrar mPhoneAccountRegistrar;
+ @Mock private CallerInfoLookupHelper mCallerInfoLookupHelper;
+
+ CallScreeningServiceHelper.AppLabelProxy mAppLabelProxy =
+ new CallScreeningServiceHelper.AppLabelProxy() {
+ @Override
+ public CharSequence getAppLabel(String packageName) {
+ return APP_NAME;
+ }
+ };
+
+ private ResolveInfo mResolveInfo;
+ private TelecomServiceImpl.SettingsSecureAdapter mSettingsSecureAdapter =
+ spy(new CallScreeningServiceFilterTest.SettingsSecureAdapterFake());
+ private TelecomSystem.SyncRoot mLock = new TelecomSystem.SyncRoot() { };
+
+ private static final String CALL_ID = "u89prgt9ps78y5";
+ private static final Uri TEST_HANDLE = Uri.parse("tel:1235551234");
+ private static final String DEFAULT_DIALER_PACKAGE = "com.android.dialer";
+ private static final String PKG_NAME = "com.android.services.telecom.tests";
+ private static final String CLS_NAME = "CallScreeningService";
+ private static final String APP_NAME = "Screeny McScreenface";
+ private static final ComponentName CARRIER_DEFINED_CALL_SCREENING = new ComponentName(
+ "com.android.carrier", "com.android.carrier.callscreeningserviceimpl");
+ private static final ComponentName DEFAULT_DIALER_CALL_SCREENING = new ComponentName(
+ "com.android.dialer", "com.android.dialer.callscreeningserviceimpl");
+ private static final ComponentName USER_CHOSEN_CALL_SCREENING = new ComponentName(
+ "com.android.userchosen", "com.android.userchosen.callscreeningserviceimpl");
+
+ private static final CallFilteringResult PASS_RESULT = new CallFilteringResult(
+ true, // shouldAllowCall
+ false, // shouldReject
+ true, // shouldAddToCallLog
+ true // shouldShowNotification
+ );
+
+ public static class SettingsSecureAdapterFake implements
+ TelecomServiceImpl.SettingsSecureAdapter {
+ @Override
+ public void putStringForUser(ContentResolver resolver, String name, String value,
+ int userHandle) {
+
+ }
+
+ @Override
+ public String getStringForUser(ContentResolver resolver, String name, int userHandle) {
+ return USER_CHOSEN_CALL_SCREENING.flattenToString();
+ }
+ }
+
+ @Override
+ @Before
+ public void setUp() throws Exception {
+ super.setUp();
+ when(mRoleManagerAdapter.getCallCompanionApps()).thenReturn(Collections.emptyList());
+ when(mRoleManagerAdapter.getDefaultCallScreeningApp()).thenReturn(null);
+ when(mRoleManagerAdapter.getCarModeDialerApp()).thenReturn(null);
+ when(mCallsManager.getRoleManagerAdapter()).thenReturn(mRoleManagerAdapter);
+ when(mCallsManager.getCurrentUserHandle()).thenReturn(UserHandle.CURRENT);
+ when(mContext.getPackageManager()).thenReturn(mPackageManager);
+ when(mCall.getId()).thenReturn(CALL_ID);
+
+ setCarrierDefinedCallScreeningApplication();
+ when(TelecomManager.from(mContext)).thenReturn(mTelecomManager);
+ when(mTelecomManager.getDefaultDialerPackage()).thenReturn(DEFAULT_DIALER_PACKAGE);
+
+ mResolveInfo = new ResolveInfo() {{
+ serviceInfo = new ServiceInfo();
+ serviceInfo.packageName = PKG_NAME;
+ serviceInfo.name = CLS_NAME;
+ serviceInfo.permission = Manifest.permission.BIND_SCREENING_SERVICE;
+ }};
+
+ when(mPackageManager.queryIntentServicesAsUser(nullable(Intent.class), anyInt(), anyInt()))
+ .thenReturn(Collections.singletonList(mResolveInfo));
+ when(mParcelableCallUtilsConverter.toParcelableCall(
+ eq(mCall), anyBoolean(), eq(mPhoneAccountRegistrar))).thenReturn(null);
+ when(mContext.bindServiceAsUser(nullable(Intent.class), nullable(ServiceConnection.class),
+ anyInt(), eq(UserHandle.CURRENT))).thenReturn(true);
+ when(mCall.getHandle()).thenReturn(TEST_HANDLE);
+ }
+
+ @SmallTest
+ @Test
+ public void testAllAllowCall() {
+ when(mRoleManagerAdapter.getDefaultCallScreeningApp()).thenReturn(
+ USER_CHOSEN_CALL_SCREENING.getPackageName());
+ CallScreeningServiceController controller = new CallScreeningServiceController(mContext,
+ mCallsManager, mPhoneAccountRegistrar,
+ mParcelableCallUtilsConverter, mLock,
+ mSettingsSecureAdapter, mCallerInfoLookupHelper, mAppLabelProxy);
+
+ controller.startFilterLookup(mCall, mCallback);
+
+ controller.onCallScreeningFilterComplete(mCall, PASS_RESULT,
+ CARRIER_DEFINED_CALL_SCREENING.getPackageName());
+
+ CallerInfoLookupHelper.OnQueryCompleteListener queryListener = verifyLookupStart();
+ CallerInfo callerInfo = new CallerInfo();
+ callerInfo.contactExists = false;
+ queryListener.onCallerInfoQueryComplete(TEST_HANDLE, callerInfo);
+
+ controller.onCallScreeningFilterComplete(mCall, PASS_RESULT,
+ DEFAULT_DIALER_CALL_SCREENING.getPackageName());
+ controller.onCallScreeningFilterComplete(mCall, PASS_RESULT, USER_CHOSEN_CALL_SCREENING
+ .getPackageName());
+
+ verify(mContext, times(3)).bindServiceAsUser(any(Intent.class), any(ServiceConnection
+ .class),
+ eq(Context.BIND_AUTO_CREATE | Context.BIND_FOREGROUND_SERVICE),
+ eq(UserHandle.CURRENT));
+
+ verify(mCallback).onCallFilteringComplete(eq(mCall), eq(PASS_RESULT));
+ }
+
+ @SmallTest
+ @Test
+ public void testCarrierAllowCallAndContactExists() {
+ CallScreeningServiceController controller = new CallScreeningServiceController(mContext,
+ mCallsManager,
+ mPhoneAccountRegistrar, mParcelableCallUtilsConverter, mLock,
+ mSettingsSecureAdapter, mCallerInfoLookupHelper, mAppLabelProxy);
+
+ controller.startFilterLookup(mCall, mCallback);
+
+ controller.onCallScreeningFilterComplete(mCall, PASS_RESULT,
+ CARRIER_DEFINED_CALL_SCREENING.getPackageName());
+
+ CallerInfoLookupHelper.OnQueryCompleteListener queryListener = verifyLookupStart();
+ CallerInfo callerInfo = new CallerInfo();
+ callerInfo.contactExists = true;
+ queryListener.onCallerInfoQueryComplete(TEST_HANDLE, callerInfo);
+
+ verify(mContext, times(1)).bindServiceAsUser(any(Intent.class), any(ServiceConnection
+ .class),
+ eq(Context.BIND_AUTO_CREATE | Context.BIND_FOREGROUND_SERVICE),
+ eq(UserHandle.CURRENT));
+
+ verify(mCallback).onCallFilteringComplete(eq(mCall), eq(PASS_RESULT));
+ }
+
+ @SmallTest
+ @Test
+ public void testCarrierCallScreeningRejectCall() {
+ CallScreeningServiceController controller = new CallScreeningServiceController(mContext,
+ mCallsManager,
+ mPhoneAccountRegistrar, mParcelableCallUtilsConverter, mLock,
+ mSettingsSecureAdapter, mCallerInfoLookupHelper, mAppLabelProxy);
+
+ controller.startFilterLookup(mCall, mCallback);
+
+ controller.onCallScreeningFilterComplete(mCall, new CallFilteringResult(
+ false, // shouldAllowCall
+ true, // shouldReject
+ false, // shouldAddToCallLog
+ true, // shouldShowNotification
+ CallLog.Calls.BLOCK_REASON_CALL_SCREENING_SERVICE,
+ APP_NAME,
+ CARRIER_DEFINED_CALL_SCREENING.flattenToString()
+ ), CARRIER_DEFINED_CALL_SCREENING.getPackageName());
+
+ verify(mContext, times(1)).bindServiceAsUser(any(Intent.class),
+ any(ServiceConnection.class),
+ eq(Context.BIND_AUTO_CREATE | Context.BIND_FOREGROUND_SERVICE),
+ eq(UserHandle.CURRENT));
+
+ verify(mCallback).onCallFilteringComplete(eq(mCall), eq(new CallFilteringResult(
+ false, // shouldAllowCall
+ true, // shouldReject
+ false, // shouldAddToCallLog
+ true, // shouldShowNotification
+ CallLog.Calls.BLOCK_REASON_CALL_SCREENING_SERVICE, //callBlockReason
+ APP_NAME, //callScreeningAppName
+ CARRIER_DEFINED_CALL_SCREENING.flattenToString() //callScreeningComponentName
+ )));
+ }
+
+ @SmallTest
+ @Test
+ public void testDefaultDialerRejectCall() {
+ when(mRoleManagerAdapter.getDefaultCallScreeningApp()).thenReturn(
+ USER_CHOSEN_CALL_SCREENING.getPackageName());
+ CallScreeningServiceController controller = new CallScreeningServiceController(mContext,
+ mCallsManager,
+ mPhoneAccountRegistrar, mParcelableCallUtilsConverter, mLock,
+ mSettingsSecureAdapter, mCallerInfoLookupHelper, mAppLabelProxy);
+
+ controller.startFilterLookup(mCall, mCallback);
+
+ controller.onCallScreeningFilterComplete(mCall, PASS_RESULT,
+ CARRIER_DEFINED_CALL_SCREENING.getPackageName());
+
+ CallerInfoLookupHelper.OnQueryCompleteListener queryListener = verifyLookupStart();
+ CallerInfo callerInfo = new CallerInfo();
+ callerInfo.contactExists = false;
+ queryListener.onCallerInfoQueryComplete(TEST_HANDLE, callerInfo);
+
+ controller.onCallScreeningFilterComplete(mCall, new CallFilteringResult(
+ false, // shouldAllowCall
+ true, // shouldReject
+ false, // shouldAddToCallLog
+ true, // shouldShowNotification
+ CallLog.Calls.BLOCK_REASON_CALL_SCREENING_SERVICE,
+ APP_NAME,
+ DEFAULT_DIALER_CALL_SCREENING.flattenToString()
+ ), DEFAULT_DIALER_CALL_SCREENING.getPackageName());
+
+ verify(mContext, times(3)).bindServiceAsUser(any(Intent.class),
+ any(ServiceConnection.class),
+ eq(Context.BIND_AUTO_CREATE | Context.BIND_FOREGROUND_SERVICE),
+ eq(UserHandle.CURRENT));
+
+ verify(mCallback).onCallFilteringComplete(eq(mCall), eq(new CallFilteringResult(
+ false, // shouldAllowCall
+ true, // shouldReject
+ true, // shouldAddToCallLog (we don't allow services to skip call log)
+ true, // shouldShowNotification
+ CallLog.Calls.BLOCK_REASON_CALL_SCREENING_SERVICE, //callBlockReason
+ APP_NAME, //callScreeningAppName
+ DEFAULT_DIALER_CALL_SCREENING.flattenToString() //callScreeningComponentName
+ )));
+ }
+
+ @SmallTest
+ @Test
+ public void testUserChosenRejectCall() {
+ when(mRoleManagerAdapter.getDefaultCallScreeningApp()).thenReturn(
+ USER_CHOSEN_CALL_SCREENING.getPackageName());
+ CallScreeningServiceController controller = new CallScreeningServiceController(mContext,
+ mCallsManager,
+ mPhoneAccountRegistrar, mParcelableCallUtilsConverter, mLock,
+ mSettingsSecureAdapter, mCallerInfoLookupHelper, mAppLabelProxy);
+
+ controller.startFilterLookup(mCall, mCallback);
+
+ controller.onCallScreeningFilterComplete(mCall, PASS_RESULT,
+ CARRIER_DEFINED_CALL_SCREENING.getPackageName());
+
+ CallerInfoLookupHelper.OnQueryCompleteListener queryListener = verifyLookupStart();
+ CallerInfo callerInfo = new CallerInfo();
+ callerInfo.contactExists = false;
+ queryListener.onCallerInfoQueryComplete(TEST_HANDLE, callerInfo);
+
+ controller.onCallScreeningFilterComplete(mCall, PASS_RESULT,
+ DEFAULT_DIALER_CALL_SCREENING.getPackageName());
+ controller.onCallScreeningFilterComplete(mCall, new CallFilteringResult(
+ false, // shouldAllowCall
+ true, // shouldReject
+ false, // shouldAddToCallLog
+ true, // shouldShowNotification
+ CallLog.Calls.BLOCK_REASON_CALL_SCREENING_SERVICE,
+ APP_NAME,
+ USER_CHOSEN_CALL_SCREENING.flattenToString()
+ ), USER_CHOSEN_CALL_SCREENING.getPackageName());
+
+ verify(mContext, times(3)).bindServiceAsUser(any(Intent.class),
+ any(ServiceConnection.class),
+ eq(Context.BIND_AUTO_CREATE | Context.BIND_FOREGROUND_SERVICE),
+ eq(UserHandle.CURRENT));
+
+ verify(mCallback).onCallFilteringComplete(eq(mCall), eq(new CallFilteringResult(
+ false, // shouldAllowCall
+ true, // shouldReject
+ true, // shouldAddToCallLog (we don't allow services to skip call log)
+ true, // shouldShowNotification
+ CallLog.Calls.BLOCK_REASON_CALL_SCREENING_SERVICE, //callBlockReason
+ APP_NAME, //callScreeningAppName
+ USER_CHOSEN_CALL_SCREENING.flattenToString() //callScreeningComponentName
+ )));
+ }
+
+ private CallerInfoLookupHelper.OnQueryCompleteListener verifyLookupStart() {
+ return verifyLookupStart(TEST_HANDLE);
+ }
+
+ private CallerInfoLookupHelper.OnQueryCompleteListener verifyLookupStart(Uri handle) {
+
+ ArgumentCaptor<CallerInfoLookupHelper.OnQueryCompleteListener> captor =
+ ArgumentCaptor.forClass(CallerInfoLookupHelper.OnQueryCompleteListener.class);
+ verify(mCallerInfoLookupHelper).startLookup(eq(handle), captor.capture());
+ return captor.getValue();
+ }
+
+ private void setCarrierDefinedCallScreeningApplication() {
+ String carrierDefined = CARRIER_DEFINED_CALL_SCREENING.flattenToString();
+ PersistableBundle bundle = new PersistableBundle();
+ bundle.putString(CarrierConfigManager.KEY_CARRIER_CALL_SCREENING_APP_STRING,
+ carrierDefined);
+ when(mContext.getSystemService(Context.CARRIER_CONFIG_SERVICE))
+ .thenReturn(mCarrierConfigManager);
+ when(mCarrierConfigManager.getConfig()).thenReturn(bundle);
+ }
+}
diff --git a/tests/src/com/android/server/telecom/tests/CallScreeningServiceFilterTest.java b/tests/src/com/android/server/telecom/tests/CallScreeningServiceFilterTest.java
index a319fad..5b47fe9 100644
--- a/tests/src/com/android/server/telecom/tests/CallScreeningServiceFilterTest.java
+++ b/tests/src/com/android/server/telecom/tests/CallScreeningServiceFilterTest.java
@@ -18,6 +18,7 @@
import android.Manifest;
import android.content.ComponentName;
+import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
@@ -25,20 +26,23 @@
import android.content.pm.ResolveInfo;
import android.content.pm.ServiceInfo;
import android.os.IBinder;
+import android.os.PersistableBundle;
import android.os.RemoteException;
import android.os.UserHandle;
+import android.provider.CallLog;
import android.telecom.CallScreeningService;
import android.telecom.ParcelableCall;
+import android.telecom.TelecomManager;
+import android.telephony.CarrierConfigManager;
import android.test.suitebuilder.annotation.SmallTest;
import com.android.internal.telecom.ICallScreeningAdapter;
import com.android.internal.telecom.ICallScreeningService;
import com.android.server.telecom.Call;
import com.android.server.telecom.CallsManager;
-import com.android.server.telecom.DefaultDialerCache;
import com.android.server.telecom.ParcelableCallUtils;
import com.android.server.telecom.PhoneAccountRegistrar;
-import com.android.server.telecom.callfiltering.CallFilterResultCallback;
+import com.android.server.telecom.TelecomServiceImpl;
import com.android.server.telecom.callfiltering.CallFilteringResult;
import com.android.server.telecom.callfiltering.CallScreeningServiceFilter;
import com.android.server.telecom.TelecomSystem;
@@ -60,6 +64,7 @@
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.doThrow;
+import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -68,22 +73,35 @@
@Mock Context mContext;
@Mock CallsManager mCallsManager;
@Mock PhoneAccountRegistrar mPhoneAccountRegistrar;
- @Mock DefaultDialerCache mDefaultDialerCache;
@Mock ParcelableCallUtils.Converter mParcelableCallUtilsConverter;
private TelecomSystem.SyncRoot mLock = new TelecomSystem.SyncRoot() { };
@Mock Call mCall;
- @Mock CallFilterResultCallback mCallback;
+ @Mock CallScreeningServiceFilter.CallScreeningFilterResultCallback mCallback;
@Mock PackageManager mPackageManager;
@Mock IBinder mBinder;
@Mock ICallScreeningService mCallScreeningService;
+ @Mock CarrierConfigManager mCarrierConfigManager;
+ @Mock private TelecomManager mTelecomManager;
+ private TelecomServiceImpl.SettingsSecureAdapter mSettingsSecureAdapter =
+ spy(new SettingsSecureAdapterFake());
private static final String PKG_NAME = "com.android.services.telecom.tests";
+ private static final String APP_NAME = "TeleTestApp";
private static final String CLS_NAME = "CallScreeningService";
private static final ComponentName COMPONENT_NAME = new ComponentName(PKG_NAME, CLS_NAME);
private static final String CALL_ID = "u89prgt9ps78y5";
-
+ private static final String DEFAULT_DIALER_PACKAGE = "com.android.dialer";
+ private static final ComponentName CARRIER_DEFINED_CALL_SCREENING = new ComponentName(
+ "com.android.carrier", "com.android.carrier.callscreeningserviceimpl");
+ private static final String CARRIER_DEFINED_CALL_SCREENING_APP_NAME = "GMob";
+ private static final ComponentName DEFAULT_DIALER_CALL_SCREENING = new ComponentName(
+ "com.android.dialer", "com.android.dialer.callscreeningserviceimpl");
+ private static final String DEFAULT_DIALER_APP_NAME = "Dialer";
+ private static final ComponentName USER_CHOSEN_CALL_SCREENING = new ComponentName(
+ "com.android.userchosen", "com.android.userchosen.callscreeningserviceimpl");
+ private static final String USER_CHOSEN_CALL_SCREENING_APP_NAME = "UserChosen";
private ResolveInfo mResolveInfo;
private static final CallFilteringResult PASS_RESULT = new CallFilteringResult(
@@ -93,8 +111,30 @@
true // shouldShowNotification
);
+ private static final CallFilteringResult PASS_RESULT_WITH_SILENCE = new CallFilteringResult(
+ true, // shouldAllowCall
+ false, // shouldReject
+ true, // shouldSilence
+ true, // shouldAddToCallLog
+ true // shouldShowNotification
+ );
+
private CallScreeningServiceFilter mFilter;
+ public static class SettingsSecureAdapterFake implements
+ TelecomServiceImpl.SettingsSecureAdapter {
+ @Override
+ public void putStringForUser(ContentResolver resolver, String name, String value,
+ int userHandle) {
+
+ }
+
+ @Override
+ public String getStringForUser(ContentResolver resolver, String name, int userHandle) {
+ return USER_CHOSEN_CALL_SCREENING.flattenToString();
+ }
+ }
+
@Override
@Before
public void setUp() throws Exception {
@@ -112,10 +152,8 @@
}};
mFilter = new CallScreeningServiceFilter(mContext, mCallsManager, mPhoneAccountRegistrar,
- mDefaultDialerCache, mParcelableCallUtilsConverter, mLock);
+ mParcelableCallUtilsConverter, mLock, mSettingsSecureAdapter);
- when(mDefaultDialerCache.getDefaultDialerApplication(eq(UserHandle.USER_CURRENT)))
- .thenReturn(PKG_NAME);
when(mPackageManager.queryIntentServicesAsUser(nullable(Intent.class), anyInt(), anyInt()))
.thenReturn(Collections.singletonList(mResolveInfo));
when(mParcelableCallUtilsConverter.toParcelableCall(
@@ -126,11 +164,10 @@
@SmallTest
@Test
- public void testNoDefaultDialer() {
- when(mDefaultDialerCache.getDefaultDialerApplication(eq(UserHandle.USER_CURRENT)))
- .thenReturn(null);
- mFilter.startFilterLookup(mCall, mCallback);
- verify(mCallback).onCallFilteringComplete(eq(mCall), eq(PASS_RESULT));
+ public void testNoPackageName() {
+ mFilter.startCallScreeningFilter(mCall, mCallback, null, null,
+ CallScreeningServiceFilter.CALL_SCREENING_FILTER_TYPE_USER_SELECTED);
+ verify(mCallback).onCallScreeningFilterComplete(eq(mCall), eq(PASS_RESULT), eq(null));
}
@SmallTest
@@ -138,24 +175,27 @@
public void testNoResolveEntries() {
when(mPackageManager.queryIntentServicesAsUser(nullable(Intent.class), anyInt(), anyInt()))
.thenReturn(Collections.emptyList());
- mFilter.startFilterLookup(mCall, mCallback);
- verify(mCallback).onCallFilteringComplete(eq(mCall), eq(PASS_RESULT));
+ mFilter.startCallScreeningFilter(mCall, mCallback, PKG_NAME, APP_NAME,
+ CallScreeningServiceFilter.CALL_SCREENING_FILTER_TYPE_USER_SELECTED);
+ verify(mCallback).onCallScreeningFilterComplete(eq(mCall), eq(PASS_RESULT), eq(PKG_NAME));
}
@SmallTest
@Test
public void testBadResolveEntry() {
mResolveInfo.serviceInfo = null;
- mFilter.startFilterLookup(mCall, mCallback);
- verify(mCallback).onCallFilteringComplete(eq(mCall), eq(PASS_RESULT));
+ mFilter.startCallScreeningFilter(mCall, mCallback, PKG_NAME, APP_NAME,
+ CallScreeningServiceFilter.CALL_SCREENING_FILTER_TYPE_USER_SELECTED);
+ verify(mCallback).onCallScreeningFilterComplete(eq(mCall), eq(PASS_RESULT), eq(PKG_NAME));
}
@SmallTest
@Test
public void testPermissionlessFilterService() {
mResolveInfo.serviceInfo.permission = null;
- mFilter.startFilterLookup(mCall, mCallback);
- verify(mCallback).onCallFilteringComplete(eq(mCall), eq(PASS_RESULT));
+ mFilter.startCallScreeningFilter(mCall, mCallback, PKG_NAME, APP_NAME,
+ CallScreeningServiceFilter.CALL_SCREENING_FILTER_TYPE_USER_SELECTED);
+ verify(mCallback).onCallScreeningFilterComplete(eq(mCall), eq(PASS_RESULT), eq(PKG_NAME));
}
@SmallTest
@@ -163,8 +203,9 @@
public void testContextFailToBind() {
when(mContext.bindServiceAsUser(nullable(Intent.class), nullable(ServiceConnection.class),
anyInt(), eq(UserHandle.CURRENT))).thenReturn(false);
- mFilter.startFilterLookup(mCall, mCallback);
- verify(mCallback).onCallFilteringComplete(eq(mCall), eq(PASS_RESULT));
+ mFilter.startCallScreeningFilter(mCall, mCallback, PKG_NAME, APP_NAME,
+ CallScreeningServiceFilter.CALL_SCREENING_FILTER_TYPE_USER_SELECTED);
+ verify(mCallback).onCallScreeningFilterComplete(eq(mCall), eq(PASS_RESULT), eq(PKG_NAME));
}
@SmallTest
@@ -172,41 +213,135 @@
public void testExceptionInScreeningService() throws Exception {
doThrow(new RemoteException()).when(mCallScreeningService).screenCall(
nullable(ICallScreeningAdapter.class), nullable(ParcelableCall.class));
- mFilter.startFilterLookup(mCall, mCallback);
+ mFilter.startCallScreeningFilter(mCall, mCallback, PKG_NAME, APP_NAME,
+ CallScreeningServiceFilter.CALL_SCREENING_FILTER_TYPE_USER_SELECTED);
ServiceConnection serviceConnection = verifyBindingIntent();
serviceConnection.onServiceConnected(COMPONENT_NAME, mBinder);
- verify(mCallback).onCallFilteringComplete(eq(mCall), eq(PASS_RESULT));
+ verify(mCallback).onCallScreeningFilterComplete(eq(mCall), eq(PASS_RESULT), eq(PKG_NAME));
}
@SmallTest
@Test
public void testAllowCall() throws Exception {
- mFilter.startFilterLookup(mCall, mCallback);
+ mFilter.startCallScreeningFilter(mCall, mCallback, PKG_NAME, APP_NAME,
+ CallScreeningServiceFilter.CALL_SCREENING_FILTER_TYPE_USER_SELECTED);
ServiceConnection serviceConnection = verifyBindingIntent();
serviceConnection.onServiceConnected(COMPONENT_NAME, mBinder);
ICallScreeningAdapter csAdapter = getCallScreeningAdapter();
csAdapter.allowCall(CALL_ID);
- verify(mCallback).onCallFilteringComplete(eq(mCall), eq(PASS_RESULT));
+ verify(mCallback).onCallScreeningFilterComplete(eq(mCall), eq(PASS_RESULT), eq(PKG_NAME));
}
@SmallTest
@Test
- public void testDisallowCall() throws Exception {
- mFilter.startFilterLookup(mCall, mCallback);
+ public void testSilenceCall() throws Exception {
+ mFilter.startCallScreeningFilter(mCall, mCallback, PKG_NAME, APP_NAME,
+ CallScreeningServiceFilter.CALL_SCREENING_FILTER_TYPE_USER_SELECTED);
+ ServiceConnection serviceConnection = verifyBindingIntent();
+ serviceConnection.onServiceConnected(COMPONENT_NAME, mBinder);
+ ICallScreeningAdapter csAdapter = getCallScreeningAdapter();
+ csAdapter.silenceCall(CALL_ID);
+ verify(mCallback).onCallScreeningFilterComplete(eq(mCall), eq(PASS_RESULT_WITH_SILENCE),
+ eq(PKG_NAME));
+ }
+
+ @SmallTest
+ @Test
+ public void testDisallowCallForCarrierDefined() throws Exception {
+ mResolveInfo.serviceInfo.packageName = CARRIER_DEFINED_CALL_SCREENING.getPackageName();
+ mResolveInfo.serviceInfo.name = CARRIER_DEFINED_CALL_SCREENING.getClassName();
+ setCarrierDefinedCallScreeningApplication();
+ when(TelecomManager.from(mContext)).thenReturn(mTelecomManager);
+ when(mTelecomManager.getDefaultDialerPackage()).thenReturn(DEFAULT_DIALER_PACKAGE);
+
+ mFilter.startCallScreeningFilter(mCall, mCallback,
+ CARRIER_DEFINED_CALL_SCREENING.getPackageName(),
+ CARRIER_DEFINED_CALL_SCREENING_APP_NAME,
+ CallScreeningServiceFilter.CALL_SCREENING_FILTER_TYPE_CARRIER);
ServiceConnection serviceConnection = verifyBindingIntent();
serviceConnection.onServiceConnected(COMPONENT_NAME, mBinder);
ICallScreeningAdapter csAdapter = getCallScreeningAdapter();
csAdapter.disallowCall(CALL_ID,
true, // shouldReject
false, // shouldAddToCallLog
- true // shouldShowNotification
+ true, // shouldShowNotification
+ CARRIER_DEFINED_CALL_SCREENING
);
- verify(mCallback).onCallFilteringComplete(eq(mCall), eq(new CallFilteringResult(
+ verify(mCallback).onCallScreeningFilterComplete(eq(mCall), eq(new CallFilteringResult(
false, // shouldAllowCall
true, // shouldReject
false, // shouldAddToCallLog
- true // shouldShowNotification
- )));
+ true, // shouldShowNotification
+ CallLog.Calls.BLOCK_REASON_CALL_SCREENING_SERVICE, //callBlockReason
+ CARRIER_DEFINED_CALL_SCREENING_APP_NAME, //callScreeningAppName
+ CARRIER_DEFINED_CALL_SCREENING.flattenToString() //callScreeningComponentName
+ )), eq(CARRIER_DEFINED_CALL_SCREENING.getPackageName()));
+ }
+
+ @SmallTest
+ @Test
+ public void testDisallowCallForDefaultDialer() throws Exception {
+ mResolveInfo.serviceInfo.packageName = DEFAULT_DIALER_CALL_SCREENING.getPackageName();
+ mResolveInfo.serviceInfo.name = DEFAULT_DIALER_CALL_SCREENING.getClassName();
+ setCarrierDefinedCallScreeningApplication();
+ when(TelecomManager.from(mContext)).thenReturn(mTelecomManager);
+ when(mTelecomManager.getDefaultDialerPackage()).thenReturn(DEFAULT_DIALER_PACKAGE);
+
+ mFilter.startCallScreeningFilter(mCall, mCallback,
+ DEFAULT_DIALER_CALL_SCREENING.getPackageName(),
+ DEFAULT_DIALER_APP_NAME,
+ CallScreeningServiceFilter.CALL_SCREENING_FILTER_TYPE_DEFAULT_DIALER);
+ ServiceConnection serviceConnection = verifyBindingIntent();
+ serviceConnection.onServiceConnected(COMPONENT_NAME, mBinder);
+ ICallScreeningAdapter csAdapter = getCallScreeningAdapter();
+ csAdapter.disallowCall(CALL_ID,
+ true, // shouldReject
+ false, // shouldAddToCallLog
+ true, // shouldShowNotification
+ DEFAULT_DIALER_CALL_SCREENING
+ );
+ verify(mCallback).onCallScreeningFilterComplete(eq(mCall), eq(new CallFilteringResult(
+ false, // shouldAllowCall
+ true, // shouldReject
+ true, // shouldAddToCallLog
+ true, // shouldShowNotification
+ CallLog.Calls.BLOCK_REASON_CALL_SCREENING_SERVICE, //callBlockReason
+ DEFAULT_DIALER_APP_NAME, //callScreeningAppName
+ DEFAULT_DIALER_CALL_SCREENING.flattenToString() //callScreeningComponentName
+ )), eq(DEFAULT_DIALER_CALL_SCREENING.getPackageName()));
+ }
+
+ @SmallTest
+ @Test
+ public void testDisallowCallForUserChosen() throws Exception {
+ mResolveInfo.serviceInfo.packageName = USER_CHOSEN_CALL_SCREENING.getPackageName();
+ mResolveInfo.serviceInfo.name = USER_CHOSEN_CALL_SCREENING.getClassName();
+ setCarrierDefinedCallScreeningApplication();
+ when(TelecomManager.from(mContext)).thenReturn(mTelecomManager);
+ when(mTelecomManager.getDefaultDialerPackage()).thenReturn(DEFAULT_DIALER_PACKAGE);
+
+ mFilter.startCallScreeningFilter(mCall, mCallback,
+ USER_CHOSEN_CALL_SCREENING.getPackageName(),
+ USER_CHOSEN_CALL_SCREENING_APP_NAME,
+ CallScreeningServiceFilter.CALL_SCREENING_FILTER_TYPE_USER_SELECTED);
+ ServiceConnection serviceConnection = verifyBindingIntent();
+ serviceConnection.onServiceConnected(COMPONENT_NAME, mBinder);
+ ICallScreeningAdapter csAdapter = getCallScreeningAdapter();
+ csAdapter.disallowCall(CALL_ID,
+ true, // shouldReject
+ false, // shouldAddToCallLog
+ true, // shouldShowNotification
+ USER_CHOSEN_CALL_SCREENING
+ );
+ verify(mCallback).onCallScreeningFilterComplete(eq(mCall), eq(new CallFilteringResult(
+ false, // shouldAllowCall
+ true, // shouldReject
+ true, // shouldAddToCallLog
+ true, // shouldShowNotification
+ CallLog.Calls.BLOCK_REASON_CALL_SCREENING_SERVICE, //callBlockReason
+ USER_CHOSEN_CALL_SCREENING_APP_NAME, //callScreeningAppName
+ USER_CHOSEN_CALL_SCREENING.flattenToString() //callScreeningComponentName
+ )), eq(USER_CHOSEN_CALL_SCREENING.getPackageName()));
}
private ServiceConnection verifyBindingIntent() {
@@ -219,8 +354,9 @@
Intent capturedIntent = intentCaptor.getValue();
assertEquals(CallScreeningService.SERVICE_INTERFACE, capturedIntent.getAction());
- assertEquals(PKG_NAME, capturedIntent.getPackage());
- assertEquals(COMPONENT_NAME, capturedIntent.getComponent());
+ assertEquals(mResolveInfo.serviceInfo.packageName, capturedIntent.getPackage());
+ assertEquals(new ComponentName(mResolveInfo.serviceInfo.packageName, mResolveInfo
+ .serviceInfo.name), capturedIntent.getComponent());
return serviceCaptor.getValue();
}
@@ -231,4 +367,14 @@
verify(mCallScreeningService).screenCall(captor.capture(), nullable(ParcelableCall.class));
return captor.getValue();
}
+
+ private void setCarrierDefinedCallScreeningApplication() {
+ String carrierDefined = CARRIER_DEFINED_CALL_SCREENING.flattenToString();
+ PersistableBundle bundle = new PersistableBundle();
+ bundle.putString(CarrierConfigManager.KEY_CARRIER_CALL_SCREENING_APP_STRING,
+ carrierDefined);
+ when(mContext.getSystemService(Context.CARRIER_CONFIG_SERVICE))
+ .thenReturn(mCarrierConfigManager);
+ when(mCarrierConfigManager.getConfig()).thenReturn(bundle);
+ }
}
diff --git a/tests/src/com/android/server/telecom/tests/CallerInfoLookupHelperTest.java b/tests/src/com/android/server/telecom/tests/CallerInfoLookupHelperTest.java
index 74d07d8..e26d7e5 100644
--- a/tests/src/com/android/server/telecom/tests/CallerInfoLookupHelperTest.java
+++ b/tests/src/com/android/server/telecom/tests/CallerInfoLookupHelperTest.java
@@ -16,14 +16,26 @@
package com.android.server.telecom.tests;
+import static org.junit.Assert.assertEquals;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyInt;
+import static org.mockito.Matchers.anyString;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Matchers.isNull;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.net.Uri;
-import android.support.test.InstrumentationRegistry;
-import android.test.suitebuilder.annotation.SmallTest;
import android.telecom.Logging.Session;
+import android.test.suitebuilder.annotation.SmallTest;
+
+import androidx.test.InstrumentationRegistry;
import com.android.internal.telephony.CallerInfo;
import com.android.internal.telephony.CallerInfoAsyncQuery;
@@ -43,17 +55,6 @@
import java.io.InputStream;
import java.util.concurrent.CountDownLatch;
-import static org.junit.Assert.assertEquals;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.anyInt;
-import static org.mockito.Matchers.anyString;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Matchers.isNull;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
@RunWith(JUnit4.class)
public class CallerInfoLookupHelperTest extends TelecomTestCase {
@Mock Context mContext;
diff --git a/tests/src/com/android/server/telecom/tests/CallsManagerTest.java b/tests/src/com/android/server/telecom/tests/CallsManagerTest.java
index ed2f6b1..df19ce8 100644
--- a/tests/src/com/android/server/telecom/tests/CallsManagerTest.java
+++ b/tests/src/com/android/server/telecom/tests/CallsManagerTest.java
@@ -16,13 +16,18 @@
package com.android.server.telecom.tests;
+import static junit.framework.TestCase.fail;
+
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.anyChar;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.ArgumentMatchers.nullable;
+import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.never;
@@ -31,26 +36,32 @@
import android.content.ComponentName;
import android.net.Uri;
+import android.os.Bundle;
+import android.os.Process;
import android.os.SystemClock;
import android.telecom.Connection;
+import android.telecom.Log;
import android.telecom.PhoneAccount;
import android.telecom.PhoneAccountHandle;
+import android.telecom.TelecomManager;
import android.telecom.VideoProfile;
import android.telephony.TelephonyManager;
import android.test.suitebuilder.annotation.MediumTest;
-
import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.internal.telephony.CallerInfo;
import com.android.server.telecom.AsyncRingtonePlayer;
import com.android.server.telecom.Call;
import com.android.server.telecom.CallAudioManager;
+import com.android.server.telecom.CallAudioModeStateMachine;
+import com.android.server.telecom.CallAudioRouteStateMachine;
import com.android.server.telecom.CallState;
-import com.android.server.telecom.CallerInfoAsyncQueryFactory;
+import com.android.server.telecom.CallerInfoLookupHelper;
import com.android.server.telecom.CallsManager;
import com.android.server.telecom.ClockProxy;
import com.android.server.telecom.ConnectionServiceFocusManager;
import com.android.server.telecom.ConnectionServiceFocusManager.ConnectionServiceFocusManagerFactory;
import com.android.server.telecom.ConnectionServiceWrapper;
-import com.android.server.telecom.ContactsAsyncHelper;
import com.android.server.telecom.DefaultDialerCache;
import com.android.server.telecom.EmergencyCallHelper;
import com.android.server.telecom.HeadsetMediaButton;
@@ -65,7 +76,8 @@
import com.android.server.telecom.PhoneNumberUtilsAdapter;
import com.android.server.telecom.ProximitySensorManager;
import com.android.server.telecom.ProximitySensorManagerFactory;
-import com.android.server.telecom.SystemStateProvider;
+import com.android.server.telecom.RoleManagerAdapter;
+import com.android.server.telecom.SystemStateHelper;
import com.android.server.telecom.TelecomSystem;
import com.android.server.telecom.Timeouts;
import com.android.server.telecom.WiredHeadsetManager;
@@ -81,20 +93,29 @@
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.stubbing.Answer;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.TimeUnit;
@RunWith(JUnit4.class)
public class CallsManagerTest extends TelecomTestCase {
+ private static final int TEST_TIMEOUT = 5000; // milliseconds
private static final PhoneAccountHandle SIM_1_HANDLE = new PhoneAccountHandle(
ComponentName.unflattenFromString("com.foo/.Blah"), "Sim1");
private static final PhoneAccountHandle SIM_2_HANDLE = new PhoneAccountHandle(
ComponentName.unflattenFromString("com.foo/.Blah"), "Sim2");
+ private static final PhoneAccountHandle VOIP_1_HANDLE = new PhoneAccountHandle(
+ ComponentName.unflattenFromString("com.voip/.Stuff"), "Voip1");
private static final PhoneAccountHandle SELF_MANAGED_HANDLE = new PhoneAccountHandle(
- ComponentName.unflattenFromString("com.foo/.Self"), "Self");
+ ComponentName.unflattenFromString("com.baz/.Self"), "Self");
private static final PhoneAccount SIM_1_ACCOUNT = new PhoneAccount.Builder(SIM_1_HANDLE, "Sim1")
.setCapabilities(PhoneAccount.CAPABILITY_SIM_SUBSCRIPTION
| PhoneAccount.CAPABILITY_CALL_PROVIDER)
@@ -112,10 +133,17 @@
.setIsEnabled(true)
.build();
private static final Uri TEST_ADDRESS = Uri.parse("tel:555-1212");
+ private static final Uri TEST_ADDRESS2 = Uri.parse("tel:555-1213");
+ private static final Uri TEST_ADDRESS3 = Uri.parse("tel:555-1214");
+ private static final Map<Uri, PhoneAccountHandle> CONTACT_PREFERRED_ACCOUNT =
+ new HashMap<Uri, PhoneAccountHandle>() {{
+ put(TEST_ADDRESS2, SIM_1_HANDLE);
+ put(TEST_ADDRESS3, SIM_2_HANDLE);
+ }};
+ private static int sCallId = 1;
private final TelecomSystem.SyncRoot mLock = new TelecomSystem.SyncRoot() { };
- @Mock private ContactsAsyncHelper mContactsAsyncHelper;
- @Mock private CallerInfoAsyncQueryFactory mCallerInfoAsyncQueryFactory;
+ @Mock private CallerInfoLookupHelper mCallerInfoLookupHelper;
@Mock private MissedCallNotifier mMissedCallNotifier;
@Mock private PhoneAccountRegistrar mPhoneAccountRegistrar;
@Mock private HeadsetMediaButton mHeadsetMediaButton;
@@ -128,7 +156,7 @@
@Mock private CallAudioManager.AudioServiceFactory mAudioServiceFactory;
@Mock private BluetoothRouteManager mBluetoothRouteManager;
@Mock private WiredHeadsetManager mWiredHeadsetManager;
- @Mock private SystemStateProvider mSystemStateProvider;
+ @Mock private SystemStateHelper mSystemStateHelper;
@Mock private DefaultDialerCache mDefaultDialerCache;
@Mock private Timeouts.Adapter mTimeoutsAdapter;
@Mock private AsyncRingtonePlayer mAsyncRingtonePlayer;
@@ -139,7 +167,12 @@
@Mock private InCallControllerFactory mInCallControllerFactory;
@Mock private InCallController mInCallController;
@Mock private ConnectionServiceFocusManager mConnectionSvrFocusMgr;
+ @Mock private CallAudioRouteStateMachine mCallAudioRouteStateMachine;
+ @Mock private CallAudioRouteStateMachine.Factory mCallAudioRouteStateMachineFactory;
+ @Mock private CallAudioModeStateMachine mCallAudioModeStateMachine;
+ @Mock private CallAudioModeStateMachine.Factory mCallAudioModeStateMachineFactory;
@Mock private BluetoothStateReceiver mBluetoothStateReceiver;
+ @Mock private RoleManagerAdapter mRoleManagerAdapter;
private CallsManager mCallsManager;
@@ -156,14 +189,18 @@
mProximitySensorManager);
when(mInCallControllerFactory.create(any(), any(), any(), any(), any(), any(),
any())).thenReturn(mInCallController);
+ when(mCallAudioRouteStateMachineFactory.create(any(), any(), any(), any(), any(), any(),
+ anyInt())).thenReturn(mCallAudioRouteStateMachine);
+ when(mCallAudioModeStateMachineFactory.create(any(), any()))
+ .thenReturn(mCallAudioModeStateMachine);
when(mClockProxy.currentTimeMillis()).thenReturn(System.currentTimeMillis());
when(mClockProxy.elapsedRealtime()).thenReturn(SystemClock.elapsedRealtime());
- when(mConnSvrFocusManagerFactory.create(any(), any())).thenReturn(mConnectionSvrFocusMgr);
+ when(mConnSvrFocusManagerFactory.create(any())).thenReturn(mConnectionSvrFocusMgr);
+ doNothing().when(mRoleManagerAdapter).setCurrentUserHandle(any());
mCallsManager = new CallsManager(
mComponentContextFixture.getTestDouble().getApplicationContext(),
mLock,
- mContactsAsyncHelper,
- mCallerInfoAsyncQueryFactory,
+ mCallerInfoLookupHelper,
mMissedCallNotifier,
mPhoneAccountRegistrar,
mHeadsetMediaButtonFactory,
@@ -173,7 +210,7 @@
mAudioServiceFactory,
mBluetoothRouteManager,
mWiredHeadsetManager,
- mSystemStateProvider,
+ mSystemStateHelper,
mDefaultDialerCache,
mTimeoutsAdapter,
mAsyncRingtonePlayer,
@@ -182,7 +219,10 @@
mToneGeneratorFactory,
mClockProxy,
mBluetoothStateReceiver,
- mInCallControllerFactory);
+ mCallAudioRouteStateMachineFactory,
+ mCallAudioModeStateMachineFactory,
+ mInCallControllerFactory,
+ mRoleManagerAdapter);
when(mPhoneAccountRegistrar.getPhoneAccount(
eq(SELF_MANAGED_HANDLE), any())).thenReturn(SELF_MANAGED_ACCOUNT);
@@ -215,8 +255,6 @@
mCallsManager,
mLock,
null /* ConnectionServiceRepository */,
- mContactsAsyncHelper,
- mCallerInfoAsyncQueryFactory,
mPhoneNumberUtilsAdapter,
TEST_ADDRESS,
null /* GatewayInfo */,
@@ -249,6 +287,21 @@
assertEquals(2, phoneAccountHandles.size());
}
+ private void setupCallerInfoLookupHelper() {
+ doAnswer(invocation -> {
+ Uri handle = invocation.getArgument(0);
+ CallerInfoLookupHelper.OnQueryCompleteListener listener = invocation.getArgument(1);
+ CallerInfo info = new CallerInfo();
+ if (CONTACT_PREFERRED_ACCOUNT.get(handle) != null) {
+ PhoneAccountHandle pah = CONTACT_PREFERRED_ACCOUNT.get(handle);
+ info.preferredPhoneAccountComponent = pah.getComponentName();
+ info.preferredPhoneAccountId = pah.getId();
+ }
+ listener.onCallerInfoQueryComplete(handle, info);
+ return null;
+ }).when(mCallerInfoLookupHelper).startLookup(any(Uri.class),
+ any(CallerInfoLookupHelper.OnQueryCompleteListener.class));
+ }
/**
* Tests finding the outgoing call phone account where the call is being placed on a
* self-managed ConnectionService.
@@ -257,8 +310,10 @@
@MediumTest
@Test
public void testFindOutgoingCallPhoneAccountSelfManaged() throws Exception {
+ setupCallerInfoLookupHelper();
List<PhoneAccountHandle> accounts = mCallsManager.findOutgoingCallPhoneAccount(
- SELF_MANAGED_HANDLE, TEST_ADDRESS, false /* isVideo */, null /* userHandle */);
+ SELF_MANAGED_HANDLE, TEST_ADDRESS, false /* isVideo */, null /* userHandle */)
+ .get();
assertEquals(1, accounts.size());
assertEquals(SELF_MANAGED_HANDLE, accounts.get(0));
}
@@ -271,6 +326,7 @@
@MediumTest
@Test
public void testFindOutgoingCallAccountDefault() throws Exception {
+ setupCallerInfoLookupHelper();
when(mPhoneAccountRegistrar.getOutgoingPhoneAccountForScheme(any(), any())).thenReturn(
SIM_1_HANDLE);
when(mPhoneAccountRegistrar.getCallCapablePhoneAccounts(any(), anyBoolean(),
@@ -278,7 +334,8 @@
new ArrayList<>(Arrays.asList(SIM_1_HANDLE, SIM_2_HANDLE)));
List<PhoneAccountHandle> accounts = mCallsManager.findOutgoingCallPhoneAccount(
- null /* phoneAcct */, TEST_ADDRESS, false /* isVideo */, null /* userHandle */);
+ null /* phoneAcct */, TEST_ADDRESS, false /* isVideo */, null /* userHandle */)
+ .get();
// Should have found just the default.
assertEquals(1, accounts.size());
@@ -293,6 +350,7 @@
@MediumTest
@Test
public void testFindOutgoingCallAccountNoDefault() throws Exception {
+ setupCallerInfoLookupHelper();
when(mPhoneAccountRegistrar.getOutgoingPhoneAccountForScheme(any(), any())).thenReturn(
null);
when(mPhoneAccountRegistrar.getCallCapablePhoneAccounts(any(), anyBoolean(),
@@ -300,7 +358,8 @@
new ArrayList<>(Arrays.asList(SIM_1_HANDLE, SIM_2_HANDLE)));
List<PhoneAccountHandle> accounts = mCallsManager.findOutgoingCallPhoneAccount(
- null /* phoneAcct */, TEST_ADDRESS, false /* isVideo */, null /* userHandle */);
+ null /* phoneAcct */, TEST_ADDRESS, false /* isVideo */, null /* userHandle */)
+ .get();
assertEquals(2, accounts.size());
assertTrue(accounts.contains(SIM_1_HANDLE));
@@ -315,6 +374,7 @@
@MediumTest
@Test
public void testFindOutgoingCallAccountVideo() throws Exception {
+ setupCallerInfoLookupHelper();
when(mPhoneAccountRegistrar.getOutgoingPhoneAccountForScheme(any(), any())).thenReturn(
null);
when(mPhoneAccountRegistrar.getCallCapablePhoneAccounts(any(), anyBoolean(),
@@ -322,7 +382,8 @@
new ArrayList<>(Arrays.asList(SIM_2_HANDLE)));
List<PhoneAccountHandle> accounts = mCallsManager.findOutgoingCallPhoneAccount(
- null /* phoneAcct */, TEST_ADDRESS, true /* isVideo */, null /* userHandle */);
+ null /* phoneAcct */, TEST_ADDRESS, true /* isVideo */, null /* userHandle */)
+ .get();
assertEquals(1, accounts.size());
assertTrue(accounts.contains(SIM_2_HANDLE));
@@ -336,6 +397,7 @@
@MediumTest
@Test
public void testFindOutgoingCallAccountVideoNotAvailable() throws Exception {
+ setupCallerInfoLookupHelper();
when(mPhoneAccountRegistrar.getOutgoingPhoneAccountForScheme(any(), any())).thenReturn(
null);
// When querying for video capable accounts, return nothing.
@@ -347,7 +409,8 @@
any(), eq(0 /* none specified */))).thenReturn(
new ArrayList<>(Arrays.asList(SIM_1_HANDLE)));
List<PhoneAccountHandle> accounts = mCallsManager.findOutgoingCallPhoneAccount(
- null /* phoneAcct */, TEST_ADDRESS, true /* isVideo */, null /* userHandle */);
+ null /* phoneAcct */, TEST_ADDRESS, true /* isVideo */, null /* userHandle */)
+ .get();
// Should have found one.
assertEquals(1, accounts.size());
@@ -361,6 +424,7 @@
@MediumTest
@Test
public void testUseSpecifiedAccount() throws Exception {
+ setupCallerInfoLookupHelper();
when(mPhoneAccountRegistrar.getOutgoingPhoneAccountForScheme(any(), any())).thenReturn(
null);
when(mPhoneAccountRegistrar.getCallCapablePhoneAccounts(any(), anyBoolean(),
@@ -368,13 +432,34 @@
new ArrayList<>(Arrays.asList(SIM_1_HANDLE, SIM_2_HANDLE)));
List<PhoneAccountHandle> accounts = mCallsManager.findOutgoingCallPhoneAccount(
- SIM_2_HANDLE, TEST_ADDRESS, false /* isVideo */, null /* userHandle */);
+ SIM_2_HANDLE, TEST_ADDRESS, false /* isVideo */, null /* userHandle */).get();
assertEquals(1, accounts.size());
assertTrue(accounts.contains(SIM_2_HANDLE));
}
/**
+ * Tests that we will use the provided target phone account if it exists.
+ * @throws Exception
+ */
+ @MediumTest
+ @Test
+ public void testUseContactSpecificAcct() throws Exception {
+ setupCallerInfoLookupHelper();
+ when(mPhoneAccountRegistrar.getOutgoingPhoneAccountForScheme(any(), any())).thenReturn(
+ null);
+ when(mPhoneAccountRegistrar.getCallCapablePhoneAccounts(any(), anyBoolean(),
+ any(), anyInt())).thenReturn(
+ new ArrayList<>(Arrays.asList(SIM_1_HANDLE, SIM_2_HANDLE)));
+
+ List<PhoneAccountHandle> accounts = mCallsManager.findOutgoingCallPhoneAccount(
+ null, TEST_ADDRESS2, false /* isVideo */, Process.myUserHandle()).get();
+
+ assertEquals(1, accounts.size());
+ assertTrue(accounts.contains(SIM_1_HANDLE));
+ }
+
+ /**
* Verifies that an active call will result in playing a DTMF tone when requested.
* @throws Exception
*/
@@ -439,17 +524,14 @@
@SmallTest
@Test
public void testUnholdCallWhenOngoingCallCanNotBeHeldAndFromDifferentConnectionService() {
- ConnectionServiceWrapper connSvr1 = Mockito.mock(ConnectionServiceWrapper.class);
- ConnectionServiceWrapper connSvr2 = Mockito.mock(ConnectionServiceWrapper.class);
-
// GIVEN a CallsManager with ongoing call, and this call can not be held
- Call ongoingCall = addSpyCallWithConnectionService(connSvr1);
+ Call ongoingCall = addSpyCall(SIM_1_HANDLE);
doReturn(false).when(ongoingCall).can(Connection.CAPABILITY_HOLD);
doReturn(false).when(ongoingCall).can(Connection.CAPABILITY_SUPPORT_HOLD);
when(mConnectionSvrFocusMgr.getCurrentFocusCall()).thenReturn(ongoingCall);
// and a held call which has different ConnectionService
- Call heldCall = addSpyCallWithConnectionService(connSvr2);
+ Call heldCall = addSpyCall(VOIP_1_HANDLE);
// WHEN unhold the held call
mCallsManager.unholdCall(heldCall);
@@ -464,17 +546,39 @@
@SmallTest
@Test
- public void testUnholdCallWhenOngoingCallCanNotBeHeldAndHasSameConnectionService() {
- ConnectionServiceWrapper connSvr = Mockito.mock(ConnectionServiceWrapper.class);
+ public void testUnholdCallWhenOngoingEmergCallCanNotBeHeldAndFromDifferentConnectionService() {
+ // GIVEN a CallsManager with ongoing call, and this call can not be held, but it also an
+ // emergency call.
+ Call ongoingCall = addSpyCall(SIM_1_HANDLE);
+ doReturn(false).when(ongoingCall).can(Connection.CAPABILITY_HOLD);
+ doReturn(false).when(ongoingCall).can(Connection.CAPABILITY_SUPPORT_HOLD);
+ doReturn(true).when(ongoingCall).isEmergencyCall();
+ when(mConnectionSvrFocusMgr.getCurrentFocusCall()).thenReturn(ongoingCall);
+ // and a held call which has different ConnectionService
+ Call heldCall = addSpyCall(VOIP_1_HANDLE);
+
+ // WHEN unhold the held call
+ mCallsManager.unholdCall(heldCall);
+
+ // THEN the ongoing call will not be disconnected (because its an emergency call)
+ verify(ongoingCall, never()).disconnect(any());
+
+ // and held call is not un-held
+ verify(heldCall, never()).unhold(any());
+ }
+
+ @SmallTest
+ @Test
+ public void testUnholdCallWhenOngoingCallCanNotBeHeldAndHasSameConnectionService() {
// GIVEN a CallsManager with ongoing call, and this call can not be held
- Call ongoingCall = addSpyCallWithConnectionService(connSvr);
+ Call ongoingCall = addSpyCall(SIM_1_HANDLE);
doReturn(false).when(ongoingCall).can(Connection.CAPABILITY_HOLD);
doReturn(true).when(ongoingCall).can(Connection.CAPABILITY_SUPPORT_HOLD);
when(mConnectionSvrFocusMgr.getCurrentFocusCall()).thenReturn(ongoingCall);
- // and a held call which has different ConnectionService
- Call heldCall = addSpyCallWithConnectionService(connSvr);
+ // and a held call which has the same ConnectionService
+ Call heldCall = addSpyCall(SIM_2_HANDLE);
// WHEN unhold the held call
mCallsManager.unholdCall(heldCall);
@@ -511,15 +615,13 @@
@SmallTest
@Test
public void testAnswerCallWhenOngoingHasSameConnectionService() {
- ConnectionServiceWrapper connSvr = Mockito.mock(ConnectionServiceWrapper.class);
-
// GIVEN a CallsManager with ongoing call, and this call can not be held
- Call ongoingCall = addSpyCallWithConnectionService(connSvr);
+ Call ongoingCall = addSpyCall(SIM_1_HANDLE);
doReturn(false).when(ongoingCall).can(Connection.CAPABILITY_HOLD);
when(mConnectionSvrFocusMgr.getCurrentFocusCall()).thenReturn(ongoingCall);
// WHEN answer an incoming call
- Call incomingCall = addSpyCallWithConnectionService(connSvr);
+ Call incomingCall = addSpyCall(VOIP_1_HANDLE);
mCallsManager.answerCall(incomingCall, VideoProfile.STATE_AUDIO_ONLY);
// THEN nothing happened on the ongoing call and the focus request for incoming call is sent
@@ -532,17 +634,14 @@
@SmallTest
@Test
public void testAnswerCallWhenOngoingHasDifferentConnectionService() {
- ConnectionServiceWrapper connSvr1 = Mockito.mock(ConnectionServiceWrapper.class);
- ConnectionServiceWrapper connSvr2 = Mockito.mock(ConnectionServiceWrapper.class);
-
// GIVEN a CallsManager with ongoing call, and this call can not be held
- Call ongoingCall = addSpyCallWithConnectionService(connSvr1);
+ Call ongoingCall = addSpyCall(SIM_1_HANDLE);
doReturn(false).when(ongoingCall).can(Connection.CAPABILITY_HOLD);
doReturn(true).when(ongoingCall).can(Connection.CAPABILITY_SUPPORT_HOLD);
when(mConnectionSvrFocusMgr.getCurrentFocusCall()).thenReturn(ongoingCall);
// WHEN answer an incoming call
- Call incomingCall = addSpyCallWithConnectionService(connSvr2);
+ Call incomingCall = addSpyCall(VOIP_1_HANDLE);
mCallsManager.answerCall(incomingCall, VideoProfile.STATE_AUDIO_ONLY);
// THEN the ongoing call is disconnected and the focus request for incoming call is sent
@@ -555,24 +654,47 @@
@SmallTest
@Test
- public void testAnswerCallWhenMultipleHeldCallsExisted() {
- ConnectionServiceWrapper connSvr1 = Mockito.mock(ConnectionServiceWrapper.class);
- ConnectionServiceWrapper connSvr2 = Mockito.mock(ConnectionServiceWrapper.class);
-
- // Given an ongoing call and held call with the ConnectionService connSvr1. The
- // ConnectionService connSvr1 can handle one held call
- Call ongoingCall = addSpyCallWithConnectionService(connSvr1);
+ public void testAnswerCallWhenOngoingHasDifferentConnectionServiceButIsEmerg() {
+ // GIVEN a CallsManager with ongoing call, and this call can not be held
+ Call ongoingCall = addSpyCall(SIM_1_HANDLE);
doReturn(false).when(ongoingCall).can(Connection.CAPABILITY_HOLD);
doReturn(true).when(ongoingCall).can(Connection.CAPABILITY_SUPPORT_HOLD);
- Call heldCall = addSpyCallWithConnectionService(connSvr1);
+ doReturn(true).when(ongoingCall).isEmergencyCall();
+ when(mConnectionSvrFocusMgr.getCurrentFocusCall()).thenReturn(ongoingCall);
+
+ // WHEN answer an incoming call
+ Call incomingCall = addSpyCall(VOIP_1_HANDLE);
+ mCallsManager.answerCall(incomingCall, VideoProfile.STATE_AUDIO_ONLY);
+
+ // THEN the ongoing call is not disconnected
+ verify(ongoingCall, never()).disconnect();
+
+ // and the incoming call is not answered, but is rejected instead.
+ verify(incomingCall, never()).answer(VideoProfile.STATE_AUDIO_ONLY);
+ verify(incomingCall).reject(eq(false), any(), any());
+ }
+
+ @SmallTest
+ @Test
+ public void testAnswerCallWhenMultipleHeldCallsExisted() {
+ // Given an ongoing call and held call with the ConnectionService connSvr1. The
+ // ConnectionService connSvr1 can handle one held call
+ Call ongoingCall = addSpyCall(SIM_1_HANDLE);
+ doReturn(false).when(ongoingCall).can(Connection.CAPABILITY_HOLD);
+ doReturn(true).when(ongoingCall).can(Connection.CAPABILITY_SUPPORT_HOLD);
+ doReturn(CallState.ACTIVE).when(ongoingCall).getState();
+ when(mConnectionSvrFocusMgr.getCurrentFocusCall()).thenReturn(ongoingCall);
+
+ Call heldCall = addSpyCall(SIM_1_HANDLE);
doReturn(CallState.ON_HOLD).when(heldCall).getState();
// and other held call has difference ConnectionService
- Call heldCall2 = addSpyCallWithConnectionService(connSvr2);
+ Call heldCall2 = addSpyCall(VOIP_1_HANDLE);
doReturn(CallState.ON_HOLD).when(heldCall2).getState();
// WHEN answer an incoming call which ConnectionService is connSvr1
- Call incomingCall = addSpyCallWithConnectionService(connSvr1);
+ Call incomingCall = addSpyCall(SIM_1_HANDLE);
+ doReturn(true).when(incomingCall).can(Connection.CAPABILITY_SUPPORT_HOLD);
mCallsManager.answerCall(incomingCall, VideoProfile.STATE_AUDIO_ONLY);
// THEN the previous held call is disconnected
@@ -609,18 +731,34 @@
@SmallTest
@Test
- public void testSetActiveCallWhenOngoingCallCanNotBeHeldAndFromDifferentConnectionService() {
- ConnectionServiceWrapper connSvr1 = Mockito.mock(ConnectionServiceWrapper.class);
- ConnectionServiceWrapper connSvr2 = Mockito.mock(ConnectionServiceWrapper.class);
+ public void testAnswerAlreadyActiveCall() {
+ // GIVEN a CallsManager with no ongoing call.
+ // WHEN answer an already active call
+ Call incomingCall = addSpyCall();
+ mCallsManager.answerCall(incomingCall, VideoProfile.STATE_AUDIO_ONLY);
+
+ // THEN the focus request for incoming call is sent
+ verifyFocusRequestAndExecuteCallback(incomingCall);
+
+ // and the incoming call is answered.
+ verify(incomingCall).answer(VideoProfile.STATE_AUDIO_ONLY);
+
+ // and the incoming call's state is still ACTIVE
+ assertEquals(CallState.ACTIVE, incomingCall.getState());
+ }
+
+ @SmallTest
+ @Test
+ public void testSetActiveCallWhenOngoingCallCanNotBeHeldAndFromDifferentConnectionService() {
// GIVEN a CallsManager with ongoing call, and this call can not be held
- Call ongoingCall = addSpyCallWithConnectionService(connSvr1);
+ Call ongoingCall = addSpyCall(SIM_1_HANDLE);
doReturn(false).when(ongoingCall).can(Connection.CAPABILITY_HOLD);
doReturn(false).when(ongoingCall).can(Connection.CAPABILITY_SUPPORT_HOLD);
doReturn(ongoingCall).when(mConnectionSvrFocusMgr).getCurrentFocusCall();
// and a new self-managed call which has different ConnectionService
- Call newCall = addSpyCallWithConnectionService(connSvr2);
+ Call newCall = addSpyCall(VOIP_1_HANDLE);
doReturn(true).when(newCall).isSelfManaged();
// WHEN active the new call
@@ -637,16 +775,14 @@
@SmallTest
@Test
public void testSetActiveCallWhenOngoingCallCanNotBeHeldAndHasSameConnectionService() {
- ConnectionServiceWrapper connSvr = Mockito.mock(ConnectionServiceWrapper.class);
-
// GIVEN a CallsManager with ongoing call, and this call can not be held
- Call ongoingCall = addSpyCallWithConnectionService(connSvr);
+ Call ongoingCall = addSpyCall(SIM_1_HANDLE);
doReturn(false).when(ongoingCall).can(Connection.CAPABILITY_HOLD);
doReturn(false).when(ongoingCall).can(Connection.CAPABILITY_SUPPORT_HOLD);
when(mConnectionSvrFocusMgr.getCurrentFocusCall()).thenReturn(ongoingCall);
// and a new self-managed call which has the same ConnectionService
- Call newCall = addSpyCallWithConnectionService(connSvr);
+ Call newCall = addSpyCall(SIM_1_HANDLE);
doReturn(true).when(newCall).isSelfManaged();
// WHEN active the new call
@@ -684,25 +820,285 @@
assertEquals(CallState.ACTIVE, newCall.getState());
}
- private Call addSpyCallWithConnectionService(ConnectionServiceWrapper connSvr) {
- Call call = addSpyCall();
- doReturn(connSvr).when(call).getConnectionService();
- return call;
+ @SmallTest
+ @Test
+ public void testDisconnectDialingCallOnIncoming() {
+ // GIVEN a CallsManager with a self-managed call which is dialing, and this call can be held
+ Call ongoingCall = addSpyCall(SELF_MANAGED_HANDLE);
+ ongoingCall.setState(CallState.DIALING, "test");
+ doReturn(true).when(ongoingCall).can(Connection.CAPABILITY_HOLD);
+ doReturn(true).when(ongoingCall).can(Connection.CAPABILITY_SUPPORT_HOLD);
+ doReturn(true).when(ongoingCall).isSelfManaged();
+ doReturn(ongoingCall).when(mConnectionSvrFocusMgr).getCurrentFocusCall();
+
+ // and a new incoming managed call
+ Call newCall = addSpyCall();
+ doReturn(false).when(newCall).isRespondViaSmsCapable();
+ newCall.setState(CallState.RINGING, "test");
+
+ // WHEN answering the new call
+ mCallsManager.answerCall(newCall, VideoProfile.STATE_AUDIO_ONLY);
+
+ // THEN the ongoing call is disconnected
+ verify(ongoingCall).disconnect();
+
+ // AND focus is requested for the new call
+ ArgumentCaptor<CallsManager.RequestCallback> requestCaptor =
+ ArgumentCaptor.forClass(CallsManager.RequestCallback.class);
+ verify(mConnectionSvrFocusMgr).requestFocus(eq(newCall), requestCaptor.capture());
+ // since we're mocking the focus manager, we'll just pretend it did its thing.
+ requestCaptor.getValue().onRequestFocusDone(newCall);
+
+ // and the new call is marked answered
+ assertEquals(CallState.ANSWERED, newCall.getState());
+ }
+
+ @SmallTest
+ @Test
+ public void testNoFilteringOfSelfManagedCalls() {
+ // GIVEN an incoming call which is self managed.
+ Call incomingCall = addSpyCall(SELF_MANAGED_HANDLE);
+ doReturn(false).when(incomingCall).can(Connection.CAPABILITY_HOLD);
+ doReturn(false).when(incomingCall).can(Connection.CAPABILITY_SUPPORT_HOLD);
+ doReturn(true).when(incomingCall).isSelfManaged();
+ doReturn(true).when(incomingCall).setState(anyInt(), any());
+
+ // WHEN the incoming call is successfully added.
+ mCallsManager.onSuccessfulIncomingCall(incomingCall);
+
+ // THEN the incoming call is not using call filtering
+ verify(incomingCall).setIsUsingCallFiltering(eq(false));
+ }
+
+ @SmallTest
+ @Test
+ public void testAcceptIncomingCallWhenHeadsetMediaButtonShortPress() {
+ // GIVEN an incoming call
+ Call incomingCall = addSpyCall();
+ doReturn(CallState.RINGING).when(incomingCall).getState();
+
+ // WHEN media button short press
+ mCallsManager.onMediaButton(HeadsetMediaButton.SHORT_PRESS);
+
+ // THEN the incoming call is answered
+ verify(incomingCall).answer(VideoProfile.STATE_AUDIO_ONLY);
+ }
+
+ @SmallTest
+ @Test
+ public void testRejectIncomingCallWhenHeadsetMediaButtonLongPress() {
+ // GIVEN an incoming call
+ Call incomingCall = addSpyCall();
+ doReturn(CallState.RINGING).when(incomingCall).getState();
+
+ // WHEN media button long press
+ mCallsManager.onMediaButton(HeadsetMediaButton.LONG_PRESS);
+
+ // THEN the incoming call is rejected
+ verify(incomingCall).reject(false, null);
+ }
+
+ @SmallTest
+ @Test
+ public void testHangupOngoingCallWhenHeadsetMediaButtonShortPress() {
+ // GIVEN an ongoing call
+ Call ongoingCall = addSpyCall();
+ doReturn(CallState.ACTIVE).when(ongoingCall).getState();
+
+ // WHEN media button short press
+ mCallsManager.onMediaButton(HeadsetMediaButton.SHORT_PRESS);
+
+ // THEN the active call is disconnected
+ verify(ongoingCall).disconnect();
+ }
+
+ @SmallTest
+ @Test
+ public void testToggleMuteWhenHeadsetMediaButtonLongPressDuringOngoingCall() {
+ // GIVEN an ongoing call
+ Call ongoingCall = addSpyCall();
+ doReturn(CallState.ACTIVE).when(ongoingCall).getState();
+
+ // WHEN media button long press
+ mCallsManager.onMediaButton(HeadsetMediaButton.LONG_PRESS);
+
+ // THEN the microphone toggle mute
+ verify(mCallAudioRouteStateMachine)
+ .sendMessageWithSessionInfo(CallAudioRouteStateMachine.TOGGLE_MUTE);
+ }
+
+ @SmallTest
+ @Test
+ public void testSwapCallsWhenHeadsetMediaButtonShortPressDuringTwoCalls() {
+ // GIVEN an ongoing call, and this call can be held
+ Call ongoingCall = addSpyCall();
+ doReturn(CallState.ACTIVE).when(ongoingCall).getState();
+ doReturn(true).when(ongoingCall).can(Connection.CAPABILITY_HOLD);
+ doReturn(true).when(ongoingCall).can(Connection.CAPABILITY_SUPPORT_HOLD);
+ when(mConnectionSvrFocusMgr.getCurrentFocusCall()).thenReturn(ongoingCall);
+
+ // and a held call
+ Call heldCall = addSpyCall();
+ doReturn(CallState.ON_HOLD).when(heldCall).getState();
+
+ // WHEN media button short press
+ mCallsManager.onMediaButton(HeadsetMediaButton.SHORT_PRESS);
+
+ // THEN the ongoing call is held, and the focus request for heldCall call is sent
+ verify(ongoingCall).hold(nullable(String.class));
+ verifyFocusRequestAndExecuteCallback(heldCall);
+
+ // and held call is unhold now
+ verify(heldCall).unhold(nullable(String.class));
+ }
+
+ @SmallTest
+ @Test
+ public void testHangupActiveCallWhenHeadsetMediaButtonLongPressDuringTwoCalls() {
+ // GIVEN an ongoing call
+ Call ongoingCall = addSpyCall();
+ doReturn(CallState.ACTIVE).when(ongoingCall).getState();
+
+ // and a held call
+ Call heldCall = addSpyCall();
+ doReturn(CallState.ON_HOLD).when(heldCall).getState();
+
+ // WHEN media button long press
+ mCallsManager.onMediaButton(HeadsetMediaButton.LONG_PRESS);
+
+ // THEN the ongoing call is disconnected
+ verify(ongoingCall).disconnect();
+ }
+
+ @SmallTest
+ @Test
+ public void testNoFilteringOfCallsWhenPhoneAccountRequestsSkipped() {
+ // GIVEN an incoming call which is from a PhoneAccount that requested to skip filtering.
+ Call incomingCall = addSpyCall(SIM_1_HANDLE);
+ Bundle extras = new Bundle();
+ extras.putBoolean(PhoneAccount.EXTRA_SKIP_CALL_FILTERING, true);
+ PhoneAccount skipRequestedAccount = new PhoneAccount.Builder(SIM_2_HANDLE, "Skipper")
+ .setCapabilities(PhoneAccount.CAPABILITY_SIM_SUBSCRIPTION
+ | PhoneAccount.CAPABILITY_CALL_PROVIDER)
+ .setExtras(extras)
+ .setIsEnabled(true)
+ .build();
+ when(mPhoneAccountRegistrar.getPhoneAccountUnchecked(SIM_1_HANDLE))
+ .thenReturn(skipRequestedAccount);
+ doReturn(false).when(incomingCall).can(Connection.CAPABILITY_HOLD);
+ doReturn(false).when(incomingCall).can(Connection.CAPABILITY_SUPPORT_HOLD);
+ doReturn(false).when(incomingCall).isSelfManaged();
+ doReturn(true).when(incomingCall).setState(anyInt(), any());
+
+ // WHEN the incoming call is successfully added.
+ mCallsManager.onSuccessfulIncomingCall(incomingCall);
+
+ // THEN the incoming call is not using call filtering
+ verify(incomingCall).setIsUsingCallFiltering(eq(false));
+ }
+
+ @SmallTest
+ @Test
+ public void testIsInEmergencyCallNetwork() {
+ // Setup a call which the network identified as an emergency call.
+ Call ongoingCall = addSpyCall();
+ ongoingCall.setConnectionProperties(Connection.PROPERTY_NETWORK_IDENTIFIED_EMERGENCY_CALL);
+
+ assertFalse(ongoingCall.isEmergencyCall());
+ assertTrue(ongoingCall.isNetworkIdentifiedEmergencyCall());
+ assertTrue(mCallsManager.isInEmergencyCall());
+ }
+
+ @SmallTest
+ @Test
+ public void testIsInEmergencyCallLocal() {
+ // Setup a call which is considered emergency based on its phone number.
+ Call ongoingCall = addSpyCall();
+ when(mPhoneNumberUtilsAdapter.isLocalEmergencyNumber(any(), any())).thenReturn(true);
+ ongoingCall.setHandle(Uri.fromParts("tel", "5551212", null),
+ TelecomManager.PRESENTATION_ALLOWED);
+
+ assertTrue(ongoingCall.isEmergencyCall());
+ assertFalse(ongoingCall.isNetworkIdentifiedEmergencyCall());
+ assertTrue(mCallsManager.isInEmergencyCall());
+ }
+
+ /**
+ * Verifies that changes to a {@link PhoneAccount}'s
+ * {@link PhoneAccount#CAPABILITY_VIDEO_CALLING} capability will be reflected on a call.
+ * @throws Exception
+ */
+ @SmallTest
+ @Test
+ public void testPhoneAccountVideoAvailability() throws InterruptedException {
+ Call ongoingCall = addSpyCall(); // adds to SIM_2_ACCT
+ LinkedBlockingQueue<Integer> capabilitiesQueue = new LinkedBlockingQueue<>(1);
+ ongoingCall.addListener(new Call.ListenerBase() {
+ @Override
+ public void onConnectionCapabilitiesChanged(Call call) {
+ try {
+ Log.i("TYLER", "Listener got " + call.getConnectionCapabilities());
+ capabilitiesQueue.put(call.getConnectionCapabilities());
+ } catch (InterruptedException e) {
+ fail();
+ }
+ }
+ });
+
+ // Lets make the phone account video capable.
+ PhoneAccount videoCapableAccount = new PhoneAccount.Builder(SIM_2_ACCOUNT)
+ .setCapabilities(SIM_2_ACCOUNT.getCapabilities()
+ | PhoneAccount.CAPABILITY_VIDEO_CALLING)
+ .build();
+ mCallsManager.getPhoneAccountListener().onPhoneAccountChanged(mPhoneAccountRegistrar,
+ videoCapableAccount);
+ // Absorb first update; it'll be from when phone account changed initially (since we force
+ // a capabilities update.
+ int newCapabilities = capabilitiesQueue.poll(TEST_TIMEOUT, TimeUnit.MILLISECONDS);
+
+ // Lets pretend the ConnectionService made it video capable as well.
+ ongoingCall.setConnectionCapabilities(
+ Connection.CAPABILITY_SUPPORTS_VT_LOCAL_BIDIRECTIONAL);
+ newCapabilities = capabilitiesQueue.poll(TEST_TIMEOUT, TimeUnit.MILLISECONDS);
+ assertTrue(Connection.can(newCapabilities,
+ Connection.CAPABILITY_SUPPORTS_VT_LOCAL_BIDIRECTIONAL));
+ assertTrue(ongoingCall.isVideoCallingSupportedByPhoneAccount());
+
+ // Fire a changed event for the phone account making it not capable.
+ mCallsManager.getPhoneAccountListener().onPhoneAccountChanged(mPhoneAccountRegistrar,
+ SIM_2_ACCOUNT);
+ newCapabilities = capabilitiesQueue.poll(TEST_TIMEOUT, TimeUnit.MILLISECONDS);
+ assertFalse(Connection.can(newCapabilities,
+ Connection.CAPABILITY_SUPPORTS_VT_LOCAL_BIDIRECTIONAL));
+ assertFalse(ongoingCall.isVideoCallingSupportedByPhoneAccount());
+
+ // Fire a change for an unrelated phone account.
+ PhoneAccount anotherVideoCapableAcct = new PhoneAccount.Builder(SIM_1_ACCOUNT)
+ .setCapabilities(SIM_2_ACCOUNT.getCapabilities()
+ | PhoneAccount.CAPABILITY_VIDEO_CALLING)
+ .build();
+ mCallsManager.getPhoneAccountListener().onPhoneAccountChanged(mPhoneAccountRegistrar,
+ anotherVideoCapableAcct);
+ // Call still should not be video capable
+ assertFalse(Connection.can(ongoingCall.getConnectionCapabilities(),
+ Connection.CAPABILITY_SUPPORTS_VT_LOCAL_BIDIRECTIONAL));
}
private Call addSpyCall() {
- Call ongoingCall = new Call("1", /* callId */
+ return addSpyCall(SIM_2_HANDLE);
+ }
+
+ private Call addSpyCall(PhoneAccountHandle targetPhoneAccount) {
+ Call ongoingCall = new Call(String.format("TC@%d", sCallId++), /* callId */
mComponentContextFixture.getTestDouble(),
mCallsManager,
mLock, /* ConnectionServiceRepository */
null,
- mContactsAsyncHelper,
- mCallerInfoAsyncQueryFactory,
mPhoneNumberUtilsAdapter,
TEST_ADDRESS,
null /* GatewayInfo */,
null /* connectionManagerPhoneAccountHandle */,
- SIM_2_HANDLE,
+ targetPhoneAccount,
Call.CALL_DIRECTION_INCOMING,
false /* shouldAttachToExistingConnection*/,
false /* isConference */,
diff --git a/tests/src/com/android/server/telecom/tests/ComponentContextFixture.java b/tests/src/com/android/server/telecom/tests/ComponentContextFixture.java
index 01d312b..86bbadb 100644
--- a/tests/src/com/android/server/telecom/tests/ComponentContextFixture.java
+++ b/tests/src/com/android/server/telecom/tests/ComponentContextFixture.java
@@ -26,9 +26,11 @@
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
+import android.Manifest;
import android.app.AppOpsManager;
import android.app.NotificationManager;
import android.app.StatusBarManager;
+import android.app.role.RoleManager;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.ContentResolver;
@@ -70,7 +72,9 @@
import java.util.List;
import java.util.Locale;
import java.util.Map;
+import java.util.concurrent.Executor;
+import static org.mockito.ArgumentMatchers.matches;
import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.any;
import static org.mockito.Mockito.anyInt;
@@ -97,6 +101,13 @@
}
@Override
+ public Executor getMainExecutor() {
+ // TODO: This doesn't actually execute anything as we don't need to do so for now, but
+ // future users might need it.
+ return mMainExecutor;
+ }
+
+ @Override
public String getPackageName() {
return "com.android.server.telecom.tests";
}
@@ -181,6 +192,8 @@
return mCarrierConfigManager;
case Context.COUNTRY_DETECTOR:
return mCountryDetector;
+ case Context.ROLE_SERVICE:
+ return mRoleManager;
default:
return null;
}
@@ -190,6 +203,12 @@
public String getSystemServiceName(Class<?> svcClass) {
if (svcClass == UserManager.class) {
return Context.USER_SERVICE;
+ } else if (svcClass == RoleManager.class) {
+ return Context.ROLE_SERVICE;
+ } else if (svcClass == AudioManager.class) {
+ return Context.AUDIO_SERVICE;
+ } else if (svcClass == TelephonyManager.class) {
+ return Context.TELEPHONY_SERVICE;
}
throw new UnsupportedOperationException();
}
@@ -299,6 +318,13 @@
}
@Override
+ public void sendOrderedBroadcastAsUser(Intent intent, UserHandle user,
+ String receiverPermission, int appOp, Bundle options,
+ BroadcastReceiver resultReceiver, Handler scheduler, int initialCode,
+ String initialData, Bundle initialExtras) {
+ }
+
+ @Override
public Context createPackageContextAsUser(String packageName, int flags, UserHandle user)
throws PackageManager.NameNotFoundException {
return this;
@@ -418,6 +444,7 @@
private final Resources mResources = mock(Resources.class);
private final Context mApplicationContextSpy = spy(mApplicationContext);
private final PackageManager mPackageManager = mock(PackageManager.class);
+ private final Executor mMainExecutor = mock(Executor.class);
private final AudioManager mAudioManager = spy(new FakeAudioManager(mContext));
private final TelephonyManager mTelephonyManager = mock(TelephonyManager.class);
private final AppOpsManager mAppOpsManager = mock(AppOpsManager.class);
@@ -430,8 +457,9 @@
private final Map<String, IContentProvider> mIContentProviderByUri = new HashMap<>();
private final Configuration mResourceConfiguration = new Configuration();
private final ApplicationInfo mTestApplicationInfo = new ApplicationInfo();
+ private final RoleManager mRoleManager = mock(RoleManager.class);
- private TelecomManager mTelecomManager = null;
+ private TelecomManager mTelecomManager = mock(TelecomManager.class);
public ComponentContextFixture() {
MockitoAnnotations.initMocks(this);
@@ -461,7 +489,16 @@
}
}).when(mPackageManager).queryIntentServicesAsUser((Intent) any(), anyInt(), anyInt());
- when(mTelephonyManager.getSubIdForPhoneAccount((PhoneAccount) any())).thenReturn(1);
+ // By default, tests use non-ui apps instead of 3rd party companion apps.
+ when(mPackageManager.checkPermission(
+ matches(Manifest.permission.CALL_COMPANION_APP), anyString()))
+ .thenReturn(PackageManager.PERMISSION_DENIED);
+
+ // Used in CreateConnectionProcessor to rank emergency numbers by viability.
+ // For the test, make them all equal to INVALID so that the preferred PhoneAccount will be
+ // chosen.
+ when(mTelephonyManager.getSubIdForPhoneAccount((PhoneAccount) any())).thenReturn(
+ SubscriptionManager.INVALID_SUBSCRIPTION_ID);
when(mTelephonyManager.getNetworkOperatorName()).thenReturn("label1");
when(mTelephonyManager.getMultiSimConfiguration()).thenReturn(
@@ -480,6 +517,11 @@
doReturn(null).when(mApplicationContextSpy).registerReceiver(any(BroadcastReceiver.class),
any(IntentFilter.class));
+
+ // Make sure we do not hide PII during testing.
+ Log.setTag("TelecomTEST");
+ Log.setIsExtendedLoggingEnabled(true);
+ Log.VERBOSE = true;
}
@Override
@@ -523,10 +565,18 @@
});
}
+ public void putFloatResource(int id, final float value) {
+ when(mResources.getFloat(eq(id))).thenReturn(value);
+ }
+
public void putBooleanResource(int id, boolean value) {
when(mResources.getBoolean(eq(id))).thenReturn(value);
}
+ public void putStringArrayResource(int id, String[] value) {
+ when(mResources.getStringArray(eq(id))).thenReturn(value);
+ }
+
public void setTelecomManager(TelecomManager telecomManager) {
mTelecomManager = telecomManager;
}
diff --git a/tests/src/com/android/server/telecom/tests/ConnectionServiceFixture.java b/tests/src/com/android/server/telecom/tests/ConnectionServiceFixture.java
index 3154b7d..9655476 100644
--- a/tests/src/com/android/server/telecom/tests/ConnectionServiceFixture.java
+++ b/tests/src/com/android/server/telecom/tests/ConnectionServiceFixture.java
@@ -286,7 +286,9 @@
@Override
public void rejectWithMessage(String callId, String message,
- Session.Info info) throws RemoteException { }
+ Session.Info info) throws RemoteException {
+ rejectedCallIds.add(callId);
+ }
@Override
public void disconnect(String callId, Session.Info info) throws RemoteException { }
@@ -572,7 +574,7 @@
public IBinder asBinder() {
return this;
}
- }, null /*Session.Info*/);
+ }, "" /* callingPackage */, null /*Session.Info*/);
}
}
@@ -668,7 +670,11 @@
c.connectTimeMillis,
c.connectElapsedTimeMillis,
c.statusHints,
- c.extras);
+ c.extras,
+ null,
+ 0,
+ null,
+ 0);
}
private ParcelableConnection parcelable(ConnectionInfo c) {
diff --git a/tests/src/com/android/server/telecom/tests/ConnectionServiceFocusManagerTest.java b/tests/src/com/android/server/telecom/tests/ConnectionServiceFocusManagerTest.java
index 3c2cc61..77a9c0d 100644
--- a/tests/src/com/android/server/telecom/tests/ConnectionServiceFocusManagerTest.java
+++ b/tests/src/com/android/server/telecom/tests/ConnectionServiceFocusManagerTest.java
@@ -16,7 +16,6 @@
package com.android.server.telecom.tests;
-import android.os.Looper;
import android.test.suitebuilder.annotation.SmallTest;
import com.android.server.telecom.Call;
import com.android.server.telecom.CallState;
@@ -63,8 +62,7 @@
@Before
public void setUp() throws Exception {
super.setUp();
- mFocusManagerUT = new ConnectionServiceFocusManager(
- mockCallsManagerRequester, Looper.getMainLooper());
+ mFocusManagerUT = new ConnectionServiceFocusManager(mockCallsManagerRequester);
mNewCall = createFakeCall(mNewConnectionService, CallState.NEW);
mActiveCall = createFakeCall(mActiveConnectionService, CallState.ACTIVE);
ArgumentCaptor<CallsManager.CallsManagerListener> captor =
diff --git a/tests/src/com/android/server/telecom/tests/ContactsAsyncHelperTest.java b/tests/src/com/android/server/telecom/tests/ContactsAsyncHelperTest.java
index 81263ae..08d9a47 100644
--- a/tests/src/com/android/server/telecom/tests/ContactsAsyncHelperTest.java
+++ b/tests/src/com/android/server/telecom/tests/ContactsAsyncHelperTest.java
@@ -16,14 +16,26 @@
package com.android.server.telecom.tests;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyInt;
+import static org.mockito.Matchers.anyObject;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Matchers.isNull;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.timeout;
+import static org.mockito.Mockito.verify;
+
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.net.Uri;
-import android.support.test.InstrumentationRegistry;
import android.test.suitebuilder.annotation.SmallTest;
+import androidx.test.InstrumentationRegistry;
+
import com.android.server.telecom.ContactsAsyncHelper;
import org.junit.Before;
@@ -35,17 +47,6 @@
import java.io.FileNotFoundException;
import java.io.InputStream;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.anyInt;
-import static org.mockito.Matchers.anyObject;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Matchers.isNull;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.timeout;
-import static org.mockito.Mockito.verify;
-
@RunWith(JUnit4.class)
public class ContactsAsyncHelperTest extends TelecomTestCase {
private static final Uri SAMPLE_CONTACT_PHOTO_URI = Uri.parse(
diff --git a/tests/src/com/android/server/telecom/tests/CreateConnectionProcessorTest.java b/tests/src/com/android/server/telecom/tests/CreateConnectionProcessorTest.java
index 48319ad..c2db626 100644
--- a/tests/src/com/android/server/telecom/tests/CreateConnectionProcessorTest.java
+++ b/tests/src/com/android/server/telecom/tests/CreateConnectionProcessorTest.java
@@ -16,15 +16,15 @@
package com.android.server.telecom.tests;
-import static com.android.server.telecom.tests.TelecomSystemTest.TEST_TIMEOUT;
-
import android.content.ComponentName;
+import android.content.Context;
import android.graphics.drawable.Icon;
import android.net.Uri;
import android.os.Binder;
import android.telecom.DisconnectCause;
import android.telecom.PhoneAccount;
import android.telecom.PhoneAccountHandle;
+import android.telephony.SubscriptionManager;
import android.test.suitebuilder.annotation.SmallTest;
import com.android.server.telecom.Call;
@@ -47,7 +47,7 @@
import org.mockito.stubbing.Answer;
import java.util.ArrayList;
-import java.util.Arrays;
+import java.util.HashMap;
import static org.mockito.ArgumentMatchers.nullable;
import static org.mockito.Matchers.any;
@@ -56,7 +56,6 @@
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.reset;
-import static org.mockito.Mockito.timeout;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -83,6 +82,10 @@
CreateConnectionProcessor mTestCreateConnectionProcessor;
+ private ArrayList<PhoneAccount> phoneAccounts;
+ private HashMap<Integer,Integer> mSubToSlot;
+ private HashMap<PhoneAccount,Integer> mAccountToSub;
+
@Override
@Before
public void setUp() throws Exception {
@@ -109,6 +112,25 @@
mTestCreateConnectionProcessor = new CreateConnectionProcessor(mMockCall,
mMockConnectionServiceRepository, mMockCreateConnectionResponse,
mMockAccountRegistrar, mContext);
+
+ mAccountToSub = new HashMap<>();
+ phoneAccounts = new ArrayList<>();
+ mSubToSlot = new HashMap<>();
+ mTestCreateConnectionProcessor.setTelephonyManagerAdapter(
+ new CreateConnectionProcessor.ITelephonyManagerAdapter() {
+ @Override
+ public int getSubIdForPhoneAccount(Context context, PhoneAccount account) {
+ return mAccountToSub.getOrDefault(account,
+ SubscriptionManager.INVALID_SIM_SLOT_INDEX);
+ }
+
+ @Override
+ public int getSlotIndex(int subId) {
+ return mSubToSlot.getOrDefault(subId,
+ SubscriptionManager.INVALID_SIM_SLOT_INDEX);
+ }
+ });
+ when(mMockAccountRegistrar.getAllPhoneAccountsOfCurrentUser()).thenReturn(phoneAccounts);
}
@Override
@@ -122,6 +144,7 @@
@Test
public void testSimPhoneAccountSuccess() throws Exception {
PhoneAccountHandle pAHandle = getNewTargetPhoneAccountHandle("tel_acct");
+ setTargetPhoneAccount(mMockCall, pAHandle);
when(mMockCall.isEmergencyCall()).thenReturn(false);
// No Connection Manager in this case
when(mMockAccountRegistrar.getSimCallManagerFromCall(any(Call.class))).thenReturn(null);
@@ -162,9 +185,11 @@
@Test
public void testConnectionManagerSuccess() throws Exception {
PhoneAccountHandle pAHandle = getNewTargetPhoneAccountHandle("tel_acct");
+ setTargetPhoneAccount(mMockCall, pAHandle);
when(mMockCall.isEmergencyCall()).thenReturn(false);
// Include a Connection Manager
- PhoneAccountHandle callManagerPAHandle = getNewConnectionMangerHandle("cm_acct");
+ PhoneAccountHandle callManagerPAHandle = getNewConnectionMangerHandleForCall(mMockCall,
+ "cm_acct");
ConnectionServiceWrapper service = makeConnectionServiceWrapper();
// Make sure the target phone account has the correct permissions
PhoneAccount mFakeTargetPhoneAccount = makeQuickAccount("cm_acct",
@@ -189,9 +214,11 @@
@Test
public void testConnectionManagerFailedFallToSim() throws Exception {
PhoneAccountHandle pAHandle = getNewTargetPhoneAccountHandle("tel_acct");
+ setTargetPhoneAccount(mMockCall, pAHandle);
when(mMockCall.isEmergencyCall()).thenReturn(false);
// Include a Connection Manager
- PhoneAccountHandle callManagerPAHandle = getNewConnectionMangerHandle("cm_acct");
+ PhoneAccountHandle callManagerPAHandle = getNewConnectionMangerHandleForCall(mMockCall,
+ "cm_acct");
ConnectionServiceWrapper service = makeConnectionServiceWrapper();
when(mMockCall.getConnectionManagerPhoneAccount()).thenReturn(callManagerPAHandle);
PhoneAccount mFakeTargetPhoneAccount = makeQuickAccount("cm_acct",
@@ -227,9 +254,11 @@
@Test
public void testConnectionManagerFailedDoNotFallToSim() throws Exception {
PhoneAccountHandle pAHandle = getNewTargetPhoneAccountHandle("tel_acct");
+ setTargetPhoneAccount(mMockCall, pAHandle);
when(mMockCall.isEmergencyCall()).thenReturn(false);
// Include a Connection Manager
- PhoneAccountHandle callManagerPAHandle = getNewConnectionMangerHandle("cm_acct");
+ PhoneAccountHandle callManagerPAHandle = getNewConnectionMangerHandleForCall(mMockCall,
+ "cm_acct");
ConnectionServiceWrapper service = makeConnectionServiceWrapper();
when(mMockCall.getConnectionManagerPhoneAccount()).thenReturn(callManagerPAHandle);
PhoneAccount mFakeTargetPhoneAccount = makeQuickAccount("cm_acct",
@@ -256,16 +285,28 @@
new DisconnectCause(DisconnectCause.OTHER));
}
+ /**
+ * Ensure that the non-emergency capable PhoneAccount and the SIM manager is not chosen to place
+ * the emergency call if there is an emergency capable PhoneAccount available as well.
+ */
@SmallTest
@Test
- public void testEmergencyCallToSim() throws Exception {
+ public void testEmergencyCall() throws Exception {
when(mMockCall.isEmergencyCall()).thenReturn(true);
- // Put in a regular phone account to be sure it doesn't call that
- PhoneAccountHandle pAHandle = getNewTargetPhoneAccountHandle("tel_acct");
+ // Put in a regular phone account as the target to be sure it doesn't call that
+ PhoneAccount regularAccount = makePhoneAccount("tel_acct1",
+ PhoneAccount.CAPABILITY_SIM_SUBSCRIPTION);
+ mapToSubSlot(regularAccount, 1 /*subId*/, 0 /*slotId*/);
+ setTargetPhoneAccount(mMockCall, regularAccount.getAccountHandle());
+ phoneAccounts.add(regularAccount);
// Include a Connection Manager to be sure it doesn't call that
- PhoneAccount callManagerPA = getNewConnectionManagerPhoneAccount("cm_acct", 0);
+ PhoneAccount callManagerPA = createNewConnectionManagerPhoneAccountForCall(mMockCall,
+ "cm_acct", 0);
+ phoneAccounts.add(callManagerPA);
ConnectionServiceWrapper service = makeConnectionServiceWrapper();
- PhoneAccount emergencyPhoneAccount = makeEmergencyPhoneAccount("tel_emer");
+ PhoneAccount emergencyPhoneAccount = makeEmergencyPhoneAccount("tel_emer", 0);
+ mapToSubSlot(emergencyPhoneAccount, 2 /*subId*/, 1 /*slotId*/);
+ phoneAccounts.add(emergencyPhoneAccount);
PhoneAccountHandle emergencyPhoneAccountHandle = emergencyPhoneAccount.getAccountHandle();
mTestCreateConnectionProcessor.process();
@@ -280,22 +321,208 @@
verify(mMockCreateConnectionResponse).handleCreateConnectionSuccess(mockCallIdMapper, null);
}
+ /**
+ * 1) Ensure that if there is a non-SIM PhoneAccount, it is not chosen as the Phone Account to
+ * dial the emergency call.
+ * 2) Register multiple emergency capable PhoneAccounts. Since there is not preference, we
+ * default to sending on the lowest slot.
+ */
+ @SmallTest
+ @Test
+ public void testEmergencyCallMultiSimNoPreferred() throws Exception {
+ when(mMockCall.isEmergencyCall()).thenReturn(true);
+ // Put in a non-SIM phone account as the target to be sure it doesn't call that.
+ PhoneAccount regularAccount = makePhoneAccount("tel_acct1", 0);
+ setTargetPhoneAccount(mMockCall, regularAccount.getAccountHandle());
+ // Include a Connection Manager to be sure it doesn't call that
+ PhoneAccount callManagerPA = createNewConnectionManagerPhoneAccountForCall(mMockCall,
+ "cm_acct", 0);
+ phoneAccounts.add(callManagerPA);
+ ConnectionServiceWrapper service = makeConnectionServiceWrapper();
+ PhoneAccount emergencyPhoneAccount1 = makeEmergencyPhoneAccount("tel_emer1", 0);
+ phoneAccounts.add(emergencyPhoneAccount1);
+ mapToSubSlot(emergencyPhoneAccount1, 1 /*subId*/, 1 /*slotId*/);
+ PhoneAccount emergencyPhoneAccount2 = makeEmergencyPhoneAccount("tel_emer2", 0);
+ phoneAccounts.add(emergencyPhoneAccount2);
+ mapToSubSlot(emergencyPhoneAccount2, 2 /*subId*/, 0 /*slotId*/);
+ PhoneAccountHandle emergencyPhoneAccountHandle2 = emergencyPhoneAccount2.getAccountHandle();
+
+ mTestCreateConnectionProcessor.process();
+
+ // We did not set a preference
+ verify(mMockCall).setConnectionManagerPhoneAccount(eq(emergencyPhoneAccountHandle2));
+ verify(mMockCall).setTargetPhoneAccount(eq(emergencyPhoneAccountHandle2));
+ verify(mMockCall).setConnectionService(eq(service));
+ verify(service).createConnection(eq(mMockCall), any(CreateConnectionResponse.class));
+ // Notify successful connection to call
+ CallIdMapper mockCallIdMapper = mock(CallIdMapper.class);
+ mTestCreateConnectionProcessor.handleCreateConnectionSuccess(mockCallIdMapper, null);
+ verify(mMockCreateConnectionResponse).handleCreateConnectionSuccess(mockCallIdMapper, null);
+ }
+
+ /**
+ * Ensure that the call goes out on the PhoneAccount that has the CAPABILITY_EMERGENCY_PREFERRED
+ * capability, even if the user specifically chose the other emergency capable PhoneAccount.
+ */
+ @SmallTest
+ @Test
+ public void testEmergencyCallMultiSimTelephonyPreferred() throws Exception {
+ when(mMockCall.isEmergencyCall()).thenReturn(true);
+ ConnectionServiceWrapper service = makeConnectionServiceWrapper();
+ PhoneAccount emergencyPhoneAccount1 = makeEmergencyPhoneAccount("tel_emer1", 0);
+ mapToSubSlot(emergencyPhoneAccount1, 1 /*subId*/, 0 /*slotId*/);
+ setTargetPhoneAccount(mMockCall, emergencyPhoneAccount1.getAccountHandle());
+ phoneAccounts.add(emergencyPhoneAccount1);
+ PhoneAccount emergencyPhoneAccount2 = makeEmergencyPhoneAccount("tel_emer2",
+ PhoneAccount.CAPABILITY_EMERGENCY_PREFERRED);
+ mapToSubSlot(emergencyPhoneAccount2, 2 /*subId*/, 1 /*slotId*/);
+ phoneAccounts.add(emergencyPhoneAccount2);
+ PhoneAccountHandle emergencyPhoneAccountHandle2 = emergencyPhoneAccount2.getAccountHandle();
+
+ mTestCreateConnectionProcessor.process();
+
+ // Make sure the telephony preferred SIM is the one that is chosen.
+ verify(mMockCall).setConnectionManagerPhoneAccount(eq(emergencyPhoneAccountHandle2));
+ verify(mMockCall).setTargetPhoneAccount(eq(emergencyPhoneAccountHandle2));
+ verify(mMockCall).setConnectionService(eq(service));
+ verify(service).createConnection(eq(mMockCall), any(CreateConnectionResponse.class));
+ // Notify successful connection to call
+ CallIdMapper mockCallIdMapper = mock(CallIdMapper.class);
+ mTestCreateConnectionProcessor.handleCreateConnectionSuccess(mockCallIdMapper, null);
+ verify(mMockCreateConnectionResponse).handleCreateConnectionSuccess(mockCallIdMapper, null);
+ }
+
+ /**
+ * If there is no phone account with CAPABILITY_EMERGENCY_PREFERRED capability, choose the user
+ * chosen target account.
+ */
+ @SmallTest
+ @Test
+ public void testEmergencyCallMultiSimUserPreferred() throws Exception {
+ when(mMockCall.isEmergencyCall()).thenReturn(true);
+ // Include a Connection Manager to be sure it doesn't call that
+ PhoneAccount callManagerPA = createNewConnectionManagerPhoneAccountForCall(mMockCall,
+ "cm_acct", 0);
+ phoneAccounts.add(callManagerPA);
+ ConnectionServiceWrapper service = makeConnectionServiceWrapper();
+ PhoneAccount emergencyPhoneAccount1 = makeEmergencyPhoneAccount("tel_emer1", 0);
+ mapToSubSlot(emergencyPhoneAccount1, 1 /*subId*/, 0 /*slotId*/);
+ phoneAccounts.add(emergencyPhoneAccount1);
+ PhoneAccount emergencyPhoneAccount2 = makeEmergencyPhoneAccount("tel_emer2", 0);
+ // Make this the user preferred account
+ mapToSubSlot(emergencyPhoneAccount2, 2 /*subId*/, 1 /*slotId*/);
+ setTargetPhoneAccount(mMockCall, emergencyPhoneAccount2.getAccountHandle());
+ phoneAccounts.add(emergencyPhoneAccount2);
+ PhoneAccountHandle emergencyPhoneAccountHandle2 = emergencyPhoneAccount2.getAccountHandle();
+
+ mTestCreateConnectionProcessor.process();
+
+ // Make sure the user preferred SIM is the one that is chosen.
+ verify(mMockCall).setConnectionManagerPhoneAccount(eq(emergencyPhoneAccountHandle2));
+ verify(mMockCall).setTargetPhoneAccount(eq(emergencyPhoneAccountHandle2));
+ verify(mMockCall).setConnectionService(eq(service));
+ verify(service).createConnection(eq(mMockCall), any(CreateConnectionResponse.class));
+ // Notify successful connection to call
+ CallIdMapper mockCallIdMapper = mock(CallIdMapper.class);
+ mTestCreateConnectionProcessor.handleCreateConnectionSuccess(mockCallIdMapper, null);
+ verify(mMockCreateConnectionResponse).handleCreateConnectionSuccess(mockCallIdMapper, null);
+ }
+
+ /**
+ * If the user preferred PhoneAccount is associated with an invalid slot, place on the other,
+ * valid slot.
+ */
+ @SmallTest
+ @Test
+ public void testEmergencyCallMultiSimUserPreferredInvalidSlot() throws Exception {
+ when(mMockCall.isEmergencyCall()).thenReturn(true);
+ // Include a Connection Manager to be sure it doesn't call that
+ PhoneAccount callManagerPA = createNewConnectionManagerPhoneAccountForCall(mMockCall,
+ "cm_acct", 0);
+ phoneAccounts.add(callManagerPA);
+ ConnectionServiceWrapper service = makeConnectionServiceWrapper();
+ PhoneAccount emergencyPhoneAccount1 = makeEmergencyPhoneAccount("tel_emer1", 0);
+ // make this the user preferred account
+ setTargetPhoneAccount(mMockCall, emergencyPhoneAccount1.getAccountHandle());
+ mapToSubSlot(emergencyPhoneAccount1, 1 /*subId*/,
+ SubscriptionManager.INVALID_SIM_SLOT_INDEX /*slotId*/);
+ phoneAccounts.add(emergencyPhoneAccount1);
+ PhoneAccount emergencyPhoneAccount2 = makeEmergencyPhoneAccount("tel_emer2", 0);
+ mapToSubSlot(emergencyPhoneAccount2, 2 /*subId*/, 1 /*slotId*/);
+ phoneAccounts.add(emergencyPhoneAccount2);
+ PhoneAccountHandle emergencyPhoneAccountHandle2 = emergencyPhoneAccount2.getAccountHandle();
+
+ mTestCreateConnectionProcessor.process();
+
+ // Make sure the valid SIM is the one that is chosen.
+ verify(mMockCall).setConnectionManagerPhoneAccount(eq(emergencyPhoneAccountHandle2));
+ verify(mMockCall).setTargetPhoneAccount(eq(emergencyPhoneAccountHandle2));
+ verify(mMockCall).setConnectionService(eq(service));
+ verify(service).createConnection(eq(mMockCall), any(CreateConnectionResponse.class));
+ // Notify successful connection to call
+ CallIdMapper mockCallIdMapper = mock(CallIdMapper.class);
+ mTestCreateConnectionProcessor.handleCreateConnectionSuccess(mockCallIdMapper, null);
+ verify(mMockCreateConnectionResponse).handleCreateConnectionSuccess(mockCallIdMapper, null);
+ }
+
+ /**
+ * If a PhoneAccount is associated with an invalid slot, place on the other, valid slot.
+ */
+ @SmallTest
+ @Test
+ public void testEmergencyCallMultiSimNoPreferenceInvalidSlot() throws Exception {
+ when(mMockCall.isEmergencyCall()).thenReturn(true);
+ // Include a Connection Manager to be sure it doesn't call that
+ PhoneAccount callManagerPA = createNewConnectionManagerPhoneAccountForCall(mMockCall,
+ "cm_acct", 0);
+ phoneAccounts.add(callManagerPA);
+ ConnectionServiceWrapper service = makeConnectionServiceWrapper();
+ PhoneAccount emergencyPhoneAccount1 = makeEmergencyPhoneAccount("tel_emer1", 0);
+ mapToSubSlot(emergencyPhoneAccount1, 1 /*subId*/,
+ SubscriptionManager.INVALID_SIM_SLOT_INDEX /*slotId*/);
+ phoneAccounts.add(emergencyPhoneAccount1);
+ PhoneAccount emergencyPhoneAccount2 = makeEmergencyPhoneAccount("tel_emer2", 0);
+ mapToSubSlot(emergencyPhoneAccount2, 2 /*subId*/, 1 /*slotId*/);
+ phoneAccounts.add(emergencyPhoneAccount2);
+ PhoneAccountHandle emergencyPhoneAccountHandle2 = emergencyPhoneAccount2.getAccountHandle();
+
+ mTestCreateConnectionProcessor.process();
+
+ // Make sure the valid SIM is the one that is chosen.
+ verify(mMockCall).setConnectionManagerPhoneAccount(eq(emergencyPhoneAccountHandle2));
+ verify(mMockCall).setTargetPhoneAccount(eq(emergencyPhoneAccountHandle2));
+ verify(mMockCall).setConnectionService(eq(service));
+ verify(service).createConnection(eq(mMockCall), any(CreateConnectionResponse.class));
+ // Notify successful connection to call
+ CallIdMapper mockCallIdMapper = mock(CallIdMapper.class);
+ mTestCreateConnectionProcessor.handleCreateConnectionSuccess(mockCallIdMapper, null);
+ verify(mMockCreateConnectionResponse).handleCreateConnectionSuccess(mockCallIdMapper, null);
+ }
+
@SmallTest
@Test
public void testEmergencyCallSimFailToConnectionManager() throws Exception {
when(mMockCall.isEmergencyCall()).thenReturn(true);
when(mMockCall.getHandle()).thenReturn(Uri.parse(""));
// Put in a regular phone account to be sure it doesn't call that
- PhoneAccountHandle pAHandle = getNewTargetPhoneAccountHandle("tel_acct");
+ PhoneAccount regularAccount = makePhoneAccount("tel_acct1",
+ PhoneAccount.CAPABILITY_SIM_SUBSCRIPTION);
+ mapToSubSlot(regularAccount, 1 /*subId*/, 0 /*slotId*/);
+ setTargetPhoneAccount(mMockCall, regularAccount.getAccountHandle());
+ phoneAccounts.add(regularAccount);
when(mMockAccountRegistrar.getOutgoingPhoneAccountForSchemeOfCurrentUser(
- nullable(String.class))).thenReturn(pAHandle);
+ nullable(String.class))).thenReturn(regularAccount.getAccountHandle());
// Include a normal Connection Manager to be sure it doesn't call that
- PhoneAccount callManagerPA = getNewConnectionManagerPhoneAccount("cm_acct", 0);
+ PhoneAccount callManagerPA = createNewConnectionManagerPhoneAccountForCall(mMockCall,
+ "cm_acct", 0);
+ phoneAccounts.add(callManagerPA);
// Include a connection Manager for the user with the capability to make calls
PhoneAccount emerCallManagerPA = getNewEmergencyConnectionManagerPhoneAccount("cm_acct",
PhoneAccount.CAPABILITY_PLACE_EMERGENCY_CALLS);
ConnectionServiceWrapper service = makeConnectionServiceWrapper();
- PhoneAccount emergencyPhoneAccount = makeEmergencyPhoneAccount("tel_emer");
+ PhoneAccount emergencyPhoneAccount = makeEmergencyPhoneAccount("tel_emer", 0);
+ phoneAccounts.add(emergencyPhoneAccount);
+ mapToSubSlot(regularAccount, 2 /*subId*/, 1 /*slotId*/);
mTestCreateConnectionProcessor.process();
reset(mMockCall);
reset(service);
@@ -310,31 +537,43 @@
verify(mMockCall).setConnectionManagerPhoneAccount(
eq(emerCallManagerPA.getAccountHandle()));
- verify(mMockCall).setTargetPhoneAccount(eq(pAHandle));
+ verify(mMockCall).setTargetPhoneAccount(eq(regularAccount.getAccountHandle()));
verify(mMockCall).setConnectionService(eq(service));
verify(service).createConnection(eq(mMockCall), any(CreateConnectionResponse.class));
}
- private PhoneAccount makeEmergencyPhoneAccount(String id) {
- final PhoneAccount emergencyPhoneAccount = makeQuickAccount(id,
+ private PhoneAccount makeEmergencyPhoneAccount(String id, int capabilities) {
+ final PhoneAccount emergencyPhoneAccount = makeQuickAccount(id, capabilities |
PhoneAccount.CAPABILITY_PLACE_EMERGENCY_CALLS |
PhoneAccount.CAPABILITY_SIM_SUBSCRIPTION);
PhoneAccountHandle emergencyPhoneAccountHandle = emergencyPhoneAccount.getAccountHandle();
givePhoneAccountBindPermission(emergencyPhoneAccountHandle);
- ArrayList<PhoneAccount> phoneAccounts = new ArrayList<PhoneAccount>() {{
- add(emergencyPhoneAccount);
- }};
- when(mMockAccountRegistrar.getAllPhoneAccountsOfCurrentUser()).thenReturn(phoneAccounts);
+ when(mMockAccountRegistrar.getPhoneAccountUnchecked(emergencyPhoneAccountHandle))
+ .thenReturn(emergencyPhoneAccount);
return emergencyPhoneAccount;
}
+ private PhoneAccount makePhoneAccount(String id, int capabilities) {
+ final PhoneAccount phoneAccount = makeQuickAccount(id, capabilities);
+ PhoneAccountHandle phoneAccountHandle = phoneAccount.getAccountHandle();
+ givePhoneAccountBindPermission(phoneAccountHandle);
+ when(mMockAccountRegistrar.getPhoneAccountUnchecked(
+ phoneAccount.getAccountHandle())).thenReturn(phoneAccount);
+ return phoneAccount;
+ }
+
+ private void mapToSubSlot(PhoneAccount account, int subId, int slotId) {
+ mAccountToSub.put(account, subId);
+ mSubToSlot.put(subId, slotId);
+ }
+
private void givePhoneAccountBindPermission(PhoneAccountHandle handle) {
when(mMockAccountRegistrar.phoneAccountRequiresBindPermission(eq(handle))).thenReturn(true);
}
- private PhoneAccountHandle getNewConnectionMangerHandle(String id) {
+ private PhoneAccountHandle getNewConnectionMangerHandleForCall(Call call, String id) {
PhoneAccountHandle callManagerPAHandle = makeQuickAccountHandle(id);
- when(mMockAccountRegistrar.getSimCallManagerFromCall(any(Call.class))).thenReturn(
+ when(mMockAccountRegistrar.getSimCallManagerFromCall(eq(call))).thenReturn(
callManagerPAHandle);
givePhoneAccountBindPermission(callManagerPAHandle);
return callManagerPAHandle;
@@ -342,14 +581,18 @@
private PhoneAccountHandle getNewTargetPhoneAccountHandle(String id) {
PhoneAccountHandle pAHandle = makeQuickAccountHandle(id);
- when(mMockCall.getTargetPhoneAccount()).thenReturn(pAHandle);
givePhoneAccountBindPermission(pAHandle);
return pAHandle;
}
- private PhoneAccount getNewConnectionManagerPhoneAccount(String id, int capability) {
+ private void setTargetPhoneAccount(Call call, PhoneAccountHandle pAHandle) {
+ when(call.getTargetPhoneAccount()).thenReturn(pAHandle);
+ }
+
+ private PhoneAccount createNewConnectionManagerPhoneAccountForCall(Call call, String id,
+ int capability) {
PhoneAccount callManagerPA = makeQuickAccount(id, capability);
- when(mMockAccountRegistrar.getSimCallManagerFromCall(any(Call.class))).thenReturn(
+ when(mMockAccountRegistrar.getSimCallManagerFromCall(eq(call))).thenReturn(
callManagerPA.getAccountHandle());
givePhoneAccountBindPermission(callManagerPA.getAccountHandle());
when(mMockAccountRegistrar.getPhoneAccountUnchecked(
diff --git a/tests/src/com/android/server/telecom/tests/DefaultDialerCacheTest.java b/tests/src/com/android/server/telecom/tests/DefaultDialerCacheTest.java
index 94e6631..e8bca03 100644
--- a/tests/src/com/android/server/telecom/tests/DefaultDialerCacheTest.java
+++ b/tests/src/com/android/server/telecom/tests/DefaultDialerCacheTest.java
@@ -27,6 +27,7 @@
import android.test.suitebuilder.annotation.SmallTest;
import com.android.server.telecom.DefaultDialerCache;
+import com.android.server.telecom.RoleManagerAdapter;
import com.android.server.telecom.TelecomSystem;
import org.junit.Before;
@@ -60,6 +61,7 @@
private BroadcastReceiver mUserRemovedReceiver;
@Mock private DefaultDialerCache.DefaultDialerManagerAdapter mMockDefaultDialerManager;
+ @Mock private RoleManagerAdapter mRoleManagerAdapter;
@Override
@Before
@@ -71,7 +73,8 @@
ArgumentCaptor.forClass(BroadcastReceiver.class);
mDefaultDialerCache = new DefaultDialerCache(
- mContext, mMockDefaultDialerManager, new TelecomSystem.SyncRoot() { });
+ mContext, mMockDefaultDialerManager, mRoleManagerAdapter,
+ new TelecomSystem.SyncRoot() { });
verify(mContext, times(2)).registerReceiverAsUser(
packageReceiverCaptor.capture(), eq(UserHandle.ALL), any(IntentFilter.class),
@@ -93,6 +96,9 @@
.thenReturn(DIALER2);
when(mMockDefaultDialerManager.getDefaultDialerApplication(any(Context.class), eq(USER2)))
.thenReturn(DIALER3);
+ when(mRoleManagerAdapter.getDefaultDialerApp(eq(USER0))).thenReturn(DIALER1);
+ when(mRoleManagerAdapter.getDefaultDialerApp(eq(USER1))).thenReturn(DIALER2);
+ when(mRoleManagerAdapter.getDefaultDialerApp(eq(USER2))).thenReturn(DIALER3);
}
@SmallTest
@@ -107,12 +113,12 @@
assertEquals(mDefaultDialerCache.getDefaultDialerApplication(USER1), DIALER2);
assertEquals(mDefaultDialerCache.getDefaultDialerApplication(USER2), DIALER3);
- verify(mMockDefaultDialerManager, times(1))
- .getDefaultDialerApplication(any(Context.class), eq(USER0));
- verify(mMockDefaultDialerManager, times(1))
- .getDefaultDialerApplication(any(Context.class), eq(USER1));
- verify(mMockDefaultDialerManager, times(1))
- .getDefaultDialerApplication(any(Context.class), eq(USER2));
+ verify(mRoleManagerAdapter, times(4))
+ .getDefaultDialerApp(eq(USER0));
+ verify(mRoleManagerAdapter, times(2))
+ .getDefaultDialerApp(eq(USER1));
+ verify(mRoleManagerAdapter, times(2))
+ .getDefaultDialerApp(eq(USER2));
}
@SmallTest
@@ -125,15 +131,11 @@
Intent packageChangeIntent = new Intent(Intent.ACTION_PACKAGE_CHANGED,
Uri.fromParts("package", DIALER1, null));
- when(mMockDefaultDialerManager.getDefaultDialerApplication(any(Context.class), eq(USER0)))
- .thenReturn(DIALER2);
+ when(mRoleManagerAdapter.getDefaultDialerApp(eq(USER0))).thenReturn(DIALER2);
mPackageChangeReceiver.onReceive(mContext, packageChangeIntent);
- verify(mMockDefaultDialerManager, times(2))
- .getDefaultDialerApplication(any(Context.class), eq(USER0));
- verify(mMockDefaultDialerManager, times(2))
- .getDefaultDialerApplication(any(Context.class), eq(USER1));
- verify(mMockDefaultDialerManager, times(2))
- .getDefaultDialerApplication(any(Context.class), eq(USER2));
+ verify(mRoleManagerAdapter, times(2)).getDefaultDialerApp(eq(USER0));
+ verify(mRoleManagerAdapter, times(2)).getDefaultDialerApp(eq(USER1));
+ verify(mRoleManagerAdapter, times(2)).getDefaultDialerApp(eq(USER2));
assertEquals(mDefaultDialerCache.getDefaultDialerApplication(USER0), DIALER2);
}
@@ -148,12 +150,9 @@
Intent packageChangeIntent = new Intent(Intent.ACTION_PACKAGE_CHANGED,
Uri.fromParts("package", "red.orange.blue", null));
mPackageChangeReceiver.onReceive(mContext, packageChangeIntent);
- verify(mMockDefaultDialerManager, times(2))
- .getDefaultDialerApplication(any(Context.class), eq(USER0));
- verify(mMockDefaultDialerManager, times(2))
- .getDefaultDialerApplication(any(Context.class), eq(USER1));
- verify(mMockDefaultDialerManager, times(2))
- .getDefaultDialerApplication(any(Context.class), eq(USER2));
+ verify(mRoleManagerAdapter, times(2)).getDefaultDialerApp(eq(USER0));
+ verify(mRoleManagerAdapter, times(2)).getDefaultDialerApp(eq(USER1));
+ verify(mRoleManagerAdapter, times(2)).getDefaultDialerApp(eq(USER2));
}
@SmallTest
@@ -169,10 +168,8 @@
assertEquals(mDefaultDialerCache.getDefaultDialerApplication(USER0), DIALER1);
assertEquals(mDefaultDialerCache.getDefaultDialerApplication(USER1), DIALER2);
- verify(mMockDefaultDialerManager, times(2))
- .getDefaultDialerApplication(any(Context.class), eq(USER0));
- verify(mMockDefaultDialerManager, times(1))
- .getDefaultDialerApplication(any(Context.class), eq(USER1));
+ verify(mRoleManagerAdapter, times(2)).getDefaultDialerApp(eq(USER0));
+ verify(mRoleManagerAdapter, times(2)).getDefaultDialerApp(eq(USER1));
}
@SmallTest
@@ -187,12 +184,9 @@
packageChangeIntent.putExtra(Intent.EXTRA_REPLACING, false);
mPackageChangeReceiver.onReceive(mContext, packageChangeIntent);
- verify(mMockDefaultDialerManager, times(2))
- .getDefaultDialerApplication(any(Context.class), eq(USER0));
- verify(mMockDefaultDialerManager, times(1))
- .getDefaultDialerApplication(any(Context.class), eq(USER1));
- verify(mMockDefaultDialerManager, times(1))
- .getDefaultDialerApplication(any(Context.class), eq(USER2));
+ verify(mRoleManagerAdapter, times(2)).getDefaultDialerApp(eq(USER0));
+ verify(mRoleManagerAdapter, times(1)).getDefaultDialerApp(eq(USER1));
+ verify(mRoleManagerAdapter, times(1)).getDefaultDialerApp(eq(USER2));
}
@SmallTest
@@ -206,12 +200,9 @@
Uri.fromParts("package", "ppp.qqq.zzz", null));
mPackageChangeReceiver.onReceive(mContext, packageChangeIntent);
- verify(mMockDefaultDialerManager, times(2))
- .getDefaultDialerApplication(any(Context.class), eq(USER0));
- verify(mMockDefaultDialerManager, times(2))
- .getDefaultDialerApplication(any(Context.class), eq(USER1));
- verify(mMockDefaultDialerManager, times(2))
- .getDefaultDialerApplication(any(Context.class), eq(USER2));
+ verify(mRoleManagerAdapter, times(2)).getDefaultDialerApp(eq(USER0));
+ verify(mRoleManagerAdapter, times(2)).getDefaultDialerApp(eq(USER1));
+ verify(mRoleManagerAdapter, times(2)).getDefaultDialerApp(eq(USER2));
}
@SmallTest
@@ -226,12 +217,9 @@
packageChangeIntent.putExtra(Intent.EXTRA_REPLACING, true);
mPackageChangeReceiver.onReceive(mContext, packageChangeIntent);
- verify(mMockDefaultDialerManager, times(1))
- .getDefaultDialerApplication(any(Context.class), eq(USER0));
- verify(mMockDefaultDialerManager, times(1))
- .getDefaultDialerApplication(any(Context.class), eq(USER1));
- verify(mMockDefaultDialerManager, times(1))
- .getDefaultDialerApplication(any(Context.class), eq(USER2));
+ verify(mRoleManagerAdapter, times(1)).getDefaultDialerApp(eq(USER0));
+ verify(mRoleManagerAdapter, times(1)).getDefaultDialerApp(eq(USER1));
+ verify(mRoleManagerAdapter, times(1)).getDefaultDialerApp(eq(USER2));
}
@SmallTest
@@ -241,20 +229,14 @@
assertEquals(mDefaultDialerCache.getDefaultDialerApplication(USER1), DIALER2);
assertEquals(mDefaultDialerCache.getDefaultDialerApplication(USER2), DIALER3);
- when(mMockDefaultDialerManager.getDefaultDialerApplication(any(Context.class), eq(USER0)))
- .thenReturn(DIALER2);
- when(mMockDefaultDialerManager.getDefaultDialerApplication(any(Context.class), eq(USER1)))
- .thenReturn(DIALER2);
- when(mMockDefaultDialerManager.getDefaultDialerApplication(any(Context.class), eq(USER2)))
- .thenReturn(DIALER2);
+ when(mRoleManagerAdapter.getDefaultDialerApp(eq(USER0))).thenReturn(DIALER2);
+ when(mRoleManagerAdapter.getDefaultDialerApp(eq(USER1))).thenReturn(DIALER2);
+ when(mRoleManagerAdapter.getDefaultDialerApp(eq(USER2))).thenReturn(DIALER2);
mDefaultDialerSettingObserver.onChange(false);
- verify(mMockDefaultDialerManager, times(2))
- .getDefaultDialerApplication(any(Context.class), eq(USER0));
- verify(mMockDefaultDialerManager, times(2))
- .getDefaultDialerApplication(any(Context.class), eq(USER2));
- verify(mMockDefaultDialerManager, times(2))
- .getDefaultDialerApplication(any(Context.class), eq(USER2));
+ verify(mRoleManagerAdapter, times(2)).getDefaultDialerApp(eq(USER0));
+ verify(mRoleManagerAdapter, times(2)).getDefaultDialerApp(eq(USER2));
+ verify(mRoleManagerAdapter, times(2)).getDefaultDialerApp(eq(USER2));
assertEquals(mDefaultDialerCache.getDefaultDialerApplication(USER0), DIALER2);
assertEquals(mDefaultDialerCache.getDefaultDialerApplication(USER1), DIALER2);
diff --git a/tests/src/com/android/server/telecom/tests/DirectToVoicemailCallFilterTest.java b/tests/src/com/android/server/telecom/tests/DirectToVoicemailCallFilterTest.java
index af4c168..a685c5e 100644
--- a/tests/src/com/android/server/telecom/tests/DirectToVoicemailCallFilterTest.java
+++ b/tests/src/com/android/server/telecom/tests/DirectToVoicemailCallFilterTest.java
@@ -17,6 +17,7 @@
package com.android.server.telecom.tests;
import android.net.Uri;
+import android.provider.CallLog;
import android.test.suitebuilder.annotation.SmallTest;
import com.android.internal.telephony.CallerInfo;
@@ -65,7 +66,10 @@
false, // shouldAllowCall
true, // shouldReject
true, // shouldAddToCallLog
- true // shouldShowNotification
+ true, // shouldShowNotification
+ CallLog.Calls.BLOCK_REASON_DIRECT_TO_VOICEMAIL, //callBlockReason
+ null, //callScreeningAppName
+ null // callScreeningComponentName
));
}
diff --git a/tests/src/com/android/server/telecom/tests/EventManagerTest.java b/tests/src/com/android/server/telecom/tests/EventManagerTest.java
index 24394ec..c7d3541 100644
--- a/tests/src/com/android/server/telecom/tests/EventManagerTest.java
+++ b/tests/src/com/android/server/telecom/tests/EventManagerTest.java
@@ -16,6 +16,9 @@
package com.android.server.telecom.tests;
+import android.net.Uri;
+import android.os.Build;
+import android.telecom.Log;
import android.telecom.Logging.EventManager;
import android.test.suitebuilder.annotation.SmallTest;
@@ -217,4 +220,29 @@
assertEquals(0, timings1.size());
assertEquals(0, timings2.size());
}
+
+ /**
+ * Ensure PII logging will log the last 2 digits of a phone number.
+ */
+ @SmallTest
+ @Test
+ public void testLogLast2DigitsPhone() {
+ if (Build.IS_USER) {
+ return;
+ }
+ // Cache old setting for verbose
+ boolean verboseBeforeTest = Log.VERBOSE;
+ // testing PII, so turn off verbose.
+ Log.VERBOSE = false;
+ assertEquals("tel:**********12",
+ Log.piiHandle(Uri.fromParts("tel", "+16505551212", null)));
+ assertEquals("tel:*****12",
+ Log.piiHandle(Uri.fromParts("tel", "5551212", null)));
+ assertEquals("tel:*11",
+ Log.piiHandle(Uri.fromParts("tel", "411", null)));
+ assertEquals("tel:1",
+ Log.piiHandle(Uri.fromParts("tel", "1", null)));
+ // Restore old config.
+ Log.VERBOSE = verboseBeforeTest;
+ }
}
\ No newline at end of file
diff --git a/tests/src/com/android/server/telecom/tests/InCallControllerTests.java b/tests/src/com/android/server/telecom/tests/InCallControllerTests.java
index 0671a4e..bbefae3 100644
--- a/tests/src/com/android/server/telecom/tests/InCallControllerTests.java
+++ b/tests/src/com/android/server/telecom/tests/InCallControllerTests.java
@@ -16,6 +16,22 @@
package com.android.server.telecom.tests;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+import static org.mockito.ArgumentMatchers.matches;
+import static org.mockito.ArgumentMatchers.nullable;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyInt;
+import static org.mockito.Matchers.anyString;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
import android.Manifest;
import android.content.ComponentName;
import android.content.ContentResolver;
@@ -27,8 +43,8 @@
import android.content.pm.ServiceInfo;
import android.content.res.Resources;
import android.os.Bundle;
-import android.os.IBinder;
import android.os.Handler;
+import android.os.IBinder;
import android.os.Looper;
import android.os.UserHandle;
import android.telecom.InCallService;
@@ -50,7 +66,8 @@
import com.android.server.telecom.InCallController;
import com.android.server.telecom.PhoneAccountRegistrar;
import com.android.server.telecom.R;
-import com.android.server.telecom.SystemStateProvider;
+import com.android.server.telecom.RoleManagerAdapter;
+import com.android.server.telecom.SystemStateHelper;
import com.android.server.telecom.TelecomSystem;
import com.android.server.telecom.Timeouts;
@@ -65,11 +82,17 @@
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
+import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedList;
+import java.util.List;
+import java.util.concurrent.CompletableFuture;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.matches;
import static org.mockito.ArgumentMatchers.nullable;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyInt;
@@ -88,19 +111,24 @@
@Mock CallsManager mMockCallsManager;
@Mock PhoneAccountRegistrar mMockPhoneAccountRegistrar;
@Mock BluetoothHeadsetProxy mMockBluetoothHeadset;
- @Mock SystemStateProvider mMockSystemStateProvider;
+ @Mock SystemStateHelper mMockSystemStateHelper;
@Mock PackageManager mMockPackageManager;
@Mock Call mMockCall;
@Mock Resources mMockResources;
@Mock MockContext mMockContext;
@Mock Timeouts.Adapter mTimeoutsAdapter;
@Mock DefaultDialerCache mDefaultDialerCache;
+ @Mock RoleManagerAdapter mMockRoleManagerAdapter;
private static final int CURRENT_USER_ID = 900973;
private static final String DEF_PKG = "defpkg";
private static final String DEF_CLASS = "defcls";
private static final String SYS_PKG = "syspkg";
private static final String SYS_CLASS = "syscls";
+ private static final String COMPANION_PKG = "cpnpkg";
+ private static final String COMPANION_CLASS = "cpncls";
+ private static final String CAR_PKG = "carpkg";
+ private static final String CAR_CLASS = "carcls";
private static final PhoneAccountHandle PA_HANDLE =
new PhoneAccountHandle(new ComponentName("pa_pkg", "pa_cls"), "pa_id");
@@ -116,14 +144,23 @@
MockitoAnnotations.initMocks(this);
when(mMockCall.getAnalytics()).thenReturn(new Analytics.CallInfo());
doReturn(mMockResources).when(mMockContext).getResources();
- doReturn(SYS_PKG).when(mMockResources).getString(R.string.ui_default_package);
+ doReturn(SYS_PKG).when(mMockResources).getString(
+ com.android.internal.R.string.config_defaultDialer);
doReturn(SYS_CLASS).when(mMockResources).getString(R.string.incall_default_class);
doReturn(true).when(mMockResources).getBoolean(R.bool.grant_location_permission_enabled);
mEmergencyCallHelper = new EmergencyCallHelper(mMockContext, SYS_PKG,
mTimeoutsAdapter);
+ when(mMockCallsManager.getRoleManagerAdapter()).thenReturn(mMockRoleManagerAdapter);
mInCallController = new InCallController(mMockContext, mLock, mMockCallsManager,
- mMockSystemStateProvider, mDefaultDialerCache, mTimeoutsAdapter,
+ mMockSystemStateHelper, mDefaultDialerCache, mTimeoutsAdapter,
mEmergencyCallHelper);
+ // Companion Apps don't have CONTROL_INCALL_EXPERIENCE permission.
+ when(mMockPackageManager.checkPermission(
+ matches(Manifest.permission.CONTROL_INCALL_EXPERIENCE),
+ matches(COMPANION_PKG))).thenReturn(PackageManager.PERMISSION_DENIED);
+ when(mMockPackageManager.checkPermission(
+ matches(Manifest.permission.CONTROL_INCALL_EXPERIENCE),
+ matches(CAR_PKG))).thenReturn(PackageManager.PERMISSION_DENIED);
}
@Override
@@ -150,7 +187,8 @@
verify(mMockContext).bindServiceAsUser(
bindIntentCaptor.capture(),
any(ServiceConnection.class),
- eq(Context.BIND_AUTO_CREATE | Context.BIND_FOREGROUND_SERVICE),
+ eq(Context.BIND_AUTO_CREATE | Context.BIND_FOREGROUND_SERVICE
+ | Context.BIND_ALLOW_BACKGROUND_ACTIVITY_STARTS),
eq(UserHandle.CURRENT));
Intent bindIntent = bindIntentCaptor.getValue();
@@ -184,7 +222,8 @@
verify(mMockContext).bindServiceAsUser(
bindIntentCaptor.capture(),
any(ServiceConnection.class),
- eq(Context.BIND_AUTO_CREATE | Context.BIND_FOREGROUND_SERVICE),
+ eq(Context.BIND_AUTO_CREATE | Context.BIND_FOREGROUND_SERVICE
+ | Context.BIND_ALLOW_BACKGROUND_ACTIVITY_STARTS),
eq(UserHandle.CURRENT));
Intent bindIntent = bindIntentCaptor.getValue();
@@ -235,7 +274,8 @@
verify(mMockContext, times(1)).bindServiceAsUser(
bindIntentCaptor.capture(),
any(ServiceConnection.class),
- eq(Context.BIND_AUTO_CREATE | Context.BIND_FOREGROUND_SERVICE),
+ eq(Context.BIND_AUTO_CREATE | Context.BIND_FOREGROUND_SERVICE
+ | Context.BIND_ALLOW_BACKGROUND_ACTIVITY_STARTS),
eq(UserHandle.CURRENT));
Intent bindIntent = bindIntentCaptor.getValue();
@@ -265,7 +305,8 @@
when(mDefaultDialerCache.getDefaultDialerApplication(CURRENT_USER_ID))
.thenReturn(DEF_PKG);
when(mMockContext.bindServiceAsUser(any(Intent.class), any(ServiceConnection.class),
- eq(Context.BIND_AUTO_CREATE | Context.BIND_FOREGROUND_SERVICE),
+ eq(Context.BIND_AUTO_CREATE | Context.BIND_FOREGROUND_SERVICE
+ | Context.BIND_ALLOW_BACKGROUND_ACTIVITY_STARTS),
eq(UserHandle.CURRENT))).thenReturn(true);
when(mTimeoutsAdapter.getEmergencyCallbackWindowMillis(any(ContentResolver.class)))
.thenReturn(300_000L);
@@ -292,7 +333,8 @@
verify(mMockContext, times(1)).bindServiceAsUser(
bindIntentCaptor.capture(),
any(ServiceConnection.class),
- eq(Context.BIND_AUTO_CREATE | Context.BIND_FOREGROUND_SERVICE),
+ eq(Context.BIND_AUTO_CREATE | Context.BIND_FOREGROUND_SERVICE
+ | Context.BIND_ALLOW_BACKGROUND_ACTIVITY_STARTS),
eq(UserHandle.CURRENT));
Intent bindIntent = bindIntentCaptor.getValue();
@@ -361,7 +403,8 @@
verify(mMockContext, times(1)).bindServiceAsUser(
bindIntentCaptor.capture(),
serviceConnectionCaptor.capture(),
- eq(Context.BIND_AUTO_CREATE | Context.BIND_FOREGROUND_SERVICE),
+ eq(Context.BIND_AUTO_CREATE | Context.BIND_FOREGROUND_SERVICE
+ | Context.BIND_ALLOW_BACKGROUND_ACTIVITY_STARTS),
eq(UserHandle.CURRENT));
Intent bindIntent = bindIntentCaptor.getValue();
@@ -393,7 +436,8 @@
verify(mMockContext, times(2)).bindServiceAsUser(
bindIntentCaptor2.capture(),
any(ServiceConnection.class),
- eq(Context.BIND_AUTO_CREATE | Context.BIND_FOREGROUND_SERVICE),
+ eq(Context.BIND_AUTO_CREATE | Context.BIND_FOREGROUND_SERVICE
+ | Context.BIND_ALLOW_BACKGROUND_ACTIVITY_STARTS),
eq(UserHandle.CURRENT));
bindIntent = bindIntentCaptor2.getValue();
@@ -429,7 +473,8 @@
verify(mMockContext, times(1)).bindServiceAsUser(
bindIntentCaptor.capture(),
any(ServiceConnection.class),
- eq(Context.BIND_AUTO_CREATE | Context.BIND_FOREGROUND_SERVICE),
+ eq(Context.BIND_AUTO_CREATE | Context.BIND_FOREGROUND_SERVICE
+ | Context.BIND_ALLOW_BACKGROUND_ACTIVITY_STARTS),
eq(UserHandle.CURRENT));
Intent bindIntent = bindIntentCaptor.getValue();
@@ -467,7 +512,8 @@
verify(mMockContext, times(1)).bindServiceAsUser(
bindIntentCaptor.capture(),
serviceConnectionCaptor.capture(),
- eq(Context.BIND_AUTO_CREATE | Context.BIND_FOREGROUND_SERVICE),
+ eq(Context.BIND_AUTO_CREATE | Context.BIND_FOREGROUND_SERVICE
+ | Context.BIND_ALLOW_BACKGROUND_ACTIVITY_STARTS),
eq(UserHandle.CURRENT));
// Pretend that the call has gone away.
@@ -493,6 +539,204 @@
verify(mockInCallService).addCall(any(ParcelableCall.class));
}
+ /**
+ * Ensures that the {@link InCallController} will bind to an {@link InCallService} which
+ * supports third party companion calls.
+ */
+ @MediumTest
+ @Test
+ public void testBindToService_Companion() throws Exception {
+ setupMocks(true /* isExternalCall */);
+ setupMockPackageManager(true /* default */, true /* system */, true /* external calls */);
+
+ List<String> companionAppsList = new ArrayList<>();
+ companionAppsList.add(COMPANION_PKG);
+ companionAppsList.add(COMPANION_PKG);
+ when(mMockRoleManagerAdapter.getCallCompanionApps()).thenReturn(companionAppsList);
+ mInCallController.bindToServices(mMockCall);
+
+ // Query for the different InCallServices
+ ArgumentCaptor<Intent> queryIntentCaptor = ArgumentCaptor.forClass(Intent.class);
+ verify(mMockPackageManager, times(6)).queryIntentServicesAsUser(
+ queryIntentCaptor.capture(),
+ eq(PackageManager.GET_META_DATA), eq(CURRENT_USER_ID));
+ // Verify call for default dialer InCallService
+ assertEquals(DEF_PKG, queryIntentCaptor.getAllValues().get(0).getPackage());
+ // Verify call for system dialer InCallService
+ assertEquals(null, queryIntentCaptor.getAllValues().get(1).getPackage());
+ // Verify call for car mode ui InCallServices
+ assertEquals(null, queryIntentCaptor.getAllValues().get(2).getPackage());
+ // Verify call for non-UI InCallServices
+ assertEquals(null, queryIntentCaptor.getAllValues().get(3).getPackage());
+ // Verify call for companion InCallServices
+ assertEquals(COMPANION_PKG, queryIntentCaptor.getAllValues().get(4).getPackage());
+ assertEquals(COMPANION_PKG, queryIntentCaptor.getAllValues().get(5).getPackage());
+
+ // Bind InCallServices
+ ArgumentCaptor<Intent> bindIntentCaptor = ArgumentCaptor.forClass(Intent.class);
+ verify(mMockContext, times(3)).bindServiceAsUser(
+ bindIntentCaptor.capture(),
+ any(ServiceConnection.class),
+ eq(Context.BIND_AUTO_CREATE | Context.BIND_FOREGROUND_SERVICE
+ | Context.BIND_ALLOW_BACKGROUND_ACTIVITY_STARTS),
+ eq(UserHandle.CURRENT));
+ // Verify bind dialer
+ Intent bindIntent = bindIntentCaptor.getAllValues().get(0);
+ assertEquals(InCallService.SERVICE_INTERFACE, bindIntent.getAction());
+ assertEquals(DEF_PKG, bindIntent.getComponent().getPackageName());
+ assertEquals(DEF_CLASS, bindIntent.getComponent().getClassName());
+ // Verify bind companion apps
+ bindIntent = bindIntentCaptor.getAllValues().get(1);
+ assertEquals(InCallService.SERVICE_INTERFACE, bindIntent.getAction());
+ assertEquals(COMPANION_PKG, bindIntent.getComponent().getPackageName());
+ assertEquals(COMPANION_CLASS, bindIntent.getComponent().getClassName());
+ bindIntent = bindIntentCaptor.getAllValues().get(2);
+ assertEquals(InCallService.SERVICE_INTERFACE, bindIntent.getAction());
+ assertEquals(COMPANION_PKG, bindIntent.getComponent().getPackageName());
+ assertEquals(COMPANION_CLASS, bindIntent.getComponent().getClassName());
+ }
+
+ /**
+ * Ensures that the {@link InCallController} will bind to an {@link InCallService} which
+ * supports third party car mode ui calls
+ */
+ @MediumTest
+ @Test
+ public void testBindToService_CarModeUI() throws Exception {
+ setupMocks(true /* isExternalCall */);
+ setupMockPackageManager(true /* default */, true /* system */, true /* external calls */);
+
+ when(mMockRoleManagerAdapter.getCarModeDialerApp()).thenReturn(CAR_PKG);
+ // Enable car mode
+ when(mMockSystemStateHelper.isCarMode()).thenReturn(true);
+ mInCallController.bindToServices(mMockCall);
+
+ // Query for the different InCallServices
+ ArgumentCaptor<Intent> queryIntentCaptor = ArgumentCaptor.forClass(Intent.class);
+ verify(mMockPackageManager, times(4)).queryIntentServicesAsUser(
+ queryIntentCaptor.capture(),
+ eq(PackageManager.GET_META_DATA), eq(CURRENT_USER_ID));
+ // Verify call for default dialer InCallService
+ assertEquals(DEF_PKG, queryIntentCaptor.getAllValues().get(0).getPackage());
+ // Verify call for system dialer InCallService
+ assertEquals(null, queryIntentCaptor.getAllValues().get(1).getPackage());
+ // Verify call for car mode ui InCallServices
+ assertEquals(CAR_PKG, queryIntentCaptor.getAllValues().get(2).getPackage());
+ // Verify call for non-UI InCallServices
+ assertEquals(null, queryIntentCaptor.getAllValues().get(3).getPackage());
+
+ // Bind InCallServices
+ ArgumentCaptor<Intent> bindIntentCaptor = ArgumentCaptor.forClass(Intent.class);
+ verify(mMockContext, times(1)).bindServiceAsUser(
+ bindIntentCaptor.capture(),
+ any(ServiceConnection.class),
+ eq(Context.BIND_AUTO_CREATE | Context.BIND_FOREGROUND_SERVICE
+ | Context.BIND_ALLOW_BACKGROUND_ACTIVITY_STARTS),
+ eq(UserHandle.CURRENT));
+ // Verify bind car mode ui
+ assertEquals(1, bindIntentCaptor.getAllValues().size());
+ Intent bindIntent = bindIntentCaptor.getAllValues().get(0);
+ assertEquals(InCallService.SERVICE_INTERFACE, bindIntent.getAction());
+ assertEquals(CAR_PKG, bindIntent.getComponent().getPackageName());
+ assertEquals(CAR_CLASS, bindIntent.getComponent().getClassName());
+ }
+
+ @MediumTest
+ @Test
+ public void testNoBindToInvalidService_CarModeUI() throws Exception {
+ setupMocks(true /* isExternalCall */);
+ setupMockPackageManager(true /* default */, true /* system */, true /* external calls */);
+
+ when(mMockRoleManagerAdapter.getCarModeDialerApp()).thenReturn(CAR_PKG);
+ when(mMockPackageManager.checkPermission(
+ matches(Manifest.permission.CALL_COMPANION_APP),
+ matches(CAR_PKG))).thenReturn(PackageManager.PERMISSION_DENIED);
+ // Enable car mode
+ when(mMockSystemStateHelper.isCarMode()).thenReturn(true);
+ mInCallController.bindToServices(mMockCall);
+
+ // Query for the different InCallServices
+ ArgumentCaptor<Intent> queryIntentCaptor = ArgumentCaptor.forClass(Intent.class);
+ verify(mMockPackageManager, times(4)).queryIntentServicesAsUser(
+ queryIntentCaptor.capture(),
+ eq(PackageManager.GET_META_DATA), eq(CURRENT_USER_ID));
+ // Verify call for default dialer InCallService
+ assertEquals(DEF_PKG, queryIntentCaptor.getAllValues().get(0).getPackage());
+ // Verify call for system dialer InCallService
+ assertEquals(null, queryIntentCaptor.getAllValues().get(1).getPackage());
+ // Verify call for invalid car mode ui InCallServices
+ assertEquals(CAR_PKG, queryIntentCaptor.getAllValues().get(2).getPackage());
+ // Verify call for non-UI InCallServices
+ assertEquals(null, queryIntentCaptor.getAllValues().get(3).getPackage());
+
+ // Bind InCallServices
+ ArgumentCaptor<Intent> bindIntentCaptor = ArgumentCaptor.forClass(Intent.class);
+ verify(mMockContext, times(1)).bindServiceAsUser(
+ bindIntentCaptor.capture(),
+ any(ServiceConnection.class),
+ eq(Context.BIND_AUTO_CREATE | Context.BIND_FOREGROUND_SERVICE
+ | Context.BIND_ALLOW_BACKGROUND_ACTIVITY_STARTS),
+ eq(UserHandle.CURRENT));
+ // Verify bind to default package, instead of the invalid car mode ui.
+ assertEquals(1, bindIntentCaptor.getAllValues().size());
+ Intent bindIntent = bindIntentCaptor.getAllValues().get(0);
+ assertEquals(InCallService.SERVICE_INTERFACE, bindIntent.getAction());
+ assertEquals(DEF_PKG, bindIntent.getComponent().getPackageName());
+ assertEquals(DEF_CLASS, bindIntent.getComponent().getClassName());
+ }
+
+ /**
+ * Make sure the InCallController completes its binding future when the in call service
+ * finishes binding.
+ */
+ @MediumTest
+ @Test
+ public void testBindingFuture() throws Exception {
+ when(mMockCallsManager.getCurrentUserHandle()).thenReturn(mUserHandle);
+ when(mMockContext.getPackageManager()).thenReturn(mMockPackageManager);
+ when(mMockCallsManager.hasEmergencyCall()).thenReturn(false);
+ when(mMockCall.isIncoming()).thenReturn(false);
+ when(mMockCall.isExternalCall()).thenReturn(false);
+ when(mDefaultDialerCache.getDefaultDialerApplication(CURRENT_USER_ID)).thenReturn(DEF_PKG);
+ when(mMockContext.bindServiceAsUser(nullable(Intent.class),
+ nullable(ServiceConnection.class), anyInt(), nullable(UserHandle.class)))
+ .thenReturn(true);
+ when(mTimeoutsAdapter.getCallRemoveUnbindInCallServicesDelay(
+ nullable(ContentResolver.class))).thenReturn(500L);
+
+ when(mMockCallsManager.getCalls()).thenReturn(Collections.singletonList(mMockCall));
+ setupMockPackageManager(true /* default */, true /* system */, false /* external calls */);
+ mInCallController.bindToServices(mMockCall);
+
+ ArgumentCaptor<Intent> bindIntentCaptor = ArgumentCaptor.forClass(Intent.class);
+ ArgumentCaptor<ServiceConnection> serviceConnectionCaptor =
+ ArgumentCaptor.forClass(ServiceConnection.class);
+ verify(mMockContext, times(1)).bindServiceAsUser(
+ bindIntentCaptor.capture(),
+ serviceConnectionCaptor.capture(),
+ eq(Context.BIND_AUTO_CREATE | Context.BIND_FOREGROUND_SERVICE
+ | Context.BIND_ALLOW_BACKGROUND_ACTIVITY_STARTS),
+ eq(UserHandle.CURRENT));
+
+ CompletableFuture<Boolean> bindTimeout = mInCallController.getBindingFuture();
+
+ assertFalse(bindTimeout.isDone());
+
+ // Start the connection, make sure we don't unbind, and make sure that we don't send
+ // anything to the in-call service yet.
+ ServiceConnection serviceConnection = serviceConnectionCaptor.getValue();
+ ComponentName defDialerComponentName = new ComponentName(DEF_PKG, DEF_CLASS);
+ IBinder mockBinder = mock(IBinder.class);
+ IInCallService mockInCallService = mock(IInCallService.class);
+ when(mockBinder.queryLocalInterface(anyString())).thenReturn(mockInCallService);
+
+ serviceConnection.onServiceConnected(defDialerComponentName, mockBinder);
+ verify(mockInCallService).setInCallAdapter(nullable(IInCallAdapter.class));
+
+ // Make sure that the future completed without timing out.
+ assertTrue(bindTimeout.getNow(false));
+ }
+
private void setupMocks(boolean isExternalCall) {
when(mMockCallsManager.getCurrentUserHandle()).thenReturn(mUserHandle);
when(mMockContext.getPackageManager()).thenReturn(mMockPackageManager);
@@ -521,6 +765,22 @@
}};
}
+ private ResolveInfo getCarModeResolveinfo(final boolean includeExternalCalls) {
+ return new ResolveInfo() {{
+ serviceInfo = new ServiceInfo();
+ serviceInfo.packageName = CAR_PKG;
+ serviceInfo.name = CAR_CLASS;
+ serviceInfo.permission = Manifest.permission.BIND_INCALL_SERVICE;
+ serviceInfo.metaData = new Bundle();
+ serviceInfo.metaData.putBoolean(
+ TelecomManager.METADATA_IN_CALL_SERVICE_CAR_MODE_UI, true);
+ if (includeExternalCalls) {
+ serviceInfo.metaData.putBoolean(
+ TelecomManager.METADATA_INCLUDE_EXTERNAL_CALLS, true);
+ }
+ }};
+ }
+
private ResolveInfo getSysResolveinfo() {
return new ResolveInfo() {{
serviceInfo = new ServiceInfo();
@@ -530,6 +790,15 @@
}};
}
+ private ResolveInfo getCompanionResolveinfo() {
+ return new ResolveInfo() {{
+ serviceInfo = new ServiceInfo();
+ serviceInfo.packageName = COMPANION_PKG;
+ serviceInfo.name = COMPANION_CLASS;
+ serviceInfo.permission = Manifest.permission.BIND_INCALL_SERVICE;
+ }};
+ }
+
private void setupMockPackageManager(final boolean useDefaultDialer,
final boolean useSystemDialer, final boolean includeExternalCalls) {
@@ -545,15 +814,21 @@
}
LinkedList<ResolveInfo> resolveInfo = new LinkedList<ResolveInfo>();
if (!TextUtils.isEmpty(packageName)) {
- if ((TextUtils.isEmpty(packageName) || packageName.equals(DEF_PKG)) &&
- useDefaultDialer) {
+ if (packageName.equals(DEF_PKG) && useDefaultDialer) {
resolveInfo.add(getDefResolveInfo(includeExternalCalls));
}
- if ((TextUtils.isEmpty(packageName) || packageName.equals(SYS_PKG)) &&
- useSystemDialer) {
+ if (packageName.equals(SYS_PKG) && useSystemDialer) {
resolveInfo.add(getSysResolveinfo());
}
+
+ if (packageName.equals(COMPANION_PKG)) {
+ resolveInfo.add(getCompanionResolveinfo());
+ }
+
+ if (packageName.equals(CAR_PKG)) {
+ resolveInfo.add(getCarModeResolveinfo(includeExternalCalls));
+ }
}
return resolveInfo;
}
diff --git a/tests/src/com/android/server/telecom/tests/InCallServiceFixture.java b/tests/src/com/android/server/telecom/tests/InCallServiceFixture.java
index 69fcdd8..d114cb8 100644
--- a/tests/src/com/android/server/telecom/tests/InCallServiceFixture.java
+++ b/tests/src/com/android/server/telecom/tests/InCallServiceFixture.java
@@ -76,7 +76,11 @@
@Override
public void updateCall(ParcelableCall call) throws RemoteException {
if (!mCallById.containsKey(call.getId())) {
- throw new RuntimeException("Call " + call.getId() + " not added yet");
+ // This used to throw an exception, however the actual InCallService implementation
+ // ignores updates for calls which don't yet exist. This is not a problem as when
+ // a call is added to an InCallService its entire state is parceled and sent to the
+ // InCallService.
+ return;
}
mLatestCallId = call.getId();
mCallById.put(call.getId(), call);
diff --git a/tests/src/com/android/server/telecom/tests/InCallTonePlayerTest.java b/tests/src/com/android/server/telecom/tests/InCallTonePlayerTest.java
new file mode 100644
index 0000000..cb0497a
--- /dev/null
+++ b/tests/src/com/android/server/telecom/tests/InCallTonePlayerTest.java
@@ -0,0 +1,148 @@
+/*
+ * Copyright (C) 2018 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 static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.timeout;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.media.MediaPlayer;
+import android.media.ToneGenerator;
+import android.test.suitebuilder.annotation.SmallTest;
+
+import androidx.test.filters.FlakyTest;
+
+import com.android.server.telecom.CallAudioManager;
+import com.android.server.telecom.CallAudioRoutePeripheralAdapter;
+import com.android.server.telecom.InCallTonePlayer;
+import com.android.server.telecom.TelecomSystem;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+import org.mockito.Mock;
+
+@RunWith(JUnit4.class)
+public class InCallTonePlayerTest extends TelecomTestCase {
+
+ private InCallTonePlayer.Factory mFactory;
+
+ @Mock
+ private CallAudioRoutePeripheralAdapter mCallAudioRoutePeripheralAdapter;
+
+ @Mock
+ private TelecomSystem.SyncRoot mLock;
+
+ @Mock
+ private ToneGenerator mToneGenerator;
+
+ @Mock
+ private InCallTonePlayer.ToneGeneratorFactory mToneGeneratorFactory;
+
+ private InCallTonePlayer.MediaPlayerAdapter mMediaPlayerAdapter =
+ new InCallTonePlayer.MediaPlayerAdapter() {
+ private MediaPlayer.OnCompletionListener mListener;
+
+ @Override
+ public void setLooping(boolean isLooping) {
+ // Do nothing.
+ }
+
+ @Override
+ public void setOnCompletionListener(MediaPlayer.OnCompletionListener listener) {
+ mListener = listener;
+ }
+
+ @Override
+ public void start() {
+ mListener.onCompletion(null);
+ }
+
+ @Override
+ public void release() {
+ // Do nothing.
+ }
+
+ @Override
+ public int getDuration() {
+ return 0;
+ }
+ };
+
+ @Mock
+ private InCallTonePlayer.MediaPlayerFactory mMediaPlayerFactory;
+
+ @Mock
+ private InCallTonePlayer.AudioManagerAdapter mAudioManagerAdapter;
+
+ @Mock
+ private CallAudioManager mCallAudioManager;
+
+ private InCallTonePlayer mInCallTonePlayer;
+
+ @Override
+ @Before
+ public void setUp() throws Exception {
+ super.setUp();
+
+ when(mToneGeneratorFactory.get(anyInt(), anyInt())).thenReturn(mToneGenerator);
+ when(mMediaPlayerFactory.get(anyInt(), any())).thenReturn(mMediaPlayerAdapter);
+
+ mFactory = new InCallTonePlayer.Factory(mCallAudioRoutePeripheralAdapter, mLock,
+ mToneGeneratorFactory, mMediaPlayerFactory, mAudioManagerAdapter);
+ mFactory.setCallAudioManager(mCallAudioManager);
+ mInCallTonePlayer = mFactory.createPlayer(InCallTonePlayer.TONE_CALL_ENDED);
+ }
+
+ @Override
+ @After
+ public void tearDown() throws Exception {
+ super.tearDown();
+ mInCallTonePlayer.cleanup();
+ }
+
+ @SmallTest
+ @Test
+ public void testNoEndCallToneInSilence() {
+ when(mAudioManagerAdapter.isVolumeOverZero()).thenReturn(false);
+ assertFalse(mInCallTonePlayer.startTone());
+
+ // Verify we didn't play a tone.
+ verify(mCallAudioManager, never()).setIsTonePlaying(eq(true));
+ verify(mMediaPlayerFactory, never()).get(anyInt(), any());
+ }
+
+ @FlakyTest
+ @SmallTest
+ @Test
+ public void testEndCallToneWhenNotSilenced() {
+ when(mAudioManagerAdapter.isVolumeOverZero()).thenReturn(true);
+ assertTrue(mInCallTonePlayer.startTone());
+
+ // Verify we did play a tone.
+ verify(mMediaPlayerFactory, timeout(5000)).get(anyInt(), any());
+ verify(mCallAudioManager).setIsTonePlaying(eq(true));
+ }
+}
diff --git a/tests/src/com/android/server/telecom/tests/IncomingCallFilterTest.java b/tests/src/com/android/server/telecom/tests/IncomingCallFilterTest.java
index d975ec2..e399088 100644
--- a/tests/src/com/android/server/telecom/tests/IncomingCallFilterTest.java
+++ b/tests/src/com/android/server/telecom/tests/IncomingCallFilterTest.java
@@ -19,6 +19,7 @@
import android.content.ContentResolver;
import android.content.IContentProvider;
import android.net.Uri;
+import android.provider.CallLog;
import android.test.suitebuilder.annotation.SmallTest;
import com.android.server.telecom.Call;
@@ -55,6 +56,7 @@
@Mock private IncomingCallFilter.CallFilter mFilter1;
@Mock private IncomingCallFilter.CallFilter mFilter2;
@Mock private IncomingCallFilter.CallFilter mFilter3;
+ @Mock private IncomingCallFilter.CallFilter mFilter4;
@Mock private Timeouts.Adapter mTimeoutsAdapter;
@@ -62,7 +64,7 @@
private static final long LONG_TIMEOUT = 1000000;
private static final long SHORT_TIMEOUT = 100;
- private static final CallFilteringResult RESULT1 =
+ private static final CallFilteringResult PASS_CALL_RESULT =
new CallFilteringResult(
true, // shouldAllowCall
false, // shouldReject
@@ -70,23 +72,41 @@
true // shouldShowNotification
);
- private static final CallFilteringResult RESULT2 =
- new CallFilteringResult(
- false, // shouldAllowCall
- true, // shouldReject
- false, // shouldAddToCallLog
- true // shouldShowNotification
- );
-
- private static final CallFilteringResult RESULT3 =
+ private static final CallFilteringResult ASYNC_BLOCK_CHECK_BLOCK_RESULT =
new CallFilteringResult(
false, // shouldAllowCall
true, // shouldReject
true, // shouldAddToCallLog
- false // shouldShowNotification
+ false, // shouldShowNotification
+ CallLog.Calls.BLOCK_REASON_BLOCKED_NUMBER, //callBlockReason
+ null, //callScreeningAppName
+ null //callScreeningComponentName
);
- private static final CallFilteringResult DEFAULT_RESULT = RESULT1;
+ private static final CallFilteringResult DIRECT_TO_VOICEMAIL_CALL_BLOCK_RESULT =
+ new CallFilteringResult(
+ false, // shouldAllowCall
+ true, // shouldReject
+ true, // shouldAddToCallLog
+ true, // shouldShowNotification
+ CallLog.Calls.BLOCK_REASON_DIRECT_TO_VOICEMAIL, //callBlockReason
+ null, //callScreeningAppName
+ null //callScreeningComponentName
+ );
+
+ private static final CallFilteringResult CALL_SCREENING_SERVICE_BLOCK_RESULT =
+ new CallFilteringResult(
+ false, // shouldAllowCall
+ true, // shouldReject
+ false, // shouldAddToCallLog
+ true, // shouldShowNotification
+ CallLog.Calls.BLOCK_REASON_CALL_SCREENING_SERVICE, //callBlockReason
+ "com.android.thirdparty", //callScreeningAppName
+ "com.android.thirdparty/com.android.thirdparty.callscreeningserviceimpl"
+ //callScreeningComponentName
+ );
+
+ private static final CallFilteringResult DEFAULT_RESULT = PASS_CALL_RESULT;
@Override
@Before
@@ -99,20 +119,97 @@
@SmallTest
@Test
- public void testSingleFilter() {
+ public void testAsyncBlockCallResultFilter() {
IncomingCallFilter testFilter = new IncomingCallFilter(mContext, mResultCallback, mCall,
mLock, mTimeoutsAdapter, Collections.singletonList(mFilter1));
testFilter.performFiltering();
verify(mFilter1).startFilterLookup(mCall, testFilter);
- testFilter.onCallFilteringComplete(mCall, RESULT1);
+ testFilter.onCallFilteringComplete(mCall, ASYNC_BLOCK_CHECK_BLOCK_RESULT);
waitForHandlerAction(testFilter.getHandler(), SHORT_TIMEOUT * 2);
- verify(mResultCallback).onCallFilteringComplete(eq(mCall), eq(RESULT1));
+ verify(mResultCallback).onCallFilteringComplete(eq(mCall), eq
+ (ASYNC_BLOCK_CHECK_BLOCK_RESULT));
}
@SmallTest
@Test
- public void testMultipleFilters() {
+ public void testDirectToVoiceMailCallResultFilter() {
+ IncomingCallFilter testFilter = new IncomingCallFilter(mContext, mResultCallback, mCall,
+ mLock, mTimeoutsAdapter, Collections.singletonList(mFilter1));
+ testFilter.performFiltering();
+ verify(mFilter1).startFilterLookup(mCall, testFilter);
+
+ testFilter.onCallFilteringComplete(mCall, DIRECT_TO_VOICEMAIL_CALL_BLOCK_RESULT);
+ waitForHandlerAction(testFilter.getHandler(), SHORT_TIMEOUT * 2);
+ verify(mResultCallback).onCallFilteringComplete(eq(mCall), eq
+ (DIRECT_TO_VOICEMAIL_CALL_BLOCK_RESULT));
+ }
+
+ @SmallTest
+ @Test
+ public void testCallScreeningServiceBlockCallResultFilter() {
+ IncomingCallFilter testFilter = new IncomingCallFilter(mContext, mResultCallback, mCall,
+ mLock, mTimeoutsAdapter, Collections.singletonList(mFilter1));
+ testFilter.performFiltering();
+ verify(mFilter1).startFilterLookup(mCall, testFilter);
+
+ testFilter.onCallFilteringComplete(mCall, CALL_SCREENING_SERVICE_BLOCK_RESULT);
+ waitForHandlerAction(testFilter.getHandler(), SHORT_TIMEOUT * 2);
+ verify(mResultCallback).onCallFilteringComplete(eq(mCall), eq
+ (CALL_SCREENING_SERVICE_BLOCK_RESULT));
+ }
+
+ @SmallTest
+ @Test
+ public void testPassCallResultFilter() {
+ IncomingCallFilter testFilter = new IncomingCallFilter(mContext, mResultCallback, mCall,
+ mLock, mTimeoutsAdapter, Collections.singletonList(mFilter1));
+ testFilter.performFiltering();
+ verify(mFilter1).startFilterLookup(mCall, testFilter);
+
+ testFilter.onCallFilteringComplete(mCall, PASS_CALL_RESULT);
+ waitForHandlerAction(testFilter.getHandler(), SHORT_TIMEOUT * 2);
+ verify(mResultCallback).onCallFilteringComplete(eq(mCall), eq(PASS_CALL_RESULT));
+ }
+
+ @SmallTest
+ @Test
+ public void testMultipleFiltersForAsyncBlockCheckFilter() {
+ List<IncomingCallFilter.CallFilter> filters =
+ new ArrayList<IncomingCallFilter.CallFilter>() {{
+ add(mFilter1);
+ add(mFilter2);
+ add(mFilter3);
+ add(mFilter4);
+ }};
+ IncomingCallFilter testFilter = new IncomingCallFilter(mContext, mResultCallback, mCall,
+ mLock, mTimeoutsAdapter, filters);
+ testFilter.performFiltering();
+ verify(mFilter1).startFilterLookup(mCall, testFilter);
+ verify(mFilter2).startFilterLookup(mCall, testFilter);
+ verify(mFilter3).startFilterLookup(mCall, testFilter);
+ verify(mFilter4).startFilterLookup(mCall, testFilter);
+
+ testFilter.onCallFilteringComplete(mCall, PASS_CALL_RESULT);
+ testFilter.onCallFilteringComplete(mCall, ASYNC_BLOCK_CHECK_BLOCK_RESULT);
+ testFilter.onCallFilteringComplete(mCall, DIRECT_TO_VOICEMAIL_CALL_BLOCK_RESULT);
+ testFilter.onCallFilteringComplete(mCall, CALL_SCREENING_SERVICE_BLOCK_RESULT);
+ waitForHandlerAction(testFilter.getHandler(), SHORT_TIMEOUT * 2);
+ verify(mResultCallback).onCallFilteringComplete(eq(mCall), eq(
+ new CallFilteringResult(
+ false, // shouldAllowCall
+ true, // shouldReject
+ false, // shouldAddToCallLog
+ false, // shouldShowNotification
+ CallLog.Calls.BLOCK_REASON_BLOCKED_NUMBER, //callBlockReason
+ null, //callScreeningAppName
+ null //callScreeningComponentName
+ )));
+ }
+
+ @SmallTest
+ @Test
+ public void testMultipleFiltersForDirectToVoicemailCallFilter() {
List<IncomingCallFilter.CallFilter> filters =
new ArrayList<IncomingCallFilter.CallFilter>() {{
add(mFilter1);
@@ -126,16 +223,49 @@
verify(mFilter2).startFilterLookup(mCall, testFilter);
verify(mFilter3).startFilterLookup(mCall, testFilter);
- testFilter.onCallFilteringComplete(mCall, RESULT1);
- testFilter.onCallFilteringComplete(mCall, RESULT2);
- testFilter.onCallFilteringComplete(mCall, RESULT3);
+ testFilter.onCallFilteringComplete(mCall, PASS_CALL_RESULT);
+ testFilter.onCallFilteringComplete(mCall, DIRECT_TO_VOICEMAIL_CALL_BLOCK_RESULT);
+ testFilter.onCallFilteringComplete(mCall, CALL_SCREENING_SERVICE_BLOCK_RESULT);
waitForHandlerAction(testFilter.getHandler(), SHORT_TIMEOUT * 2);
verify(mResultCallback).onCallFilteringComplete(eq(mCall), eq(
new CallFilteringResult(
false, // shouldAllowCall
true, // shouldReject
false, // shouldAddToCallLog
- false // shouldShowNotification
+ true, // shouldShowNotification
+ CallLog.Calls.BLOCK_REASON_DIRECT_TO_VOICEMAIL, //callBlockReason
+ null, ////callScreeningAppName
+ null ////callScreeningComponentName
+ )));
+ }
+
+ @SmallTest
+ @Test
+ public void testMultipleFiltersForCallScreeningServiceFilter() {
+ List<IncomingCallFilter.CallFilter> filters =
+ new ArrayList<IncomingCallFilter.CallFilter>() {{
+ add(mFilter1);
+ add(mFilter2);
+ }};
+ IncomingCallFilter testFilter = new IncomingCallFilter(mContext, mResultCallback, mCall,
+ mLock, mTimeoutsAdapter, filters);
+ testFilter.performFiltering();
+ verify(mFilter1).startFilterLookup(mCall, testFilter);
+ verify(mFilter2).startFilterLookup(mCall, testFilter);
+
+ testFilter.onCallFilteringComplete(mCall, PASS_CALL_RESULT);
+ testFilter.onCallFilteringComplete(mCall, CALL_SCREENING_SERVICE_BLOCK_RESULT);
+ waitForHandlerAction(testFilter.getHandler(), SHORT_TIMEOUT * 2);
+ verify(mResultCallback).onCallFilteringComplete(eq(mCall), eq(
+ new CallFilteringResult(
+ false, // shouldAllowCall
+ true, // shouldReject
+ false, // shouldAddToCallLog
+ true, // shouldShowNotification
+ CallLog.Calls.BLOCK_REASON_CALL_SCREENING_SERVICE, //callBlockReason
+ "com.android.thirdparty", //callScreeningAppName
+ "com.android.thirdparty/com.android.thirdparty.callscreeningserviceimpl"
+ //callScreeningComponentName
)));
}
@@ -148,7 +278,7 @@
testFilter.performFiltering();
verify(mResultCallback, timeout((int) SHORT_TIMEOUT * 2)).onCallFilteringComplete(eq(mCall),
eq(DEFAULT_RESULT));
- testFilter.onCallFilteringComplete(mCall, RESULT1);
+ testFilter.onCallFilteringComplete(mCall, PASS_CALL_RESULT);
waitForHandlerAction(testFilter.getHandler(), SHORT_TIMEOUT * 2);
// verify that we don't report back again with the result
verify(mResultCallback, atMost(1)).onCallFilteringComplete(any(Call.class),
@@ -162,7 +292,7 @@
IncomingCallFilter testFilter = new IncomingCallFilter(mContext, mResultCallback, mCall,
mLock, mTimeoutsAdapter, Collections.singletonList(mFilter1));
testFilter.performFiltering();
- testFilter.onCallFilteringComplete(mCall, RESULT1);
+ testFilter.onCallFilteringComplete(mCall, PASS_CALL_RESULT);
waitForHandlerAction(testFilter.getHandler(), SHORT_TIMEOUT * 2);
Thread.sleep(SHORT_TIMEOUT);
verify(mResultCallback, atMost(1)).onCallFilteringComplete(any(Call.class),
@@ -172,9 +302,13 @@
@SmallTest
@Test
public void testToString() {
- assertEquals("[Allow, logged, notified]", RESULT1.toString());
- assertEquals("[Reject, notified]", RESULT2.toString());
- assertEquals("[Reject, logged]", RESULT3.toString());
+ assertEquals("[Allow, logged, notified]", PASS_CALL_RESULT.toString());
+ assertEquals("[Reject, notified, mCallBlockReason = 1, mCallScreeningAppName = com" +
+ ".android.thirdparty, mCallScreeningComponentName = com.android.thirdparty/com" +
+ ".android.thirdparty.callscreeningserviceimpl]",
+ CALL_SCREENING_SERVICE_BLOCK_RESULT.toString());
+ assertEquals("[Reject, logged, mCallBlockReason = 3]",
+ ASYNC_BLOCK_CHECK_BLOCK_RESULT.toString());
}
private void setTimeoutLength(long length) throws Exception {
diff --git a/tests/src/com/android/server/telecom/tests/IncomingCallNotifierTest.java b/tests/src/com/android/server/telecom/tests/IncomingCallNotifierTest.java
index 6419bba..f54783e 100644
--- a/tests/src/com/android/server/telecom/tests/IncomingCallNotifierTest.java
+++ b/tests/src/com/android/server/telecom/tests/IncomingCallNotifierTest.java
@@ -98,7 +98,7 @@
@SmallTest
@Test
public void testIncomingDuringOngoingCall() {
- when(mCallsManagerProxy.hasCallsForOtherPhoneAccount(any())).thenReturn(false);
+ when(mCallsManagerProxy.hasUnholdableCallsForOtherConnectionService(any())).thenReturn(false);
mIncomingCallNotifier.onCallAdded(mRingingCall);
verify(mNotificationManager, never()).notify(eq(IncomingCallNotifier.NOTIFICATION_TAG),
eq(IncomingCallNotifier.NOTIFICATION_INCOMING_CALL), any());
@@ -110,8 +110,8 @@
@SmallTest
@Test
public void testIncomingDuringOngoingCall2() {
- when(mCallsManagerProxy.hasCallsForOtherPhoneAccount(any())).thenReturn(false);
- when(mCallsManagerProxy.getNumCallsForOtherPhoneAccount(any())).thenReturn(0);
+ when(mCallsManagerProxy.hasUnholdableCallsForOtherConnectionService(any())).thenReturn(false);
+ when(mCallsManagerProxy.getNumUnholdableCallsForOtherConnectionService(any())).thenReturn(0);
when(mCallsManagerProxy.getActiveCall()).thenReturn(mAudioCall);
mIncomingCallNotifier.onCallAdded(mAudioCall);
@@ -126,8 +126,8 @@
@SmallTest
@Test
public void testCallRemoved() {
- when(mCallsManagerProxy.hasCallsForOtherPhoneAccount(any())).thenReturn(true);
- when(mCallsManagerProxy.getNumCallsForOtherPhoneAccount(any())).thenReturn(1);
+ when(mCallsManagerProxy.hasUnholdableCallsForOtherConnectionService(any())).thenReturn(true);
+ when(mCallsManagerProxy.getNumUnholdableCallsForOtherConnectionService(any())).thenReturn(1);
when(mCallsManagerProxy.getActiveCall()).thenReturn(mAudioCall);
mIncomingCallNotifier.onCallAdded(mAudioCall);
@@ -145,8 +145,8 @@
@SmallTest
@Test
public void testDontShowDuringHandover1() {
- when(mCallsManagerProxy.hasCallsForOtherPhoneAccount(any())).thenReturn(true);
- when(mCallsManagerProxy.getNumCallsForOtherPhoneAccount(any())).thenReturn(1);
+ when(mCallsManagerProxy.hasUnholdableCallsForOtherConnectionService(any())).thenReturn(true);
+ when(mCallsManagerProxy.getNumUnholdableCallsForOtherConnectionService(any())).thenReturn(1);
when(mCallsManagerProxy.getActiveCall()).thenReturn(mAudioCall);
when(mRingingCall.getHandoverState()).thenReturn(HandoverState.HANDOVER_FROM_STARTED);
@@ -164,8 +164,8 @@
@SmallTest
@Test
public void testDontShowDuringHandover2() {
- when(mCallsManagerProxy.hasCallsForOtherPhoneAccount(any())).thenReturn(true);
- when(mCallsManagerProxy.getNumCallsForOtherPhoneAccount(any())).thenReturn(1);
+ when(mCallsManagerProxy.hasUnholdableCallsForOtherConnectionService(any())).thenReturn(true);
+ when(mCallsManagerProxy.getNumUnholdableCallsForOtherConnectionService(any())).thenReturn(1);
when(mCallsManagerProxy.getActiveCall()).thenReturn(mAudioCall);
when(mRingingCall.getHandoverState()).thenReturn(HandoverState.HANDOVER_COMPLETE);
diff --git a/tests/src/com/android/server/telecom/tests/NewOutgoingCallIntentBroadcasterTest.java b/tests/src/com/android/server/telecom/tests/NewOutgoingCallIntentBroadcasterTest.java
index 4c0e76a..81b4326 100644
--- a/tests/src/com/android/server/telecom/tests/NewOutgoingCallIntentBroadcasterTest.java
+++ b/tests/src/com/android/server/telecom/tests/NewOutgoingCallIntentBroadcasterTest.java
@@ -16,37 +16,6 @@
package com.android.server.telecom.tests;
-import android.Manifest;
-import android.app.Activity;
-import android.app.AppOpsManager;
-import android.content.BroadcastReceiver;
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.Intent;
-import android.net.Uri;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.UserHandle;
-import android.telecom.GatewayInfo;
-import android.telecom.TelecomManager;
-import android.telecom.VideoProfile;
-import android.telephony.DisconnectCause;
-import android.test.suitebuilder.annotation.SmallTest;
-
-import com.android.server.telecom.Call;
-import com.android.server.telecom.CallsManager;
-import com.android.server.telecom.NewOutgoingCallIntentBroadcaster;
-import com.android.server.telecom.PhoneNumberUtilsAdapter;
-import com.android.server.telecom.PhoneNumberUtilsAdapterImpl;
-import com.android.server.telecom.TelecomSystem;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Mock;
-
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
@@ -64,6 +33,41 @@
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
+import android.Manifest;
+import android.app.Activity;
+import android.app.AppOpsManager;
+import android.content.BroadcastReceiver;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.net.Uri;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.UserHandle;
+import android.telecom.GatewayInfo;
+import android.telecom.PhoneAccountHandle;
+import android.telecom.TelecomManager;
+import android.telecom.VideoProfile;
+import android.telephony.DisconnectCause;
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.server.telecom.Call;
+import com.android.server.telecom.CallsManager;
+import com.android.server.telecom.NewOutgoingCallIntentBroadcaster;
+import com.android.server.telecom.PhoneAccountRegistrar;
+import com.android.server.telecom.PhoneNumberUtilsAdapter;
+import com.android.server.telecom.PhoneNumberUtilsAdapterImpl;
+import com.android.server.telecom.RoleManagerAdapter;
+import com.android.server.telecom.SystemStateHelper;
+import com.android.server.telecom.TelecomSystem;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+
@RunWith(JUnit4.class)
public class NewOutgoingCallIntentBroadcasterTest extends TelecomTestCase {
private static class ReceiverIntentPair {
@@ -78,6 +82,10 @@
@Mock private CallsManager mCallsManager;
@Mock private Call mCall;
+ @Mock private SystemStateHelper mSystemStateHelper;
+ @Mock private UserHandle mUserHandle;
+ @Mock private PhoneAccountRegistrar mPhoneAccountRegistrar;
+ @Mock private RoleManagerAdapter mRoleManagerAdapter;
private PhoneNumberUtilsAdapter mPhoneNumberUtilsAdapterSpy;
@@ -89,13 +97,20 @@
mPhoneNumberUtilsAdapterSpy = spy(new PhoneNumberUtilsAdapterImpl());
when(mCall.getInitiatingUser()).thenReturn(UserHandle.CURRENT);
when(mCallsManager.getLock()).thenReturn(new TelecomSystem.SyncRoot() { });
+ when(mCallsManager.getSystemStateHelper()).thenReturn(mSystemStateHelper);
+ when(mCallsManager.getCurrentUserHandle()).thenReturn(mUserHandle);
+ when(mCallsManager.getPhoneAccountRegistrar()).thenReturn(mPhoneAccountRegistrar);
+ when(mCallsManager.getRoleManagerAdapter()).thenReturn(mRoleManagerAdapter);
+ when(mPhoneAccountRegistrar.getSubscriptionIdForPhoneAccount(
+ any(PhoneAccountHandle.class))).thenReturn(-1);
+ when(mSystemStateHelper.isCarMode()).thenReturn(false);
}
@SmallTest
@Test
public void testNullHandle() {
Intent intent = new Intent(Intent.ACTION_CALL, null);
- int result = processIntent(intent, true);
+ int result = processIntent(intent, true).disconnectCause;
assertEquals(DisconnectCause.INVALID_NUMBER, result);
verifyNoBroadcastSent();
verifyNoCallPlaced();
@@ -108,7 +123,7 @@
Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse(voicemailNumber));
intent.putExtra(TelecomManager.EXTRA_START_CALL_WITH_SPEAKERPHONE, true);
- int result = processIntent(intent, true);
+ int result = processIntent(intent, true).disconnectCause;
assertEquals(DisconnectCause.NOT_DISCONNECTED, result);
verify(mCallsManager).placeOutgoingCall(eq(mCall), eq(Uri.parse(voicemailNumber)),
@@ -136,7 +151,7 @@
private void badCallActionHelper(Uri handle, int expectedCode) {
Intent intent = new Intent(Intent.ACTION_ALARM_CHANGED, handle);
- int result = processIntent(intent, true);
+ int result = processIntent(intent, true).disconnectCause;
assertEquals(expectedCode, result);
verifyNoBroadcastSent();
@@ -164,7 +179,7 @@
Uri handle = Uri.parse("tel:");
Intent intent = new Intent(Intent.ACTION_CALL, handle);
- int result = processIntent(intent, true);
+ int result = processIntent(intent, true).disconnectCause;
assertEquals(DisconnectCause.NO_PHONE_NUMBER_SUPPLIED, result);
verifyNoBroadcastSent();
@@ -181,11 +196,12 @@
String ui_package_string = "sample_string_1";
String dialer_default_class_string = "sample_string_2";
- mComponentContextFixture.putResource(R.string.ui_default_package, ui_package_string);
+ mComponentContextFixture.putResource(com.android.internal.R.string.config_defaultDialer,
+ ui_package_string);
mComponentContextFixture.putResource(R.string.dialer_default_class,
dialer_default_class_string);
- int result = processIntent(intent, false);
+ int result = processIntent(intent, false).disconnectCause;
assertEquals(DisconnectCause.OUTGOING_CANCELED, result);
verifyNoBroadcastSent();
@@ -245,7 +261,7 @@
doReturn(false).when(mPhoneNumberUtilsAdapterSpy).isPotentialLocalEmergencyNumber(
any(Context.class), eq(handle.getSchemeSpecificPart()));
Intent intent = new Intent(Intent.ACTION_CALL_EMERGENCY, handle);
- int result = processIntent(intent, true);
+ int result = processIntent(intent, true).disconnectCause;
assertEquals(DisconnectCause.OUTGOING_CANCELED, result);
verifyNoCallPlaced();
@@ -260,7 +276,7 @@
any(Context.class), eq(handle.getSchemeSpecificPart()));
intent.putExtra(TelecomManager.EXTRA_START_CALL_WITH_SPEAKERPHONE, isSpeakerphoneOn);
intent.putExtra(TelecomManager.EXTRA_START_CALL_WITH_VIDEO_STATE, videoState);
- int result = processIntent(intent, true);
+ int result = processIntent(intent, true).disconnectCause;
assertEquals(DisconnectCause.NOT_DISCONNECTED, result);
verify(mCallsManager).placeOutgoingCall(eq(mCall), eq(handle), isNull(GatewayInfo.class),
@@ -389,7 +405,7 @@
intent.putExtra(TelecomManager.EXTRA_START_CALL_WITH_SPEAKERPHONE, isSpeakerphoneOn);
intent.putExtra(TelecomManager.EXTRA_START_CALL_WITH_VIDEO_STATE, videoState);
- int result = processIntent(intent, true);
+ int result = processIntent(intent, true).disconnectCause;
assertEquals(DisconnectCause.NOT_DISCONNECTED, result);
Bundle expectedExtras = createNumberExtras(handle.getSchemeSpecificPart());
@@ -407,12 +423,16 @@
return i;
}
- private int processIntent(Intent intent,
+ private NewOutgoingCallIntentBroadcaster.CallDisposition processIntent(Intent intent,
boolean isDefaultPhoneApp) {
NewOutgoingCallIntentBroadcaster b = new NewOutgoingCallIntentBroadcaster(
mContext, mCallsManager, mCall, intent, mPhoneNumberUtilsAdapterSpy,
isDefaultPhoneApp);
- return b.processIntent();
+ NewOutgoingCallIntentBroadcaster.CallDisposition cd = b.evaluateCall();
+ if (cd.disconnectCause == DisconnectCause.NOT_DISCONNECTED) {
+ b.processCall(cd);
+ }
+ return cd;
}
private ReceiverIntentPair verifyBroadcastSent(String number, Bundle expectedExtras) {
@@ -425,6 +445,7 @@
eq(UserHandle.CURRENT),
eq(Manifest.permission.PROCESS_OUTGOING_CALLS),
eq(AppOpsManager.OP_PROCESS_OUTGOING_CALLS),
+ any(Bundle.class),
receiverCaptor.capture(),
isNull(Handler.class),
eq(Activity.RESULT_OK),
@@ -463,6 +484,7 @@
any(UserHandle.class),
anyString(),
anyInt(),
+ any(Bundle.class),
any(BroadcastReceiver.class),
any(Handler.class),
anyInt(),
diff --git a/tests/src/com/android/server/telecom/tests/ParcelableCallUtilsTest.java b/tests/src/com/android/server/telecom/tests/ParcelableCallUtilsTest.java
new file mode 100644
index 0000000..3f4a4cd
--- /dev/null
+++ b/tests/src/com/android/server/telecom/tests/ParcelableCallUtilsTest.java
@@ -0,0 +1,148 @@
+package com.android.server.telecom.tests;
+
+import static com.android.server.telecom.TelecomSystem.*;
+
+import static junit.framework.Assert.assertFalse;
+import static junit.framework.Assert.assertTrue;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.when;
+
+import android.content.ComponentName;
+import android.content.Context;
+import android.net.Uri;
+import android.os.Bundle;
+import android.os.SystemClock;
+import android.telecom.Connection;
+import android.telecom.GatewayInfo;
+import android.telecom.ParcelableCall;
+import android.telecom.PhoneAccountHandle;
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.server.telecom.Call;
+import com.android.server.telecom.CallerInfoLookupHelper;
+import com.android.server.telecom.CallsManager;
+import com.android.server.telecom.ClockProxy;
+import com.android.server.telecom.ConnectionServiceRepository;
+import com.android.server.telecom.ParcelableCallUtils;
+import com.android.server.telecom.PhoneAccountRegistrar;
+import com.android.server.telecom.PhoneNumberUtilsAdapter;
+import com.android.server.telecom.TelecomSystem;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(JUnit4.class)
+public class ParcelableCallUtilsTest extends TelecomTestCase {
+
+ private SyncRoot mLock = new SyncRoot() {};
+ @Mock private ClockProxy mClockProxy;
+ @Mock private CallsManager mCallsManager;
+ @Mock private CallerInfoLookupHelper mCallerInfoLookupHelper;
+ @Mock private PhoneNumberUtilsAdapter mPhoneNumberUtilsAdapter;
+ @Mock private PhoneAccountRegistrar mPhoneAccountRegistrar;
+ private Call mCall;
+
+ @Override
+ @Before
+ public void setUp() throws Exception {
+ super.setUp();
+ MockitoAnnotations.initMocks(this);
+ when(mClockProxy.currentTimeMillis()).thenReturn(System.currentTimeMillis());
+ when(mClockProxy.elapsedRealtime()).thenReturn(SystemClock.elapsedRealtime());
+ when(mCallsManager.getCallerInfoLookupHelper()).thenReturn(mCallerInfoLookupHelper);
+ when(mCallsManager.getPhoneAccountRegistrar()).thenReturn(mPhoneAccountRegistrar);
+ when(mPhoneAccountRegistrar.getPhoneAccountUnchecked(any())).thenReturn(null);
+ when(mPhoneNumberUtilsAdapter.isLocalEmergencyNumber(any(), any())).thenReturn(false);
+ mCall = new Call("1",
+ null /* context */,
+ mCallsManager,
+ mLock,
+ null /* ConnectionServiceRepository */,
+ mPhoneNumberUtilsAdapter,
+ Uri.fromParts("tel", "6505551212", null),
+ null /* GatewayInfo */,
+ null /* connectionMgr */,
+ new PhoneAccountHandle(
+ ComponentName.unflattenFromString("com.test/Class"), "test"),
+ Call.CALL_DIRECTION_INCOMING,
+ false /* shouldAttachToExistingConnection */,
+ false /* isConference */,
+ mClockProxy /* ClockProxy */);
+ }
+
+ @SmallTest
+ @Test
+ public void testParcelForNonSystemDialer() {
+ mCall.putExtras(Call.SOURCE_CONNECTION_SERVICE, getSomeExtras());
+ ParcelableCall call = ParcelableCallUtils.toParcelableCall(mCall,
+ false /* includevideoProvider */,
+ null /* phoneAccountRegistrar */,
+ false /* supportsExternalCalls */,
+ false /* includeRttCall */,
+ false /* isForSystemDialer */);
+
+ Bundle parceledExtras = call.getExtras();
+ assertFalse(parceledExtras.containsKey(Connection.EXTRA_SIP_INVITE));
+ assertFalse(parceledExtras.containsKey("SomeExtra"));
+ assertTrue(parceledExtras.containsKey(Connection.EXTRA_CALL_SUBJECT));
+ }
+
+ @SmallTest
+ @Test
+ public void testParcelForSystemDialer() {
+ mCall.putExtras(Call.SOURCE_CONNECTION_SERVICE, getSomeExtras());
+ ParcelableCall call = ParcelableCallUtils.toParcelableCall(mCall,
+ false /* includevideoProvider */,
+ null /* phoneAccountRegistrar */,
+ false /* supportsExternalCalls */,
+ false /* includeRttCall */,
+ true /* isForSystemDialer */);
+
+ Bundle parceledExtras = call.getExtras();
+ assertTrue(parceledExtras.containsKey(Connection.EXTRA_SIP_INVITE));
+ assertTrue(parceledExtras.containsKey("SomeExtra"));
+ assertTrue(parceledExtras.containsKey(Connection.EXTRA_CALL_SUBJECT));
+ }
+
+ @SmallTest
+ @Test
+ public void testParcelForSystemCallScreening() {
+ mCall.putExtras(Call.SOURCE_CONNECTION_SERVICE, getSomeExtras());
+ ParcelableCall call = ParcelableCallUtils.toParcelableCallForScreening(mCall,
+ true /* isPartOfSystemDialer */);
+
+ Bundle parceledExtras = call.getExtras();
+ assertTrue(parceledExtras.containsKey(Connection.EXTRA_SIP_INVITE));
+ assertFalse(parceledExtras.containsKey("SomeExtra"));
+ assertFalse(parceledExtras.containsKey(Connection.EXTRA_CALL_SUBJECT));
+ }
+
+ @SmallTest
+ @Test
+ public void testParcelForSystemNonSystemCallScreening() {
+ mCall.putExtras(Call.SOURCE_CONNECTION_SERVICE, getSomeExtras());
+ ParcelableCall call = ParcelableCallUtils.toParcelableCallForScreening(mCall,
+ false /* isPartOfSystemDialer */);
+
+ Bundle parceledExtras = call.getExtras();
+ assertFalse(parceledExtras.containsKey(Connection.EXTRA_SIP_INVITE));
+ assertFalse(parceledExtras.containsKey("SomeExtra"));
+ assertFalse(parceledExtras.containsKey(Connection.EXTRA_CALL_SUBJECT));
+ }
+
+ private Bundle getSomeExtras() {
+ Bundle extras = new Bundle();
+ extras.putString(Connection.EXTRA_SIP_INVITE, "scary data");
+ extras.putString("SomeExtra", "Extra Extra");
+ extras.putString(Connection.EXTRA_CALL_SUBJECT, "Blah");
+ return extras;
+ }
+}
diff --git a/tests/src/com/android/server/telecom/tests/PhoneAccountRegistrarTest.java b/tests/src/com/android/server/telecom/tests/PhoneAccountRegistrarTest.java
index f8acb9d..a978cfd 100644
--- a/tests/src/com/android/server/telecom/tests/PhoneAccountRegistrarTest.java
+++ b/tests/src/com/android/server/telecom/tests/PhoneAccountRegistrarTest.java
@@ -16,6 +16,16 @@
package com.android.server.telecom.tests;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+import static org.mockito.Matchers.anyInt;
+import static org.mockito.Matchers.anyString;
+import static org.mockito.Mockito.when;
+
import android.content.ComponentName;
import android.content.Context;
import android.graphics.BitmapFactory;
@@ -27,14 +37,16 @@
import android.os.Process;
import android.os.UserHandle;
import android.os.UserManager;
-import android.support.test.InstrumentationRegistry;
import android.telecom.Log;
import android.telecom.PhoneAccount;
import android.telecom.PhoneAccountHandle;
import android.telecom.TelecomManager;
+import android.test.suitebuilder.annotation.SmallTest;
import android.test.suitebuilder.annotation.MediumTest;
import android.util.Xml;
+import androidx.test.InstrumentationRegistry;
+
import com.android.internal.telecom.IConnectionService;
import com.android.internal.util.FastXmlSerializer;
import com.android.server.telecom.DefaultDialerCache;
@@ -62,16 +74,6 @@
import java.util.Map;
import java.util.Set;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-import static org.mockito.Matchers.anyInt;
-import static org.mockito.Matchers.anyString;
-import static org.mockito.Mockito.when;
-
@RunWith(JUnit4.class)
public class PhoneAccountRegistrarTest extends TelecomTestCase {
@@ -909,6 +911,37 @@
assertEquals(account1, account2);
}
+ /**
+ * Tests {@link PhoneAccountHandle#areFromSamePackage(PhoneAccountHandle,
+ * PhoneAccountHandle)} comparison.
+ */
+ @SmallTest
+ @Test
+ public void testSamePhoneAccountHandlePackage() {
+ PhoneAccountHandle a = new PhoneAccountHandle(new ComponentName("packageA", "class1"),
+ "id1");
+ PhoneAccountHandle b = new PhoneAccountHandle(new ComponentName("packageA", "class2"),
+ "id2");
+ PhoneAccountHandle c = new PhoneAccountHandle(new ComponentName("packageA", "class1"),
+ "id3");
+ PhoneAccountHandle d = new PhoneAccountHandle(new ComponentName("packageB", "class1"),
+ "id1");
+
+ assertTrue(PhoneAccountHandle.areFromSamePackage(null, null));
+ assertTrue(PhoneAccountHandle.areFromSamePackage(a, b));
+ assertTrue(PhoneAccountHandle.areFromSamePackage(a, c));
+ assertTrue(PhoneAccountHandle.areFromSamePackage(b, c));
+ assertFalse(PhoneAccountHandle.areFromSamePackage(a, d));
+ assertFalse(PhoneAccountHandle.areFromSamePackage(b, d));
+ assertFalse(PhoneAccountHandle.areFromSamePackage(c, d));
+ assertFalse(PhoneAccountHandle.areFromSamePackage(a, null));
+ assertFalse(PhoneAccountHandle.areFromSamePackage(b, null));
+ assertFalse(PhoneAccountHandle.areFromSamePackage(c, null));
+ assertFalse(PhoneAccountHandle.areFromSamePackage(null, d));
+ assertFalse(PhoneAccountHandle.areFromSamePackage(null, d));
+ assertFalse(PhoneAccountHandle.areFromSamePackage(null, d));
+ }
+
private static ComponentName makeQuickConnectionServiceComponentName() {
return new ComponentName(
"com.android.server.telecom.tests",
diff --git a/tests/src/com/android/server/telecom/tests/RingerTest.java b/tests/src/com/android/server/telecom/tests/RingerTest.java
index 25460de..75e89bc 100644
--- a/tests/src/com/android/server/telecom/tests/RingerTest.java
+++ b/tests/src/com/android/server/telecom/tests/RingerTest.java
@@ -18,12 +18,14 @@
import android.app.NotificationManager;
import android.content.Context;
-import android.content.res.Resources;
import android.media.AudioAttributes;
import android.media.AudioManager;
import android.media.Ringtone;
+import android.media.VolumeShaper;
import android.net.Uri;
import android.os.Bundle;
+import android.os.Looper;
+import android.os.Parcel;
import android.os.VibrationEffect;
import android.os.Vibrator;
import android.telecom.TelecomManager;
@@ -31,6 +33,7 @@
import com.android.server.telecom.AsyncRingtonePlayer;
import com.android.server.telecom.Call;
+import com.android.server.telecom.CallState;
import com.android.server.telecom.InCallController;
import com.android.server.telecom.InCallTonePlayer;
import com.android.server.telecom.Ringer;
@@ -42,20 +45,61 @@
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
import org.mockito.Mock;
+import org.mockito.Spy;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.stubbing.Answer;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.ArgumentMatchers.isNull;
+import static org.mockito.ArgumentMatchers.nullable;
+import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
+import java.util.Objects;
+import java.util.concurrent.CompletableFuture;
+
@RunWith(JUnit4.class)
public class RingerTest extends TelecomTestCase {
private static final Uri FAKE_RINGTONE_URI = Uri.parse("content://media/fake/audio/1729");
+ private static class UriVibrationEffect extends VibrationEffect {
+ final Uri mUri;
+
+ private UriVibrationEffect(Uri uri) {
+ mUri = uri;
+ }
+
+ @Override
+ public void validate() {
+ // not needed
+ }
+
+ @Override
+ public long getDuration() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {
+ // not needed
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ UriVibrationEffect that = (UriVibrationEffect) o;
+ return Objects.equals(mUri, that.mUri);
+ }
+ }
@Mock InCallTonePlayer.Factory mockPlayerFactory;
@Mock SystemSettingsUtil mockSystemSettingsUtil;
@@ -63,6 +107,7 @@
@Mock RingtoneFactory mockRingtoneFactory;
@Mock Vibrator mockVibrator;
@Mock InCallController mockInCallController;
+ @Spy Ringer.VibrationEffectProxy spyVibrationEffectProxy;
@Mock InCallTonePlayer mockTonePlayer;
@Mock Call mockCall1;
@@ -70,32 +115,49 @@
Ringer mRingerUnderTest;
AudioManager mockAudioManager;
+ CompletableFuture<Boolean> mFuture = new CompletableFuture<>();
+ CompletableFuture<Void> mRingCompletionFuture = new CompletableFuture<>();
@Override
@Before
public void setUp() throws Exception {
super.setUp();
mContext = mComponentContextFixture.getTestDouble().getApplicationContext();
- mRingerUnderTest = new Ringer(mockPlayerFactory, mContext, mockSystemSettingsUtil,
- mockRingtonePlayer, mockRingtoneFactory, mockVibrator, mockInCallController);
+ doAnswer(invocation -> {
+ Uri ringtoneUriForEffect = invocation.getArgument(0);
+ return new UriVibrationEffect(ringtoneUriForEffect);
+ }).when(spyVibrationEffectProxy).get(any(), any());
when(mockPlayerFactory.createPlayer(anyInt())).thenReturn(mockTonePlayer);
mockAudioManager =
(AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
when(mockAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_NORMAL);
+ when(mockSystemSettingsUtil.isHapticPlaybackSupported(any(Context.class))).thenReturn(true);
NotificationManager notificationManager =
(NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
+ when(mockTonePlayer.startTone()).thenReturn(true);
when(notificationManager.matchesCallFilter(any(Bundle.class))).thenReturn(true);
+ when(mockRingtoneFactory.hasHapticChannels(any(Ringtone.class))).thenReturn(false);
+ when(mockRingtonePlayer.play(any(RingtoneFactory.class), any(Call.class),
+ nullable(VolumeShaper.Configuration.class), anyBoolean())).thenReturn(mFuture);
+ mRingerUnderTest = new Ringer(mockPlayerFactory, mContext, mockSystemSettingsUtil,
+ mockRingtonePlayer, mockRingtoneFactory, mockVibrator, spyVibrationEffectProxy,
+ mockInCallController);
+ when(mockCall1.getState()).thenReturn(CallState.RINGING);
+ when(mockCall2.getState()).thenReturn(CallState.RINGING);
+ mRingerUnderTest.setBlockOnRingingFuture(mRingCompletionFuture);
}
@SmallTest
@Test
public void testNoActionInTheaterMode() {
// Start call waiting to make sure that it doesn't stop when we start ringing
+ mFuture.complete(false); // not using audio coupled haptics
mRingerUnderTest.startCallWaiting(mockCall1);
when(mockSystemSettingsUtil.isTheaterModeOn(any(Context.class))).thenReturn(true);
assertFalse(mRingerUnderTest.startRinging(mockCall2, false));
verify(mockTonePlayer, never()).stopTone();
- verify(mockRingtonePlayer, never()).play(any(RingtoneFactory.class), any(Call.class));
+ verify(mockRingtonePlayer, never()).play(any(RingtoneFactory.class), any(Call.class),
+ eq(null), eq(false));
verify(mockVibrator, never())
.vibrate(any(VibrationEffect.class), any(AudioAttributes.class));
}
@@ -103,6 +165,7 @@
@SmallTest
@Test
public void testNoActionWithExternalRinger() {
+ mFuture.complete(false); // not using audio coupled haptics
Bundle externalRingerExtra = new Bundle();
externalRingerExtra.putBoolean(TelecomManager.EXTRA_CALL_EXTERNAL_RINGER, true);
when(mockCall1.getIntentExtras()).thenReturn(externalRingerExtra);
@@ -111,34 +174,41 @@
mRingerUnderTest.startCallWaiting(mockCall1);
assertFalse(mRingerUnderTest.startRinging(mockCall2, false));
verify(mockTonePlayer, never()).stopTone();
- verify(mockRingtonePlayer, never()).play(any(RingtoneFactory.class), any(Call.class));
+ verify(mockRingtonePlayer, never()).play(any(RingtoneFactory.class), any(Call.class),
+ any(VolumeShaper.Configuration.class), anyBoolean());
verify(mockVibrator, never())
.vibrate(any(VibrationEffect.class), any(AudioAttributes.class));
}
@SmallTest
@Test
- public void testNoActionWhenDialerRings() {
+ public void testNoActionWhenDialerRings() throws Exception {
+ mFuture.complete(false); // not using audio coupled haptics
// Start call waiting to make sure that it doesn't stop when we start ringing
mRingerUnderTest.startCallWaiting(mockCall1);
when(mockInCallController.doesConnectedDialerSupportRinging()).thenReturn(true);
assertFalse(mRingerUnderTest.startRinging(mockCall2, false));
+ mRingCompletionFuture.get();
verify(mockTonePlayer, never()).stopTone();
- verify(mockRingtonePlayer, never()).play(any(RingtoneFactory.class), any(Call.class));
+ verify(mockRingtonePlayer, never()).play(any(RingtoneFactory.class), any(Call.class),
+ any(VolumeShaper.Configuration.class), anyBoolean());
verify(mockVibrator, never())
.vibrate(any(VibrationEffect.class), any(AudioAttributes.class));
}
@SmallTest
@Test
- public void testAudioFocusStillAcquiredWhenDialerRings() {
+ public void testAudioFocusStillAcquiredWhenDialerRings() throws Exception {
+ mFuture.complete(false); // not using audio coupled haptics
// Start call waiting to make sure that it doesn't stop when we start ringing
mRingerUnderTest.startCallWaiting(mockCall1);
when(mockInCallController.doesConnectedDialerSupportRinging()).thenReturn(true);
ensureRingerIsAudible();
assertTrue(mRingerUnderTest.startRinging(mockCall2, false));
+ mRingCompletionFuture.get();
verify(mockTonePlayer, never()).stopTone();
- verify(mockRingtonePlayer, never()).play(any(RingtoneFactory.class), any(Call.class));
+ verify(mockRingtonePlayer, never()).play(any(RingtoneFactory.class), any(Call.class),
+ any(VolumeShaper.Configuration.class), anyBoolean());
verify(mockVibrator, never())
.vibrate(any(VibrationEffect.class), any(AudioAttributes.class));
}
@@ -146,13 +216,15 @@
@SmallTest
@Test
public void testNoActionWhenCallIsSelfManaged() {
+ mFuture.complete(false); // not using audio coupled haptics
// Start call waiting to make sure that it doesn't stop when we start ringing
mRingerUnderTest.startCallWaiting(mockCall1);
when(mockCall2.isSelfManaged()).thenReturn(true);
// We do want to acquire audio focus when self-managed
assertTrue(mRingerUnderTest.startRinging(mockCall2, true));
verify(mockTonePlayer, never()).stopTone();
- verify(mockRingtonePlayer, never()).play(any(RingtoneFactory.class), any(Call.class));
+ verify(mockRingtonePlayer, never()).play(any(RingtoneFactory.class), any(Call.class),
+ any(VolumeShaper.Configuration.class), anyBoolean());
verify(mockVibrator, never())
.vibrate(any(VibrationEffect.class), any(AudioAttributes.class));
}
@@ -160,6 +232,7 @@
@SmallTest
@Test
public void testCallWaitingButNoRingForSpecificContacts() {
+ mFuture.complete(false); // not using audio coupled haptics
NotificationManager notificationManager =
(NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
when(notificationManager.matchesCallFilter(any(Bundle.class))).thenReturn(false);
@@ -169,99 +242,175 @@
assertFalse(mRingerUnderTest.startRinging(mockCall2, false));
verify(mockTonePlayer).stopTone();
- verify(mockRingtonePlayer, never()).play(any(RingtoneFactory.class), any(Call.class));
+ verify(mockRingtonePlayer, never()).play(any(RingtoneFactory.class), any(Call.class),
+ any(VolumeShaper.Configuration.class), anyBoolean());
verify(mockVibrator, never())
.vibrate(any(VibrationEffect.class), any(AudioAttributes.class));
}
@SmallTest
@Test
- public void testVibrateButNoRingForNullRingtone() {
- mRingerUnderTest.startCallWaiting(mockCall1);
- when(mockRingtoneFactory.getRingtone(any(Call.class))).thenReturn(null);
- when(mockAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_NORMAL);
- enableVibrationWhenRinging();
- assertFalse(mRingerUnderTest.startRinging(mockCall2, false));
- verify(mockTonePlayer).stopTone();
- verify(mockRingtonePlayer, never()).play(any(RingtoneFactory.class), any(Call.class));
- verify(mockVibrator).vibrate(eq(mRingerUnderTest.mDefaultVibrationEffect),
- any(AudioAttributes.class));
- }
-
- @SmallTest
- @Test
- public void testVibrateButNoRingForSilentRingtone() {
- mRingerUnderTest.startCallWaiting(mockCall1);
- Ringtone mockRingtone = mock(Ringtone.class);
- when(mockRingtoneFactory.getRingtone(any(Call.class))).thenReturn(mockRingtone);
- when(mockAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_NORMAL);
- when(mockAudioManager.getStreamVolume(AudioManager.STREAM_RING)).thenReturn(0);
- enableVibrationWhenRinging();
- assertFalse(mRingerUnderTest.startRinging(mockCall2, false));
- verify(mockTonePlayer).stopTone();
- verify(mockRingtonePlayer, never()).play(any(RingtoneFactory.class), any(Call.class));
- verify(mockVibrator).vibrate(eq(mRingerUnderTest.mDefaultVibrationEffect),
- any(AudioAttributes.class));
- }
-
- @SmallTest
- @Test
- public void testCustomVibrationForRingtone() {
- Resources resources = mContext.getResources();
- when(resources.getStringArray(com.android.internal.R.array.config_ringtoneEffectUris))
- .thenReturn(new String[] { FAKE_RINGTONE_URI.toString() });
- mRingerUnderTest.startCallWaiting(mockCall1);
- Ringtone mockRingtone = mock(Ringtone.class);
- when(mockRingtoneFactory.getRingtone(any(Call.class))).thenReturn(mockRingtone);
- when(mockRingtone.getUri()).thenReturn(FAKE_RINGTONE_URI);
- enableVibrationWhenRinging();
- assertTrue(mRingerUnderTest.startRinging(mockCall2, false));
- verify(mockTonePlayer).stopTone();
- verify(mockRingtonePlayer).play(any(RingtoneFactory.class), any(Call.class));
- verify(mockVibrator).vibrate(eq(VibrationEffect.get(FAKE_RINGTONE_URI, mContext)),
- any(AudioAttributes.class));
- }
-
- @SmallTest
- @Test
- public void testRingAndNoVibrate() {
+ public void testNoVibrateDueToAudioCoupledHaptics() throws Exception {
mRingerUnderTest.startCallWaiting(mockCall1);
ensureRingerIsAudible();
- enableVibrationOnlyWhenNotRinging();
+ enableVibrationWhenRinging();
+ // Pretend we're using audio coupled haptics.
+ mFuture.complete(true);
assertTrue(mRingerUnderTest.startRinging(mockCall2, false));
+ mRingCompletionFuture.get();
verify(mockTonePlayer).stopTone();
- verify(mockRingtonePlayer).play(any(RingtoneFactory.class), any(Call.class));
- verify(mockVibrator, never())
- .vibrate(any(VibrationEffect.class), any(AudioAttributes.class));
+ verify(mockRingtonePlayer).play(
+ any(RingtoneFactory.class), any(Call.class), isNull(), eq(true));
+ verify(mockVibrator, never()).vibrate(any(VibrationEffect.class),
+ any(AudioAttributes.class));
}
@SmallTest
@Test
- public void testSilentRingWithHfpStillAcquiresFocus1() {
+ public void testVibrateButNoRingForNullRingtone() throws Exception {
+ mRingerUnderTest.startCallWaiting(mockCall1);
+ when(mockRingtoneFactory.getRingtone(any(Call.class))).thenReturn(null);
+ when(mockAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_NORMAL);
+ mFuture.complete(false); // not using audio coupled haptics
+ enableVibrationWhenRinging();
+ assertFalse(mRingerUnderTest.startRinging(mockCall2, false));
+ mRingCompletionFuture.get();
+ verify(mockTonePlayer).stopTone();
+ verify(mockRingtonePlayer, never()).play(any(RingtoneFactory.class), any(Call.class),
+ any(VolumeShaper.Configuration.class), anyBoolean());
+ verify(mockVibrator).vibrate(eq(mRingerUnderTest.mDefaultVibrationEffect),
+ any(AudioAttributes.class));
+ }
+
+ @SmallTest
+ @Test
+ public void testVibrateButNoRingForSilentRingtone() throws Exception {
mRingerUnderTest.startCallWaiting(mockCall1);
Ringtone mockRingtone = mock(Ringtone.class);
when(mockRingtoneFactory.getRingtone(any(Call.class))).thenReturn(mockRingtone);
when(mockAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_NORMAL);
when(mockAudioManager.getStreamVolume(AudioManager.STREAM_RING)).thenReturn(0);
- enableVibrationOnlyWhenNotRinging();
- assertTrue(mRingerUnderTest.startRinging(mockCall2, true));
+ mFuture.complete(false); // not using audio coupled haptics
+ enableVibrationWhenRinging();
+ assertFalse(mRingerUnderTest.startRinging(mockCall2, false));
+ mRingCompletionFuture.get();
verify(mockTonePlayer).stopTone();
- verify(mockRingtonePlayer, never()).play(any(RingtoneFactory.class), any(Call.class));
+ verify(mockRingtonePlayer, never()).play(any(RingtoneFactory.class), any(Call.class),
+ any(VolumeShaper.Configuration.class), anyBoolean());
+ verify(mockVibrator).vibrate(eq(mRingerUnderTest.mDefaultVibrationEffect),
+ any(AudioAttributes.class));
+ }
+
+ @SmallTest
+ @Test
+ public void testStopRingingBeforeHapticsLookupComplete() throws Exception {
+ enableVibrationWhenRinging();
+ Ringtone mockRingtone = mock(Ringtone.class);
+ when(mockRingtoneFactory.getRingtone(nullable(Call.class))).thenReturn(mockRingtone);
+ when(mockAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_NORMAL);
+
+ mRingerUnderTest.startRinging(mockCall1, false);
+ // Make sure we haven't started the vibrator yet, but have started ringing.
+ verify(mockRingtonePlayer).play(nullable(RingtoneFactory.class), nullable(Call.class),
+ nullable(VolumeShaper.Configuration.class), anyBoolean());
+ verify(mockVibrator, never()).vibrate(nullable(VibrationEffect.class),
+ nullable(AudioAttributes.class));
+ // Simulate something stopping the ringer
+ mRingerUnderTest.stopRinging();
+ verify(mockRingtonePlayer).stop();
+ verify(mockVibrator, never()).cancel();
+ // Simulate the haptics computation finishing
+ mFuture.complete(false);
+ // Then make sure that we don't actually start vibrating.
+ verify(mockVibrator, never()).vibrate(nullable(VibrationEffect.class),
+ nullable(AudioAttributes.class));
+ }
+
+ @SmallTest
+ @Test
+ public void testCustomVibrationForRingtone() throws Exception {
+ mRingerUnderTest.startCallWaiting(mockCall1);
+ Ringtone mockRingtone = mock(Ringtone.class);
+ when(mockAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_NORMAL);
+ when(mockRingtoneFactory.getRingtone(any(Call.class))).thenReturn(mockRingtone);
+ when(mockRingtone.getUri()).thenReturn(FAKE_RINGTONE_URI);
+ mFuture.complete(false); // not using audio coupled haptics
+ enableVibrationWhenRinging();
+ assertTrue(mRingerUnderTest.startRinging(mockCall2, false));
+ mRingCompletionFuture.get();
+ verify(mockTonePlayer).stopTone();
+ verify(mockRingtonePlayer).play(any(RingtoneFactory.class), any(Call.class), eq(null),
+ eq(true));
+ verify(mockVibrator).vibrate(eq(spyVibrationEffectProxy.get(FAKE_RINGTONE_URI, mContext)),
+ any(AudioAttributes.class));
+ }
+
+ @SmallTest
+ @Test
+ public void testRingAndNoVibrate() throws Exception {
+ mRingerUnderTest.startCallWaiting(mockCall1);
+ ensureRingerIsAudible();
+ mFuture.complete(false); // not using audio coupled haptics
+ enableVibrationOnlyWhenNotRinging();
+ assertTrue(mRingerUnderTest.startRinging(mockCall2, false));
+ mRingCompletionFuture.get();
+ verify(mockTonePlayer).stopTone();
+ verify(mockRingtonePlayer).play(any(RingtoneFactory.class), any(Call.class), eq(null),
+ eq(false));
verify(mockVibrator, never())
.vibrate(any(VibrationEffect.class), any(AudioAttributes.class));
}
@SmallTest
@Test
- public void testSilentRingWithHfpStillAcquiresFocus2() {
+ public void testRingWithRampingRinger() throws Exception {
+ mRingerUnderTest.startCallWaiting(mockCall1);
+ ensureRingerIsAudible();
+ enableRampingRinger();
+ enableRampingRingerFromDeviceConfig();
+ mFuture.complete(false); // not using audio coupled haptics
+ enableVibrationWhenRinging();
+ assertTrue(mRingerUnderTest.startRinging(mockCall2, false));
+ mRingCompletionFuture.get();
+ verify(mockTonePlayer).stopTone();
+ verify(mockRingtonePlayer).play(
+ any(RingtoneFactory.class), any(Call.class), any(VolumeShaper.Configuration.class),
+ eq(true));
+ }
+
+ @SmallTest
+ @Test
+ public void testSilentRingWithHfpStillAcquiresFocus1() throws Exception {
+ mRingerUnderTest.startCallWaiting(mockCall1);
+ Ringtone mockRingtone = mock(Ringtone.class);
+ when(mockRingtoneFactory.getRingtone(any(Call.class))).thenReturn(mockRingtone);
+ when(mockAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_NORMAL);
+ when(mockAudioManager.getStreamVolume(AudioManager.STREAM_RING)).thenReturn(0);
+ mFuture.complete(false); // not using audio coupled haptics
+ enableVibrationOnlyWhenNotRinging();
+ assertTrue(mRingerUnderTest.startRinging(mockCall2, true));
+ mRingCompletionFuture.get();
+ verify(mockTonePlayer).stopTone();
+ verify(mockRingtonePlayer, never()).play(any(RingtoneFactory.class), any(Call.class),
+ any(VolumeShaper.Configuration.class), anyBoolean());
+ verify(mockVibrator, never())
+ .vibrate(any(VibrationEffect.class), any(AudioAttributes.class));
+ }
+
+ @SmallTest
+ @Test
+ public void testSilentRingWithHfpStillAcquiresFocus2() throws Exception {
mRingerUnderTest.startCallWaiting(mockCall1);
when(mockRingtoneFactory.getRingtone(any(Call.class))).thenReturn(null);
when(mockAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_NORMAL);
when(mockAudioManager.getStreamVolume(AudioManager.STREAM_RING)).thenReturn(0);
+ mFuture.complete(false); // not using audio coupled haptics
enableVibrationOnlyWhenNotRinging();
assertTrue(mRingerUnderTest.startRinging(mockCall2, true));
+ mRingCompletionFuture.get();
verify(mockTonePlayer).stopTone();
- verify(mockRingtonePlayer, never()).play(any(RingtoneFactory.class), any(Call.class));
+ verify(mockRingtonePlayer, never()).play(any(RingtoneFactory.class), any(Call.class),
+ any(VolumeShaper.Configuration.class), anyBoolean());
verify(mockVibrator, never())
.vibrate(any(VibrationEffect.class), any(AudioAttributes.class));
}
@@ -282,4 +431,12 @@
when(mockVibrator.hasVibrator()).thenReturn(true);
when(mockSystemSettingsUtil.canVibrateWhenRinging(any(Context.class))).thenReturn(false);
}
+
+ private void enableRampingRinger() {
+ when(mockSystemSettingsUtil.applyRampingRinger(any(Context.class))).thenReturn(true);
+ }
+
+ private void enableRampingRingerFromDeviceConfig() {
+ when(mockSystemSettingsUtil.enableRampingRingerFromDeviceConfig()).thenReturn(true);
+ }
}
diff --git a/tests/src/com/android/server/telecom/tests/SystemStateHelperTest.java b/tests/src/com/android/server/telecom/tests/SystemStateHelperTest.java
new file mode 100644
index 0000000..efe8796
--- /dev/null
+++ b/tests/src/com/android/server/telecom/tests/SystemStateHelperTest.java
@@ -0,0 +1,294 @@
+/*
+ * Copyright (C) 2015 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 static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.app.UiModeManager;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.res.Configuration;
+import android.hardware.Sensor;
+import android.hardware.SensorEvent;
+import android.hardware.SensorEventListener;
+import android.hardware.SensorManager;
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.server.telecom.SystemStateHelper;
+import com.android.server.telecom.SystemStateHelper.SystemStateListener;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.mockito.internal.util.reflection.FieldSetter;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.stubbing.Answer;
+
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Method;
+
+/**
+ * Unit tests for SystemStateHelper
+ */
+@RunWith(JUnit4.class)
+public class SystemStateHelperTest extends TelecomTestCase {
+
+ Context mContext;
+ @Mock SystemStateListener mSystemStateListener;
+ @Mock Sensor mGravitySensor;
+ @Mock Sensor mProxSensor;
+ @Mock UiModeManager mUiModeManager;
+ @Mock SensorManager mSensorManager;
+ @Mock Intent mIntentEnter;
+ @Mock Intent mIntentExit;
+
+ @Override
+ @Before
+ public void setUp() throws Exception {
+ super.setUp();
+ MockitoAnnotations.initMocks(this);
+ mContext = mComponentContextFixture.getTestDouble().getApplicationContext();
+ doReturn(mSensorManager).when(mContext).getSystemService(SensorManager.class);
+ when(mGravitySensor.getType()).thenReturn(Sensor.TYPE_GRAVITY);
+ when(mProxSensor.getType()).thenReturn(Sensor.TYPE_PROXIMITY);
+ when(mProxSensor.getMaximumRange()).thenReturn(5.0f);
+ when(mSensorManager.getDefaultSensor(Sensor.TYPE_GRAVITY)).thenReturn(mGravitySensor);
+ when(mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY)).thenReturn(mProxSensor);
+
+ mComponentContextFixture.putFloatResource(
+ R.dimen.device_on_ear_xy_gravity_threshold, 5.5f);
+ mComponentContextFixture.putFloatResource(
+ R.dimen.device_on_ear_y_gravity_negative_threshold, -1f);
+ }
+
+ @Override
+ @After
+ public void tearDown() throws Exception {
+ super.tearDown();
+ }
+
+ @SmallTest
+ @Test
+ public void testListeners() throws Exception {
+ SystemStateHelper systemStateHelper = new SystemStateHelper(mContext);
+
+ assertFalse(systemStateHelper.removeListener(mSystemStateListener));
+ systemStateHelper.addListener(mSystemStateListener);
+ assertTrue(systemStateHelper.removeListener(mSystemStateListener));
+ assertFalse(systemStateHelper.removeListener(mSystemStateListener));
+ }
+
+ @SmallTest
+ @Test
+ public void testQuerySystemForCarMode_True() {
+ when(mContext.getSystemService(Context.UI_MODE_SERVICE)).thenReturn(mUiModeManager);
+ when(mUiModeManager.getCurrentModeType()).thenReturn(Configuration.UI_MODE_TYPE_CAR);
+ assertTrue(new SystemStateHelper(mContext).isCarMode());
+ }
+
+ @SmallTest
+ @Test
+ public void testQuerySystemForCarMode_False() {
+ when(mContext.getSystemService(Context.UI_MODE_SERVICE)).thenReturn(mUiModeManager);
+ when(mUiModeManager.getCurrentModeType()).thenReturn(Configuration.UI_MODE_TYPE_NORMAL);
+ assertFalse(new SystemStateHelper(mContext).isCarMode());
+ }
+
+ @SmallTest
+ @Test
+ public void testReceiverAndIntentFilter() {
+ ArgumentCaptor<IntentFilter> intentFilter = ArgumentCaptor.forClass(IntentFilter.class);
+ new SystemStateHelper(mContext);
+ verify(mContext).registerReceiver(any(BroadcastReceiver.class), intentFilter.capture());
+
+ assertEquals(2, intentFilter.getValue().countActions());
+ assertEquals(UiModeManager.ACTION_ENTER_CAR_MODE, intentFilter.getValue().getAction(0));
+ assertEquals(UiModeManager.ACTION_EXIT_CAR_MODE, intentFilter.getValue().getAction(1));
+ }
+
+ @SmallTest
+ @Test
+ public void testOnEnterExitCarMode() {
+ ArgumentCaptor<BroadcastReceiver> receiver =
+ ArgumentCaptor.forClass(BroadcastReceiver.class);
+ new SystemStateHelper(mContext).addListener(mSystemStateListener);
+
+ verify(mContext).registerReceiver(receiver.capture(), any(IntentFilter.class));
+
+ when(mIntentEnter.getAction()).thenReturn(UiModeManager.ACTION_ENTER_CAR_MODE);
+ receiver.getValue().onReceive(mContext, mIntentEnter);
+ verify(mSystemStateListener).onCarModeChanged(true);
+
+ when(mIntentExit.getAction()).thenReturn(UiModeManager.ACTION_EXIT_CAR_MODE);
+ receiver.getValue().onReceive(mContext, mIntentExit);
+ verify(mSystemStateListener).onCarModeChanged(false);
+
+ receiver.getValue().onReceive(mContext, new Intent("invalid action"));
+ }
+
+ @SmallTest
+ @Test
+ public void testDeviceOnEarCorrectlyDetected() {
+ doAnswer(invocation -> {
+ SensorEventListener listener = invocation.getArgument(0);
+ Sensor sensor = invocation.getArgument(1);
+ if (sensor.getType() == Sensor.TYPE_GRAVITY) {
+ listener.onSensorChanged(makeSensorEvent(
+ new float[]{1.0f, 9.0f, 1.0f}, Sensor.TYPE_GRAVITY));
+ } else {
+ listener.onSensorChanged(makeSensorEvent(
+ new float[]{0.0f}, Sensor.TYPE_PROXIMITY));
+ }
+ return true;
+ }).when(mSensorManager)
+ .registerListener(any(SensorEventListener.class), any(Sensor.class), anyInt());
+
+ assertTrue(SystemStateHelper.isDeviceAtEar(mContext));
+ verify(mSensorManager).unregisterListener(any(SensorEventListener.class));
+ }
+
+ @SmallTest
+ @Test
+ public void testDeviceIsNotOnEarWithProxNotSensed() {
+ doAnswer(invocation -> {
+ SensorEventListener listener = invocation.getArgument(0);
+ Sensor sensor = invocation.getArgument(1);
+ if (sensor.getType() == Sensor.TYPE_GRAVITY) {
+ listener.onSensorChanged(makeSensorEvent(
+ new float[]{1.0f, 9.0f, 1.0f}, Sensor.TYPE_GRAVITY));
+ } else {
+ // do nothing to simulate proximity sensor not reporting
+ }
+ return true;
+ }).when(mSensorManager)
+ .registerListener(any(SensorEventListener.class), any(Sensor.class), anyInt());
+
+ assertFalse(SystemStateHelper.isDeviceAtEar(mContext));
+ verify(mSensorManager).unregisterListener(any(SensorEventListener.class));
+ }
+
+ @SmallTest
+ @Test
+ public void testDeviceIsNotOnEarWithWrongOrientation() {
+ doAnswer(invocation -> {
+ SensorEventListener listener = invocation.getArgument(0);
+ Sensor sensor = invocation.getArgument(1);
+ if (sensor.getType() == Sensor.TYPE_GRAVITY) {
+ listener.onSensorChanged(makeSensorEvent(
+ new float[]{1.0f, 1.0f, 9.0f}, Sensor.TYPE_GRAVITY));
+ } else {
+ listener.onSensorChanged(makeSensorEvent(
+ new float[]{0.0f}, Sensor.TYPE_PROXIMITY));
+ }
+ return true;
+ }).when(mSensorManager)
+ .registerListener(any(SensorEventListener.class), any(Sensor.class), anyInt());
+
+ assertFalse(SystemStateHelper.isDeviceAtEar(mContext));
+ verify(mSensorManager).unregisterListener(any(SensorEventListener.class));
+ }
+
+ @SmallTest
+ @Test
+ public void testDeviceIsNotOnEarWithMissingSensor() {
+ when(mSensorManager.getDefaultSensor(Sensor.TYPE_GRAVITY)).thenReturn(null);
+ doAnswer(invocation -> {
+ SensorEventListener listener = invocation.getArgument(0);
+ Sensor sensor = invocation.getArgument(1);
+ if (sensor.getType() == Sensor.TYPE_GRAVITY) {
+ listener.onSensorChanged(makeSensorEvent(
+ new float[]{1.0f, 9.0f, 1.0f}, Sensor.TYPE_GRAVITY));
+ } else {
+ listener.onSensorChanged(makeSensorEvent(
+ new float[]{0.0f}, Sensor.TYPE_PROXIMITY));
+ }
+ return true;
+ }).when(mSensorManager)
+ .registerListener(any(SensorEventListener.class), any(Sensor.class), anyInt());
+
+ assertFalse(SystemStateHelper.isDeviceAtEar(mContext));
+ }
+
+ @SmallTest
+ @Test
+ public void testDeviceIsNotOnEarWithTimeout() {
+ doAnswer(invocation -> {
+ SensorEventListener listener = invocation.getArgument(0);
+ Sensor sensor = invocation.getArgument(1);
+ if (sensor.getType() == Sensor.TYPE_GRAVITY) {
+ // do nothing
+ } else {
+ listener.onSensorChanged(makeSensorEvent(
+ new float[]{0.0f}, Sensor.TYPE_PROXIMITY));
+ }
+ return true;
+ }).when(mSensorManager)
+ .registerListener(any(SensorEventListener.class), any(Sensor.class), anyInt());
+
+ assertFalse(SystemStateHelper.isDeviceAtEar(mContext));
+ }
+
+ @SmallTest
+ @Test
+ public void testDeviceIsOnEarWithMultiSensorInputs() {
+ doAnswer(invocation -> {
+ SensorEventListener listener = invocation.getArgument(0);
+ Sensor sensor = invocation.getArgument(1);
+ if (sensor.getType() == Sensor.TYPE_GRAVITY) {
+ listener.onSensorChanged(makeSensorEvent(
+ new float[]{1.0f, 9.0f, 1.0f}, Sensor.TYPE_GRAVITY));
+ listener.onSensorChanged(makeSensorEvent(
+ new float[]{1.0f, -9.0f, 1.0f}, Sensor.TYPE_GRAVITY));
+ listener.onSensorChanged(makeSensorEvent(
+ new float[]{1.0f, 0.0f, 8.0f}, Sensor.TYPE_GRAVITY));
+ } else {
+ listener.onSensorChanged(makeSensorEvent(
+ new float[]{0.0f}, Sensor.TYPE_PROXIMITY));
+ }
+ return true;
+ }).when(mSensorManager)
+ .registerListener(any(SensorEventListener.class), any(Sensor.class), anyInt());
+
+ assertTrue(SystemStateHelper.isDeviceAtEar(mContext));
+ verify(mSensorManager).unregisterListener(any(SensorEventListener.class));
+ }
+
+ private SensorEvent makeSensorEvent(float[] values, int sensorType) throws Exception {
+ SensorEvent event = mock(SensorEvent.class);
+ Sensor mockSensor = mock(Sensor.class);
+ when(mockSensor.getType()).thenReturn(sensorType);
+ FieldSetter.setField(event, SensorEvent.class.getDeclaredField("sensor"), mockSensor);
+ FieldSetter.setField(event, SensorEvent.class.getDeclaredField("values"), values);
+ return event;
+ }
+}
diff --git a/tests/src/com/android/server/telecom/tests/SystemStateProviderTest.java b/tests/src/com/android/server/telecom/tests/SystemStateProviderTest.java
deleted file mode 100644
index 033f929..0000000
--- a/tests/src/com/android/server/telecom/tests/SystemStateProviderTest.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * Copyright (C) 2015 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 static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import android.app.UiModeManager;
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.content.res.Configuration;
-import android.test.suitebuilder.annotation.SmallTest;
-
-import com.android.server.telecom.SystemStateProvider;
-import com.android.server.telecom.SystemStateProvider.SystemStateListener;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-
-/**
- * Unit tests for SystemStateProvider
- */
-@RunWith(JUnit4.class)
-public class SystemStateProviderTest extends TelecomTestCase {
-
- @Mock Context mContext;
- @Mock SystemStateListener mSystemStateListener;
- @Mock UiModeManager mUiModeManager;
- @Mock Intent mIntentEnter;
- @Mock Intent mIntentExit;
-
- @Override
- @Before
- public void setUp() throws Exception {
- super.setUp();
- MockitoAnnotations.initMocks(this);
- }
-
- @Override
- @After
- public void tearDown() throws Exception {
- super.tearDown();
- }
-
- @SmallTest
- @Test
- public void testListeners() throws Exception {
- SystemStateProvider systemStateProvider = new SystemStateProvider(mContext);
-
- assertFalse(systemStateProvider.removeListener(mSystemStateListener));
- systemStateProvider.addListener(mSystemStateListener);
- assertTrue(systemStateProvider.removeListener(mSystemStateListener));
- assertFalse(systemStateProvider.removeListener(mSystemStateListener));
- }
-
- @SmallTest
- @Test
- public void testQuerySystemForCarMode_True() {
- when(mContext.getSystemService(Context.UI_MODE_SERVICE)).thenReturn(mUiModeManager);
- when(mUiModeManager.getCurrentModeType()).thenReturn(Configuration.UI_MODE_TYPE_CAR);
- assertTrue(new SystemStateProvider(mContext).isCarMode());
- }
-
- @SmallTest
- @Test
- public void testQuerySystemForCarMode_False() {
- when(mContext.getSystemService(Context.UI_MODE_SERVICE)).thenReturn(mUiModeManager);
- when(mUiModeManager.getCurrentModeType()).thenReturn(Configuration.UI_MODE_TYPE_NORMAL);
- assertFalse(new SystemStateProvider(mContext).isCarMode());
- }
-
- @SmallTest
- @Test
- public void testReceiverAndIntentFilter() {
- ArgumentCaptor<IntentFilter> intentFilter = ArgumentCaptor.forClass(IntentFilter.class);
- new SystemStateProvider(mContext);
- verify(mContext).registerReceiver(any(BroadcastReceiver.class), intentFilter.capture());
-
- assertEquals(2, intentFilter.getValue().countActions());
- assertEquals(UiModeManager.ACTION_ENTER_CAR_MODE, intentFilter.getValue().getAction(0));
- assertEquals(UiModeManager.ACTION_EXIT_CAR_MODE, intentFilter.getValue().getAction(1));
- }
-
- @SmallTest
- @Test
- public void testOnEnterExitCarMode() {
- ArgumentCaptor<BroadcastReceiver> receiver =
- ArgumentCaptor.forClass(BroadcastReceiver.class);
- new SystemStateProvider(mContext).addListener(mSystemStateListener);
-
- verify(mContext).registerReceiver(receiver.capture(), any(IntentFilter.class));
-
- when(mIntentEnter.getAction()).thenReturn(UiModeManager.ACTION_ENTER_CAR_MODE);
- receiver.getValue().onReceive(mContext, mIntentEnter);
- verify(mSystemStateListener).onCarModeChanged(true);
-
- when(mIntentExit.getAction()).thenReturn(UiModeManager.ACTION_EXIT_CAR_MODE);
- receiver.getValue().onReceive(mContext, mIntentExit);
- verify(mSystemStateListener).onCarModeChanged(false);
-
- receiver.getValue().onReceive(mContext, new Intent("invalid action"));
- }
-}
diff --git a/tests/src/com/android/server/telecom/tests/TelecomServiceImplTest.java b/tests/src/com/android/server/telecom/tests/TelecomServiceImplTest.java
index cbca5e1..185cb97 100644
--- a/tests/src/com/android/server/telecom/tests/TelecomServiceImplTest.java
+++ b/tests/src/com/android/server/telecom/tests/TelecomServiceImplTest.java
@@ -25,6 +25,7 @@
import android.app.ActivityManager;
import android.app.AppOpsManager;
import android.content.ComponentName;
+import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
@@ -65,6 +66,8 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
+import java.util.concurrent.Executor;
+import java.util.function.IntConsumer;
import static android.Manifest.permission.REGISTER_SIM_SUBSCRIPTION;
import static android.Manifest.permission.WRITE_SECURE_SETTINGS;
@@ -81,6 +84,7 @@
import static org.mockito.Matchers.argThat;
import static org.mockito.Matchers.eq;
import static org.mockito.Matchers.isNull;
+import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.doThrow;
@@ -98,7 +102,7 @@
public static class CallIntentProcessAdapterFake implements CallIntentProcessor.Adapter {
@Override
public void processOutgoingCallIntent(Context context, CallsManager callsManager,
- Intent intent) {
+ Intent intent, String callingPackage) {
}
@@ -121,6 +125,20 @@
}
}
+ public static class SettingsSecureAdapterFake implements
+ TelecomServiceImpl.SettingsSecureAdapter {
+ @Override
+ public void putStringForUser(ContentResolver resolver, String name, String value,
+ int userHandle) {
+
+ }
+
+ @Override
+ public String getStringForUser(ContentResolver resolver, String name, int userHandle) {
+ return THIRD_PARTY_CALL_SCREENING.flattenToString();
+ }
+ }
+
private static class AnyStringIn implements ArgumentMatcher<String> {
private Collection<String> mStrings;
public AnyStringIn(Collection<String> strings) {
@@ -143,8 +161,11 @@
private CallIntentProcessor.Adapter mCallIntentProcessorAdapter =
spy(new CallIntentProcessAdapterFake());
@Mock private DefaultDialerCache mDefaultDialerCache;
+ private IntConsumer mDefaultDialerObserver;
private TelecomServiceImpl.SubscriptionManagerAdapter mSubscriptionManagerAdapter =
spy(new SubscriptionManagerAdapterFake());
+ private TelecomServiceImpl.SettingsSecureAdapter mSettingsSecureAdapter =
+ spy(new SettingsSecureAdapterFake());
@Mock private UserCallIntentProcessor mUserCallIntentProcessor;
private final TelecomSystem.SyncRoot mLock = new TelecomSystem.SyncRoot() { };
@@ -160,6 +181,8 @@
new ComponentName("test", "telComponentName"), "2", Binder.getCallingUserHandle());
private static final PhoneAccountHandle SIP_PA_HANDLE_CURRENT = new PhoneAccountHandle(
new ComponentName("test", "sipComponentName"), "3", Binder.getCallingUserHandle());
+ private static final ComponentName THIRD_PARTY_CALL_SCREENING = new ComponentName("com.android" +
+ ".thirdparty", "com.android.thirdparty.callscreeningserviceimpl");
@Override
@Before
@@ -172,6 +195,11 @@
doReturn(mContext).when(mContext).getApplicationContext();
doNothing().when(mContext).sendBroadcastAsUser(any(Intent.class), any(UserHandle.class),
anyString());
+ doAnswer(invocation -> {
+ mDefaultDialerObserver = invocation.getArgument(1);
+ return null;
+ }).when(mDefaultDialerCache).observeDefaultDialerApplication(any(Executor.class),
+ any(IntConsumer.class));
TelecomServiceImpl telecomServiceImpl = new TelecomServiceImpl(
mContext,
mFakeCallsManager,
@@ -185,6 +213,7 @@
},
mDefaultDialerCache,
mSubscriptionManagerAdapter,
+ mSettingsSecureAdapter,
mLock);
mTSIBinder = telecomServiceImpl.getBinder();
mComponentContextFixture.setTelecomManager(mTelecomManager);
@@ -250,7 +279,8 @@
makeMultiUserPhoneAccount(TEL_PA_HANDLE_16).build());
PhoneAccountHandle returnedHandle
- = mTSIBinder.getUserSelectedOutgoingPhoneAccount();
+ = mTSIBinder.getUserSelectedOutgoingPhoneAccount(
+ TEL_PA_HANDLE_16.getComponentName().getPackageName());
assertEquals(TEL_PA_HANDLE_16, returnedHandle);
}
@@ -726,8 +756,14 @@
String packageName = "sample.package";
int currentUser = ActivityManager.getCurrentUser();
- when(mDefaultDialerCache.setDefaultDialer(eq(packageName), eq(currentUser)))
- .thenReturn(true);
+ String[] defaultDialer = new String[1];
+ doAnswer(invocation -> {
+ defaultDialer[0] = packageName;
+ mDefaultDialerObserver.accept(currentUser);
+ return true;
+ }).when(mDefaultDialerCache).setDefaultDialer(eq(packageName), eq(currentUser));
+ doAnswer(invocation -> defaultDialer[0]).when(mDefaultDialerCache)
+ .getDefaultDialerApplication(eq(currentUser));
mTSIBinder.setDefaultDialer(packageName);
diff --git a/tests/src/com/android/server/telecom/tests/TelecomSystemTest.java b/tests/src/com/android/server/telecom/tests/TelecomSystemTest.java
index 4cf7644..82b17be 100644
--- a/tests/src/com/android/server/telecom/tests/TelecomSystemTest.java
+++ b/tests/src/com/android/server/telecom/tests/TelecomSystemTest.java
@@ -69,6 +69,7 @@
import com.android.server.telecom.AsyncRingtonePlayer;
import com.android.server.telecom.BluetoothPhoneServiceImpl;
import com.android.server.telecom.CallAudioManager;
+import com.android.server.telecom.CallAudioRouteStateMachine;
import com.android.server.telecom.CallerInfoLookupHelper;
import com.android.server.telecom.CallsManager;
import com.android.server.telecom.CallsManagerListenerBase;
@@ -85,8 +86,12 @@
import com.android.server.telecom.PhoneNumberUtilsAdapterImpl;
import com.android.server.telecom.ProximitySensorManager;
import com.android.server.telecom.ProximitySensorManagerFactory;
+import com.android.server.telecom.RoleManagerAdapter;
+import com.android.server.telecom.StatusBarNotifier;
import com.android.server.telecom.TelecomSystem;
import com.android.server.telecom.Timeouts;
+import com.android.server.telecom.WiredHeadsetManager;
+import com.android.server.telecom.bluetooth.BluetoothRouteManager;
import com.android.server.telecom.components.UserCallIntentProcessor;
import com.android.server.telecom.ui.IncomingCallNotifier;
import com.android.server.telecom.ui.MissedCallNotifierImpl.MissedCallNotifierImplFactory;
@@ -98,7 +103,9 @@
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
+import java.io.File;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
@@ -208,6 +215,7 @@
@Mock AsyncRingtonePlayer mAsyncRingtonePlayer;
@Mock IncomingCallNotifier mIncomingCallNotifier;
@Mock ClockProxy mClockProxy;
+ @Mock RoleManagerAdapter mRoleManagerAdapter;
final ComponentName mInCallServiceComponentNameX =
new ComponentName(
@@ -383,8 +391,8 @@
IInCallAdapter inCallAdapter = mInCallServiceFixtureX.getInCallAdapter();
inCallAdapter.conference(callId1.mCallId, callId2.mCallId);
- // Wait for wacky non-deterministic behavior
- Thread.sleep(200);
+ // Wait for the handler in ConnectionService
+ waitForHandlerAction(new Handler(Looper.getMainLooper()), TEST_TIMEOUT);
ParcelableCall call1 = mInCallServiceFixtureX.getCall(callId1.mCallId);
ParcelableCall call2 = mInCallServiceFixtureX.getCall(callId2.mCallId);
// Check that the two calls end up with a parent in the end
@@ -402,6 +410,15 @@
}
private void setupTelecomSystem() throws Exception {
+ // Remove any cached PhoneAccount xml
+ File phoneAccountFile =
+ new File(mComponentContextFixture.getTestDouble()
+ .getApplicationContext().getFilesDir(),
+ PhoneAccountRegistrar.FILE_NAME);
+ if (phoneAccountFile.exists()) {
+ phoneAccountFile.delete();
+ }
+
// Use actual implementations instead of mocking the interface out.
HeadsetMediaButtonFactory headsetMediaButtonFactory =
spy(new HeadsetMediaButtonFactoryF());
@@ -420,48 +437,46 @@
mClockProxy = mock(ClockProxy.class);
when(mClockProxy.currentTimeMillis()).thenReturn(TEST_CREATE_TIME);
when(mClockProxy.elapsedRealtime()).thenReturn(TEST_CREATE_ELAPSED_TIME);
+ when(mRoleManagerAdapter.getCallCompanionApps()).thenReturn(Collections.emptyList());
+ when(mRoleManagerAdapter.getDefaultCallScreeningApp()).thenReturn(null);
+ when(mRoleManagerAdapter.getCarModeDialerApp()).thenReturn(null);
mTelecomSystem = new TelecomSystem(
mComponentContextFixture.getTestDouble(),
- new MissedCallNotifierImplFactory() {
- @Override
- public MissedCallNotifier makeMissedCallNotifierImpl(Context context,
- PhoneAccountRegistrar phoneAccountRegistrar,
- DefaultDialerCache defaultDialerCache) {
- return mMissedCallNotifier;
- }
- },
+ (context, phoneAccountRegistrar, defaultDialerCache) -> mMissedCallNotifier,
mCallerInfoAsyncQueryFactoryFixture.getTestDouble(),
headsetMediaButtonFactory,
proximitySensorManagerFactory,
inCallWakeLockControllerFactory,
- new CallAudioManager.AudioServiceFactory() {
- @Override
- public IAudioService getAudioService() {
- return mAudioService;
- }
- },
- new BluetoothPhoneServiceImpl.BluetoothPhoneServiceImplFactory() {
- @Override
- public BluetoothPhoneServiceImpl makeBluetoothPhoneServiceImpl(Context context,
- TelecomSystem.SyncRoot lock, CallsManager callsManager,
- PhoneAccountRegistrar phoneAccountRegistrar) {
- return mBluetoothPhoneServiceImpl;
- }
- },
- new ConnectionServiceFocusManager.ConnectionServiceFocusManagerFactory() {
- @Override
- public ConnectionServiceFocusManager create(
- ConnectionServiceFocusManager.CallsManagerRequester requester,
- Looper looper) {
- return new ConnectionServiceFocusManager(requester, looper);
- }
- },
+ () -> mAudioService,
+ (context, lock, callsManager, phoneAccountRegistrar) -> mBluetoothPhoneServiceImpl,
+ ConnectionServiceFocusManager::new,
mTimeoutsAdapter,
mAsyncRingtonePlayer,
mPhoneNumberUtilsAdapter,
mIncomingCallNotifier,
(streamType, volume) -> mock(ToneGenerator.class),
- mClockProxy);
+ new CallAudioRouteStateMachine.Factory() {
+ @Override
+ public CallAudioRouteStateMachine create(
+ Context context,
+ CallsManager callsManager,
+ BluetoothRouteManager bluetoothManager,
+ WiredHeadsetManager wiredHeadsetManager,
+ StatusBarNotifier statusBarNotifier,
+ CallAudioManager.AudioServiceFactory audioServiceFactory,
+ int earpieceControl) {
+ return new CallAudioRouteStateMachine(context,
+ callsManager,
+ bluetoothManager,
+ wiredHeadsetManager,
+ statusBarNotifier,
+ audioServiceFactory,
+ // Force enable an earpiece for the end-to-end tests
+ CallAudioRouteStateMachine.EARPIECE_FORCE_ENABLED);
+ }
+ },
+ mClockProxy,
+ mRoleManagerAdapter);
mComponentContextFixture.setTelecomManager(new TelecomManager(
mComponentContextFixture.getTestDouble(),
@@ -502,7 +517,7 @@
private void setupInCallServices() throws Exception {
mComponentContextFixture.putResource(
- com.android.server.telecom.R.string.ui_default_package,
+ com.android.internal.R.string.config_defaultDialer,
mInCallServiceComponentNameX.getPackageName());
mComponentContextFixture.putResource(
com.android.server.telecom.R.string.incall_default_class,
@@ -553,8 +568,11 @@
ConnectionServiceFixture connectionServiceFixture)
throws Exception {
- return startOutgoingPhoneCallPendingCreateConnection(number, null,
- connectionServiceFixture, Process.myUserHandle(), VideoProfile.STATE_AUDIO_ONLY);
+ startOutgoingPhoneCallWaitForBroadcaster(number, null,
+ connectionServiceFixture, Process.myUserHandle(), VideoProfile.STATE_AUDIO_ONLY,
+ false /*isEmergency*/);
+
+ return mInCallServiceFixtureX.mLatestCallId;
}
protected IdPair outgoingCallPhoneAccountSelected(PhoneAccountHandle phoneAccountHandle,
@@ -674,23 +692,22 @@
Context localAppContext = mComponentContextFixture.getTestDouble().getApplicationContext();
new UserCallIntentProcessor(localAppContext, userHandle).processIntent(
actionCallIntent, null, true /* hasCallAppOp*/, false /* isLocal */);
- // UserCallIntentProcessor's mContext.sendBroadcastAsUser(...) will call to an empty method
- // as to not actually try to send an intent to PrimaryCallReceiver. We verify that it was
- // called correctly in order to continue.
- verify(localAppContext).sendBroadcastAsUser(actionCallIntent, UserHandle.SYSTEM);
- mTelecomSystem.getCallIntentProcessor().processIntent(actionCallIntent);
// Wait for handler to start CallerInfo lookup.
waitForHandlerAction(new Handler(Looper.getMainLooper()), TEST_TIMEOUT);
// Send the CallerInfo lookup reply.
mCallerInfoAsyncQueryFactoryFixture.mRequests.forEach(
CallerInfoAsyncQueryFactoryFixture.Request::reply);
+ if (phoneAccountHandle != null) {
+ mTelecomSystem.getCallsManager().getLatestPostSelectionProcessingFuture().join();
+ }
+ waitForHandlerAction(new Handler(Looper.getMainLooper()), TEST_TIMEOUT);
boolean isSelfManaged = phoneAccountHandle == mPhoneAccountSelfManaged.getAccountHandle();
if (!hasInCallAdapter && !isSelfManaged) {
- verify(mInCallServiceFixtureX.getTestDouble())
+ verify(mInCallServiceFixtureX.getTestDouble(), timeout(TEST_TIMEOUT))
.setInCallAdapter(
any(IInCallAdapter.class));
- verify(mInCallServiceFixtureY.getTestDouble())
+ verify(mInCallServiceFixtureY.getTestDouble(), timeout(TEST_TIMEOUT))
.setInCallAdapter(
any(IInCallAdapter.class));
}
@@ -702,7 +719,13 @@
int videoState) throws Exception {
startOutgoingPhoneCallWaitForBroadcaster(number,phoneAccountHandle,
connectionServiceFixture, initiatingUser, videoState, false /*isEmergency*/);
+ waitForHandlerAction(new Handler(Looper.getMainLooper()), TEST_TIMEOUT);
+ verifyAndProcessOutgoingCallBroadcast(phoneAccountHandle);
+ return mInCallServiceFixtureX.mLatestCallId;
+ }
+
+ protected void verifyAndProcessOutgoingCallBroadcast(PhoneAccountHandle phoneAccountHandle) {
ArgumentCaptor<Intent> newOutgoingCallIntent =
ArgumentCaptor.forClass(Intent.class);
ArgumentCaptor<BroadcastReceiver> newOutgoingCallReceiver =
@@ -716,6 +739,7 @@
any(UserHandle.class),
anyString(),
anyInt(),
+ any(Bundle.class),
newOutgoingCallReceiver.capture(),
nullable(Handler.class),
anyInt(),
@@ -731,7 +755,6 @@
newOutgoingCallIntent.getValue());
}
- return mInCallServiceFixtureX.mLatestCallId;
}
// When Telecom is redialing due to an error, we need to make sure the number of connections
@@ -763,14 +786,16 @@
ConnectionServiceFixture connectionServiceFixture) throws Exception {
// Wait for the focus tracker.
- waitForHandlerAction(new Handler(Looper.getMainLooper()), TEST_TIMEOUT);
+ waitForHandlerAction(mTelecomSystem.getCallsManager()
+ .getConnectionServiceFocusManager().getHandler(), TEST_TIMEOUT);
verify(connectionServiceFixture.getTestDouble())
.createConnection(eq(phoneAccountHandle), anyString(), any(ConnectionRequest.class),
eq(false)/*isIncoming*/, anyBoolean(), any());
// Wait for handleCreateConnectionComplete
waitForHandlerAction(new Handler(Looper.getMainLooper()), TEST_TIMEOUT);
- assertEquals(startingNumConnections + 1, connectionServiceFixture.mConnectionById.size());
+ assertEquals(startingNumConnections + 1,
+ connectionServiceFixture.mConnectionById.size());
// Wait for the callback in ConnectionService#onAdapterAttached to execute.
waitForHandlerAction(new Handler(Looper.getMainLooper()), TEST_TIMEOUT);
@@ -847,14 +872,6 @@
//Wait for/Verify call blocking happened asynchronously
incomingCallAddedLatch.await(TEST_TIMEOUT, TimeUnit.MILLISECONDS);
- IContentProvider blockedNumberProvider =
- mSpyContext.getContentResolver().acquireProvider(BlockedNumberContract.AUTHORITY);
- verify(blockedNumberProvider, timeout(TEST_TIMEOUT)).call(
- anyString(),
- eq(BlockedNumberContract.SystemContract.METHOD_SHOULD_SYSTEM_BLOCK_NUMBER),
- eq(number),
- isNotNull(Bundle.class));
-
// For the case of incoming calls, Telecom connecting the InCall services and adding the
// Call is triggered by the async completion of the CallerInfoAsyncQuery. Once the Call
// is added, future interactions as triggered by the ConnectionService, through the various
@@ -972,6 +989,9 @@
mInCallServiceFixtureX.mInCallAdapter
.answerCall(ids.mCallId, videoState);
+ // Wait on the CS focus manager handler
+ waitForHandlerAction(mTelecomSystem.getCallsManager()
+ .getConnectionServiceFocusManager().getHandler(), TEST_TIMEOUT);
if (!VideoProfile.isVideo(videoState)) {
verify(connectionServiceFixture.getTestDouble(), timeout(TEST_TIMEOUT))
diff --git a/tests/src/com/android/server/telecom/tests/TelecomTestCase.java b/tests/src/com/android/server/telecom/tests/TelecomTestCase.java
index c356cb4..637895b 100644
--- a/tests/src/com/android/server/telecom/tests/TelecomTestCase.java
+++ b/tests/src/com/android/server/telecom/tests/TelecomTestCase.java
@@ -16,13 +16,14 @@
package com.android.server.telecom.tests;
-import org.mockito.MockitoAnnotations;
-
import android.content.Context;
import android.os.Handler;
-import android.support.test.InstrumentationRegistry;
import android.telecom.Log;
+import androidx.test.InstrumentationRegistry;
+
+import org.mockito.MockitoAnnotations;
+
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
diff --git a/tests/src/com/android/server/telecom/tests/VideoProviderProxyTest.java b/tests/src/com/android/server/telecom/tests/VideoProviderProxyTest.java
new file mode 100644
index 0000000..b09aa5b
--- /dev/null
+++ b/tests/src/com/android/server/telecom/tests/VideoProviderProxyTest.java
@@ -0,0 +1,134 @@
+/*
+ * Copyright (C) 2018 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 static org.junit.Assert.assertEquals;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.os.IBinder;
+import android.telecom.VideoProfile;
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.internal.telecom.IVideoProvider;
+import com.android.server.telecom.Analytics;
+import com.android.server.telecom.Call;
+import com.android.server.telecom.CurrentUserProxy;
+import com.android.server.telecom.TelecomSystem;
+import com.android.server.telecom.VideoProviderProxy;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+public class VideoProviderProxyTest extends TelecomTestCase {
+
+ private TelecomSystem.SyncRoot mLock;
+ private VideoProviderProxy mVideoProviderProxy;
+ @Mock private IVideoProvider mVideoProvider;
+ @Mock private IBinder mIBinder;
+ @Mock private Call mCall;
+ @Mock private Analytics.CallInfo mCallInfo;
+ @Mock private CurrentUserProxy mCurrentUserProxy;
+ @Mock private VideoProviderProxy.Listener mListener;
+
+ @Override
+ @Before
+ public void setUp() throws Exception {
+ super.setUp();
+ MockitoAnnotations.initMocks(this);
+ mLock = new TelecomSystem.SyncRoot() { };
+
+ when(mVideoProvider.asBinder()).thenReturn(mIBinder);
+ doNothing().when(mIBinder).linkToDeath(any(), anyInt());
+ when(mCall.getAnalytics()).thenReturn(mCallInfo);
+ doNothing().when(mCallInfo).addVideoEvent(anyInt(), anyInt());
+ doNothing().when(mCall).maybeEnableSpeakerForVideoUpgrade(anyInt());
+ mVideoProviderProxy = new VideoProviderProxy(mLock, mVideoProvider, mCall,
+ mCurrentUserProxy);
+ mVideoProviderProxy.addListener(mListener);
+ }
+
+ /**
+ * Tests the case where we receive a request to upgrade to video, except:
+ * 1. Phone account says we support video.
+ * 2. Call says we don't support video.
+ *
+ * Ensures that we send back a response immediately to indicate the call should remain as
+ * audio-only.
+ * @throws Exception
+ */
+ @SmallTest
+ @Test
+ public void testReceiveUpgradeRequestWhenLocalDoesntSupportVideo() throws Exception {
+ // Given a call which supports video at the phone account level, but is not currently
+ // marked as supporting video locally.
+ when(mCall.isLocallyVideoCapable()).thenReturn(false);
+ when(mCall.isVideoCallingSupportedByPhoneAccount()).thenReturn(true);
+
+ // Simulate receiving a request to upgrade to video.
+ mVideoProviderProxy.getVideoCallListenerBinder().receiveSessionModifyRequest(
+ new VideoProfile(VideoProfile.STATE_BIDIRECTIONAL));
+
+ // Make sure that we send back a response rejecting the request.
+ ArgumentCaptor<VideoProfile> capturedProfile = ArgumentCaptor.forClass(VideoProfile.class);
+ verify(mVideoProvider).sendSessionModifyResponse(capturedProfile.capture());
+ assertEquals(VideoProfile.STATE_AUDIO_ONLY, capturedProfile.getValue().getVideoState());
+ }
+
+ /**
+ * Tests the case where we receive a request to upgrade to video and video is supported.
+ * @throws Exception
+ */
+ @SmallTest
+ @Test
+ public void testReceiveUpgradeRequestWhenVideoIsSupported() throws Exception {
+ // Given a call which supports video at the phone account level, and is currently marked as
+ // supporting video locally.
+ when(mCall.isLocallyVideoCapable()).thenReturn(true);
+ when(mCall.isVideoCallingSupportedByPhoneAccount()).thenReturn(true);
+
+ // Simulate receiving a request to upgrade to video.
+ mVideoProviderProxy.getVideoCallListenerBinder().receiveSessionModifyRequest(
+ new VideoProfile(VideoProfile.STATE_BIDIRECTIONAL));
+
+ // Ensure it gets proxied back to the caller.
+
+ ArgumentCaptor<VideoProfile> capturedProfile = ArgumentCaptor.forClass(VideoProfile.class);
+ verify(mListener).onSessionModifyRequestReceived(any(), capturedProfile.capture());
+ assertEquals(VideoProfile.STATE_BIDIRECTIONAL, capturedProfile.getValue().getVideoState());
+ }
+
+ /**
+ * Tests the case where dialer requests an upgrade to video; we should try to change to speaker.
+ * @throws Exception
+ */
+ @SmallTest
+ @Test
+ public void testTryToEnableSpeakerOnVideoUpgrade() throws Exception {
+ mVideoProviderProxy.onSendSessionModifyRequest(
+ new VideoProfile(VideoProfile.STATE_AUDIO_ONLY),
+ new VideoProfile(VideoProfile.STATE_BIDIRECTIONAL));
+ verify(mCall).maybeEnableSpeakerForVideoUpgrade(eq(VideoProfile.STATE_BIDIRECTIONAL));
+ }
+}
diff --git a/tests/src/com/android/server/telecom/tests/VideoProviderTest.java b/tests/src/com/android/server/telecom/tests/VideoProviderTest.java
index 75dc36f..eacecf9 100644
--- a/tests/src/com/android/server/telecom/tests/VideoProviderTest.java
+++ b/tests/src/com/android/server/telecom/tests/VideoProviderTest.java
@@ -34,6 +34,7 @@
import android.os.Handler;
import android.os.Looper;
import android.os.UserHandle;
+import android.telecom.Connection;
import android.telecom.Connection.VideoProvider;
import android.telecom.InCallService;
import android.telecom.InCallService.VideoCall;
@@ -96,7 +97,8 @@
super.setUp();
mContext = mComponentContextFixture.getTestDouble().getApplicationContext();
mAppOpsManager = (AppOpsManager) mContext.getSystemService(Context.APP_OPS_SERVICE);
-
+ mConnectionServiceFixtureA.mConnectionServiceDelegate.mCapabilities
+ |= Connection.CAPABILITY_SUPPORTS_VT_LOCAL_BIDIRECTIONAL;
mCallIds = startAndMakeActiveOutgoingCall(
"650-555-1212",
mPhoneAccountA0.getAccountHandle(),