summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2023-12-01 04:31:06 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2023-12-01 04:31:06 +0000
commit6c091b4209e73ed95d716f84a212f966c96464a6 (patch)
tree1fbd8590fa9dff64e64a98b8c932fd0a983f15fd
parent2507780f4371f5788e412c09572d985f435ed76c (diff)
parenta9f7c582b2b834d334989bcf517d203e8508c1a0 (diff)
downloadSettings-android14-mainline-tethering-release.tar.gz
Snap for 11164065 from a9f7c582b2b834d334989bcf517d203e8508c1a0 to mainline-tethering-releaseaml_tet_341411060android14-mainline-tethering-release
Change-Id: Ibe94f96c5b23a952cd49988eb158eb35646d028f
-rw-r--r--res/values-ar/strings.xml4
-rw-r--r--res/values-as/strings.xml4
-rw-r--r--res/values-da/strings.xml4
-rw-r--r--res/values-de/strings.xml6
-rw-r--r--res/values-es/strings.xml2
-rw-r--r--res/values-eu/strings.xml6
-rw-r--r--res/values-fa/strings.xml4
-rw-r--r--res/values-fi/strings.xml2
-rw-r--r--res/values-fr-rCA/strings.xml6
-rw-r--r--res/values-fr/strings.xml2
-rw-r--r--res/values-hi/strings.xml18
-rw-r--r--res/values-it/strings.xml2
-rw-r--r--res/values-iw/strings.xml12
-rw-r--r--res/values-ja/strings.xml4
-rw-r--r--res/values-kn/strings.xml10
-rw-r--r--res/values-ms/strings.xml2
-rw-r--r--res/values-nb/strings.xml2
-rw-r--r--res/values-ne/strings.xml2
-rw-r--r--res/values-pt-rPT/strings.xml2
-rw-r--r--res/values-ro/strings.xml4
-rw-r--r--res/values-ru/strings.xml4
-rw-r--r--res/values-sl/strings.xml2
-rw-r--r--src/com/android/settings/DefaultRingtonePreference.java11
-rw-r--r--src/com/android/settings/RingtonePreference.java83
-rw-r--r--src/com/android/settings/notification/NotificationAccessConfirmationActivity.java20
-rw-r--r--src/com/android/settings/notification/app/NotificationSoundPreference.java12
-rw-r--r--tests/unit/src/com/android/settings/DefaultRingtonePreferenceTest.java81
27 files changed, 244 insertions, 67 deletions
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index c9dab5502dd..8f9dac1c145 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -907,9 +907,9 @@
<string name="wifi_hotspot_speed_2g_summary" msgid="6930273933810520155">"السرعات الأبطأ: متوافقة مع معظم الأجهزة"</string>
<string name="wifi_hotspot_speed_5g" msgid="4058116867148848395">"‫5 غيغاهرتز"</string>
<string name="wifi_hotspot_speed_5g_summary" msgid="562987935924535694">"السرعات العالية: متوافقة مع أجهزة كثرة"</string>
- <string name="wifi_hotspot_speed_2g_5g" msgid="9192756255938408285">"‫2.4 و5 غيغاهرتز"</string>
+ <string name="wifi_hotspot_speed_2g_5g" msgid="9192756255938408285">"‫٢.٤ و٥ غيغاهرتز"</string>
<string name="wifi_hotspot_speed_2g_5g_summary" msgid="8104575293617700173">"السرعات العالية: نقطة الاتصال المزدوجة النطاق هذه متوافقة مع معظم الأجهزة."</string>
- <string name="wifi_hotspot_speed_6g" msgid="3787697484862730500">"‫6 غيغاهرتز"</string>
+ <string name="wifi_hotspot_speed_6g" msgid="3787697484862730500">"‫٦ غيغاهرتز"</string>
<string name="wifi_hotspot_speed_6g_summary" msgid="8675262219242174548">"السرعات الأعلى: متوافقة مع أجهزة قليلة"</string>
<string name="wifi_hotspot_speed_summary_unavailable" msgid="7276080644693388756">"لا تتوفّر هذه السرعة في بلدك أو منطقتك."</string>
<string name="wifi_hotspot_speed_footer" msgid="8846939503916795002">"إذا كان معدّل التردد المفضّل لديك غير متاح، قد تستخدم نقطة الاتصال معدّل تردد مختلف. قد تتغير إعدادات أمان نقطة الاتصال في حال تغيير معدّل التردد."</string>
diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml
index debd1fddea7..909348feddd 100644
--- a/res/values-as/strings.xml
+++ b/res/values-as/strings.xml
@@ -25,8 +25,8 @@
<string name="device_info_default" msgid="1406619232867343310">"অজ্ঞাত"</string>
<string name="device_info_protected_single_press" msgid="3810785480060743677">"তথ্য দেখুৱাবলৈ টিপক"</string>
<string name="show_dev_countdown" msgid="2936506773086395069">"{count,plural, =1{আপুনি এতিয়া এগৰাকী বিকাশকৰ্তা হোৱাৰ পৰা # টা পদক্ষেপ দূৰত আছে।}one{আপুনি এতিয়া এগৰাকী বিকাশকৰ্তা হোৱাৰ পৰা # টা পদক্ষেপ দূৰত আছে।}other{আপুনি এতিয়া এগৰাকী বিকাশকৰ্তা হোৱাৰ পৰা # টা পদক্ষেপ দূৰত আছে।}}"</string>
- <string name="show_dev_on" msgid="2840850085134853754">"এতিয়া আপুনি এজন বিকাশকৰ্তা!"</string>
- <string name="show_dev_already" msgid="7041756429707644630">"কোনো প্ৰয়োজন নাই, আপুনি ইতিমধ্যে এজন ডেভেলপাৰ।"</string>
+ <string name="show_dev_on" msgid="2840850085134853754">"এতিয়া আপুনি এগৰাকী বিকাশকৰ্তা!"</string>
+ <string name="show_dev_already" msgid="7041756429707644630">"কোনো প্ৰয়োজন নাই, আপুনি ইতিমধ্যে এগৰাকী ডেভেলপাৰ।"</string>
<string name="dev_settings_disabled_warning" msgid="6971867026249671244">"অনুগ্ৰহ কৰি প্ৰথমে বিকাশকৰ্তাৰ বিকল্পসমূহ সক্ষম কৰক।"</string>
<string name="header_category_system" msgid="1665516346845259058">"ছিষ্টেম"</string>
<string name="radioInfo_service_in" msgid="9088637745836646271">"সেৱাত আছে"</string>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 5bb58e4198d..bde5cc6b5ef 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -879,7 +879,7 @@
<string name="wifi_p2p_remembered_groups" msgid="5497007770930525695">"Gemte grupper"</string>
<string name="wifi_p2p_failed_connect_message" msgid="6767831720507440027">"Der kunne ikke oprettes forbindelse."</string>
<string name="wifi_p2p_failed_rename_message" msgid="1317434386267376606">"Enheden kunne ikke omdøbes."</string>
- <string name="wifi_p2p_disconnect_title" msgid="96361896458072463">"Vil du afbryde?"</string>
+ <string name="wifi_p2p_disconnect_title" msgid="96361896458072463">"Vil du afbryde forbindelsen?"</string>
<string name="wifi_p2p_disconnect_message" msgid="1208761239498807208">"Hvis du afbryder, stoppes forbindelsen til <xliff:g id="PEER_NAME">%1$s</xliff:g>."</string>
<string name="wifi_p2p_disconnect_multiple_message" msgid="4490648217799144078">"Hvis du afbryder, stoppes forbindelsen til <xliff:g id="PEER_NAME">%1$s</xliff:g> og <xliff:g id="PEER_COUNT">%2$s</xliff:g> andre enheder."</string>
<string name="wifi_p2p_cancel_connect_title" msgid="8476985132989357041">"Vil du annullere invitationen?"</string>
@@ -2601,7 +2601,7 @@
<string name="vpn_forget" msgid="2913950864877236737">"Glem"</string>
<string name="vpn_connect_to" msgid="216709261691085594">"Opret forbindelse til <xliff:g id="PROFILE">%s</xliff:g>"</string>
<string name="vpn_disconnect_confirm" msgid="6356789348816854539">"Vil du afbryde dette VPN?"</string>
- <string name="vpn_disconnect" msgid="7753808961085867345">"Afbryd"</string>
+ <string name="vpn_disconnect" msgid="7753808961085867345">"Afbryd forbindelse"</string>
<string name="vpn_version" msgid="6344167191984400976">"Version"</string>
<string name="vpn_forget_long" msgid="729132269203870205">"Glem VPN"</string>
<string name="vpn_replace_vpn_title" msgid="3994226561866340280">"Erstat det eksisterende VPN-netværk?"</string>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index fe5117f0e1f..fad95f8f539 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -263,7 +263,7 @@
<string name="disabled_by_administrator_summary" msgid="5424846182313851124">"Nicht verfügbar"</string>
<string name="security_status_title" msgid="6958004275337618656">"Sicherheitsstatus"</string>
<string name="security_dashboard_summary" msgid="7571035662779425918">"Displaysperre, „Mein Gerät finden“, App-Sicherheit"</string>
- <string name="safety_center_title" msgid="7732397372178774777">"Sicherheit und Datenschutz"</string>
+ <string name="safety_center_title" msgid="7732397372178774777">"Datenschutz &amp; Sicherheit"</string>
<string name="safety_center_summary" msgid="3554867379951053869">"App-Sicherheit, Gerätesperre, Berechtigungen"</string>
<string name="security_settings_face_preference_summary" msgid="6675126437396914838">"Gesicht hinzugefügt"</string>
<string name="security_settings_face_preference_summary_none" msgid="523320857738436024">"Einrichtung erforderlich"</string>
@@ -2849,7 +2849,7 @@
<string name="nfc_and_payment_settings_no_payment_installed_summary" msgid="4879818114908207465">"Installiere zuerst eine Zahlungs-App, damit du die Option verwenden kannst"</string>
<string name="app_and_notification_dashboard_summary" msgid="8047683010984186106">"Kürzlich geöffnete Apps, Standard-Apps"</string>
<string name="notification_settings_work_profile" msgid="6076211850526353975">"Für Apps im Arbeitsprofil ist der Benachrichtigungszugriff nicht verfügbar."</string>
- <string name="account_dashboard_title" msgid="8228773251948253914">"Passwörter und Konten"</string>
+ <string name="account_dashboard_title" msgid="8228773251948253914">"Passwörter &amp; Konten"</string>
<string name="account_dashboard_default_summary" msgid="1730719656099599488">"Gespeicherte Passwörter, Autofill, synchronisierte Konten"</string>
<string name="app_default_dashboard_title" msgid="4071015747629103216">"Standard-Apps"</string>
<string name="cloned_apps_dashboard_title" msgid="5542076801222950921">"Geklonte Apps"</string>
@@ -3907,7 +3907,7 @@
<string name="system_navigation_title" msgid="4890381153527184636">"Navigationsmodus"</string>
<string name="swipe_up_to_switch_apps_title" msgid="6677266952021118342">"Bedienung über 2 Schaltflächen"</string>
<string name="swipe_up_to_switch_apps_summary" msgid="1415457307836359560">"Wenn du zwischen Apps wechseln möchtest, wische auf der Startbildschirmtaste nach oben. Wische noch einmal nach oben, um alle Apps zu sehen. Tippe auf die Schaltfläche \"Zurück\", um zurückzugehen."</string>
- <string name="emergency_settings_preference_title" msgid="6183455153241187148">"Sicherheit und Notfälle"</string>
+ <string name="emergency_settings_preference_title" msgid="6183455153241187148">"Notfälle &amp; Sicherheit"</string>
<string name="emergency_dashboard_summary" msgid="401033951074039302">"Notfall-SOS, medizinische Informationen, Benachrichtigungen"</string>
<string name="edge_to_edge_navigation_title" msgid="714427081306043819">"Bedienung über Gesten"</string>
<string name="edge_to_edge_navigation_summary" msgid="8497033810637690561">"Öffne den Startbildschirm, indem du vom unteren Bildschirmrand nach oben wischst. Wenn du zwischen Apps wechseln möchtest, wische von unten nach oben, halte den Finger gedrückt und lass ihn dann los. Wenn du zurückgehen möchtest, wische vom linken oder vom rechten Rand nach innen."</string>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 3c3b806edc5..617ddc28f68 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -1384,7 +1384,7 @@
<string name="about_settings_summary" msgid="4831942939227432513">"Ver información legal, estado, versión del software"</string>
<string name="legal_information" msgid="7509900979811934843">"Información legal"</string>
<string name="manual" msgid="3651593989906084868">"Manual"</string>
- <string name="regulatory_labels" msgid="5960251403367154270">"Etiquetas normativas"</string>
+ <string name="regulatory_labels" msgid="5960251403367154270">"Etiquetas regulatorias"</string>
<string name="safety_and_regulatory_info" msgid="8285048080439298528">"Manual de seguridad y normativas"</string>
<string name="copyright_title" msgid="83245306827757857">"Derechos de autor"</string>
<string name="license_title" msgid="8745742085916617540">"Licencia"</string>
diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml
index 66680aed27a..c4c835c949b 100644
--- a/res/values-eu/strings.xml
+++ b/res/values-eu/strings.xml
@@ -106,7 +106,7 @@
<string name="bluetooth_disable_hw_offload_dialog_cancel" msgid="3663690305043973720">"Utzi"</string>
<string name="bluetooth_disable_leaudio" msgid="8619410595945155354">"Desgaitu Kontsumo txikiko Bluetooth bidezko audioa"</string>
<string name="bluetooth_disable_leaudio_summary" msgid="4756307633476985470">"Kontsumo txikiko Bluetooth bidezko audioa darabilten hardware-gaitasunak gailuarekin bateragarriak badira, Kontsumo txikiko Bluetooth bidezko audioa eginbidea desgaitzen du."</string>
- <string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"Erakutsi kontsumo txikiko Bluetooth bidezko audioaren etengailua gailuaren xehetasunetan"</string>
+ <string name="bluetooth_show_leaudio_device_details" msgid="3306637862550475370">"Erakutsi kontsumo txikiko audioaren etengailua gailuaren xehetasunetan"</string>
<string name="bluetooth_enable_leaudio_allow_list" msgid="1692999156437357534">"Gaitu kontsumo txikiko Bluetooth bidezko audioaren Onartutakoen zerrenda"</string>
<string name="bluetooth_enable_leaudio_allow_list_summary" msgid="725601205276008525">"Gaitu kontsumo txikiko Bluetooth bidezko audioaren Onartutakoen zerrenda eginbidea."</string>
<string name="connected_device_media_device_title" msgid="3783388247594566734">"Multimedia-gailuak"</string>
@@ -3291,7 +3291,7 @@
<string name="interact_across_profiles_summary_allowed" msgid="1365881452153799092">"Konektatuta"</string>
<string name="interact_across_profiles_summary_not_allowed" msgid="5802674212788171790">"Konektatu gabe"</string>
<string name="interact_across_profiles_empty_text" msgid="419061031064397168">"Ez dago aplikaziorik konektatuta"</string>
- <string name="interact_across_profiles_keywords" msgid="5996472773111665049">"gurutzatu profila konektatutako aplikazioak laneko aplikazioa eta aplikazio pertsonala"</string>
+ <string name="interact_across_profiles_keywords" msgid="5996472773111665049">"profilartekoa konektatutako aplikazioak laneko aplikazioa eta aplikazio pertsonala"</string>
<string name="interact_across_profiles_switch_enabled" msgid="7294719120282287495">"Konektatuta"</string>
<string name="interact_across_profiles_switch_disabled" msgid="4312196170211463988">"Konektatu aplikazioak"</string>
<string name="interact_across_profiles_summary_1" msgid="6093976896137600231">"Konektatutako aplikazioek baimenak partekatzen dituzte eta batak bestearen datuak atzitu ahal dituzte."</string>
@@ -3891,7 +3891,7 @@
<string name="managed_profile_settings_title" msgid="3400923723423564217">"Laneko profilaren ezarpenak"</string>
<string name="managed_profile_contact_search_title" msgid="6562061740814513737">"Bilatu laneko kontaktuak aplikazio pertsonaletan"</string>
<string name="managed_profile_contact_search_summary" msgid="4974727886709219105">"IKT saileko administratzailea bilaketak eta sarrerako deiak ikusteko gai izango da, agian"</string>
- <string name="cross_profile_calendar_title" msgid="7570277841490216947">"Profilekin sinkronizatutako egutegia"</string>
+ <string name="cross_profile_calendar_title" msgid="7570277841490216947">"Profilarteko egutegia"</string>
<string name="cross_profile_calendar_summary" msgid="8856185206722860069">"Erakutsi laneko gertaerak egutegi pertsonalean"</string>
<string name="managed_profile_settings_footer" msgid="996500759305118103">"Laneko aplikazioak desaktibatuta daudenean, pausatuta daude. Gainera, ezin dira atzitu, eta ez duzu jasoko haien jakinarazpenik."</string>
<string name="automatic_storage_manager_settings" msgid="519158151463974656">"Kudeatu memoria"</string>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index 95202136447..42f0ca9a9cc 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -3865,7 +3865,7 @@
<string name="keywords_long_background_tasks" msgid="5788956269136054574">"کارهای طولانی، انتقال داده، کارهای پس‌زمینه"</string>
<string name="reset_shortcut_manager_throttling" msgid="2183940254903144298">"‏بازنشانی محدودکننده سرعت ShortcutManager"</string>
<string name="reset_shortcut_manager_throttling_complete" msgid="8949943009096885470">"‏محدودکننده سرعت ShortcutManager بازنشانی شد"</string>
- <string name="notification_suggestion_title" msgid="6309263655965785411">"کنترل اطلاعات روی صفحه قفل"</string>
+ <string name="notification_suggestion_title" msgid="6309263655965785411">"کنترل بافت صفحه قفل"</string>
<string name="notification_suggestion_summary" msgid="7615611244249276113">"نمایش یا پنهان کردن محتوای اعلان"</string>
<string name="page_tab_title_support" msgid="3235725053332345773">"نکته‌ها و پشتیبانی"</string>
<string name="developer_smallest_width" msgid="632354817870920911">"کوچک‌ترین عرض"</string>
@@ -3902,7 +3902,7 @@
<string name="gesture_preference_title" msgid="8291899281322647187">"اشاره‌ها"</string>
<string name="double_tap_power_for_camera_title" msgid="7982364144330923683">"باز کردن سریع دوربین"</string>
<string name="double_tap_power_for_camera_summary" msgid="1100926048598415509">"برای باز کردن سریع دوربین، دکمه روشن/خاموش را دو بار فشار دهید. در همه صفحه‌ها کار می‌کند."</string>
- <string name="double_twist_for_camera_mode_title" msgid="472455236910935684">"خویش‌گرفت با چرخاندن دوربین"</string>
+ <string name="double_twist_for_camera_mode_title" msgid="472455236910935684">"سلفی با چرخاندن دوربین"</string>
<string name="double_twist_for_camera_mode_summary" msgid="592503740044744951"></string>
<string name="system_navigation_title" msgid="4890381153527184636">"حالت پیمایش"</string>
<string name="swipe_up_to_switch_apps_title" msgid="6677266952021118342">"پیمایش ۲ دکمه‌ای"</string>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index 907c487aadd..53ef47a96bc 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -134,7 +134,7 @@
<string name="proxy_error" msgid="3615905975598084126">"Huomio"</string>
<string name="proxy_error_dismiss" msgid="4207430265140873078">"OK"</string>
<string name="proxy_error_invalid_host" msgid="3814412792702059247">"Antamasi palvelimen nimi on virheellinen."</string>
- <string name="proxy_error_invalid_exclusion_list" msgid="6096353559936226599">"Antamasi poissulkemisluettelo on muotoiltu virheellisesti. Anna pilkuilla erotettu poissuljettujen verkkotunnuksien luettelo."</string>
+ <string name="proxy_error_invalid_exclusion_list" msgid="6096353559936226599">"Antamasi poissulkemislista on muotoiltu virheellisesti. Anna pilkuilla erotettu poissuljettujen verkkotunnuksien lista."</string>
<string name="proxy_error_empty_port" msgid="4250295137005082992">"Täytä porttikenttä."</string>
<string name="proxy_error_empty_host_set_port" msgid="8886572276450900049">"Portti-kentän täytyy olla tyhjä, jos isäntä-kenttä on tyhjä."</string>
<string name="proxy_error_invalid_port" msgid="2830054691770209166">"Antamasi portti on virheellinen."</string>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index bb20d8b8410..e97f04ec264 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -94,7 +94,7 @@
<string name="bluetooth_connection_permission_request" msgid="8793131019383198861">"Demande de connexion Bluetooth"</string>
<string name="bluetooth_phonebook_request" msgid="1085102844577089889">"Demande d\'accès au répertoire téléphonique"</string>
<string name="bluetooth_map_request" msgid="8664081227240707479">"Demande d\'accès aux messages"</string>
- <string name="bluetooth_device_name_summary" msgid="8678342689845439583">"Visible comme « <xliff:g id="DEVICE_NAME">^1</xliff:g> » aux autres appareils"</string>
+ <string name="bluetooth_device_name_summary" msgid="8678342689845439583">"Visible en tant que « <xliff:g id="DEVICE_NAME">^1</xliff:g> » pour les autres appareils"</string>
<string name="bluetooth_off_footer" msgid="76578735660216295">"Activez le Bluetooth pour vous connecter à d\'autres appareils."</string>
<string name="bluetooth_paired_device_title" msgid="3240639218362342026">"Vos appareils"</string>
<string name="bluetooth_pairing_page_title" msgid="3403981358823707692">"Associer un autre appareil"</string>
@@ -1912,7 +1912,7 @@
<string name="accessibility_power_button_ends_call_prerefence_title" msgid="8187306131979612144">"Interrupteur pour raccrocher"</string>
<string name="accessibility_toggle_large_pointer_icon_title" msgid="5508351959249876801">"Grand curseur de souris"</string>
<string name="accessibility_toggle_large_pointer_icon_summary" msgid="1480527946039237705">"Mettez en évidence le pointeur de la souris"</string>
- <string name="accessibility_disable_animations" msgid="2993529829457179058">"Supprimer les animations"</string>
+ <string name="accessibility_disable_animations" msgid="2993529829457179058">"Retirer les animations"</string>
<string name="accessibility_disable_animations_summary" msgid="5828228669556554565">"Réduisez les mouvements sur l\'écran"</string>
<string name="accessibility_toggle_primary_mono_title" msgid="7587152099472946571">"Audio mono"</string>
<string name="accessibility_toggle_primary_mono_summary" msgid="1935283927319407303">"Combiner les chaînes lors de la lecture audio"</string>
@@ -4567,7 +4567,7 @@
<string name="app_info_all_services_label" msgid="1487070364839071105">"Tous les services"</string>
<string name="show_clip_access_notification" msgid="7782300987639778542">"Afficher l\'accès au presse-papiers"</string>
<string name="show_clip_access_notification_summary" msgid="474090757777203207">"Un message s\'affiche lorsque les applications accèdent à du texte, à des images ou à d\'autres contenus que vous avez copiés"</string>
- <string name="all_apps" msgid="3054120149509114789">"Toutes les applications"</string>
+ <string name="all_apps" msgid="3054120149509114789">"Toutes les applis"</string>
<string name="request_manage_bluetooth_permission_dont_allow" msgid="8798061333407581300">"Ne pas autoriser"</string>
<string name="uwb_settings_title" msgid="8578498712312002231">"Bande ultralarge (BUL)"</string>
<string name="uwb_settings_summary" msgid="3074271396764672268">"Aide à déterminer la position relative des appareils à proximité qui utilisent la connectivité à bande ultralarge"</string>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index cdc866403b5..de31e276e43 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -4626,7 +4626,7 @@
<string name="tare_job_min_running" msgid="6167128996320622604">"Exécution de la tâche à priorité min."</string>
<string name="tare_job_timeout_penalty" msgid="7644332836795492506">"Pénalité pour expiration du délai"</string>
<string name="tare_min_balance_exempted" msgid="6693710075762973485">"Solde minimal à pleine charge (exemptions)"</string>
- <string name="tare_min_balance_headless_app" msgid="6906353766678577244">"Solde minimal à pleine charge (appli système sans interface graphique)"</string>
+ <string name="tare_min_balance_headless_app" msgid="6906353766678577244">"Solde minimal à pleine charge (appli système headless)"</string>
<string name="tare_min_balance_other_app" msgid="3404774196832506476">"Solde minimal à pleine charge (applis restantes)"</string>
<string name="tare_min_balance_addition_app_updater" msgid="5391956072471201269">"Addition au solde minimal à pleine charge (sites de mise à jour d\'applis)"</string>
<string-array name="tare_modifiers_subfactors">
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index 0d2438bce89..1b025c920eb 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -162,7 +162,7 @@
<string name="desc_no_available_supported_locale" msgid="7883271726226947273">"सेटिंग में, इस ऐप्लिकेशन की भाषा चुनने का विकल्प मौजूद नहीं है."</string>
<string name="desc_app_locale_disclaimer" msgid="5295933110644789052">"भाषा, ऐप्लिकेशन में उपलब्ध भाषाओं से अलग हो सकती है. हो सकता है कि कुछ ऐप्लिकेशन के साथ, भाषा की यह सेटिंग काम न करे."</string>
<string name="desc_app_locale_selection_supported" msgid="6744909281573556379">"हर ऐप्लिकेशन के लिए भाषा सेट करें."</string>
- <string name="desc_introduction_of_language_picker" msgid="1038423471887102449">"आपके सिस्टम, ऐप्लिकेशन, और वेबसाइट में, आपकी पसंदीदा भाषाओं में से पहली उपलब्ध भाषा का इस्तेमाल होता है."</string>
+ <string name="desc_introduction_of_language_picker" msgid="1038423471887102449">"आपके डिवाइस का सिस्टम, उस पर मौजूद ऐप्लिकेशन और वेबसाइटें उस भाषा का इस्तेमाल करती हैं जिसे आपने अपनी पहली पसंदीदा भाषा के तौर पर सेट किया हो. इसके लिए ज़रूरी है कि चुनी गई भाषा, उस डिवाइस पर काम करती हो."</string>
<string name="desc_notice_of_language_picker" msgid="3449290526457925447">"अगर आपको हर ऐप्लिकेशन के लिए अलग भाषा चुननी है, तो ऐप्लिकेशन की भाषा सेटिंग पर जाएं."</string>
<string name="desc_locale_helper_footer_general" msgid="6112153921151780303">"ऐप्लिकेशन की भाषाओं के बारे में ज़्यादा जानें"</string>
<string name="title_change_system_locale" msgid="8589844586256566951">"क्या सिस्टम की भाषा बदलकर %s करनी है ?"</string>
@@ -212,7 +212,7 @@
<string name="settings_label" msgid="943294133671632976">"सेटिंग"</string>
<string name="settings_label_launcher" msgid="820982375501978609">"सेटिंग"</string>
<string name="settings_shortcut" msgid="8548239727871847171">"सेटिंग शॉर्टकट"</string>
- <string name="airplane_mode" msgid="3196085857882526817">"हवाई जहाज़ मोड"</string>
+ <string name="airplane_mode" msgid="3196085857882526817">"फ़्लाइट मोड"</string>
<string name="wireless_networks_settings_title" msgid="8557542379234105369">"वायरलेस और नेटवर्क"</string>
<string name="roaming" msgid="3055365654530847985">"रोमिंग"</string>
<string name="roaming_enable" msgid="7845716016861535340">"रोमिंग में डेटा चालू करें"</string>
@@ -1583,7 +1583,7 @@
<string name="system_package" msgid="7559476279008519360">"सिस्‍टम अपडेट बाहरी मीडिया में इंस्टॉल नहीं किये जा सकते"</string>
<string name="move_error_device_admin" msgid="1561502976834303626">"डिवाइस व्यवस्थापक ऐप्लिकेशन को बाहरी मीडिया पर इंस्टॉल नहीं किया जा सकता"</string>
<string name="force_stop_dlg_title" msgid="86745852555490146">"ज़बरदस्ती रोकें?"</string>
- <string name="force_stop_dlg_text" msgid="1527286468544457368">"अगर आप किसी ऐप को बलपूर्वक रोकते हैं, तो यह गलत व्यवहार कर सकता है."</string>
+ <string name="force_stop_dlg_text" msgid="1527286468544457368">"किसी ऐप्लिकेशन को ज़बरदस्ती रोकने पर, ऐसा हो सकता है कि वह ठीक तरह से काम न करे."</string>
<string name="app_disable_dlg_positive" msgid="1414218905322009505">"ऐप को अक्षम करें"</string>
<string name="app_disable_dlg_text" msgid="2449382902751908916">"अगर आप इस ऐप्लिकेशन को बंद कर देते हैं, तो हो सकता है कि Android और दूसरे ऐप्लिकेशन ठीक से काम न करें. ध्यान रखें कि आप इस ऐप्लिकेशन को मिटा नहीं सकते क्योंकि यह आपके डिवाइस पर पहले से इंस्टॉल होकर आया है. इसे बंद करने पर ऐप्लिकेशन बंद हो जाएगा और आपके डिवाइस पर दिखाई नहीं देगा."</string>
<string name="app_install_details_group_title" msgid="1172114479073704677">"स्टोर"</string>
@@ -3231,7 +3231,7 @@
<string name="notification_channel_summary_low" msgid="5549662596677692000">"आवाज़ या वाइब्रेशन न हो"</string>
<string name="notification_conversation_summary_low" msgid="6352818857388412326">"इससे किसी तरह की आवाज़ या वाइब्रेशन नहीं होता और ये सूचनाएं, बातचीत सेक्शन में सबसे नीचे दिखती हैं"</string>
<string name="notification_channel_summary_default" msgid="1168420867670390611">"डिवाइस की सेटिंग के हिसाब से, सूचना आने पर घंटी बज सकती है या वाइब्रेशन हो सकता है"</string>
- <string name="notification_channel_summary_high" msgid="3411637309360617621">"जब डिवाइस अनलॉक हो, तो स्क्रीन के सबसे ऊपर बैनर के रूप में सूचनाएं दिखाएं"</string>
+ <string name="notification_channel_summary_high" msgid="3411637309360617621">"डिवाइस अनलॉक होने पर, सूचनाओं को स्क्रीन के सबसे ऊपर बैनर के रूप में दिखाएं"</string>
<string name="notification_switch_label" msgid="8029371325967501557">"\"<xliff:g id="APP_NAME">%1$s</xliff:g>\" की सभी सूचनाएं"</string>
<string name="notification_app_switch_label" msgid="4422902423925084193">"<xliff:g id="APP_NAME">%1$s</xliff:g> की सभी सूचनाएं"</string>
<string name="notifications_sent_daily" msgid="10274479224185437">"{count,plural, =1{हर दिन करीब # सूचना}one{हर दिन करीब # सूचना}other{हर दिन करीब # सूचनाएं}}"</string>
@@ -3288,8 +3288,8 @@
<string name="picture_in_picture_app_detail_switch" msgid="8544190716075624017">"पिक्चर में पिक्चर बनाने की अनुमति दें"</string>
<string name="picture_in_picture_app_detail_summary" msgid="2503211101305358849">"ऐप्लिकेशन के खुले होने पर या आपके उसे छोड़ देने के बाद, उस ऐप्लिकेशन को पिक्चर में पिक्चर बनाने की अनुमति दें (उदाहरण के लिए, कोई वीडियो देखते रहने के लिए). यह विंडो उन दूसरे ऐप्लिकेशन के ऊपर दिखती है जिनका इस्तेमाल किया जा रहा है."</string>
<string name="interact_across_profiles_title" msgid="7285906999927669971">"कनेक्ट किए गए निजी और वर्क ऐप्लिकेशन"</string>
- <string name="interact_across_profiles_summary_allowed" msgid="1365881452153799092">"कनेक्ट हो गए हैं"</string>
- <string name="interact_across_profiles_summary_not_allowed" msgid="5802674212788171790">"कनेक्ट नहीं हुए हैं"</string>
+ <string name="interact_across_profiles_summary_allowed" msgid="1365881452153799092">"कनेक्ट हो गया है"</string>
+ <string name="interact_across_profiles_summary_not_allowed" msgid="5802674212788171790">"कनेक्ट नहीं हुआ है"</string>
<string name="interact_across_profiles_empty_text" msgid="419061031064397168">"कोई ऐप्लिकेशन कनेक्ट नहीं किया गया है"</string>
<string name="interact_across_profiles_keywords" msgid="5996472773111665049">"क्रॉस प्रोफ़ाइल जुड़े हुए ऐप्लिकेशन ऐप्लिकेशन काम और निजी"</string>
<string name="interact_across_profiles_switch_enabled" msgid="7294719120282287495">"कनेक्ट किया गया"</string>
@@ -3564,7 +3564,7 @@
<string name="apps_storage" msgid="643866814746927111">"ऐप्लिकेशन मेमोरी"</string>
<string name="usage_access" msgid="5487993885373893282">"इस्तेमाल से जुड़े डेटा का ऐक्सेस"</string>
<string name="permit_usage_access" msgid="179630895262172674">"ऐप इस्तेमाल से जुड़े डेटा को ऐक्सेस करने दें"</string>
- <string name="time_spent_in_app_pref_title" msgid="25327097913383330">"डिवाइस के इस्तेमाल में बीता समय"</string>
+ <string name="time_spent_in_app_pref_title" msgid="25327097913383330">"ऐप्लिकेशन के इस्तेमाल में बीता समय"</string>
<string name="usage_access_description" msgid="8547716253713890707">"ऐप्लिकेशन के इस्तेमाल से जुड़े डेटा के ऐक्सेस की अनुमति से, कोई ऐप्लिकेशन इस बात पर नज़र रख पाता है कि आप किन ऐप्लिकेशन को चला रहे हैं और उन्हें कितनी बार इस्तेमाल करते हैं. साथ ही, ऐप्लिकेशन आपकी मोबाइल और इंटरनेट सेवा देने वाली कंपनी, भाषा सेटिंग, और दूसरी जानकारी देख पाता है."</string>
<string name="memory_settings_title" msgid="6582588646363308430">"स्टोरेज"</string>
<string name="always_running" msgid="9012705720688200252">"हमेशा चलने वाला (<xliff:g id="PERCENTAGE">%s</xliff:g>)"</string>
@@ -3690,7 +3690,7 @@
<string name="camera_gesture_title" msgid="5559439253128696180">"कैमरे के लिए दो बार मोड़ना"</string>
<string name="camera_gesture_desc" msgid="7557645057320805328">"अपनी कलाई को दो बार मोड़कर कैमरा ऐप खोलें"</string>
<string name="screen_zoom_title" msgid="6928045302654960559">"डिसप्ले साइज़"</string>
- <string name="screen_zoom_short_summary" msgid="756254364808639194">"स्क्रीन पर मौजूद सारे कॉन्टेंट को बड़ा या छोटा करें"</string>
+ <string name="screen_zoom_short_summary" msgid="756254364808639194">"स्क्रीन पर मौजूद पूरे कॉन्टेंट को बड़ा या छोटा करें"</string>
<string name="screen_zoom_keywords" msgid="5964023524422386592">"डिस्प्ले डेंसिटी (स्क्रीन के हर इंच में पिक्सेल की संख्या), स्‍क्रीन को ज़ूम करना, स्केल, स्‍केलिंग"</string>
<string name="screen_zoom_preview_title" msgid="5288355628444562735">"झलक"</string>
<string name="screen_zoom_make_smaller_desc" msgid="2628662648068995971">"छोटा करें"</string>
@@ -3973,7 +3973,7 @@
<string name="account_for_section_header" msgid="7466759342105251096">"<xliff:g id="USER_NAME">%1$s</xliff:g> के खाते"</string>
<string name="auto_sync_account_title" msgid="1070908045600374254">"ऐप्लिकेशन का डेटा अपने-आप सिंक होने की सुविधा चालू करें"</string>
<string name="auto_sync_account_summary" msgid="7580352130028957346">"ऐप्लिकेशन को डेटा अपने-आप रीफ्रे़श करने दें"</string>
- <string name="account_sync_title" msgid="7036067017433297574">"खाता सिंक"</string>
+ <string name="account_sync_title" msgid="7036067017433297574">"खाता सिंक करें"</string>
<string name="account_sync_summary_some_on" msgid="911460286297968724">"<xliff:g id="ID_2">%2$d</xliff:g> में से <xliff:g id="ID_1">%1$d</xliff:g> आइटम के लिए सिंक करने की सुविधा चालू है"</string>
<string name="account_sync_summary_all_on" msgid="2953682111836599841">"सभी आइटम के लिए सिंक करने की सुविधा चालू है"</string>
<string name="account_sync_summary_all_off" msgid="6378301874540507884">"सभी आइटम के लिए सिंक होने की सुविधा बंद है"</string>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 6ae9304553e..b32de80a7d8 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -1384,7 +1384,7 @@
<string name="about_settings_summary" msgid="4831942939227432513">"Visualizza informazioni legali, stato, versione del software"</string>
<string name="legal_information" msgid="7509900979811934843">"Informazioni legali"</string>
<string name="manual" msgid="3651593989906084868">"Manuale"</string>
- <string name="regulatory_labels" msgid="5960251403367154270">"Etichette normative"</string>
+ <string name="regulatory_labels" msgid="5960251403367154270">"Etichette di conformità"</string>
<string name="safety_and_regulatory_info" msgid="8285048080439298528">"Manuale su normative e sicurezza"</string>
<string name="copyright_title" msgid="83245306827757857">"Copyright"</string>
<string name="license_title" msgid="8745742085916617540">"Licenza"</string>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index c9c1449f189..f8a5a39a10e 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -4690,19 +4690,19 @@
<string name="background_install_before" msgid="8608614957688912715">"{count,plural, =1{אפליקציות שהותקנו במהלך החודש האחרון}one{אפליקציות שהותקנו במהלך # החודשים האחרונים}two{האפליקציות הותקנו במהלך החודשיים האחרונים}other{אפליקציות שהותקנו במהלך # החודשים האחרונים}}"</string>
<string name="background_install_after" msgid="7983488897570908149">"{count,plural, =1{האפליקציות הותקנו לפני יותר מחודש אחד (#)}one{האפליקציות הותקנו לפני יותר מ-# חודשים}two{האפליקציות הותקנו לפני יותר מחודשיים (#)}other{האפליקציות הותקנו לפני יותר מ-# חודשים}}"</string>
<string name="accessibility_fingerprint_label" msgid="5017431423168191733">"חיישן טביעות אצבע"</string>
- <string name="flash_notifications_title" msgid="4490438861180492311">"התראות הבהוב"</string>
- <string name="flash_notifications_about_title" msgid="9004351252928121214">"מידע על התראות הבהוב"</string>
+ <string name="flash_notifications_title" msgid="4490438861180492311">"הבהוב על התראות"</string>
+ <string name="flash_notifications_about_title" msgid="9004351252928121214">"מידע על הבהוב על התראות"</string>
<string name="flash_notifications_summary_off" msgid="6056282996770691461">"מצב כבוי"</string>
<string name="flash_notifications_summary_on_camera" msgid="3286405833586333730">"מצב פעיל / הפלאש של המצלמה"</string>
<string name="flash_notifications_summary_on_screen" msgid="9040640799633336219">"מצב פעיל / הבזק מסך"</string>
<string name="flash_notifications_summary_on_camera_and_screen" msgid="2326268141063768701">"מצב פעיל / הפלאש של המצלמה והבזק מסך"</string>
- <string name="flash_notifications_intro" msgid="8409873413480928249">"הפעלת התראות הבהוב של המצלמה או הבזק מסך כשמקבלים התראות או כשנשמעות אזעקות"</string>
- <string name="flash_notifications_intro_without_camera_flash" msgid="6297337174487793891">"הפעלת הבהוב של המסך כשמקבלים התראות או כאשר נשמעות אזעקות."</string>
+ <string name="flash_notifications_intro" msgid="8409873413480928249">"המסך או הפלאש יהבהבו כשיתקבלו התראות או יצלצלו שעונים מעוררים"</string>
+ <string name="flash_notifications_intro_without_camera_flash" msgid="6297337174487793891">"המסך יהבהב כשיתקבלו התראות או יצלצלו שעונים מעוררים"</string>
<string name="flash_notifications_note" msgid="2426125248448055075">"אם יש לך רגישות לאור, כדאי להשתמש בהתראות הבהוב בזהירות"</string>
<string name="flash_notifications_keywords" msgid="2458759275318514836">"פלאש, אור, כבד שמיעה, אובדן שמיעה"</string>
<string name="flash_notifications_preview" msgid="5320176885050440874">"תצוגה מקדימה"</string>
- <string name="camera_flash_notification_title" msgid="2475084876382922732">"הפלאש של המצלמה"</string>
- <string name="screen_flash_notification_title" msgid="3773100725793316708">"הבזק מסך"</string>
+ <string name="camera_flash_notification_title" msgid="2475084876382922732">"הבהוב פלאש"</string>
+ <string name="screen_flash_notification_title" msgid="3773100725793316708">"הבהוב במסך"</string>
<string name="screen_flash_notification_color_title" msgid="7213407653340970790">"צבע להבזק מסך"</string>
<string name="screen_flash_color_blue" msgid="3585766657607931371">"כחול"</string>
<string name="screen_flash_color_azure" msgid="8691198532944992243">"תכלת"</string>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index e580679d37c..05d30a0eda7 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -512,7 +512,7 @@
<string name="setup_lock_settings_options_dialog_title" msgid="7985107300517468569">"画面ロックの方法"</string>
<string name="lock_screen_auto_pin_confirm_title" msgid="3012128112186088375">"ロック解除を自動で確認する"</string>
<string name="lock_screen_auto_pin_confirm_summary" msgid="9050818870806580819">"6 桁以上の正しい PIN が入力されると自動的にロック解除します。[入力] をタップして確認するよりも、安全面でやや劣ります。"</string>
- <string name="auto_pin_confirm_user_message" msgid="6194556173488939314">"正しい PIN を自動で確認します"</string>
+ <string name="auto_pin_confirm_user_message" msgid="6194556173488939314">"正しい PIN を自動で確認する"</string>
<string name="auto_pin_confirm_opt_in_security_message" msgid="580773976736184893">"[入力] をタップして PIN を確認するほうが、自動確認を使うよりも安全です"</string>
<string name="auto_confirm_on_pin_verify_description" msgid="2052240431173223502">"自動確認を有効にするには、デバイスの PIN を入力してください"</string>
<string name="auto_confirm_off_pin_verify_description" msgid="4256219155659760047">"自動確認を無効にするには、デバイスの PIN を入力してください"</string>
@@ -1260,7 +1260,7 @@
<string name="menu_restore" msgid="4310539620115151551">"初期設定にリセット"</string>
<string name="restore_default_apn_completed" msgid="5167505087078340256">"APN設定をリセットしました。"</string>
<string name="reset_dashboard_title" msgid="7423200250697886918">"リセット オプション"</string>
- <string name="reset_mobile_network_settings_title" msgid="5616713931258506842">"モバイル ネットワークの設定をリセットする"</string>
+ <string name="reset_mobile_network_settings_title" msgid="5616713931258506842">"モバイルネットワークの設定をリセット"</string>
<string name="reset_mobile_network_settings_desc" msgid="7292636387692165727">"モバイル ネットワークのすべての設定をリセットします"</string>
<string name="reset_mobile_network_settings_confirm_title" msgid="7510965634669511241">"モバイル ネットワークの設定をリセットしますか?"</string>
<string name="reset_bluetooth_wifi_title" msgid="4113071322344697317">"Bluetooth と Wi-Fi のリセット"</string>
diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml
index 6936c202ac7..8ffccf1dccd 100644
--- a/res/values-kn/strings.xml
+++ b/res/values-kn/strings.xml
@@ -203,7 +203,7 @@
<string name="cancel" msgid="5780102414089664898">"ರದ್ದುಮಾಡಿ"</string>
<string name="okay" msgid="4827099303045669054">"ಸರಿ"</string>
<string name="forget" msgid="3754013654135912783">"ಮರೆತುಬಿಡಿ"</string>
- <string name="save" msgid="3125033126936493822">"ಉಳಿಸಿ"</string>
+ <string name="save" msgid="3125033126936493822">"ಸೇವ್ ಮಾಡಿ"</string>
<string name="done" msgid="7497982645646431310">"ಮುಗಿದಿದೆ"</string>
<string name="apply" msgid="7834684883190163536">"ಅನ್ವಯಿಸಿ"</string>
<string name="share" msgid="8502235338607613795">"ಹಂಚಿಕೊಳ್ಳಿ"</string>
@@ -844,7 +844,7 @@
<string name="wifi_forget" msgid="3485573280364015620">"ಮರೆತುಬಿಡಿ"</string>
<string name="wifi_modify" msgid="5127926476383659412">"ಮಾರ್ಪಡಿಸಿ"</string>
<string name="wifi_failed_forget_message" msgid="8272732599235525880">"ನೆಟ್‌ವರ್ಕ್‌ ಮರೆಯಲು ವಿಫಲವಾಗಿದೆ"</string>
- <string name="wifi_save" msgid="2312643132472226807">"ಉಳಿಸಿ"</string>
+ <string name="wifi_save" msgid="2312643132472226807">"ಸೇವ್ ಮಾಡಿ"</string>
<string name="wifi_failed_save_message" msgid="1830279872341387120">"ನೆಟ್‌ವರ್ಕ್‌ ಉಳಿಸಲು ವಿಫಲವಾಗಿದೆ"</string>
<string name="wifi_cancel" msgid="6698897376888935410">"ರದ್ದುಮಾಡಿ"</string>
<string name="wifi_forget_dialog_title" msgid="4363829200968563164">"ನೆಟ್‌ವರ್ಕ್‌ ಮರೆತಿರುವಿರಾ?"</string>
@@ -1248,7 +1248,7 @@
<string name="mvno_match_data" msgid="5213193073684321156">"MVNO ಮೌಲ್ಯ"</string>
<string name="menu_delete" msgid="9199740901584348273">"APN ಅಳಿಸಿ"</string>
<string name="menu_new" msgid="6571230342655509006">"ಹೊಸ APN"</string>
- <string name="menu_save" msgid="6611465355127483100">"ಉಳಿಸಿ"</string>
+ <string name="menu_save" msgid="6611465355127483100">"ಸೇವ್ ಮಾಡಿ"</string>
<string name="menu_cancel" msgid="1197826697950745335">"ರದ್ದುಮಾಡಿ"</string>
<string name="error_title" msgid="7158648377702417716"></string>
<string name="error_name_empty" msgid="1258275899283079142">"ಹೆಸರಿನ ಕ್ಷೇತ್ರವು ಖಾಲಿ ಇರುವಂತಿಲ್ಲ."</string>
@@ -2594,7 +2594,7 @@
<string name="vpn_always_on_invalid_reason_other" msgid="4571905303713233321">"ನಮೂದಿಸಿದ ಮಾಹಿತಿಯು ಯಾವಾಗಲೂ-ಆನ್ VPN ಅನ್ನು ಬೆಂಬಲಿಸುವುದಿಲ್ಲ"</string>
<string name="vpn_cancel" msgid="5929410618112404383">"ರದ್ದುಮಾಡಿ"</string>
<string name="vpn_done" msgid="5137858784289564985">"ವಜಾಗೊಳಿಸಿ"</string>
- <string name="vpn_save" msgid="683868204634860888">"ಉಳಿಸಿ"</string>
+ <string name="vpn_save" msgid="683868204634860888">"ಸೇವ್ ಮಾಡಿ"</string>
<string name="vpn_connect" msgid="7102335248484045354">"ಸಂಪರ್ಕಿಸಿ"</string>
<string name="vpn_replace" msgid="1533147558671640341">"ಸ್ಥಾನಾಂತರಿಸು"</string>
<string name="vpn_edit" msgid="5862301148429324911">"VPN ಪ್ರೊಫೈಲ್ ಎಡಿಟ್ ಮಾಡಿ"</string>
@@ -4256,7 +4256,7 @@
<string name="mobile_network_sim_name" msgid="3187192894150386537">"ಸಿಮ್ ಹೆಸರು &amp; ಬಣ್ಣ"</string>
<string name="mobile_network_sim_name_label" msgid="1452440641628369625">"ಹೆಸರು"</string>
<string name="mobile_network_sim_color_label" msgid="5293944087609632340">"ಬಣ್ಣ (ಹೊಂದಾಣಿಕೆಯ ಆ್ಯಪ್‌ಗಳಿಂದ ಬಳಸಲಾಗಿದೆ)"</string>
- <string name="mobile_network_sim_name_rename" msgid="5967588549571582924">"ಉಳಿಸಿ"</string>
+ <string name="mobile_network_sim_name_rename" msgid="5967588549571582924">"ಸೇವ್ ಮಾಡಿ"</string>
<string name="mobile_network_use_sim_on" msgid="7298332437547707908">"ಸಿಮ್ ಬಳಸಿ"</string>
<string name="mobile_network_use_sim_off" msgid="6303281166199670639">"ಆಫ್"</string>
<string name="mobile_network_disable_sim_explanation" msgid="2851862257846773796">"ಈ SIM ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲು, SIM ಕಾರ್ಡ್ ಅನ್ನು ತೆಗೆದುಹಾಕಿ"</string>
diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml
index 1499ce22c7e..832d285dc38 100644
--- a/res/values-ms/strings.xml
+++ b/res/values-ms/strings.xml
@@ -3703,7 +3703,7 @@
<string name="memory_summary" msgid="8221954450951651735">"Purata <xliff:g id="USED_MEMORY">%1$s</xliff:g> daripada <xliff:g id="TOTAL_MEMORY">%2$s</xliff:g> memori digunakan"</string>
<string name="users_summary" msgid="8473589474976307510">"Dilog masuk sebagai <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
<string name="android_version_summary" msgid="7818952662015042768">"Dikemaskinikan kepada Android <xliff:g id="VERSION">%1$s</xliff:g>"</string>
- <string name="android_version_pending_update_summary" msgid="5404532347171027730">"Kemas kini tersedia"</string>
+ <string name="android_version_pending_update_summary" msgid="5404532347171027730">"Kemaskinian tersedia"</string>
<string name="disabled_by_policy_title" msgid="6852347040813204503">"Disekat oleh dasar kerja"</string>
<string name="disabled_by_policy_title_adjust_volume" msgid="1669689058213728099">"Kelantangan tidak boleh ditukar"</string>
<string name="disabled_by_policy_title_outgoing_calls" msgid="400089720689494562">"Tidak dapat membuat panggilan"</string>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 927faf93656..a6a3cad10ab 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -4080,7 +4080,7 @@
<string name="credman_credentials" msgid="4931371941253324143">"Andre leverandører"</string>
<string name="autofill_passwords_count" msgid="6359289285822955973">"{count,plural, =1{# passord}other{# passord}}"</string>
<string name="autofill_keywords" msgid="8598763328489346438">"auto, fyll, autofyll, passord"</string>
- <string name="credman_keywords" msgid="8305600680836806170">"data, tilgangsnøkkel, passord"</string>
+ <string name="credman_keywords" msgid="8305600680836806170">"data, passnøkkel, passord"</string>
<string name="credman_autofill_keywords" msgid="701180623776848914">"auto, fyll, autofyll, data, passnøkkel, passord"</string>
<string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;Stoler du på denne appen?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google autofyll&gt;%1$s&lt;/xliff:g&gt; bruker det som er på skjermen, til å fastslå hva som kan fylles ut automatisk."</string>
<string name="credman_autofill_confirmation_message" msgid="4951846866327737417">"&lt;b&gt;Vil du bruke &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt;?&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Provider&gt;%1$s&lt;/xliff:g&gt; bruker det som er på skjermen din, til å avgjøre hva som kan autofylles. Nye passord, passnøkler og annen informasjon lagres her fra nå av."</string>
diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml
index 06ebce19e4e..d4406687af4 100644
--- a/res/values-ne/strings.xml
+++ b/res/values-ne/strings.xml
@@ -2621,7 +2621,7 @@
<string name="vpn_no_vpns_added" msgid="7387080769821533728">"कुनै VPN हालिएको छैन"</string>
<string name="vpn_always_on_summary" msgid="2171252372476858166">"सधैँ VPN मा जडान भइरहनुहोस्"</string>
<string name="vpn_always_on_summary_not_supported" msgid="9084872130449368437">"यो एपले समर्थन गर्दैन"</string>
- <string name="vpn_always_on_summary_active" msgid="175877594406330387">"सधैँ अन"</string>
+ <string name="vpn_always_on_summary_active" msgid="175877594406330387">"सधैँ अन गरियोस्"</string>
<string name="vpn_insecure_summary" msgid="4450920215186742859">"सुरक्षित छैन"</string>
<string name="vpn_require_connection" msgid="1027347404470060998">"VPN रहित जडानहरूमाथि रोक लगाउनुहोस्"</string>
<string name="vpn_require_connection_title" msgid="4186758487822779039">"VPN जडान आवश्यक छ?"</string>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 40e921ee8b7..72791a65479 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -1861,7 +1861,7 @@
<string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"Para utilizar uma funcionalidade de acessibilidade, deslize rapidamente com dois dedos para cima a partir da parte inferior do ecrã.\n\nPara alternar entre funcionalidades, deslize rapidamente com dois dedos para cima sem soltar."</string>
<string name="accessibility_tutorial_dialog_message_gesture_settings_talkback" msgid="7292969929578621958">"Para utilizar uma funcionalidade de acessibilidade, deslize rapidamente com três dedos para cima a partir da parte inferior do ecrã.\n\nPara alternar entre funcionalidades, deslize rapidamente com três dedos para cima sem soltar."</string>
<string name="accessibility_tutorial_dialog_button" msgid="2031773187678948436">"OK"</string>
- <string name="accessibility_tutorial_dialog_link_button" msgid="1624189347106713695">"Defin. botão Acessibilidade"</string>
+ <string name="accessibility_tutorial_dialog_link_button" msgid="1624189347106713695">"Definições do botão"</string>
<string name="accessibility_shortcut_title" msgid="8125867833704517463">"Atalho para <xliff:g id="SERVICE">%1$s</xliff:g>"</string>
<string name="accessibility_shortcut_edit_summary_software" msgid="6405629977940618205">"Botão Acessibilidade"</string>
<string name="accessibility_shortcut_edit_summary_software_gesture" msgid="5489284264414421286">"Gesto de acessibilidade"</string>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index 79bfa16c4e7..e59b04c70f3 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -2980,7 +2980,7 @@
<string name="notification_volume_content_description_vibrate_mode" msgid="6097212000507408288">"Volumul pentru notificări este dezactivat, dispozitivul va vibra la notificări"</string>
<string name="volume_content_description_silent_mode" msgid="377680514551405754">"<xliff:g id="VOLUME_TYPE">%1$s</xliff:g> este dezactivat"</string>
<string name="notification_volume_disabled_summary" msgid="8679988555852056079">"Indisponibil deoarece soneria este dezactivată"</string>
- <string name="ringtone_title" msgid="3271453110387368088">"Ton de sonerie al telefonului"</string>
+ <string name="ringtone_title" msgid="3271453110387368088">"Ton de apel al telefonului"</string>
<string name="notification_ringtone_title" msgid="6924501621312095512">"Sunet de notificare prestabilit"</string>
<string name="notification_unknown_sound_title" msgid="1319708450698738980">"Sunet oferit de aplicație"</string>
<string name="notification_sound_default" msgid="8630353701915294299">"Sunet de notificare prestabilit"</string>
@@ -3109,7 +3109,7 @@
<string name="sound_work_settings" msgid="752627453846309092">"Sunetele profilului de serviciu"</string>
<string name="work_use_personal_sounds_title" msgid="7729428677919173609">"Folosește sunetele profilului personal"</string>
<string name="work_use_personal_sounds_summary" msgid="608061627969077231">"Folosește aceleași sunete ca pentru profilul personal"</string>
- <string name="work_ringtone_title" msgid="4810802758746102589">"Ton de sonerie telefon serviciu"</string>
+ <string name="work_ringtone_title" msgid="4810802758746102589">"Ton de apel telefon serviciu"</string>
<string name="work_notification_ringtone_title" msgid="2955312017013255515">"Sunet prestabilit pentru notificarea de serviciu"</string>
<string name="work_alarm_ringtone_title" msgid="3369293796769537392">"Sunet prestabilit pentru alarma de serviciu"</string>
<string name="work_sound_same_as_personal" msgid="1836913235401642334">"Aceleași ca la profilul personal"</string>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index d4f2148ce72..2dc8d435477 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -1080,8 +1080,8 @@
<string name="force_bold_text" msgid="4620929631102086716">"Полужирный шрифт"</string>
<string name="title_font_size" msgid="570613010306330622">"Размер шрифта"</string>
<string name="short_summary_font_size" msgid="8444689613442419978">"Изменение размера текста"</string>
- <string name="sim_lock_settings" msgid="7331982427303002613">"Настройки привязки к региону/оператору"</string>
- <string name="sim_lock_settings_category" msgid="6475255139493877786">"Привязка к региону или оператору"</string>
+ <string name="sim_lock_settings" msgid="7331982427303002613">"Настройки блокировки SIM-карты"</string>
+ <string name="sim_lock_settings_category" msgid="6475255139493877786">"Блокировка SIM-карты"</string>
<string name="sim_pin_toggle" msgid="6814489621760857328">"Блокировать SIM-карту"</string>
<string name="sim_pin_change" msgid="5978881209990507379">"Изменить PIN-код SIM-карты"</string>
<string name="sim_enter_pin" msgid="8235202785516053253">"PIN-код SIM-карты"</string>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index 371bec78f22..b6c4d6d7b23 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -4657,7 +4657,7 @@
<string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"Znova zaženi pozneje"</string>
<string name="bluetooth_details_spatial_audio_title" msgid="1368071116994002707">"Prostorski zvok"</string>
<string name="bluetooth_details_spatial_audio_summary" msgid="5026859623681482668">"Zvok iz združljivih predstavnosti dobi prostornejšo razsežnost."</string>
- <string name="bluetooth_details_head_tracking_title" msgid="5416972521040337799">"Spremljanje premikov glave"</string>
+ <string name="bluetooth_details_head_tracking_title" msgid="5416972521040337799">"Spremljanje položaja glave"</string>
<string name="bluetooth_details_head_tracking_summary" msgid="3942238746595985395">"Zvok se med premikanjem glave spreminja za naravnejšo izkušnjo."</string>
<string name="ingress_rate_limit_title" msgid="2106694002836274350">"Omejitev hitrosti prenosa omrežja"</string>
<string name="ingress_rate_limit_summary" msgid="1097811019742438371">"Konfigurirajte omejitev dohodne pasovne širine omrežja, ki velja za vsa omrežja, ki zagotavljajo internetno povezljivost."</string>
diff --git a/src/com/android/settings/DefaultRingtonePreference.java b/src/com/android/settings/DefaultRingtonePreference.java
index 9bf626c9898..4c654887227 100644
--- a/src/com/android/settings/DefaultRingtonePreference.java
+++ b/src/com/android/settings/DefaultRingtonePreference.java
@@ -51,16 +51,9 @@ public class DefaultRingtonePreference extends RingtonePreference {
return;
}
- String mimeType = mUserContext.getContentResolver().getType(ringtoneUri);
- if (mimeType == null) {
+ if (!isValidRingtoneUri(ringtoneUri)) {
Log.e(TAG, "onSaveRingtone for URI:" + ringtoneUri
- + " ignored: failure to find mimeType (no access from this context?)");
- return;
- }
-
- if (!(mimeType.startsWith("audio/") || mimeType.equals("application/ogg"))) {
- Log.e(TAG, "onSaveRingtone for URI:" + ringtoneUri
- + " ignored: associated mimeType:" + mimeType + " is not an audio type");
+ + " ignored: invalid ringtone Uri");
return;
}
diff --git a/src/com/android/settings/RingtonePreference.java b/src/com/android/settings/RingtonePreference.java
index 8f9c618d5e8..de5b7c39f76 100644
--- a/src/com/android/settings/RingtonePreference.java
+++ b/src/com/android/settings/RingtonePreference.java
@@ -16,6 +16,8 @@
package com.android.settings;
+import android.content.ContentProvider;
+import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.res.TypedArray;
@@ -23,9 +25,11 @@ import android.media.AudioAttributes;
import android.media.RingtoneManager;
import android.net.Uri;
import android.os.UserHandle;
+import android.os.UserManager;
import android.provider.Settings.System;
import android.text.TextUtils;
import android.util.AttributeSet;
+import android.util.Log;
import androidx.preference.Preference;
import androidx.preference.PreferenceManager;
@@ -239,4 +243,83 @@ public class RingtonePreference extends Preference {
return true;
}
+ public boolean isDefaultRingtone(Uri ringtoneUri) {
+ // null URIs are valid (None/silence)
+ return ringtoneUri == null || RingtoneManager.isDefault(ringtoneUri);
+ }
+
+ protected boolean isValidRingtoneUri(Uri ringtoneUri) {
+ if (isDefaultRingtone(ringtoneUri)) {
+ return true;
+ }
+
+ // Return early for android resource URIs
+ if (ContentResolver.SCHEME_ANDROID_RESOURCE.equals(ringtoneUri.getScheme())) {
+ return true;
+ }
+
+ String mimeType = mUserContext.getContentResolver().getType(ringtoneUri);
+ if (mimeType == null) {
+ Log.e(TAG, "isValidRingtoneUri for URI:" + ringtoneUri
+ + " failed: failure to find mimeType (no access from this context?)");
+ return false;
+ }
+
+ if (!(mimeType.startsWith("audio/") || mimeType.equals("application/ogg")
+ || mimeType.equals("application/x-flac"))) {
+ Log.e(TAG, "isValidRingtoneUri for URI:" + ringtoneUri
+ + " failed: associated mimeType:" + mimeType + " is not an audio type");
+ return false;
+ }
+
+ // Validate userId from URIs: content://{userId}@...
+ final int userIdFromUri = ContentProvider.getUserIdFromUri(ringtoneUri, mUserId);
+ if (userIdFromUri != mUserId) {
+ final UserManager userManager = mUserContext.getSystemService(UserManager.class);
+
+ if (!userManager.isSameProfileGroup(mUserId, userIdFromUri)) {
+ Log.e(TAG,
+ "isValidRingtoneUri for URI:" + ringtoneUri + " failed: user " + userIdFromUri
+ + " and user " + mUserId + " are not in the same profile group");
+ return false;
+ }
+
+ final int parentUserId;
+ final int profileUserId;
+ if (userManager.isProfile()) {
+ profileUserId = mUserId;
+ parentUserId = userIdFromUri;
+ } else {
+ parentUserId = mUserId;
+ profileUserId = userIdFromUri;
+ }
+
+ final UserHandle parent = userManager.getProfileParent(UserHandle.of(profileUserId));
+ if (parent == null || parent.getIdentifier() != parentUserId) {
+ Log.e(TAG,
+ "isValidRingtoneUri for URI:" + ringtoneUri + " failed: user " + profileUserId
+ + " is not a profile of user " + parentUserId);
+ return false;
+ }
+
+ // Allow parent <-> managed profile sharing, unless restricted
+ if (userManager.hasUserRestrictionForUser(
+ UserManager.DISALLOW_SHARE_INTO_MANAGED_PROFILE, UserHandle.of(parentUserId))) {
+ Log.e(TAG,
+ "isValidRingtoneUri for URI:" + ringtoneUri + " failed: user " + parentUserId
+ + " has restriction: " + UserManager.DISALLOW_SHARE_INTO_MANAGED_PROFILE);
+ return false;
+ }
+
+ if (!(userManager.isManagedProfile(profileUserId) || userManager.getUserProperties(
+ UserHandle.of(profileUserId)).isMediaSharedWithParent())) {
+ Log.e(TAG, "isValidRingtoneUri for URI:" + ringtoneUri
+ + " failed: user " + profileUserId + " is not a cloned or managed profile");
+ return false;
+ }
+ }
+
+ return true;
+ }
+
}
diff --git a/src/com/android/settings/notification/NotificationAccessConfirmationActivity.java b/src/com/android/settings/notification/NotificationAccessConfirmationActivity.java
index a6b565ae6ba..9ea8c58024f 100644
--- a/src/com/android/settings/notification/NotificationAccessConfirmationActivity.java
+++ b/src/com/android/settings/notification/NotificationAccessConfirmationActivity.java
@@ -17,6 +17,7 @@
package com.android.settings.notification;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_APPS_CANNOT_ACCESS_NOTIFICATION_SETTINGS;
import static android.view.WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS;
import static com.android.internal.notification.NotificationAccessConfirmationActivityContract.EXTRA_COMPONENT_NAME;
@@ -26,6 +27,7 @@ import android.Manifest;
import android.annotation.Nullable;
import android.app.Activity;
import android.app.NotificationManager;
+import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.DialogInterface;
@@ -35,10 +37,12 @@ import android.content.pm.PackageManager;
import android.content.pm.ServiceInfo;
import android.os.Bundle;
import android.os.UserHandle;
+import android.os.UserManager;
import android.text.TextUtils;
import android.util.Slog;
import android.view.WindowManager;
import android.view.accessibility.AccessibilityEvent;
+import android.widget.Toast;
import com.android.internal.app.AlertActivity;
import com.android.internal.app.AlertController;
@@ -55,12 +59,28 @@ public class NotificationAccessConfirmationActivity extends Activity
private ComponentName mComponentName;
private NotificationManager mNm;
+ private DevicePolicyManager mDpm;
+ private UserManager mUm;
+
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().addSystemFlags(SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS);
+ mUm = getSystemService(UserManager.class);
+ mDpm = getSystemService(DevicePolicyManager.class);
+
+ if (mUm.isManagedProfile()) {
+ Slog.w(LOG_TAG, "Apps in the work profile do not support notification listeners");
+ Toast.makeText(this,
+ mDpm.getResources().getString(WORK_APPS_CANNOT_ACCESS_NOTIFICATION_SETTINGS,
+ () -> getString(R.string.notification_settings_work_profile)),
+ Toast.LENGTH_SHORT).show();
+ finish();
+ return;
+ }
+
mNm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mComponentName = getIntent().getParcelableExtra(EXTRA_COMPONENT_NAME);
diff --git a/src/com/android/settings/notification/app/NotificationSoundPreference.java b/src/com/android/settings/notification/app/NotificationSoundPreference.java
index 136b21ffd36..b55f9bd7ce8 100644
--- a/src/com/android/settings/notification/app/NotificationSoundPreference.java
+++ b/src/com/android/settings/notification/app/NotificationSoundPreference.java
@@ -25,10 +25,13 @@ import android.net.Uri;
import android.os.AsyncTask;
import android.util.AttributeSet;
+import android.util.Log;
import com.android.settings.R;
import com.android.settings.RingtonePreference;
public class NotificationSoundPreference extends RingtonePreference {
+ private static final String TAG = "NotificationSoundPreference";
+
private Uri mRingtone;
public NotificationSoundPreference(Context context, AttributeSet attrs) {
@@ -50,8 +53,13 @@ public class NotificationSoundPreference extends RingtonePreference {
public boolean onActivityResult(int requestCode, int resultCode, Intent data) {
if (data != null) {
Uri uri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
- setRingtone(uri);
- callChangeListener(uri);
+ if (isValidRingtoneUri(uri)) {
+ setRingtone(uri);
+ callChangeListener(uri);
+ } else {
+ Log.e(TAG, "onActivityResult for URI:" + uri
+ + " ignored: invalid ringtone Uri");
+ }
}
return true;
diff --git a/tests/unit/src/com/android/settings/DefaultRingtonePreferenceTest.java b/tests/unit/src/com/android/settings/DefaultRingtonePreferenceTest.java
index 7877684dce6..c580fc58145 100644
--- a/tests/unit/src/com/android/settings/DefaultRingtonePreferenceTest.java
+++ b/tests/unit/src/com/android/settings/DefaultRingtonePreferenceTest.java
@@ -16,16 +16,20 @@
package com.android.settings;
+import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
+import android.content.ContentInterface;
import android.content.ContentResolver;
import android.content.Context;
-import android.media.RingtoneManager;
+import android.content.pm.UserProperties;
import android.net.Uri;
+import android.os.UserHandle;
+import android.os.UserManager;
import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4;
@@ -34,17 +38,22 @@ import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
+import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
/** Unittest for DefaultRingtonePreference. */
@RunWith(AndroidJUnit4.class)
public class DefaultRingtonePreferenceTest {
+ private static final int OWNER_USER_ID = 1;
+ private static final int OTHER_USER_ID = 10;
+ private static final int INVALID_RINGTONE_TYPE = 0;
private DefaultRingtonePreference mDefaultRingtonePreference;
@Mock
private ContentResolver mContentResolver;
@Mock
+ private UserManager mUserManager;
private Uri mRingtoneUri;
@Before
@@ -52,14 +61,29 @@ public class DefaultRingtonePreferenceTest {
MockitoAnnotations.initMocks(this);
Context context = spy(ApplicationProvider.getApplicationContext());
- doReturn(mContentResolver).when(context).getContentResolver();
+ mContentResolver = ContentResolver.wrap(Mockito.mock(ContentInterface.class));
+ when(context.getContentResolver()).thenReturn(mContentResolver);
mDefaultRingtonePreference = spy(new DefaultRingtonePreference(context, null /* attrs */));
doReturn(context).when(mDefaultRingtonePreference).getContext();
+
+ // Use INVALID_RINGTONE_TYPE to return early in RingtoneManager.setActualDefaultRingtoneUri
when(mDefaultRingtonePreference.getRingtoneType())
- .thenReturn(RingtoneManager.TYPE_RINGTONE);
- mDefaultRingtonePreference.setUserId(1);
+ .thenReturn(INVALID_RINGTONE_TYPE);
+
+ mDefaultRingtonePreference.setUserId(OWNER_USER_ID);
mDefaultRingtonePreference.mUserContext = context;
+ when(mDefaultRingtonePreference.isDefaultRingtone(any(Uri.class))).thenReturn(false);
+
+ when(context.getSystemServiceName(UserManager.class)).thenReturn(Context.USER_SERVICE);
+ when(context.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager);
+
+ UserProperties userProperties = new UserProperties.Builder().setMediaSharedWithParent(false)
+ .build();
+ when(mUserManager.getUserProperties(UserHandle.of(OTHER_USER_ID))).thenReturn(
+ userProperties);
+
+ mRingtoneUri = Uri.parse("content://none");
}
@Test
@@ -79,4 +103,53 @@ public class DefaultRingtonePreferenceTest {
verify(mDefaultRingtonePreference, never()).setActualDefaultRingtoneUri(mRingtoneUri);
}
+
+ @Test
+ public void onSaveRingtone_notManagedProfile_shouldNotSetRingtone() {
+ mRingtoneUri = Uri.parse("content://" + OTHER_USER_ID + "@ringtone");
+ when(mContentResolver.getType(mRingtoneUri)).thenReturn("audio/*");
+ when(mUserManager.isSameProfileGroup(OWNER_USER_ID, OTHER_USER_ID)).thenReturn(true);
+ when(mUserManager.getProfileParent(UserHandle.of(OTHER_USER_ID))).thenReturn(
+ UserHandle.of(OWNER_USER_ID));
+ when(mUserManager.isManagedProfile(OTHER_USER_ID)).thenReturn(false);
+
+ mDefaultRingtonePreference.onSaveRingtone(mRingtoneUri);
+
+ verify(mDefaultRingtonePreference, never()).setActualDefaultRingtoneUri(mRingtoneUri);
+ }
+
+ @Test
+ public void onSaveRingtone_notSameUser_shouldNotSetRingtone() {
+ mRingtoneUri = Uri.parse("content://" + OTHER_USER_ID + "@ringtone");
+ when(mContentResolver.getType(mRingtoneUri)).thenReturn("audio/*");
+ when(mUserManager.isSameProfileGroup(OWNER_USER_ID, OTHER_USER_ID)).thenReturn(false);
+
+ mDefaultRingtonePreference.onSaveRingtone(mRingtoneUri);
+
+ verify(mDefaultRingtonePreference, never()).setActualDefaultRingtoneUri(mRingtoneUri);
+ }
+
+ @Test
+ public void onSaveRingtone_isManagedProfile_shouldSetRingtone() {
+ mRingtoneUri = Uri.parse("content://" + OTHER_USER_ID + "@ringtone");
+ when(mContentResolver.getType(mRingtoneUri)).thenReturn("audio/*");
+ when(mUserManager.isSameProfileGroup(OWNER_USER_ID, OTHER_USER_ID)).thenReturn(true);
+ when(mUserManager.getProfileParent(UserHandle.of(OTHER_USER_ID))).thenReturn(
+ UserHandle.of(OWNER_USER_ID));
+ when(mUserManager.isManagedProfile(OTHER_USER_ID)).thenReturn(true);
+
+ mDefaultRingtonePreference.onSaveRingtone(mRingtoneUri);
+
+ verify(mDefaultRingtonePreference).setActualDefaultRingtoneUri(mRingtoneUri);
+ }
+
+ @Test
+ public void onSaveRingtone_defaultUri_shouldSetRingtone() {
+ mRingtoneUri = Uri.parse("default_ringtone");
+ when(mDefaultRingtonePreference.isDefaultRingtone(any(Uri.class))).thenReturn(true);
+
+ mDefaultRingtonePreference.onSaveRingtone(mRingtoneUri);
+
+ verify(mDefaultRingtonePreference).setActualDefaultRingtoneUri(mRingtoneUri);
+ }
}