Merge "Allow test emergency call to remove all radio off reasons."
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 014fc17..66a2422 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -429,8 +429,7 @@
android:configChanges="orientation|screenSize|keyboardHidden"
android:exported="true"
android:theme="@style/DialerSettingsLight">
- <intent-filter>
- <action android:name="android.intent.action.VIEW" />
+ <intent-filter android:priority="1">
<action android:name="android.intent.action.MAIN" />
<action android:name="android.telecom.action.SHOW_CALL_SETTINGS" />
<category android:name="android.intent.category.DEFAULT" />
diff --git a/ecc/conversion_toolset_v1/proto/protobuf_ecc_data.proto b/ecc/conversion_toolset_v1/proto/protobuf_ecc_data.proto
index 5bd7bc3..c1a826a 100644
--- a/ecc/conversion_toolset_v1/proto/protobuf_ecc_data.proto
+++ b/ecc/conversion_toolset_v1/proto/protobuf_ecc_data.proto
@@ -13,6 +13,10 @@
POLICE = 1;
AMBULANCE = 2;
FIRE = 3;
+ MARINE_GUARD = 4;
+ MOUNTAIN_RESCUE = 5;
+ MIEC = 6;
+ AIEC = 7;
}
// Required: Every EccInfo shall contain a phone number.
diff --git a/ecc/input/eccdata.txt b/ecc/input/eccdata.txt
index a674319..a8b021e 100644
--- a/ecc/input/eccdata.txt
+++ b/ecc/input/eccdata.txt
@@ -1,4 +1,4 @@
-revision: 1
+revision: 2
countries {
iso_code: "AD"
eccs {
@@ -793,6 +793,54 @@
types: AMBULANCE
types: FIRE
}
+ eccs {
+ phone_number: "15"
+ types: AMBULANCE
+ }
+ eccs {
+ phone_number: "17"
+ types: POLICE
+ }
+ eccs {
+ phone_number: "18"
+ types: FIRE
+ }
+ eccs {
+ phone_number: "115"
+ types: TYPE_UNSPECIFIED
+ }
+ eccs {
+ phone_number: "116000"
+ types: TYPE_UNSPECIFIED
+ }
+ eccs {
+ phone_number: "114"
+ types: TYPE_UNSPECIFIED
+ }
+ eccs {
+ phone_number: "191"
+ types: TYPE_UNSPECIFIED
+ }
+ eccs {
+ phone_number: "196"
+ types: MARINE_GUARD
+ }
+ eccs {
+ phone_number: "197"
+ types: TYPE_UNSPECIFIED
+ }
+ eccs {
+ phone_number: "116117"
+ types: TYPE_UNSPECIFIED
+ }
+ eccs {
+ phone_number: "116111"
+ types: TYPE_UNSPECIFIED
+ }
+ eccs {
+ phone_number: "119"
+ types: TYPE_UNSPECIFIED
+ }
ecc_fallback: "112"
}
countries {
diff --git a/ecc/output/eccdata b/ecc/output/eccdata
index 327e300..8427603 100644
--- a/ecc/output/eccdata
+++ b/ecc/output/eccdata
Binary files differ
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index 8484549..6e2ec3f 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"Wagwoord is verkeerd. SIM is nou geblokkeer. Voer PUK2 in."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK2 is permanent geblokkeer."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"Jy het <xliff:g id="NUMBER">%d</xliff:g> oorblywende pogings."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"PUK2 is gesluit. Kontak diensverskaffer om te ontsluit."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"PIN2 is nie meer geblokkeer nie"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"Netwerk- of SIM-kaartfout"</string>
<string name="doneButton" msgid="7371209609238460207">"Klaar"</string>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index 571af43..0227314 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"የይለፍ ቃል ልክ አይደለም። SIM አሁን ተቆልፏል። PUK2 ያስገቡ።"</string>
<string name="puk2_blocked" msgid="3131139031779319911">"ፒን2 በቋሚነት ታግዷል።"</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"እርስዎ <xliff:g id="NUMBER">%d</xliff:g> ቀሪ ሙከራዎች አልዎት።"</string>
- <string name="puk2_locked" msgid="6497760825455461057">"PUK2 ተቆልፏል። ለማስከፈት የአገልግሎት አቅራቢን ያነጋግሩ።"</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"PIN2 ከአሁን በኋላ አልታገደም"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"የአውታረ መረብ ወይም የሲም ካርድ ስህተት"</string>
<string name="doneButton" msgid="7371209609238460207">"ተከናውኗል"</string>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 271ead8..2f86eb3 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"كلمة المرور غير صحيحة. تم قفل شريحة SIM الآن. أدخل رمز PUK2."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"تم حظر PUK2 بشكل دائم."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"يتبقى لديك <xliff:g id="NUMBER">%d</xliff:g> من المحاولات."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"تم قفل شريحة SIM برمز PUK2. تواصَل مع مقدّم الخدمة لفتح قفل الشريحة."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"لم يعد رمز PIN2 محظورًا"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"حدث خطأ في الشبكة أو ببطاقة SIM"</string>
<string name="doneButton" msgid="7371209609238460207">"تم"</string>
diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml
index 67a192f..a02f38f 100644
--- a/res/values-as/strings.xml
+++ b/res/values-as/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"ভুল পাছৱৰ্ড। এতিয়া ছিম লক কৰা হৈছে। PUK2 লিখক।"</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK2 স্থায়ীভাৱে অৱৰোধ কৰা হৈছে।"</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"আপোনাৰ হাতত <xliff:g id="NUMBER">%d</xliff:g>টা প্ৰয়াস বাকী আছে।"</string>
- <string name="puk2_locked" msgid="6497760825455461057">"PUK2 লক কৰা আছে। আনলক কৰিবলৈ সেৱা প্ৰদানকাৰীৰ সৈতে যোগাযোগ কৰক।"</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"PIN2 আৰু অৱৰোধ হৈ থকা নাই"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"নেটৱৰ্ক বা ছিম কাৰ্ডৰ আসোঁৱাহ।"</string>
<string name="doneButton" msgid="7371209609238460207">"হ’ল"</string>
diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml
index 4149e71..cd8e219 100644
--- a/res/values-az/strings.xml
+++ b/res/values-az/strings.xml
@@ -61,7 +61,7 @@
<string name="labelGsmMore_with_label" msgid="3206015314393246224">"GSM zəng ayarları (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="labelCDMAMore" msgid="7937441382611224632">"CDMA zəng parametrləri"</string>
<string name="labelCdmaMore_with_label" msgid="7759692829160238152">"CDMA zəng ayarları (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
- <string name="apn_settings" msgid="1978652203074756623">"Giriş nöqtəsi adları"</string>
+ <string name="apn_settings" msgid="1978652203074756623">"Çatma Nöqtəsi Adları"</string>
<string name="settings_label" msgid="9101778088412567956">"Şəbəkə ayarları"</string>
<string name="phone_accounts" msgid="1216879437523774604">"Hesabların çağırılması"</string>
<string name="phone_accounts_make_calls_with" msgid="16747814788918145">"Zənglər et"</string>
@@ -182,15 +182,15 @@
<string name="connect_later" msgid="1950138106010005425">"Hazırda bu şəbəkəyə qoşulmaq olmur. Sonra təkrar sınayın."</string>
<string name="registration_done" msgid="5337407023566953292">"Şəbəkədə qeydiyyatdan keçib."</string>
<string name="already_auto" msgid="8607068290733079336">"Artıq avtomatik seçimdədir."</string>
- <string name="select_automatically" msgid="779750291257872651">"Şəbəkə avtomatik seçilsin"</string>
+ <string name="select_automatically" msgid="779750291257872651">"Avtomatik olaraq şəbəkə seçin"</string>
<string name="manual_mode_disallowed_summary" msgid="3970048592179890197">"%1$s ünvanına qoşulduqda əlçatan olmur"</string>
<string name="network_select_title" msgid="4117305053881611988">"Şəbəkə"</string>
<string name="register_automatically" msgid="3907580547590554834">"Avtomatik qeydiyyat ..."</string>
- <string name="preferred_network_mode_title" msgid="5253395265169539830">"Şəbəkə növü"</string>
+ <string name="preferred_network_mode_title" msgid="5253395265169539830">"Tərcih edilən şəbəkə növü"</string>
<string name="preferred_network_mode_summary" msgid="3787989000044330064">"Şəbəkə əməliyyat rejimini dəyişin"</string>
- <string name="preferred_network_mode_dialogtitle" msgid="2781447433514459696">"Şəbəkə növü"</string>
+ <string name="preferred_network_mode_dialogtitle" msgid="2781447433514459696">"Tərcih edilən şəbəkə növü"</string>
<string name="forbidden_network" msgid="5081729819561333023">"(qadağandır)"</string>
- <string name="choose_network_title" msgid="5335832663422653082">"Şəbəkə seçin"</string>
+ <string name="choose_network_title" msgid="5335832663422653082">"Şəbəkəni seçin"</string>
<string name="network_disconnected" msgid="8844141106841160825">"Bağlantı kəsildi"</string>
<string name="network_connected" msgid="2760235679963580224">"Qoşuldu"</string>
<string name="network_connecting" msgid="160901383582774987">"Qoşulur..."</string>
@@ -282,29 +282,29 @@
<string name="data_enable_summary" msgid="696860063456536557">"Data istifadəsinə icazə verin"</string>
<string name="dialog_alert_title" msgid="5260471806940268478">"Diqqət"</string>
<string name="roaming" msgid="1576180772877858949">"Rominq"</string>
- <string name="roaming_enable" msgid="6853685214521494819">"Rominq zamanı data xidmətinə qoşulun"</string>
- <string name="roaming_disable" msgid="8856224638624592681">"Rominq zamanı data xidmətinə qoşulun"</string>
+ <string name="roaming_enable" msgid="6853685214521494819">"Rouminq zamanı data xidmətlərinə qoşulun"</string>
+ <string name="roaming_disable" msgid="8856224638624592681">"Rouminq zamanı data xidmətlərinə qoşulun"</string>
<string name="roaming_reenable_message" msgid="1951802463885727915">"Data rominqi deaktivdir. Aktiv etmək üçün klikləyin."</string>
<string name="roaming_enabled_message" msgid="9022249120750897">"Rominq xərcləri çıxıla bilər. Dəyişmək üçün toxunun."</string>
<string name="roaming_notification_title" msgid="3590348480688047320">"Mobil data bağlantısı itdi"</string>
<string name="roaming_on_notification_title" msgid="7451473196411559173">"Data rominqi aktivdir"</string>
<string name="roaming_warning" msgid="7855681468067171971">"Sizə əhəmiyyətli xərclər tətbiq edilə bilər."</string>
<string name="roaming_check_price_warning" msgid="8212484083990570215">"Qiymətləndirmə üçün şəbəkə provayderi ilə yoxlayın."</string>
- <string name="roaming_alert_title" msgid="5689615818220960940">"Data rominqə icazə verilsin?"</string>
+ <string name="roaming_alert_title" msgid="5689615818220960940">"Məlumat rominqinə icazə verilsin?"</string>
<string name="limited_sim_function_notification_title" msgid="612715399099846281">"Məhdud SIM funksionallığı"</string>
<string name="limited_sim_function_with_phone_num_notification_message" msgid="5928988883403677610">"<xliff:g id="PHONE_NUMBER">%2$s</xliff:g> nömrəsindən istifadə edərkən <xliff:g id="CARRIER_NAME">%1$s</xliff:g> zəng və data xidmətləri bloklana bilər."</string>
<string name="limited_sim_function_notification_message" msgid="5338638075496721160">"Başqa SIM-dən istifadə edərkən <xliff:g id="CARRIER_NAME">%1$s</xliff:g> zəng və data xidmətləri bloklana bilər."</string>
<string name="sip_accounts_removed_notification_title" msgid="3528076957535736095">"Ləğv edilmiş SIP hesabları tapıldı və silindi"</string>
<string name="sip_accounts_removed_notification_message" msgid="1916856744869791592">"SIP zəngi artıq Android platforması tərəfindən dəstəklənmir.\nMövcud SIP hesablarınız <xliff:g id="REMOVED_SIP_ACCOUNTS">%s</xliff:g> silinib.\nDefolt zəng hesabı ayarınızı təsdiq edin."</string>
<string name="sip_accounts_removed_notification_action" msgid="3772778402370555562">"Ayarlara keçin"</string>
- <string name="data_usage_title" msgid="8438592133893837464">"Tətbiq trafiki"</string>
+ <string name="data_usage_title" msgid="8438592133893837464">"Tətbiq data istifadəsi"</string>
<string name="data_usage_template" msgid="6287906680674061783">"<xliff:g id="ID_2">%2$s</xliff:g> ərzində <xliff:g id="ID_1">%1$s</xliff:g> mobil data istifadə edildi"</string>
<string name="advanced_options_title" msgid="9208195294513520934">"Qabaqcıl"</string>
<string name="carrier_settings_euicc" msgid="1190237227261337749">"Mobil Operator"</string>
<string name="keywords_carrier_settings_euicc" msgid="8540160967922063745">"operator, esim, sim, euicc, operatoru dəyişin, operator əlavə edin"</string>
<string name="carrier_settings_euicc_summary" msgid="2027941166597330117">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> — <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
<string name="mobile_data_settings_title" msgid="7228249980933944101">"Mobil data"</string>
- <string name="mobile_data_settings_summary" msgid="5012570152029118471">"Mobil internetə giriş"</string>
+ <string name="mobile_data_settings_summary" msgid="5012570152029118471">"Mobil şəbəkədən istifadə edərək dataya daxil olun"</string>
<string name="data_usage_disable_mobile" msgid="5669109209055988308">"Mobil data söndürülsün?"</string>
<string name="sim_selection_required_pref" msgid="6985901872978341314">"Seçim tələb olunur"</string>
<string name="sim_change_data_title" msgid="9142726786345906606">"Data SİM-i dəyişilsin?"</string>
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"Parol səhvdir. SIM indi kilidlənib. PUK2-ni daxil et."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK2 həmişəlik qapadıldı."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"Sizin <xliff:g id="NUMBER">%d</xliff:g> cəhdiniz qalıb."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"PUK2 kilidlidir. Açmaq üçün xidmət provayderi ilə əlaqə saxlayın."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"PIN2 artıq bloklanmayıb"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"Şəbəkə və ya SIM kart xətası"</string>
<string name="doneButton" msgid="7371209609238460207">"Tamam"</string>
@@ -701,7 +700,7 @@
<string name="change_pin_enter_new_pin_header" msgid="4739465616733486118">"Yeni PIN kodu təyin edin"</string>
<string name="change_pin_enter_new_pin_hint" msgid="2326038476516364210">"PIN <xliff:g id="MIN">%1$d</xliff:g>-<xliff:g id="MAX">%2$d</xliff:g> rəqəm olmalıdır."</string>
<string name="change_pin_confirm_pin_header" msgid="2606303906320705726">"PİN kodunuzu təsdiq edin"</string>
- <string name="change_pin_confirm_pins_dont_match" msgid="305164501222587215">"PIN-lər eyni deyil"</string>
+ <string name="change_pin_confirm_pins_dont_match" msgid="305164501222587215">"PIN kodlar üst-üstə düşmür"</string>
<string name="change_pin_succeeded" msgid="2504705600693014403">"Səsli poçtun PIN kodu yeniləndi"</string>
<string name="change_pin_system_error" msgid="7772788809875146873">"PIN kodu ayarlamaq olmur"</string>
<string name="mobile_data_status_roaming_turned_off_subtext" msgid="6840673347416227054">"Data rominq deaktivdir"</string>
diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml
index ffe6f86..57aec7d 100644
--- a/res/values-b+sr+Latn/strings.xml
+++ b/res/values-b+sr+Latn/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"Lozinka nije tačna. SIM je sada blokiran. Unesite PUK2."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK2 je trajno blokiran."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"Imate još <xliff:g id="NUMBER">%d</xliff:g> pokušaja."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"PUK2 je zaključan. Za otključavanje se obratite dobavljaču usluge."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"PIN2 više nije blokiran"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"Greška na mreži ili SIM kartici"</string>
<string name="doneButton" msgid="7371209609238460207">"Gotovo"</string>
diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml
index ff1e5e2..8b15471 100644
--- a/res/values-be/strings.xml
+++ b/res/values-be/strings.xml
@@ -294,7 +294,7 @@
<string name="limited_sim_function_notification_title" msgid="612715399099846281">"Абмежаваныя функцыі SIM-карты"</string>
<string name="limited_sim_function_with_phone_num_notification_message" msgid="5928988883403677610">"Выклікі і перадача даных праз <xliff:g id="CARRIER_NAME">%1$s</xliff:g> могуць блакіравацца пры выкарыстанні нумара <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>."</string>
<string name="limited_sim_function_notification_message" msgid="5338638075496721160">"Выклікі і перадача даных праз <xliff:g id="CARRIER_NAME">%1$s</xliff:g> блакіруюцца пры выкарыстанні іншай SIM-карты."</string>
- <string name="sip_accounts_removed_notification_title" msgid="3528076957535736095">"Знойдзены і выдалены састарэлыя ўліковыя запісы SIP"</string>
+ <string name="sip_accounts_removed_notification_title" msgid="3528076957535736095">"Знойдзены і выдалены ўстарэлыя ўліковыя запісы SIP"</string>
<string name="sip_accounts_removed_notification_message" msgid="1916856744869791592">"На платформе Android больш не падтрымліваецца SIP-тэлефанія.\nВашы існуючыя ўліковыя запісы SIP (<xliff:g id="REMOVED_SIP_ACCOUNTS">%s</xliff:g>) выдалены.\nПацвердзіце стандартны ўліковы запіс для выклікаў."</string>
<string name="sip_accounts_removed_notification_action" msgid="3772778402370555562">"Перайсці ў налады"</string>
<string name="data_usage_title" msgid="8438592133893837464">"Выкарыстанне трафіка"</string>
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"Пароль няправільны. Зараз SIM-карта заблакіравана. Увядзіце код PUK2."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"Код PUK2 заблакіраваны назаўжды."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"У вас засталося спроб: <xliff:g id="NUMBER">%d</xliff:g>."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"Код PUK2 заблакіраваны. Для разблакіроўкі звярніцеся да пастаўшчыка паслуг."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"Код PIN2 больш не заблакіраваны"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"Памылка сеткі або SIM-карты"</string>
<string name="doneButton" msgid="7371209609238460207">"Гатова"</string>
@@ -931,5 +930,5 @@
<string name="trigger_carrier_provisioning" msgid="1301829588620638234">"Запусціць сінхранізацыю з аператарам"</string>
<string name="call_quality_notification_bluetooth_details" msgid="8348950331707346711">"Сігнал Bluetooth слабы. Паспрабуйце пераключыцца на гучную сувязь."</string>
<string name="call_quality_notification_name" msgid="3476828289553948830">"Апавяшчэнне пра якасць выкліку"</string>
- <string name="notification_channel_sip_account" msgid="1261816025156179637">"Састарэлыя ўліковыя запісы SIP"</string>
+ <string name="notification_channel_sip_account" msgid="1261816025156179637">"Устарэлыя ўліковыя запісы SIP"</string>
</resources>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index 74c36e0..2466ada 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"Паролата е неправилна. SIM картата вече е заключена. Въведете PUK2 кода."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK2 е блокиран завинаги."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"Остават ви <xliff:g id="NUMBER">%d</xliff:g> опита."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"Заключена с PUK2. За отключване се обърнете към оператора."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"ПИН2 кодът вече не е блокиран"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"Грешка в мрежата или SIM картата"</string>
<string name="doneButton" msgid="7371209609238460207">"Готово"</string>
diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml
index 3832903..085904f 100644
--- a/res/values-bn/strings.xml
+++ b/res/values-bn/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"পাসওয়ার্ডটি ভুল৷ সিম এখন অবরুদ্ধ৷ PUK2 লিখুন৷"</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK2 স্থায়ীভাবে অবরুদ্ধ করা হয়েছে৷"</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"আপনার কাছে <xliff:g id="NUMBER">%d</xliff:g>টি প্রচেষ্টা অবশিষ্ট রয়েছে৷"</string>
- <string name="puk2_locked" msgid="6497760825455461057">"PUK2 লক করা আছে। আনলক করতে পরিষেবা প্রদানকারীর সাথে যোগাযোগ করুন।"</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"PIN2 এখন আর অবরুদ্ধ নয়"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"নেটওয়ার্ক বা সিম কার্ড ত্রুটি৷"</string>
<string name="doneButton" msgid="7371209609238460207">"সম্পন্ন হয়েছে"</string>
diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml
index 0714fcb..f962bea 100644
--- a/res/values-bs/strings.xml
+++ b/res/values-bs/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"Lozinka je netačna. SIM je sada zaključan. Unesite PUK2."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK2 je trajno blokiran."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"Broj preostalih pokušaja: <xliff:g id="NUMBER">%d</xliff:g>."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"SIM je zaključan kodom PUK2. Kontaktirajte pružaoca usluge da ga otključate."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"PIN2 više nije blokiran"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"Greška na mreži ili SIM kartici"</string>
<string name="doneButton" msgid="7371209609238460207">"Gotovo"</string>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index c4cc571..70e1c9e 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"La contrasenya no és correcta i la SIM s\'ha bloquejat. Introdueix el PUK2."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"El PUK2 s\'ha bloquejat permanentment."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"Et queden <xliff:g id="NUMBER">%d</xliff:g> intents."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"El PUK2 s\'ha bloquejat. Contacta amb el proveïdor de serveis per desbloquejar-lo."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"El PIN2 ja no està bloquejat."</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"Error de la xarxa o de targeta SIM"</string>
<string name="doneButton" msgid="7371209609238460207">"Fet"</string>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 914c04d..63aac81 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"Nesprávné heslo. SIM karta je teď uzamčena. Zadejte kód PUK2."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK2 je trvale zablokován."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"Počet zbývajících pokusů: <xliff:g id="NUMBER">%d</xliff:g>."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"Uzamčeno kódem PUK2. Se žádostí o odemknutí SIM karty se obraťte na poskytovatele služeb."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"PIN2 již není blokován"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"Došlo k chybě sítě nebo SIM karty."</string>
<string name="doneButton" msgid="7371209609238460207">"Hotovo"</string>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 8b92d31..392a72e 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"Forkert adgangskode. SIM-kortet er nu låst. Angiv PUK-kode 2."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK2 er permanent blokeret."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"Du har <xliff:g id="NUMBER">%d</xliff:g> forsøg tilbage."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"PUK2-låst. Kontakt din udbyder for at låse op."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"Pinkode 2 er ikke længere blokeret"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"Fejl i netværk eller SIM-kort"</string>
<string name="doneButton" msgid="7371209609238460207">"Afslut"</string>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 758cc34..925bb75 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"Passwort falsch. SIM-Karte ist jetzt gesperrt. Bitte PUK2 eingeben."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK2 wurde endgültig gesperrt."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"Du hast noch <xliff:g id="NUMBER">%d</xliff:g> Versuche."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"PUK2 gesperrt. Wende dich zum Entsperren an den Mobilfunkanbieter."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"PIN2 nicht mehr gesperrt"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"Netzwerk- oder SIM-Kartenfehler"</string>
<string name="doneButton" msgid="7371209609238460207">"Fertig"</string>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index 55975a1..d7a8240 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"Ο κωδικός πρόσβασης είναι λανθασμένος. Η SIM κλειδώθηκε. Καταχωρίστε το PUK2."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"Ο κωδικός PUK2 έχει μπλοκαριστεί οριστικά."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"Απομένουν <xliff:g id="NUMBER">%d</xliff:g> προσπάθειες."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"Το PUK2 κλειδώθηκε. Επικοινωνήστε με τον πάροχο υπηρεσιών για ξεκλείδωμα."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"Το PIN2 δεν είναι πλέον αποκλεισμένο"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"Σφάλμα δικτύου ή κάρτας SIM"</string>
<string name="doneButton" msgid="7371209609238460207">"Τέλος"</string>
diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
index 5e676c3..208a6a1 100644
--- a/res/values-en-rAU/strings.xml
+++ b/res/values-en-rAU/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"Password incorrect. SIM now locked. Enter PUK2."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK2 is permanently blocked."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"You have <xliff:g id="NUMBER">%d</xliff:g> remaining attempts."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"PUK2 locked. Contact service provider to unlock."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"PIN2 no longer blocked"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"Network or SIM card error"</string>
<string name="doneButton" msgid="7371209609238460207">"Done"</string>
diff --git a/res/values-en-rCA/strings.xml b/res/values-en-rCA/strings.xml
index bc4169e..348f940 100644
--- a/res/values-en-rCA/strings.xml
+++ b/res/values-en-rCA/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"Password incorrect. SIM now locked. Enter PUK2."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK2 is permanently blocked."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"You have <xliff:g id="NUMBER">%d</xliff:g> remaining attempts."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"PUK2 locked. Contact service provider to unlock."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"PIN2 no longer blocked"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"Network or SIM card error"</string>
<string name="doneButton" msgid="7371209609238460207">"Done"</string>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index 5e676c3..208a6a1 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"Password incorrect. SIM now locked. Enter PUK2."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK2 is permanently blocked."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"You have <xliff:g id="NUMBER">%d</xliff:g> remaining attempts."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"PUK2 locked. Contact service provider to unlock."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"PIN2 no longer blocked"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"Network or SIM card error"</string>
<string name="doneButton" msgid="7371209609238460207">"Done"</string>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index 5e676c3..208a6a1 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"Password incorrect. SIM now locked. Enter PUK2."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK2 is permanently blocked."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"You have <xliff:g id="NUMBER">%d</xliff:g> remaining attempts."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"PUK2 locked. Contact service provider to unlock."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"PIN2 no longer blocked"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"Network or SIM card error"</string>
<string name="doneButton" msgid="7371209609238460207">"Done"</string>
diff --git a/res/values-en-rXC/strings.xml b/res/values-en-rXC/strings.xml
index e69d221..9527701 100644
--- a/res/values-en-rXC/strings.xml
+++ b/res/values-en-rXC/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"Password incorrect. SIM now locked. Enter PUK2."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK2 is permanently blocked."</string>
<string name="pin2_attempts" msgid="5625178102026453023">"\nYou have <xliff:g id="NUMBER">%d</xliff:g> remaining attempts."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"PUK2 locked. Contact service provider to unlock."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"PIN2 no longer blocked"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"Network or SIM card error"</string>
<string name="doneButton" msgid="7371209609238460207">"Done"</string>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index b3c8395..0eb7c74 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"Contraseña incorrecta. SIM bloqueada. Ingresa el PUK2."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"El código PUK2 se bloqueó de forma permanente."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"Te quedan <xliff:g id="NUMBER">%d</xliff:g> intentos."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"SIM bloqueada con PUK2. Comunícate con el proveedor para desbloquearla."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"El PIN2 ya no está bloqueado."</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"Error en la red o en la tarjeta SIM"</string>
<string name="doneButton" msgid="7371209609238460207">"Finalizado"</string>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index d012d07..d6272b7 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -281,16 +281,16 @@
<string name="data_enabled" msgid="22525832097434368">"Habilitar datos"</string>
<string name="data_enable_summary" msgid="696860063456536557">"Permitir uso de datos"</string>
<string name="dialog_alert_title" msgid="5260471806940268478">"Atención"</string>
- <string name="roaming" msgid="1576180772877858949">"Roaming"</string>
- <string name="roaming_enable" msgid="6853685214521494819">"Conectarse a servicios de datos en roaming"</string>
- <string name="roaming_disable" msgid="8856224638624592681">"Conectarse a servicios de datos en roaming"</string>
- <string name="roaming_reenable_message" msgid="1951802463885727915">"El roaming de datos está desactivado. Toca para activarla."</string>
- <string name="roaming_enabled_message" msgid="9022249120750897">"Pueden aplicarse cargos de roaming. Toca para modificar este ajuste."</string>
+ <string name="roaming" msgid="1576180772877858949">"Itinerancia"</string>
+ <string name="roaming_enable" msgid="6853685214521494819">"Conectarse a servicios de datos en itinerancia"</string>
+ <string name="roaming_disable" msgid="8856224638624592681">"Conectarse a servicios de datos en itinerancia"</string>
+ <string name="roaming_reenable_message" msgid="1951802463885727915">"La itinerancia de datos está desactivada. Toca para activarla."</string>
+ <string name="roaming_enabled_message" msgid="9022249120750897">"Pueden aplicarse cargos de itinerancia. Toca para modificar este ajuste."</string>
<string name="roaming_notification_title" msgid="3590348480688047320">"Se ha perdido la conexión de datos móviles"</string>
- <string name="roaming_on_notification_title" msgid="7451473196411559173">"El roaming de datos está activado"</string>
+ <string name="roaming_on_notification_title" msgid="7451473196411559173">"La itinerancia de datos está activada"</string>
<string name="roaming_warning" msgid="7855681468067171971">"El coste de este servicio puede ser significativo."</string>
<string name="roaming_check_price_warning" msgid="8212484083990570215">"Ponte en contacto con tu proveedor de red para consultar el precio."</string>
- <string name="roaming_alert_title" msgid="5689615818220960940">"¿Permitir roaming de datos?"</string>
+ <string name="roaming_alert_title" msgid="5689615818220960940">"¿Permitir itinerancia de datos?"</string>
<string name="limited_sim_function_notification_title" msgid="612715399099846281">"Funcionalidad de SIM limitada"</string>
<string name="limited_sim_function_with_phone_num_notification_message" msgid="5928988883403677610">"Puede los servicios de datos y llamadas de <xliff:g id="CARRIER_NAME">%1$s</xliff:g> se bloqueen mientras se utilice el <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>."</string>
<string name="limited_sim_function_notification_message" msgid="5338638075496721160">"Puede que los servicios de datos y llamadas de <xliff:g id="CARRIER_NAME">%1$s</xliff:g> se bloqueen al usar otra SIM."</string>
@@ -299,7 +299,7 @@
<string name="sip_accounts_removed_notification_action" msgid="3772778402370555562">"Ir a Ajustes"</string>
<string name="data_usage_title" msgid="8438592133893837464">"Uso de datos de la aplicación"</string>
<string name="data_usage_template" msgid="6287906680674061783">"Se han usado <xliff:g id="ID_1">%1$s</xliff:g> en el periodo del <xliff:g id="ID_2">%2$s</xliff:g>"</string>
- <string name="advanced_options_title" msgid="9208195294513520934">"Ajustes avanzados"</string>
+ <string name="advanced_options_title" msgid="9208195294513520934">"Avanzado"</string>
<string name="carrier_settings_euicc" msgid="1190237227261337749">"Operador"</string>
<string name="keywords_carrier_settings_euicc" msgid="8540160967922063745">"operador, esim, sim, euicc, cambiar de operador, añadir operador"</string>
<string name="carrier_settings_euicc_summary" msgid="2027941166597330117">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>: <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
@@ -308,7 +308,7 @@
<string name="data_usage_disable_mobile" msgid="5669109209055988308">"¿Quieres desactivar los datos móviles?"</string>
<string name="sim_selection_required_pref" msgid="6985901872978341314">"Debes seleccionar una opción"</string>
<string name="sim_change_data_title" msgid="9142726786345906606">"¿Cambiar la SIM de datos?"</string>
- <string name="sim_change_data_message" msgid="3567358694255933280">"¿Usar la tarjeta <xliff:g id="NEW_SIM">%1$s</xliff:g> en lugar de <xliff:g id="OLD_SIM">%2$s</xliff:g> para los datos móviles?"</string>
+ <string name="sim_change_data_message" msgid="3567358694255933280">"¿Quieres usar la tarjeta <xliff:g id="NEW_SIM">%1$s</xliff:g> en lugar de <xliff:g id="OLD_SIM">%2$s</xliff:g> para los datos móviles?"</string>
<string name="wifi_calling_settings_title" msgid="5800018845662016507">"Llamadas por Wi-Fi"</string>
<string name="video_calling_settings_title" msgid="342829454913266078">"Videollamadas a través del operador"</string>
<string name="gsm_umts_options" msgid="4968446771519376808">"Opciones GSM/UMTS"</string>
@@ -416,7 +416,7 @@
<string name="network_4G" msgid="6800527815504223913">"4G (recomendado)"</string>
<string name="network_global" msgid="3289646154407617631">"Mundial"</string>
<string name="cdma_system_select_title" msgid="614165233552656431">"Selección del sistema"</string>
- <string name="cdma_system_select_summary" msgid="3840420390242060407">"Cambiar el modo de roaming CDMA"</string>
+ <string name="cdma_system_select_summary" msgid="3840420390242060407">"Cambiar el modo de itinerancia CDMA"</string>
<string name="cdma_system_select_dialogtitle" msgid="5524639510676501802">"Selección del sistema"</string>
<string-array name="cdma_system_select_choices">
<item msgid="462340042928284921">"Solo sistema doméstico"</item>
@@ -483,7 +483,7 @@
<string name="simContacts_empty" msgid="1135632055473689521">"No hay ningún contacto en la tarjeta SIM."</string>
<string name="simContacts_title" msgid="2714029230160136647">"Seleccionar contactos para importar"</string>
<string name="simContacts_airplaneMode" msgid="4654884030631503808">"Desactiva el modo avión para importar contactos de la tarjeta SIM."</string>
- <string name="enable_pin" msgid="967674051730845376">"Habilitar/Inhabilitar PIN de tarjeta SIM"</string>
+ <string name="enable_pin" msgid="967674051730845376">"Habilitar/inhabilitar PIN de tarjeta SIM"</string>
<string name="change_pin" msgid="3657869530942905790">"Cambiar PIN de tarjeta SIM"</string>
<string name="enter_pin_text" msgid="3182311451978663356">"PIN de la tarjeta SIM:"</string>
<string name="oldPinLabel" msgid="8618515202411987721">"PIN antiguo"</string>
@@ -515,10 +515,9 @@
<string name="puk2_requested" msgid="6992374450720307514">"Contraseña incorrecta. SIM bloqueada. Introducir PUK2."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"El PUK2 se ha bloqueado de forma permanente."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"Quedan <xliff:g id="NUMBER">%d</xliff:g> intentos."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"PUK2 bloqueado. Ponte en contacto con tu proveedor de servicios para desbloquearlo."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"PIN2 desbloqueado"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"Error en la tarjeta SIM o en la red"</string>
- <string name="doneButton" msgid="7371209609238460207">"Hecho"</string>
+ <string name="doneButton" msgid="7371209609238460207">"Listo"</string>
<string name="voicemail_settings_number_label" msgid="1265118640154688162">"Número del buzón de voz"</string>
<string name="card_title_dialing" msgid="8742182654254431781">"Llamando"</string>
<string name="card_title_redialing" msgid="18130232613559964">"Marcando otra vez"</string>
@@ -596,7 +595,7 @@
<string name="rtt_mode_title" msgid="3075948111362818043">"Llamada de texto en tiempo real (TTR)"</string>
<string name="rtt_mode_summary" msgid="8631541375609989562">"Permitir mensajes en una llamada de voz"</string>
<string name="rtt_mode_more_information" msgid="587500128658756318">"La función TTR (texto en tiempo real) ofrece asistencia a las personas sordas o con discapacidades auditivas, que tienen algún trastorno del habla o que necesitan una transcripción además de la voz para comunicarse.<br> <a href=<xliff:g id="URL">http://support.google.com/mobile?p=telephony_rtt</xliff:g>>Más información</a>\n <br><br> - Las llamadas de TTR se guardan como la transcripción de un mensaje.\n <br> - La función TTR no está disponible en videollamadas."</string>
- <string name="no_rtt_when_roaming" msgid="5268008247378355389">"Nota: TTR no está disponible en roaming"</string>
+ <string name="no_rtt_when_roaming" msgid="5268008247378355389">"Nota: TTR no está disponible en itinerancia"</string>
<string-array name="tty_mode_entries">
<item msgid="3238070884803849303">"TTY desactivado"</item>
<item msgid="1449091874731375214">"TTY completo"</item>
@@ -684,7 +683,7 @@
<string name="status_hint_label_wifi_call" msgid="942993035689809853">"Llamada Wi-Fi"</string>
<string name="emergency_action_launch_hint" msgid="2762016865340891314">"Toca de nuevo para abrir"</string>
<string name="message_decode_error" msgid="1061856591500290887">"Se ha producido un error al decodificar el mensaje."</string>
- <string name="callFailed_cdma_activation" msgid="5392057031552253550">"Una tarjeta SIM ha activado tu servicio y actualizado la función de roaming del teléfono."</string>
+ <string name="callFailed_cdma_activation" msgid="5392057031552253550">"Una tarjeta SIM ha activado tu servicio y actualizado la función de itinerancia del teléfono."</string>
<string name="callFailed_cdma_call_limit" msgid="1074219746093031412">"Hay demasiadas llamadas activas. Finaliza o combina las llamadas que tienes antes de iniciar otra."</string>
<string name="callFailed_imei_not_accepted" msgid="7257903653685147251">"No se puede establecer la conexión. Inserta una tarjeta SIM válida."</string>
<string name="callFailed_wifi_lost" msgid="1788036730589163141">"Se ha perdido la conexión Wi-Fi. La llamada ha finalizado."</string>
@@ -704,16 +703,16 @@
<string name="change_pin_confirm_pins_dont_match" msgid="305164501222587215">"Los PIN no coinciden"</string>
<string name="change_pin_succeeded" msgid="2504705600693014403">"Se ha cambiado el PIN del buzón de voz"</string>
<string name="change_pin_system_error" msgid="7772788809875146873">"No se ha podido configurar el PIN"</string>
- <string name="mobile_data_status_roaming_turned_off_subtext" msgid="6840673347416227054">"Se ha desactivado el roaming de datos"</string>
- <string name="mobile_data_status_roaming_turned_on_subtext" msgid="5615757897768777865">"Se ha activado el roaming de datos"</string>
- <string name="mobile_data_status_roaming_without_plan_subtext" msgid="6536671968072284677">"En roaming actualmente, se necesita un plan de datos"</string>
- <string name="mobile_data_status_roaming_with_plan_subtext" msgid="2576177169108123095">"En roaming actualmente, hay un plan de datos activo"</string>
+ <string name="mobile_data_status_roaming_turned_off_subtext" msgid="6840673347416227054">"Se ha desactivado la itinerancia de datos"</string>
+ <string name="mobile_data_status_roaming_turned_on_subtext" msgid="5615757897768777865">"Se ha activado la itinerancia de datos"</string>
+ <string name="mobile_data_status_roaming_without_plan_subtext" msgid="6536671968072284677">"En itinerancia actualmente, se necesita un plan de datos"</string>
+ <string name="mobile_data_status_roaming_with_plan_subtext" msgid="2576177169108123095">"En itinerancia actualmente, hay un plan de datos activo"</string>
<string name="mobile_data_status_no_plan_subtext" msgid="170331026419263657">"No quedan datos móviles"</string>
<string name="mobile_data_activate_prepaid" msgid="4276738964416795596">"No quedan datos móviles"</string>
<string name="mobile_data_activate_prepaid_summary" msgid="6846085278531605925">"Añadir datos móviles a través de <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
- <string name="mobile_data_activate_roaming_plan" msgid="922290995866269366">"No hay ningún plan de roaming"</string>
- <string name="mobile_data_activate_roaming_plan_summary" msgid="5379228493306235969">"Añadir un plan de roaming a través de <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
- <string name="mobile_data_activate_footer" msgid="7895874069807204548">"Puedes añadir datos móviles o un plan de roaming a través de tu operador, <xliff:g id="PROVIDER_NAME">%s</xliff:g>."</string>
+ <string name="mobile_data_activate_roaming_plan" msgid="922290995866269366">"No hay ningún plan de itinerancia"</string>
+ <string name="mobile_data_activate_roaming_plan_summary" msgid="5379228493306235969">"Añadir un plan de itinerancia a través de <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
+ <string name="mobile_data_activate_footer" msgid="7895874069807204548">"Puedes añadir datos móviles o un plan de itinerancia a través de tu operador, <xliff:g id="PROVIDER_NAME">%s</xliff:g>."</string>
<string name="mobile_data_activate_diag_title" msgid="5401741936224757312">"¿Añadir datos?"</string>
<string name="mobile_data_activate_diag_message" msgid="3527260988020415441">"Puede que tengas que añadir datos a través de <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
<string name="mobile_data_activate_button" msgid="1139792516354374612">"AÑADIR DATOS"</string>
@@ -780,15 +779,15 @@
<string name="call_barring_baoic" msgid="8668125428666851665">"Internacionales realizadas"</string>
<string name="call_barring_baoic_enabled" msgid="1203758092657630123">"¿Quieres desbloquear las llamadas internacionales realizadas?"</string>
<string name="call_barring_baoic_disabled" msgid="5656889339002997449">"¿Bloquear las llamadas internacionales realizadas?"</string>
- <string name="call_barring_baoicr" msgid="8566167764432343487">"Roaming de llamadas internacionales realizadas"</string>
- <string name="call_barring_baoicr_enabled" msgid="1615324165512798478">"¿Quieres desbloquear el roaming de las llamadas internacionales realizadas?"</string>
- <string name="call_barring_baoicr_disabled" msgid="172010175248142831">"¿Bloquear el roaming de las llamadas internacionales realizadas?"</string>
+ <string name="call_barring_baoicr" msgid="8566167764432343487">"Itinerancia de llamadas internacionales realizadas"</string>
+ <string name="call_barring_baoicr_enabled" msgid="1615324165512798478">"¿Quieres desbloquear la itinerancia de las llamadas internacionales realizadas?"</string>
+ <string name="call_barring_baoicr_disabled" msgid="172010175248142831">"¿Bloquear la itinerancia de las llamadas internacionales realizadas?"</string>
<string name="call_barring_baic" msgid="7941393541678658566">"Todas las entrantes"</string>
<string name="call_barring_baic_enabled" msgid="4357332358020337470">"¿Quieres desbloquear todas las llamadas entrantes?"</string>
<string name="call_barring_baic_disabled" msgid="2355945245938240958">"¿Bloquear todas las llamadas entrantes?"</string>
- <string name="call_barring_baicr" msgid="8712249337313034226">"Roaming de llamadas internacionales entrantes"</string>
- <string name="call_barring_baicr_enabled" msgid="64774270234828175">"¿Quieres desbloquear el roaming de las llamadas internacionales entrantes?"</string>
- <string name="call_barring_baicr_disabled" msgid="3488129262744027262">"¿Bloquear el roaming de las llamadas internacionales entrantes?"</string>
+ <string name="call_barring_baicr" msgid="8712249337313034226">"Itinerancia de llamadas internacionales entrantes"</string>
+ <string name="call_barring_baicr_enabled" msgid="64774270234828175">"¿Quieres desbloquear la itinerancia de las llamadas internacionales entrantes?"</string>
+ <string name="call_barring_baicr_disabled" msgid="3488129262744027262">"¿Bloquear la itinerancia de las llamadas internacionales entrantes?"</string>
<string name="call_barring_deactivate_all" msgid="7837931580047157328">"Desactivar todo"</string>
<string name="call_barring_deactivate_all_description" msgid="4474119585042121604">"Desactivar todos los ajustes de bloqueo de llamadas"</string>
<string name="call_barring_deactivate_success" msgid="3545644320298275337">"Se ha desactivado el bloqueo de llamadas"</string>
@@ -828,9 +827,9 @@
<string name="callFailed_calling_disabled" msgid="5010992739401206283">"No se puede llamar porque se han inhabilitado las llamadas mediante la propiedad del sistema ro.telephony.disable-call."</string>
<string name="callFailed_too_many_calls" msgid="5379426826618582180">"No se puede llamar porque ya hay dos llamadas en curso. Interrumpe una de ellas o combínalas en una conferencia para poder llamar de nuevo."</string>
<string name="supp_service_over_ut_precautions" msgid="2145018231396701311">"Para utilizar <xliff:g id="SUPP_SERVICE">%s</xliff:g>, los datos móviles deben estar activados. Puedes cambiar esta opción en los ajustes de red móvil."</string>
- <string name="supp_service_over_ut_precautions_roaming" msgid="670342104569972327">"Para utilizar <xliff:g id="SUPP_SERVICE">%s</xliff:g>, los datos móviles y el roaming de datos deben estar activados. Puedes cambiar estas opciones en los ajustes de red móvil."</string>
+ <string name="supp_service_over_ut_precautions_roaming" msgid="670342104569972327">"Para utilizar <xliff:g id="SUPP_SERVICE">%s</xliff:g>, los datos móviles y la itinerancia de datos deben estar activados. Puedes cambiar estas opciones en los ajustes de red móvil."</string>
<string name="supp_service_over_ut_precautions_dual_sim" msgid="5166866975550910474">"Para utilizar <xliff:g id="SUPP_SERVICE">%1$s</xliff:g>, los datos móviles deben estar activados en la SIM <xliff:g id="SIM_NUMBER">%2$d</xliff:g>. Puedes cambiar esta opción en los ajustes de red móvil."</string>
- <string name="supp_service_over_ut_precautions_roaming_dual_sim" msgid="6627654855191817965">"Para utilizar <xliff:g id="SUPP_SERVICE">%1$s</xliff:g>, los datos móviles y el roaming de datos deben estar activados en la SIM <xliff:g id="SIM_NUMBER">%2$d</xliff:g>. Puedes cambiar estas opciones en los ajustes de red móvil."</string>
+ <string name="supp_service_over_ut_precautions_roaming_dual_sim" msgid="6627654855191817965">"Para utilizar <xliff:g id="SUPP_SERVICE">%1$s</xliff:g>, los datos móviles y la itinerancia de datos deben estar activados en la SIM <xliff:g id="SIM_NUMBER">%2$d</xliff:g>. Puedes cambiar estas opciones en los ajustes de red móvil."</string>
<string name="supp_service_over_ut_precautions_dialog_dismiss" msgid="5934541487903081652">"Cerrar"</string>
<string name="radio_info_data_connection_enable" msgid="6183729739783252840">"Habilitar conexión de datos"</string>
<string name="radio_info_data_connection_disable" msgid="6404751291511368706">"Inhabilitar conexión de datos"</string>
@@ -859,8 +858,8 @@
<string name="radioInfo_service_out" msgid="287972405416142312">"Fuera de servicio"</string>
<string name="radioInfo_service_emergency" msgid="4763879891415016848">"Solo llamadas de emergencia"</string>
<string name="radioInfo_service_off" msgid="3456583511226783064">"Señal móvil desactivada"</string>
- <string name="radioInfo_roaming_in" msgid="3156335577793145965">"Roaming"</string>
- <string name="radioInfo_roaming_not" msgid="1904547918725478110">"Sin roaming"</string>
+ <string name="radioInfo_roaming_in" msgid="3156335577793145965">"Itinerancia"</string>
+ <string name="radioInfo_roaming_not" msgid="1904547918725478110">"Sin itinerancia"</string>
<string name="radioInfo_phone_idle" msgid="2191653783170757819">"Inactivo"</string>
<string name="radioInfo_phone_ringing" msgid="8100354169567413370">"Sonando"</string>
<string name="radioInfo_phone_offhook" msgid="7564601639749936170">"Llamada en curso"</string>
@@ -883,7 +882,7 @@
<string name="radio_info_cell_info_refresh_rate" msgid="670511448975997340">"Frecuencia de actualización de la información del teléfono:"</string>
<string name="radio_info_cellinfo_label" msgid="8199062974670377659">"Información sobre las dimensiones de los teléfonos:"</string>
<string name="radio_info_gprs_service_label" msgid="6819204246355412952">"Servicio de datos:"</string>
- <string name="radio_info_roaming_label" msgid="6636932886446857120">"Roaming:"</string>
+ <string name="radio_info_roaming_label" msgid="6636932886446857120">"Itinerancia:"</string>
<string name="radio_info_imei_label" msgid="8947899706930120368">"IMEI:"</string>
<string name="radio_info_call_redirect_label" msgid="4526480903023362276">"Redirección de llamadas:"</string>
<string name="radio_info_ppp_resets_label" msgid="9131901102339077661">"Número de PPP restablecido desde el inicio:"</string>
diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml
index bdc5241..c9468d9 100644
--- a/res/values-et/strings.xml
+++ b/res/values-et/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"Parool on vale. SIM on nüüd lukus. Sisestage PUK-kood 2."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK2 on püsivalt blokeeritud."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"Teil on veel <xliff:g id="NUMBER">%d</xliff:g> katset."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"PUK2 on lukustatud. Avamiseks võtke ühendust teenusepakkujaga."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"PIN-kood 2 ei ole enam blokeeritud"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"Võrgu või SIM-kaardi viga"</string>
<string name="doneButton" msgid="7371209609238460207">"Valmis"</string>
diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml
index 7aee00f..4d9cf49 100644
--- a/res/values-eu/strings.xml
+++ b/res/values-eu/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"Pasahitza ez da zuzena. SIM txartela blokeatu egin da. Idatzi PUK2 kodea."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK2 kodea betiko blokeatu da."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"<xliff:g id="NUMBER">%d</xliff:g> saiakera gelditzen zaizkizu."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"PUK2 kodearekin blokeatuta dago SIM txartela. Desblokeatzeko, jarri operadorearekin harremanetan."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"PIN2 kodea desblokeatu da"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"Sarearen edo SIM txartelaren errorea"</string>
<string name="doneButton" msgid="7371209609238460207">"Eginda"</string>
@@ -875,7 +874,7 @@
<string name="radioInfo_display_asu" msgid="2247752203249646956">"asu"</string>
<string name="radioInfo_lac" msgid="3892986460272607013">"LAC"</string>
<string name="radioInfo_cid" msgid="1423185536264406705">"CID"</string>
- <string name="radio_info_subid" msgid="6839966868621703203">"Oraingo azpiIDa:"</string>
+ <string name="radio_info_subid" msgid="6839966868621703203">"Uneko azpiIDa:"</string>
<string name="radio_info_dds" msgid="1122593144425697126">"Datu-konexioetarako SIM lehenetsiaren azpiIDa:"</string>
<string name="radio_info_dl_kbps" msgid="2382922659525318726">"Deskargatzeko banda-zabalera (Kb/s):"</string>
<string name="radio_info_ul_kbps" msgid="2102225400904799036">"Kargen banda-zabalera (Kb/s):"</string>
@@ -887,7 +886,7 @@
<string name="radio_info_imei_label" msgid="8947899706930120368">"IMEI:"</string>
<string name="radio_info_call_redirect_label" msgid="4526480903023362276">"Dei-desbideratzea:"</string>
<string name="radio_info_ppp_resets_label" msgid="9131901102339077661">"PPP berrezarpen kopurua abiarazi ezkero:"</string>
- <string name="radio_info_current_network_label" msgid="3052098695239642450">"Oraingo sarea:"</string>
+ <string name="radio_info_current_network_label" msgid="3052098695239642450">"Uneko sarea:"</string>
<string name="radio_info_ppp_received_label" msgid="5753592451640644889">"Jasotako datuak:"</string>
<string name="radio_info_gsm_service_label" msgid="6443348321714241328">"Ahots-deien zerbitzua:"</string>
<string name="radio_info_signal_strength_label" msgid="5545444702102543260">"Seinalearen indarra:"</string>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index e64f3bc..877f906 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -186,9 +186,9 @@
<string name="manual_mode_disallowed_summary" msgid="3970048592179890197">"هنگام اتصال به %1$s دردسترس نیست"</string>
<string name="network_select_title" msgid="4117305053881611988">"شبکه"</string>
<string name="register_automatically" msgid="3907580547590554834">"ثبت خودکار..."</string>
- <string name="preferred_network_mode_title" msgid="5253395265169539830">"نوع شبکه ترجیحی"</string>
+ <string name="preferred_network_mode_title" msgid="5253395265169539830">"نوع شبکه برگزیده"</string>
<string name="preferred_network_mode_summary" msgid="3787989000044330064">"تغییر حالت عملکرد شبکه"</string>
- <string name="preferred_network_mode_dialogtitle" msgid="2781447433514459696">"نوع شبکه ترجیحی"</string>
+ <string name="preferred_network_mode_dialogtitle" msgid="2781447433514459696">"نوع شبکه برگزیده"</string>
<string name="forbidden_network" msgid="5081729819561333023">"(ممنوع است)"</string>
<string name="choose_network_title" msgid="5335832663422653082">"انتخاب شبکه"</string>
<string name="network_disconnected" msgid="8844141106841160825">"قطع اتصال"</string>
@@ -231,44 +231,44 @@
<item msgid="3869566732842046032">"NR/LTE/TDSCDMA/GSM/WCDMA"</item>
<item msgid="3942770927563146543">"NR/LTE/TDSCDMA/CDMA/EvDo/GSM/WCDMA"</item>
</string-array>
- <string name="preferred_network_mode_wcdma_perf_summary" msgid="7851493369130750126">"حالت شبکه ترجیحی: WCDMA برگزیده"</string>
- <string name="preferred_network_mode_gsm_only_summary" msgid="4323367929994392830">"حالت شبکه ترجیحی: فقط GSM"</string>
- <string name="preferred_network_mode_wcdma_only_summary" msgid="3585482191951442207">"حالت شبکه ترجیحی: فقط WCDMA"</string>
- <string name="preferred_network_mode_gsm_wcdma_summary" msgid="2988950751948316810">"حالت شبکه ترجیحی: GSM / WCDMA"</string>
+ <string name="preferred_network_mode_wcdma_perf_summary" msgid="7851493369130750126">"حالت شبکه برگزیده: WCDMA برگزیده"</string>
+ <string name="preferred_network_mode_gsm_only_summary" msgid="4323367929994392830">"حالت شبکه برگزیده: فقط GSM"</string>
+ <string name="preferred_network_mode_wcdma_only_summary" msgid="3585482191951442207">"حالت شبکه برگزیده: فقط WCDMA"</string>
+ <string name="preferred_network_mode_gsm_wcdma_summary" msgid="2988950751948316810">"حالت شبکه برگزیده: GSM / WCDMA"</string>
<string name="preferred_network_mode_cdma_summary" msgid="9127141320343936911">"حالت شبکه ترجیحی: CDMA"</string>
<string name="preferred_network_mode_cdma_evdo_summary" msgid="3629440709757307077">"حالت شبکه ترجیحی: CDMA / EvDo"</string>
- <string name="preferred_network_mode_cdma_only_summary" msgid="211164451887102568">"حالت شبکه ترجیحی: فقط CDMA"</string>
- <string name="preferred_network_mode_evdo_only_summary" msgid="939116631952132878">"حالت شبکه ترجیحی: فقط EvDo"</string>
- <string name="preferred_network_mode_cdma_evdo_gsm_wcdma_summary" msgid="7891131456022601976">"حالت شبکه ترجیحی: CDMA/EvDo/GSM/WCDMA"</string>
- <string name="preferred_network_mode_lte_summary" msgid="8050539466545797149">"حالت شبکه ترجیحی: LTE"</string>
- <string name="preferred_network_mode_lte_gsm_wcdma_summary" msgid="2217794334331254936">"حالت شبکه ترجیحی: GSM/WCDMA/LTE"</string>
- <string name="preferred_network_mode_lte_cdma_evdo_summary" msgid="5559198623419981805">"حالت شبکه ترجیحی: CDMA+LTE/EVDO"</string>
- <string name="preferred_network_mode_lte_cdma_evdo_gsm_wcdma_summary" msgid="6707224437925495615">"حالت شبکه ترجیحی: LTE/CDMA/EvDo/GSM/WCDMA"</string>
- <string name="preferred_network_mode_global_summary" msgid="3847086258439582411">"حالت شبکه ترجیحی: سراسری"</string>
- <string name="preferred_network_mode_lte_wcdma_summary" msgid="7001804022020813865">"حالت شبکه ترجیحی: LTE / WCDMA"</string>
- <string name="preferred_network_mode_lte_gsm_umts_summary" msgid="6484203890156282179">"حالت شبکه ترجیحی: LTE / GSM / UMTS"</string>
- <string name="preferred_network_mode_lte_cdma_summary" msgid="8187929456614068518">"حالت شبکه ترجیحی: LTE / CDMA"</string>
- <string name="preferred_network_mode_tdscdma_summary" msgid="3602127224234207206">"حالت شبکه ترجیحی: TDSCDMA"</string>
- <string name="preferred_network_mode_tdscdma_wcdma_summary" msgid="7076968749402201123">"حالت شبکه ترجیحی: TDSCDMA / WCDMA"</string>
- <string name="preferred_network_mode_lte_tdscdma_summary" msgid="3001058390866953624">"حالت شبکه ترجیحی: LTE / TDSCDMA"</string>
- <string name="preferred_network_mode_tdscdma_gsm_summary" msgid="1716983444872465309">"حالت شبکه ترجیحی: TDSCDMA / GSM"</string>
- <string name="preferred_network_mode_lte_tdscdma_gsm_summary" msgid="1349057007230669585">"حالت شبکه ترجیحی: LTE/GSM/TDSCDMA"</string>
- <string name="preferred_network_mode_tdscdma_gsm_wcdma_summary" msgid="2092262901885164194">"حالت شبکه ترجیحی: TDSCDMA/GSM/WCDMA"</string>
- <string name="preferred_network_mode_lte_tdscdma_wcdma_summary" msgid="56422129430744466">"حالت شبکه ترجیحی: LTE/TDSCDMA/WCDMA"</string>
- <string name="preferred_network_mode_lte_tdscdma_gsm_wcdma_summary" msgid="2993923113350341106">"حالت شبکه ترجیحی: LTE/TDSCDMA/GSM/WCDMA"</string>
- <string name="preferred_network_mode_tdscdma_cdma_evdo_gsm_wcdma_summary" msgid="2779089629254220257">"حالت شبکه ترجیحی: TDSCDMA/CDMA/EvDo/GSM/WCDMA"</string>
- <string name="preferred_network_mode_lte_tdscdma_cdma_evdo_gsm_wcdma_summary" msgid="9065672185435798587">"حالت شبکه ترجیحی: LTE/TDSCDMA/CDMA/EvDo/GSM/WCDMA"</string>
- <string name="preferred_network_mode_nr_only_summary" msgid="1467452233297987391">"حالت شبکه ترجیحی: فقط NR"</string>
- <string name="preferred_network_mode_nr_lte_summary" msgid="5890170406507535976">"حالت شبکه ترجیحی: NR / LTE"</string>
- <string name="preferred_network_mode_nr_lte_cdma_evdo_summary" msgid="5507940227264296616">"حالت شبکه ترجیحی: NR/LTE/CDMA/EvDo"</string>
- <string name="preferred_network_mode_nr_lte_gsm_wcdma_summary" msgid="2811179121638665248">"حالت شبکه ترجیحی: NR/LTE/GSM/WCDMA"</string>
- <string name="preferred_network_mode_nr_lte_cdma_evdo_gsm_wcdma_summary" msgid="7631365223836621902">"حالت شبکه ترجیحی: NR/LTE/CDMA/EvDo/GSM/WCDMA"</string>
- <string name="preferred_network_mode_nr_lte_wcdma_summary" msgid="8696016062943591864">"حالت شبکه ترجیحی: NR/LTE/WCDMA"</string>
- <string name="preferred_network_mode_nr_lte_tdscdma_summary" msgid="1236182344680726751">"حالت شبکه ترجیحی: NR/LTE/TDSCDMA"</string>
- <string name="preferred_network_mode_nr_lte_tdscdma_gsm_summary" msgid="8384454155773415993">"حالت شبکه ترجیحی: NR/LTE/TDSCDMA/GSM"</string>
- <string name="preferred_network_mode_nr_lte_tdscdma_wcdma_summary" msgid="5912457779733343522">"حالت شبکه ترجیحی: NR/LTE/TDSCDMA/WCDMA"</string>
- <string name="preferred_network_mode_nr_lte_tdscdma_gsm_wcdma_summary" msgid="6769797110309412576">"حالت شبکه ترجیحی: NR/LTE/TDSCDMA/GSM/WCDMA"</string>
- <string name="preferred_network_mode_nr_lte_tdscdma_cdma_evdo_gsm_wcdma_summary" msgid="4260661428277578573">"حالت شبکه ترجیحی: NR/LTE/TDSCDMA/CDMA/EvDo/GSM/WCDMA"</string>
+ <string name="preferred_network_mode_cdma_only_summary" msgid="211164451887102568">"حالت شبکه برگزیده: فقط CDMA"</string>
+ <string name="preferred_network_mode_evdo_only_summary" msgid="939116631952132878">"حالت شبکه برگزیده: فقط EvDo"</string>
+ <string name="preferred_network_mode_cdma_evdo_gsm_wcdma_summary" msgid="7891131456022601976">"حالت شبکه برگزیده: CDMA/EvDo/GSM/WCDMA"</string>
+ <string name="preferred_network_mode_lte_summary" msgid="8050539466545797149">"حالت شبکه برگزیده: LTE"</string>
+ <string name="preferred_network_mode_lte_gsm_wcdma_summary" msgid="2217794334331254936">"حالت شبکه برگزیده: GSM/WCDMA/LTE"</string>
+ <string name="preferred_network_mode_lte_cdma_evdo_summary" msgid="5559198623419981805">"حالت شبکه برگزیده: CDMA+LTE/EVDO"</string>
+ <string name="preferred_network_mode_lte_cdma_evdo_gsm_wcdma_summary" msgid="6707224437925495615">"حالت شبکه برگزیده: LTE/CDMA/EvDo/GSM/WCDMA"</string>
+ <string name="preferred_network_mode_global_summary" msgid="3847086258439582411">"حالت شبکه برگزیده: سراسری"</string>
+ <string name="preferred_network_mode_lte_wcdma_summary" msgid="7001804022020813865">"حالت شبکه برگزیده: LTE / WCDMA"</string>
+ <string name="preferred_network_mode_lte_gsm_umts_summary" msgid="6484203890156282179">"حالت شبکه برگزیده: LTE / GSM / UMTS"</string>
+ <string name="preferred_network_mode_lte_cdma_summary" msgid="8187929456614068518">"حالت شبکه برگزیده: LTE / CDMA"</string>
+ <string name="preferred_network_mode_tdscdma_summary" msgid="3602127224234207206">"حالت شبکه برگزیده: TDSCDMA"</string>
+ <string name="preferred_network_mode_tdscdma_wcdma_summary" msgid="7076968749402201123">"حالت شبکه برگزیده: TDSCDMA / WCDMA"</string>
+ <string name="preferred_network_mode_lte_tdscdma_summary" msgid="3001058390866953624">"حالت شبکه برگزیده: LTE / TDSCDMA"</string>
+ <string name="preferred_network_mode_tdscdma_gsm_summary" msgid="1716983444872465309">"حالت شبکه برگزیده: TDSCDMA / GSM"</string>
+ <string name="preferred_network_mode_lte_tdscdma_gsm_summary" msgid="1349057007230669585">"حالت شبکه برگزیده: LTE/GSM/TDSCDMA"</string>
+ <string name="preferred_network_mode_tdscdma_gsm_wcdma_summary" msgid="2092262901885164194">"حالت شبکه برگزیده: TDSCDMA/GSM/WCDMA"</string>
+ <string name="preferred_network_mode_lte_tdscdma_wcdma_summary" msgid="56422129430744466">"حالت شبکه برگزیده: LTE/TDSCDMA/WCDMA"</string>
+ <string name="preferred_network_mode_lte_tdscdma_gsm_wcdma_summary" msgid="2993923113350341106">"حالت شبکه برگزیده: LTE/TDSCDMA/GSM/WCDMA"</string>
+ <string name="preferred_network_mode_tdscdma_cdma_evdo_gsm_wcdma_summary" msgid="2779089629254220257">"حالت شبکه برگزیده: TDSCDMA/CDMA/EvDo/GSM/WCDMA"</string>
+ <string name="preferred_network_mode_lte_tdscdma_cdma_evdo_gsm_wcdma_summary" msgid="9065672185435798587">"حالت شبکه برگزیده: LTE/TDSCDMA/CDMA/EvDo/GSM/WCDMA"</string>
+ <string name="preferred_network_mode_nr_only_summary" msgid="1467452233297987391">"حالت شبکه برگزیده: فقط NR"</string>
+ <string name="preferred_network_mode_nr_lte_summary" msgid="5890170406507535976">"حالت شبکه برگزیده: NR / LTE"</string>
+ <string name="preferred_network_mode_nr_lte_cdma_evdo_summary" msgid="5507940227264296616">"حالت شبکه برگزیده: NR/LTE/CDMA/EvDo"</string>
+ <string name="preferred_network_mode_nr_lte_gsm_wcdma_summary" msgid="2811179121638665248">"حالت شبکه برگزیده: NR/LTE/GSM/WCDMA"</string>
+ <string name="preferred_network_mode_nr_lte_cdma_evdo_gsm_wcdma_summary" msgid="7631365223836621902">"حالت شبکه برگزیده: NR/LTE/CDMA/EvDo/GSM/WCDMA"</string>
+ <string name="preferred_network_mode_nr_lte_wcdma_summary" msgid="8696016062943591864">"حالت شبکه برگزیده: NR/LTE/WCDMA"</string>
+ <string name="preferred_network_mode_nr_lte_tdscdma_summary" msgid="1236182344680726751">"حالت شبکه برگزیده: NR/LTE/TDSCDMA"</string>
+ <string name="preferred_network_mode_nr_lte_tdscdma_gsm_summary" msgid="8384454155773415993">"حالت شبکه برگزیده: NR/LTE/TDSCDMA/GSM"</string>
+ <string name="preferred_network_mode_nr_lte_tdscdma_wcdma_summary" msgid="5912457779733343522">"حالت شبکه برگزیده: NR/LTE/TDSCDMA/WCDMA"</string>
+ <string name="preferred_network_mode_nr_lte_tdscdma_gsm_wcdma_summary" msgid="6769797110309412576">"حالت شبکه برگزیده: NR/LTE/TDSCDMA/GSM/WCDMA"</string>
+ <string name="preferred_network_mode_nr_lte_tdscdma_cdma_evdo_gsm_wcdma_summary" msgid="4260661428277578573">"حالت شبکه برگزیده: NR/LTE/TDSCDMA/CDMA/EvDo/GSM/WCDMA"</string>
<string name="call_category" msgid="4394703838833058138">"درحال تماس"</string>
<string name="network_operator_category" msgid="4992217193732304680">"شبکه"</string>
<string name="enhanced_4g_lte_mode_title" msgid="4213420368777080540">"حالت پیشرفته 4G LTE"</string>
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"گذرواژه نادرست است. اکنون سیمکارت قفل شده است. PUK2 را وارد کنید."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK2 به صورت دائمی مسدود شده است."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"<xliff:g id="NUMBER">%d</xliff:g> تلاش باقیمانده دارید."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"PUK2 قفل است. برای باز کردن قفل، با ارائه دهنده خدمات تماس بگیرید."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"پین۲ دیگر مسدود نیست"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"خطای شبکه یا سیمکارت"</string>
<string name="doneButton" msgid="7371209609238460207">"تمام"</string>
@@ -899,7 +898,7 @@
<string name="radio_info_voice_network_type_label" msgid="2395347336419593265">"نوع شبکه صوتی:"</string>
<string name="radio_info_data_network_type_label" msgid="8886597029237501929">"نوع شبکه داده:"</string>
<string name="phone_index_label" msgid="6222406512768964268">"انتخاب نمایه تلفن"</string>
- <string name="radio_info_set_perferred_label" msgid="7408131389363136210">"تنظیم نوع شبکه ترجیحی:"</string>
+ <string name="radio_info_set_perferred_label" msgid="7408131389363136210">"تنظیم نوع شبکه برگزیده:"</string>
<string name="radio_info_ping_hostname_v4" msgid="6951237885381284790">"پینگ کردن نام میزبان (www.google.com) IPv4:"</string>
<string name="radio_info_ping_hostname_v6" msgid="2748637889486554603">"پینگ کردن نام میزبان (www.google.com) IPv6:"</string>
<string name="radio_info_http_client_test" msgid="1329583721088428238">"آزمایش کارخواه HTTP:"</string>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index 819186e..a0a6b2c 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"Virheellinen salasana. SIM-kortti on lukittu. Anna PUK2-koodi."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK2-koodi on pysyvästi estetty."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"<xliff:g id="NUMBER">%d</xliff:g> yritystä jäljellä."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"PUK2 lukittu. Ota yhteyttä palveluntarjoajaan lukituksen avaamiseksi."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"PIN2-koodi ei ole enää estetty"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"Verkko- tai SIM-korttivirhe"</string>
<string name="doneButton" msgid="7371209609238460207">"Valmis"</string>
@@ -772,8 +771,8 @@
<string name="clh_callFailed_protocol_Error_unspecified_txt" msgid="9203320572562697755">"Soittaminen epäonnistui. Virhekoodi 111."</string>
<string name="clh_callFailed_interworking_unspecified_txt" msgid="7969686413930847182">"Soittaminen epäonnistui. Virhekoodi 127."</string>
<string name="labelCallBarring" msgid="4180377113052853173">"Puhelujen esto"</string>
- <string name="sum_call_barring_enabled" msgid="5184331188926370824">"Päällä"</string>
- <string name="sum_call_barring_disabled" msgid="5699448000600153096">"Pois päältä"</string>
+ <string name="sum_call_barring_enabled" msgid="5184331188926370824">"Käytössä"</string>
+ <string name="sum_call_barring_disabled" msgid="5699448000600153096">"Pois käytöstä"</string>
<string name="call_barring_baoc" msgid="7400892586336429326">"Kaikki lähtevät"</string>
<string name="call_barring_baoc_enabled" msgid="3131509193386668182">"Poistetaanko kaikkien lähtevien puheluiden esto käytöstä?"</string>
<string name="call_barring_baoc_disabled" msgid="8534224684091141509">"Estetäänkö kaikki lähtevät puhelut?"</string>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index a35f8dd..2b2cc38 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"Le mot de passe est erroné. La carte SIM a été verrouillée. Entrez le code PUK2."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"Le code PUK2 est bloqué définitivement."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"Il vous reste <xliff:g id="NUMBER">%d</xliff:g> tentatives."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"Verrouillage PUK2. Communiquez avec le fournisseur de services pour procéder au déverrouillage."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"Le NIP2 n\'est plus bloqué."</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"Erreur de réseau ou de carte SIM"</string>
<string name="doneButton" msgid="7371209609238460207">"Terminé"</string>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index a056294..e13da5d 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"Le mot de passe est erroné. La carte SIM est désormais verrouillée. Veuillez saisir le code PUK2."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"La clé PUK2 est bloquée de manière définitive."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"Il vous reste <xliff:g id="NUMBER">%d</xliff:g> tentatives."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"Verrouillage par clé PUK2. Contactez votre fournisseur de services pour déverrouiller la carte SIM."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"Le code PIN2 n\'est plus bloqué."</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"Erreur de réseau ou de carte SIM."</string>
<string name="doneButton" msgid="7371209609238460207">"OK"</string>
diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml
index 2f6a0e3..57ac8de 100644
--- a/res/values-gl/strings.xml
+++ b/res/values-gl/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"Contrasinal incorrecto. A SIM está bloqueada agora. Introduce o PUK2."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"O PUK2 está permanentemente bloqueado."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"Quédanche <xliff:g id="NUMBER">%d</xliff:g> intentos."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"PUK2 bloqueado. Contacta co fornecedor de servizo para desbloquealo."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"O PIN2 xa non está bloqueado"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"Erro de rede ou de tarxeta SIM"</string>
<string name="doneButton" msgid="7371209609238460207">"Feito"</string>
diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml
index b91ced3..4b55ee6 100644
--- a/res/values-gu/strings.xml
+++ b/res/values-gu/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"પાસવર્ડ ખોટો છે, SIM હમણાં અવરોધિત છે. PUK2 દાખલ કરો."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK2 ને કાયમી રૂપે અવરોધિત કરેલ છે."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"તમારી પાસે <xliff:g id="NUMBER">%d</xliff:g> પ્રયાસ બાકી છે."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"PUK2 વડે લૉક થયું છે. અનલૉક કરવા માટે સેવા પ્રદાતાનો સંપર્ક કરો."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"PIN2 હવે અવરોધિત નથી"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"નેટવર્ક અથવા SIM કાર્ડ ભૂલ"</string>
<string name="doneButton" msgid="7371209609238460207">"થઈ ગયું"</string>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index 3544976..54afa62 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"पासवर्ड गलत है. सिम अब लॉक हो गई है. PUK2 डालें."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK2 स्थायी रूप से अवरोधित है."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"आपके पास <xliff:g id="NUMBER">%d</xliff:g> प्रयास शेष हैं."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"सिम कार्ड PUK2 से लॉक है. अनलॉक करने के लिए, सेवा देने वाली कंपनी से संपर्क करें."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"PIN2 अब अवरोधित नहीं है"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"नेटवर्क या SIM कार्ड गड़बड़ी"</string>
<string name="doneButton" msgid="7371209609238460207">"पूरा हो गया"</string>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index b15a054..3ba6fd5 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"Zaporka nije točna. SIM je sada zaključan. Unesite PUK2."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK2 je trajno blokiran."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"Imate još <xliff:g id="NUMBER">%d</xliff:g> pokušaja."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"PUK2 zaključan. Obratite se davatelju usluga za otključavanje."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"PIN2 više nije blokiran"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"Pogreška mreže ili SIM kartice"</string>
<string name="doneButton" msgid="7371209609238460207">"Gotovo"</string>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index d702818..ce42169 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"A jelszó helytelen. SIM kártya zárolva. Adja meg a PUK2 kódot."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"A PUK2 végleg letiltva."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"<xliff:g id="NUMBER">%d</xliff:g> próbálkozási lehetősége maradt."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"A PUK2 zárolva van. A feloldás ügyében forduljon a szolgáltatóhoz."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"PIN2 kód letiltása feloldva"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"Hálózattal vagy SIM kártyával kapcsolatos hiba"</string>
<string name="doneButton" msgid="7371209609238460207">"Kész"</string>
diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml
index f005098..2503234 100644
--- a/res/values-hy/strings.xml
+++ b/res/values-hy/strings.xml
@@ -284,7 +284,7 @@
<string name="roaming" msgid="1576180772877858949">"Ռոումինգ"</string>
<string name="roaming_enable" msgid="6853685214521494819">"Միանալ տվյալների փոխանցման ծառայություններին ռոումինգում"</string>
<string name="roaming_disable" msgid="8856224638624592681">"Միանալ տվյալների փոխանցման ծառայություններին ռոումինգում"</string>
- <string name="roaming_reenable_message" msgid="1951802463885727915">"Ռոումինգում բջջային ինտերնետն անջատված է: Հպեք՝ միացնելու համար:"</string>
+ <string name="roaming_reenable_message" msgid="1951802463885727915">"Ռոումինգում բջջային ինտերնետն անջատած է: Հպեք՝ միացնելու համար:"</string>
<string name="roaming_enabled_message" msgid="9022249120750897">"Ռոումինգի համար կարող է գումար գանձվել: Հպեք՝ փոփոխելու համար:"</string>
<string name="roaming_notification_title" msgid="3590348480688047320">"Բջջային ինտերնետը կորավ"</string>
<string name="roaming_on_notification_title" msgid="7451473196411559173">"Ինտերնետ ռոումինգը միացված է"</string>
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"Գաղտնաբառը սխալ է: SIM քարտն այժմ կողպված է: Մուտքագրեք PUK2 կոդը:"</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK2-ն ընդմիշտ արգելափակված է:"</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"Ձեզ մնացել է <xliff:g id="NUMBER">%d</xliff:g> փորձ:"</string>
- <string name="puk2_locked" msgid="6497760825455461057">"Կողպված է PUK2-ով։ Ապակողպելու համար կապվեք ձեր օպերատորի հետ։"</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"PIN2 կոդն այլևս արգելափակված չէ"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"Ցանցի կամ SIM քարտի սխալ"</string>
<string name="doneButton" msgid="7371209609238460207">"Պատրաստ է"</string>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index 47aa918..2c7d23f 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -282,8 +282,8 @@
<string name="data_enable_summary" msgid="696860063456536557">"Izinkan penggunaan data"</string>
<string name="dialog_alert_title" msgid="5260471806940268478">"Perhatian"</string>
<string name="roaming" msgid="1576180772877858949">"Roaming"</string>
- <string name="roaming_enable" msgid="6853685214521494819">"Hubungkan ke layanan data ketika roaming"</string>
- <string name="roaming_disable" msgid="8856224638624592681">"Hubungkan ke layanan data ketika roaming"</string>
+ <string name="roaming_enable" msgid="6853685214521494819">"Sambungkan ke layanan data ketika roaming"</string>
+ <string name="roaming_disable" msgid="8856224638624592681">"Sambungkan ke layanan data ketika roaming"</string>
<string name="roaming_reenable_message" msgid="1951802463885727915">"Roaming data dinonaktifkan. Ketuk untuk mengaktifkan."</string>
<string name="roaming_enabled_message" msgid="9022249120750897">"Biaya roaming dapat berlaku. Ketuk untuk mengubah."</string>
<string name="roaming_notification_title" msgid="3590348480688047320">"Koneksi data seluler terputus"</string>
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"Sandi salah. SIM kini dikunci. Masukkan PUK2."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK2 diblokir selamanya."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"Tersisa <xliff:g id="NUMBER">%d</xliff:g> upaya lagi."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"PUK2 terkunci. Hubungi penyedia layanan untuk membuka kunci."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"PIN2 tidak lagi diblokir"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"Kesalahan jaringan atau kartu SIM"</string>
<string name="doneButton" msgid="7371209609238460207">"Selesai"</string>
diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml
index cd40734..5278fd2 100644
--- a/res/values-is/strings.xml
+++ b/res/values-is/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"Rangt aðgangsorð. SIM-kortinu var læst. Sláðu inn PUK2-númerið."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK2 er læst fyrir fullt og allt."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"<xliff:g id="NUMBER">%d</xliff:g> tilraunir eru eftir."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"Læst með PUK2. Hafðu samband við þjónustuaðila til að taka úr lás."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"PIN2-númer ekki lengur læst"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"Villa í símkerfi eða á SIM-korti"</string>
<string name="doneButton" msgid="7371209609238460207">"Lokið"</string>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 78ea899..cdbf7ce 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"Password errata. SIM bloccata. Inserisci codice PUK2."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK2 bloccato definitivamente."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"Hai a disposizione ancora <xliff:g id="NUMBER">%d</xliff:g> tentativi."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"PUK2 bloccato. Per sbloccarlo, contatta il fornitore di servizi."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"PIN2 sbloccato"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"Errore di rete o della SIM"</string>
<string name="doneButton" msgid="7371209609238460207">"Fine"</string>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index b5e52ea..fc771cb 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"סיסמה שגויה. ה-SIM נעול כעת. הזן PUK2."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK2 נחסם לצמיתות."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"נותרו לך עוד <xliff:g id="NUMBER">%d</xliff:g> ניסיונות."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"נעילת PUK2. כדי לבטל את הנעילה, צריך לפנות לספק השירות."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"PIN2 אינו חסום עוד"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"שגיאת רשת או כרטיס SIM"</string>
<string name="doneButton" msgid="7371209609238460207">"סיום"</string>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 2a98036..ad85ba6 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"パスワードが正しくありません。SIMはロックされました。PUK2を入力してください。"</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK2は完全にブロックされています。"</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"入力できるのはあと<xliff:g id="NUMBER">%d</xliff:g>回です。"</string>
- <string name="puk2_locked" msgid="6497760825455461057">"PUK2 でロックされています。ロックを解除するには、サービス プロバイダにお問い合わせください。"</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"PIN2はブロックされなくなりました"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"ネットワークまたはSIMカードのエラー"</string>
<string name="doneButton" msgid="7371209609238460207">"完了"</string>
diff --git a/res/values-ka/strings.xml b/res/values-ka/strings.xml
index d37e85b..21a17ea 100644
--- a/res/values-ka/strings.xml
+++ b/res/values-ka/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"პაროლი არასწორია. SIM ახლა დაბლოკილია. შეიყვანეთ PUK2."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK2 სამუდამოდ დაიბლოკა."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n" თქვენ გაქვთ <xliff:g id="NUMBER">%d</xliff:g> დარჩენილი მცდელობა."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"PUK2 ჩაკეტილია. განსაბლოკად დაუკავშირდით სერვისის პროვაიდერს."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"PIN2 აღარ არის დაბლოკილი"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"ქსელის ან SIM ბარათის შეცდომა"</string>
<string name="doneButton" msgid="7371209609238460207">"დასრულდა"</string>
diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml
index 9122726..085952a 100644
--- a/res/values-kk/strings.xml
+++ b/res/values-kk/strings.xml
@@ -285,7 +285,7 @@
<string name="roaming_enable" msgid="6853685214521494819">"Роуминг кезінде дерек тасымалдау қызметтеріне қосылу"</string>
<string name="roaming_disable" msgid="8856224638624592681">"Роуминг кезінде дерек тасымалдау қызметтеріне қосылу"</string>
<string name="roaming_reenable_message" msgid="1951802463885727915">"Роуминг өшірулі. Қосу үшін түртіңіз."</string>
- <string name="roaming_enabled_message" msgid="9022249120750897">"Роуминг үшін ақы алынуы мүмкін. Өзгерту үшін түртіңіз."</string>
+ <string name="roaming_enabled_message" msgid="9022249120750897">"Роуминг ақылары алынуы мүмкін. Өзгерту үшін түртіңіз."</string>
<string name="roaming_notification_title" msgid="3590348480688047320">"Ұялы байланыс жоғалып кетті"</string>
<string name="roaming_on_notification_title" msgid="7451473196411559173">"Деректер роумингі қосулы"</string>
<string name="roaming_warning" msgid="7855681468067171971">"Қомақты ақы алынуы мүмкін."</string>
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"Құпия сөз дұрыс емес. SIM қазір бекітілген. PUK2 кодын енгізіңіз."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK2 уақытша бөгелген."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"<xliff:g id="NUMBER">%d</xliff:g> әрекет қалды."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"PUK2 құлыптаулы. Құлпын ашу үшін қызмет көрсетушіге хабарласыңыз."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"PIN2 енді бөгелмеген"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"Желі немесе SIM картасының қатесі"</string>
<string name="doneButton" msgid="7371209609238460207">"Дайын"</string>
diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml
index b0fad81..9386b65 100644
--- a/res/values-km/strings.xml
+++ b/res/values-km/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"ពាក្យសម្ងាត់មិនត្រឹមត្រូវ។ ឥឡូវនេះស៊ីមកាតត្រូវបានចាក់សោ។ បញ្ចូល PUK2។"</string>
<string name="puk2_blocked" msgid="3131139031779319911">"លេខកូដ PUK2 ត្រូវបានទប់ស្កាត់ជាអចិន្ត្រៃយ៍។"</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"អ្នកនៅសល់ការព្យាយាមបញ្ចូល <xliff:g id="NUMBER">%d</xliff:g> ដងទៀត។"</string>
- <string name="puk2_locked" msgid="6497760825455461057">"បានចាក់សោដោយប្រើ PUK2។ សូមទាក់ទងទៅក្រុមហ៊ុនផ្ដល់សេវា ដើម្បីដោះសោ។"</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"លេខសម្ងាត់ PIN2 មិនត្រូវបានរារាំងទៀតទេ"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"បញ្ហាស៊ីមកាត ឬបណ្ដាញ។"</string>
<string name="doneButton" msgid="7371209609238460207">"រួចរាល់"</string>
diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml
index a12b794..9492581 100644
--- a/res/values-kn/strings.xml
+++ b/res/values-kn/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"ಪಾಸ್ವರ್ಡ್ ತಪ್ಪಾಗಿದೆ. SIM ಅನ್ನು ಇದೀಗ ಲಾಕ್ ಮಾಡಲಾಗಿದೆ. PUK2 ನಮೂದಿಸಿ."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK2 ಅನ್ನು ಶಾಶ್ವತವಾಗಿ ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"ನೀವು <xliff:g id="NUMBER">%d</xliff:g> ಬಾಕಿ ಉಳಿದಿರುವ ಪ್ರಯತ್ನಗಳನ್ನು ಹೊಂದಿರುವಿರಿ."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"PUK2 ಲಾಕ್ ಆಗಿದೆ. ಅನ್ಲಾಕ್ ಮಾಡಲು ಸೇವೆ ಒದಗಿಸುವವರನ್ನು ಸಂಪರ್ಕಿಸಿ."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"PIN2 ಇನ್ನು ಮುಂದೆ ನಿರ್ಬಂಧಿತವಾಗಿರುವುದಿಲ್ಲ"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"ನೆಟ್ವರ್ಕ್ ಅಥವಾ ಸಿಮ್ ಕಾರ್ಡ್ ದೋಷ"</string>
<string name="doneButton" msgid="7371209609238460207">"ಮುಗಿದಿದೆ"</string>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 63bb926..588d187 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"비밀번호가 잘못되어 SIM이 잠겼습니다. PUK2를 입력하세요."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK2가 완전히 차단되었습니다."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"<xliff:g id="NUMBER">%d</xliff:g>번의 기회가 남았습니다."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"PUK2로 잠금 설정되었습니다. 모든 통신사에서 사용할 수 있도록 하려면 서비스 제공업체에 문의하세요."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"PIN2 차단이 해제되었습니다."</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"네트워크 또는 SIM 카드 오류"</string>
<string name="doneButton" msgid="7371209609238460207">"완료"</string>
diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml
index a6c691c..22020ea 100644
--- a/res/values-ky/strings.xml
+++ b/res/values-ky/strings.xml
@@ -282,8 +282,8 @@
<string name="data_enable_summary" msgid="696860063456536557">"Дайындарды пайдаланууга уруксат берүү"</string>
<string name="dialog_alert_title" msgid="5260471806940268478">"Көңүл буруңуз"</string>
<string name="roaming" msgid="1576180772877858949">"Роуминг"</string>
- <string name="roaming_enable" msgid="6853685214521494819">"Роуминг учурунда маалыматтарды өткөрүүчү кызматтарга туташасыз"</string>
- <string name="roaming_disable" msgid="8856224638624592681">"Роуминг учурунда маалыматтарды өткөрүүчү кызматтарга туташасыз"</string>
+ <string name="roaming_enable" msgid="6853685214521494819">"Роуминг учурунда маалыматтарды өткөрүүчү кызматтарга туташуу"</string>
+ <string name="roaming_disable" msgid="8856224638624592681">"Роуминг учурунда маалыматтарды өткөрүүчү кызматтарга туташуу"</string>
<string name="roaming_reenable_message" msgid="1951802463885727915">"Интернет-роуминг өчүрүлгөн. Күйгүзүү үчүн басыңыз."</string>
<string name="roaming_enabled_message" msgid="9022249120750897">"Роуминг акысын төлөп калышыңыз мүмкүн. Өзгөртүү үчүн таптап коюңуз."</string>
<string name="roaming_notification_title" msgid="3590348480688047320">"Мобилдик интернет туташуусу үзүлдү"</string>
@@ -411,7 +411,7 @@
<string name="enable_disable_multi_category" msgid="5958248155437940625">"Мульти-категория"</string>
<string name="multi_category_enable" msgid="4531915767817483960">"Мульти-категория иштетилген"</string>
<string name="multi_category_disable" msgid="6325934413701238104">"Мульти-категория өчүрүлгөн"</string>
- <string name="network_recommended" msgid="3444321100580250926">" (сунушталат)"</string>
+ <string name="network_recommended" msgid="3444321100580250926">" (сунушталган)"</string>
<string name="network_lte" msgid="7206879277095094280">"LTE (сунушталат)"</string>
<string name="network_4G" msgid="6800527815504223913">"4G (сунушталат)"</string>
<string name="network_global" msgid="3289646154407617631">"Дүйнө жүзү"</string>
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"Сырсөз туура эмес. SIM азыр кулпуланды. PUK2 киргизиңиз."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK2 биротоло бөгөттөлдү."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"Сизде <xliff:g id="NUMBER">%d</xliff:g> аракет калды."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"PUK2 кулпуланды. Кулпуну ачуу үчүн оператор менен байланышыңыз."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"Мындан ары PIN2 бөгөттөлбөйт"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"Тармак же SIM карта катасы"</string>
<string name="doneButton" msgid="7371209609238460207">"Даяр"</string>
@@ -673,7 +672,7 @@
<string name="preference_category_ringtone" msgid="8787281191375434976">"Рингтон жана Титирөө"</string>
<string name="pstn_connection_service_label" msgid="9200102709997537069">"Кыналган SIM карталар"</string>
<string name="enable_video_calling_title" msgid="7246600931634161830">"Видео чалууну күйгүзүү"</string>
- <string name="enable_video_calling_dialog_msg" msgid="7141478720386203540">"Видео чалууну күйгүзүү үчүн тармак жөндөөлөрүнөн Жакшыртылган 4G LTE режимин иштетишиңиз керек."</string>
+ <string name="enable_video_calling_dialog_msg" msgid="7141478720386203540">"Видео чалууну күйгүзүү үчүн, тармак жөндөөлөрүнөн Жакшыртылган 4G LTE режимин иштетишиңиз керек."</string>
<string name="enable_video_calling_dialog_settings" msgid="8697890611305307110">"Тармак жөндөөлөрү"</string>
<string name="enable_video_calling_dialog_close" msgid="4298929725917045270">"Жабуу"</string>
<string name="sim_label_emergency_calls" msgid="9078241989421522310">"Шашылыш чалуулар"</string>
diff --git a/res/values-lo/strings.xml b/res/values-lo/strings.xml
index 0fc3dfd..a9e56fa 100644
--- a/res/values-lo/strings.xml
+++ b/res/values-lo/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"ລະຫັດຜ່ານບໍ່ຖືກຕ້ອງ. SIM ຖືກລັອກແລ້ວດຽວນີ້. ປ້ອນ PUK2 ເຂົ້າໄປ."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK2 ຖືກບລັອກຢ່າງຖາວອນແລ້ວ."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"ທ່ານຍັງພະຍາຍາມໄດ້ອີກ <xliff:g id="NUMBER">%d</xliff:g> ຄັ້ງ."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"ລັອກ PUK2 ແລ້ວ. ຕິດຕໍ່ຜູ້ໃຫ້ບໍລິການເພື່ອປົດລັອກ."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"PIN2 ບໍ່ຖືກບລັອກອີກ"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"ເຄືອຂ່າຍ ຫຼື SIM card ຜິດພາດ"</string>
<string name="doneButton" msgid="7371209609238460207">"ແລ້ວໆ"</string>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index 07fbc2e..20f24eb 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"Netinkamas slaptažodis. SIM kortelė užrakinta. Įveskite PUK2 kodą."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK2 kodas visam laikui užblokuotas."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"Liko <xliff:g id="NUMBER">%d</xliff:g> bandym."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"PUK2 užrakintas. Kreipkitės į paslaugos teikėją, kad atrakintų."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"PIN2 kodas atblokuotas"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"Tinklo ar SIM kortelės klaida"</string>
<string name="doneButton" msgid="7371209609238460207">"Atlikta"</string>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index eca2653..8bf7174 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"Parole nav pareiza. SIM bloķēta. Ievadiet PUK2."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK2 kods ir neatgriezeniski bloķēts."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"Jums atlikuši <xliff:g id="NUMBER">%d</xliff:g> mēģinājumi."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"PUK2 ir bloķēts. Lai atbloķētu, sazinieties ar pakalpojuma sniedzēju."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"PIN2 vairs nav bloķēts"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"Tīkla vai SIM kartes kļūda"</string>
<string name="doneButton" msgid="7371209609238460207">"Gatavs"</string>
diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml
index fb5b630..9171361 100644
--- a/res/values-mk/strings.xml
+++ b/res/values-mk/strings.xml
@@ -297,7 +297,7 @@
<string name="sip_accounts_removed_notification_title" msgid="3528076957535736095">"Најдени и отстранети се неподдржани сметки на SIP"</string>
<string name="sip_accounts_removed_notification_message" msgid="1916856744869791592">"Платформата Android веќе не поддржува повикување преку SIP.\nВашите постојни сметки на SIP <xliff:g id="REMOVED_SIP_ACCOUNTS">%s</xliff:g> се отстранети.\nПотврдете ја вашата стандардна поставка за повикување."</string>
<string name="sip_accounts_removed_notification_action" msgid="3772778402370555562">"Одете во „Поставки“"</string>
- <string name="data_usage_title" msgid="8438592133893837464">"Потрошен интернет од апликации"</string>
+ <string name="data_usage_title" msgid="8438592133893837464">"Потрошен сообраќај на апликациите"</string>
<string name="data_usage_template" msgid="6287906680674061783">"<xliff:g id="ID_1">%1$s</xliff:g> потрошен мобилен интернет во периодот <xliff:g id="ID_2">%2$s</xliff:g>"</string>
<string name="advanced_options_title" msgid="9208195294513520934">"Напредни"</string>
<string name="carrier_settings_euicc" msgid="1190237227261337749">"Оператор"</string>
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"Лозинката е неточна. SIM-картичката е сега заклучена. Внесете го ПУК2-кодот."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"ПУК2 кодот е трајно блокиран."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"Имате уште <xliff:g id="NUMBER">%d</xliff:g> обиди."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"PUK2-кодот е заклучен. Контактирајте со операторот за отклучување."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"PIN2-кодот веќе не е блокиран"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"Грешка со мрежа или SIM картичка"</string>
<string name="doneButton" msgid="7371209609238460207">"Готово"</string>
diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml
index 4f9b5ee..0cbb2fc 100644
--- a/res/values-ml/strings.xml
+++ b/res/values-ml/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"പാസ്വേഡ് തെറ്റാണ്. SIM ഇപ്പോൾ ലോക്കുചെയ്തിരിക്കുന്നു. PUK2 നൽകുക."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK2 ശാശ്വതമായി തടഞ്ഞിരിക്കുന്നു."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"നിങ്ങൾക്ക് <xliff:g id="NUMBER">%d</xliff:g> ശ്രമങ്ങൾ ശേഷിക്കുന്നു."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"PUK2 ലോക്ക് ആണ്. അൺലോക്ക് ചെയ്യാൻ സേവന ദാതാവിനെ ബന്ധപ്പെടുക."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"PIN2 ഇനി തടയില്ല"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"നെറ്റ്വർക്ക് അല്ലെങ്കിൽ സിം കാർഡ് പിശക്"</string>
<string name="doneButton" msgid="7371209609238460207">"പൂർത്തിയായി"</string>
diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml
index d22c903..fe57247 100644
--- a/res/values-mn/strings.xml
+++ b/res/values-mn/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"Нууц үг буруу байна. SIM карт одоо түгжигдсэн. PUK2 кодыг оруулна уу."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"ПҮК2 бүрмөсөн түгжигдсэн."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"Танд <xliff:g id="NUMBER">%d</xliff:g> оролдлого үлдлээ."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"PUK2-г түгжсэн. Түгжээг тайлахын тулд үйлчилгээ үзүүлэгчтэй холбогдоно уу."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"PIN2 түгжээгүй болсон"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"Сүлжээ болон SIM картын алдаа"</string>
<string name="doneButton" msgid="7371209609238460207">"Дууссан"</string>
diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml
index eeab774..f3b7479 100644
--- a/res/values-mr/strings.xml
+++ b/res/values-mr/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"पासवर्ड चुकीचा आहे. सिम आता लॉक केले आहे. PUK2 प्रविष्ट करा."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK2 कायमचे अवरोधित केले आहे."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"आपल्याकडे <xliff:g id="NUMBER">%d</xliff:g> शिल्लक प्रयत्न आहेत."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"PUK2 द्वारे लॉक केले आहे. ते अनलॉक करण्यासाठी सेवा पुरवठादाराशी संपर्क साधा."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"पिन2 अवरोधित केला नाही"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"नेटवर्क किंवा सिम कार्ड एरर"</string>
<string name="doneButton" msgid="7371209609238460207">"पूर्ण झाले"</string>
diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml
index 9236de2..3c15edc 100644
--- a/res/values-ms/strings.xml
+++ b/res/values-ms/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"Kata laluan tidak betul. SIM kini dikunci. Masukkan PUK2."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK2 disekat secara kekal."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"Anda mempunyai <xliff:g id="NUMBER">%d</xliff:g> percubaan lagi."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"PUK2 dikunci. Hubungi penyedia perkhidmatan untuk membuka kunci."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"PIN2 tidak disekat lagi"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"Ralat rangkaian atau kad SIM"</string>
<string name="doneButton" msgid="7371209609238460207">"Selesai"</string>
diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml
index 4cf2c76..1ce4ba2 100644
--- a/res/values-my/strings.xml
+++ b/res/values-my/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"လျှို့ဝှက်စကားလုံး မမှန်ကန်ပါ။ SIM ယခုသော့ခတ်လိုက်ပါပြီ။ PUK2 ရိုက်ထည့်ပါ။"</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK2 ကို ထာ၀ရ ပိတ်ထားပါသည်"</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"သင့်တွင် လက်ကျန် ကြိုးစားခွင့် <xliff:g id="NUMBER">%d</xliff:g> ရှိသည်။"</string>
- <string name="puk2_locked" msgid="6497760825455461057">"PUK2 လော့ခ်ချထားသည်။ ဖွင့်ရန် ဝန်ဆောင်မှုပေးသူကို ဆက်သွယ်ပါ။"</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"ပင်နံပါတ်2 အား အဆက်မဖြတ်တော့ပါ။"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"ကွန်ရက် သို့မဟုတ် ဆင်းမ်ကဒ်မှားယွင်းမှု"</string>
<string name="doneButton" msgid="7371209609238460207">"ပြီးပါပြီ"</string>
@@ -772,7 +771,7 @@
<string name="clh_callFailed_protocol_Error_unspecified_txt" msgid="9203320572562697755">"ခေါ်ဆိုမှုကို မပြုလုပ်နိုင်ပါ။ အမှားကုဒ် ၁၁၁။"</string>
<string name="clh_callFailed_interworking_unspecified_txt" msgid="7969686413930847182">"ခေါ်ဆိုမှုကို မပြုလုပ်နိုင်ပါ။ အမှားကုဒ် ၁၂၇။"</string>
<string name="labelCallBarring" msgid="4180377113052853173">"ခေါ်ဆိုမှုကို ပိတ်ပင်ရန်"</string>
- <string name="sum_call_barring_enabled" msgid="5184331188926370824">"ဖွင့်"</string>
+ <string name="sum_call_barring_enabled" msgid="5184331188926370824">"ဖွင့်ထားသည်"</string>
<string name="sum_call_barring_disabled" msgid="5699448000600153096">"ပိတ်ထားသည်"</string>
<string name="call_barring_baoc" msgid="7400892586336429326">"အထွက်ခေါ်ဆိုမှုအားလုံး"</string>
<string name="call_barring_baoc_enabled" msgid="3131509193386668182">"အထွက်ခေါ်ဆိုမှုအားလုံး ပိတ်ထားခြင်းကို ပယ်ဖျက်မလား။"</string>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 0db6b75..ed2959c 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"Passordet er feil. PIN-koden er nå blokkert. Skriv inn en PUK2-kode."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK2 er permanent sperret."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"Du har <xliff:g id="NUMBER">%d</xliff:g> forsøk igjen."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"PUK2-låst. Kontakt tjenesteleverandøren for å låse opp."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"PIN2-koden er ikke lenger blokkert"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"Feil på nettverket eller SIM-kortet"</string>
<string name="doneButton" msgid="7371209609238460207">"Ferdig"</string>
diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml
index bbc33e8..72c3daf 100644
--- a/res/values-ne/strings.xml
+++ b/res/values-ne/strings.xml
@@ -96,7 +96,7 @@
<string name="sum_loading_settings" msgid="434063780286688775">"सेटिङहरू लोड हुँदै..."</string>
<string name="sum_hide_caller_id" msgid="131100328602371933">"बहिर्गमन कलहरूमा नम्बर लुकाइएको"</string>
<string name="sum_show_caller_id" msgid="3571854755324664591">"बहिर्गमन कलहरूमा प्रदर्शित नम्बर"</string>
- <string name="sum_default_caller_id" msgid="1767070797135682959">"बहिर्गमन कलमा मेरो नम्बर देखाउन डिफल्ट अपरेटर सेटिङहरू प्रयोग गर्नुहोस्"</string>
+ <string name="sum_default_caller_id" msgid="1767070797135682959">"बहिर्गमन कलमा मेरो नम्बर देखाउन पूर्वनिर्धारित अपरेटर सेटिङहरू प्रयोग गर्नुहोस्"</string>
<string name="labelCW" msgid="8449327023861428622">"कल प्रतीक्षा गर्दै"</string>
<string name="sum_cw_enabled" msgid="3977308526187139996">"कल गरेको बखत मलाई आगमन कलको जानकारी गराउनुहोस्"</string>
<string name="sum_cw_disabled" msgid="3658094589461768637">"कल गरेको बेलामा आगमन कलहरूको बारेमा मलाई जानकारी गराउनुहोस्"</string>
@@ -151,7 +151,7 @@
<string name="disable" msgid="1122698860799462116">"निस्कृय पार्नुहोस्"</string>
<string name="change_num" msgid="6982164494063109334">"अपडेट गर्नुहोस्"</string>
<string-array name="clir_display_values">
- <item msgid="8477364191403806960">"नेटवर्क डिफल्ट"</item>
+ <item msgid="8477364191403806960">"नेटवर्क पूर्वनिर्धारित"</item>
<item msgid="6813323051965618926">"सङ्ख्या लुकाउनुहोस्"</item>
<item msgid="9150034130629852635">"सङ्ख्या देखाउनुहोस्"</item>
</string-array>
@@ -295,7 +295,7 @@
<string name="limited_sim_function_with_phone_num_notification_message" msgid="5928988883403677610">"<xliff:g id="PHONE_NUMBER">%2$s</xliff:g>.प्रयोग गर्दा <xliff:g id="CARRIER_NAME">%1$s</xliff:g> का कल तथा डेटा सेवाहरूलाई रोक लगाइन सक्छ"</string>
<string name="limited_sim_function_notification_message" msgid="5338638075496721160">"अर्को SIM प्रयोग गर्दा <xliff:g id="CARRIER_NAME">%1$s</xliff:g> कल तथा डेटा सेवहरूलाई रोक लगाइन सक्छ।"</string>
<string name="sip_accounts_removed_notification_title" msgid="3528076957535736095">"चल्तीबाट हटाइएका SIP खाताहरू भेट्टाइयो र हटाइयो"</string>
- <string name="sip_accounts_removed_notification_message" msgid="1916856744869791592">"अबदेखि Android प्लेटफर्ममा SIP कल गर्न मिल्दैन।\nतपाईंका हालका SIP खाताहरू <xliff:g id="REMOVED_SIP_ACCOUNTS">%s</xliff:g> हटाइएका छन्।\nकृपया आफ्नो डिफल्ट कल गर्ने खाताको सेटिङ पुष्टि गर्नुहोस्।"</string>
+ <string name="sip_accounts_removed_notification_message" msgid="1916856744869791592">"अबदेखि Android प्लेटफर्ममा SIP कल गर्न मिल्दैन।\nतपाईंका हालका SIP खाताहरू <xliff:g id="REMOVED_SIP_ACCOUNTS">%s</xliff:g> हटाइएका छन्।\nकृपया आफ्नो पूर्वनिर्धारित कल गर्ने खाताको सेटिङ पुष्टि गर्नुहोस्।"</string>
<string name="sip_accounts_removed_notification_action" msgid="3772778402370555562">"सेटिङमा जानुहोस्"</string>
<string name="data_usage_title" msgid="8438592133893837464">"अनुप्रयोगले गरेको डेटाको प्रयोग"</string>
<string name="data_usage_template" msgid="6287906680674061783">"<xliff:g id="ID_2">%2$s</xliff:g> सम्म <xliff:g id="ID_1">%1$s</xliff:g> मोबाइल डेटा प्रयोग भयो"</string>
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"पासवर्ड गलत छ। सिम अब ब्लक गरिएको छ। PUK2 प्रविष्टि गर्नुहोस्।"</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK2 स्थायी रूपमा रोक्का गरियो।"</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n" तपाईंसँग <xliff:g id="NUMBER">%d</xliff:g> प्रयास बाँकी छन्।"</string>
- <string name="puk2_locked" msgid="6497760825455461057">"SIM कार्ड PUK2 बाट लक गरिएको छ। अनलक गर्न सेवा प्रदायकलाई सम्पर्क गर्नुहोस्।"</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"PIN2 अब ब्लक गरिएको छैन"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"नेटवर्क वा SIM कार्ड त्रुटि।"</string>
<string name="doneButton" msgid="7371209609238460207">"सम्पन्न भयो"</string>
@@ -876,7 +875,7 @@
<string name="radioInfo_lac" msgid="3892986460272607013">"LAC"</string>
<string name="radioInfo_cid" msgid="1423185536264406705">"CID"</string>
<string name="radio_info_subid" msgid="6839966868621703203">"हालको subId:"</string>
- <string name="radio_info_dds" msgid="1122593144425697126">"डिफल्ट डेटा SIM को SubId:"</string>
+ <string name="radio_info_dds" msgid="1122593144425697126">"पूर्वनिर्धारित डेटा SIM को SubId:"</string>
<string name="radio_info_dl_kbps" msgid="2382922659525318726">"DL ब्यान्डविथ (kbps):"</string>
<string name="radio_info_ul_kbps" msgid="2102225400904799036">"UL व्यान्डविथ (kbps):"</string>
<string name="radio_info_phy_chan_config" msgid="1277949603275436081">"LTE को भौतिक च्यानलको कन्फिगरेसन:"</string>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 7fa1a7b..44299a9 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"Wachtwoord onjuist. Simkaart nu vergrendeld. Geef PUK2 op."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK2-code is definitief geblokkeerd."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"Je hebt nog <xliff:g id="NUMBER">%d</xliff:g> pogingen."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"PUK2 vergrendeld. Neem contact op met je serviceprovider om te ontgrendelen."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"PIN2 niet langer geblokkeerd"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"Netwerk- of simkaartfout"</string>
<string name="doneButton" msgid="7371209609238460207">"Klaar"</string>
diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml
index 309f20f..5d62d32 100644
--- a/res/values-or/strings.xml
+++ b/res/values-or/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"ଭୁଲ୍ ପାସ୍ୱର୍ଡ। ବର୍ତ୍ତମାନ SIM ଲକ୍ ହୋଇଗଲା। PUK2କୁ ପ୍ରବେଶ କରନ୍ତୁ।"</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK2କୁ ସ୍ଥାୟୀରୂପେ ଅବରୋଧ କରାଯାଇଛି।"</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"ଆପଣଙ୍କର <xliff:g id="NUMBER">%d</xliff:g>ଟି ସୁଯୋଗ ବଳକା ଅଛି।"</string>
- <string name="puk2_locked" msgid="6497760825455461057">"PUK2 ଲକ୍ କରାଯାଇଛି। ଅନଲକ୍ କରିବାକୁ ସେବା ପ୍ରଦାନକାରୀ ସହ ଯୋଗାଯୋଗ କରନ୍ତୁ।"</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"PIN2କୁ ଆଉ ଅବରୋଧ କରାଯାଇନାହିଁ"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"ନେଟ୍ୱର୍କ କିମ୍ବା SIM କାର୍ଡ ତ୍ରୁଟି"</string>
<string name="doneButton" msgid="7371209609238460207">"ହୋଇଗଲା"</string>
diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml
index 2fc2689..ea38abd 100644
--- a/res/values-pa/strings.xml
+++ b/res/values-pa/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"ਪਾਸਵਰਡ ਗ਼ਲਤ। SIM ਹੁਣ ਲੌਕ ਹੈ। PUK2 ਦਰਜ ਕਰੋ।"</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK2 ਸਥਾਈ ਤੌਰ ਤੇ ਬਲੌਕ ਕੀਤਾ ਹੋਇਆ ਹੈ।"</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"ਤੁਹਾਡੇ ਕੋਲ <xliff:g id="NUMBER">%d</xliff:g> ਕੋਸ਼ਿਸ਼ਾਂ ਬਾਕੀ ਹਨ।"</string>
- <string name="puk2_locked" msgid="6497760825455461057">"PUK2 ਲਾਕ ਹੈ। ਅਣਲਾਕ ਕਰਨ ਲਈ ਸੇਵਾ ਪ੍ਰਦਾਨਕ ਨੂੰ ਸੰਪਰਕ ਕਰੋ।"</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"PIN2 ਹੁਣ ਬਲੌਕ ਨਹੀਂ ਹੈ"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"ਨੈਟਵਰਕ ਜਾਂ SIM ਕਾਰਡ ਤਰੁੱਟੀ"</string>
<string name="doneButton" msgid="7371209609238460207">"ਹੋ ਗਿਆ"</string>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index d803c14..29768ba 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"Nieprawidłowe hasło. Karta SIM została zablokowana. Wpisz PUK2."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK2 został trwale zablokowany."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"Masz jeszcze <xliff:g id="NUMBER">%d</xliff:g> prób(y)."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"Kod PUK2 zablokowany. Aby odblokować, skontaktuj się z dostawcą usług."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"PIN2 nie jest już zablokowany"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"Błąd sieci lub karty SIM"</string>
<string name="doneButton" msgid="7371209609238460207">"Gotowe"</string>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index ffce9e1..dbbdd85 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"Palavra-passe incorreta. SIM bloqueado. Introduza o PUK2."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK2 bloqueado permanentemente."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"Tem mais <xliff:g id="NUMBER">%d</xliff:g> tentativas."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"PUK2 bloqueado. Contacte o fornecedor de serviços para desbloquear."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"O PIN2 deixou de estar bloqueado"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"Erro do cartão SIM ou da rede"</string>
<string name="doneButton" msgid="7371209609238460207">"Concluído"</string>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 0e6a812..c49ecdc 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"Senha incorreta. Chip bloqueado. Insira o PUK2."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK2 permanentemente bloqueado."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"Você tem <xliff:g id="NUMBER">%d</xliff:g> tentativas restantes."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"PUK2 bloqueado. Entre em contato com o provedor de serviços para desbloqueá-lo."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"PIN2 não mais bloqueado"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"Erro de rede ou do chip"</string>
<string name="doneButton" msgid="7371209609238460207">"Concluído"</string>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index 654e70c..8b6d72e 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"Parola nu este corectă. Cardul SIM a fost blocat. Introduceți codul PUK2."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"Codul PUK2 este blocat definitiv."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"V-au rămas <xliff:g id="NUMBER">%d</xliff:g> (de) încercări."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"Blocat cu PUK2. Contactați furnizorul de servicii pentru a debloca."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"Codul PIN2 nu mai este blocat"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"Eroare de rețea sau de card SIM"</string>
<string name="doneButton" msgid="7371209609238460207">"Terminat"</string>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 581b81b..b7a44c7 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"Неверный пароль. SIM-карта заблокирована. Введите код PUK2."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"Код PUK2 заблокирован навсегда"</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"Осталось попыток: <xliff:g id="NUMBER">%d</xliff:g>."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"Код PUK2 заблокирован. Чтобы разблокировать его, обратитесь к оператору."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"Код PIN2 разблокирован."</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"Ошибка сети или SIM-карты"</string>
<string name="doneButton" msgid="7371209609238460207">"Готово"</string>
diff --git a/res/values-si/strings.xml b/res/values-si/strings.xml
index 26b8c22..91763ab 100644
--- a/res/values-si/strings.xml
+++ b/res/values-si/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"මුරපදය වැරදිය. SIM දැන් අගුළු දමා තිබේ. PUK2 ඇතුළු කරන්න."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK2 සදාකාලිකවම අවහිරයි."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"ඔබට නැවත උත්සාහ කිරීම් <xliff:g id="NUMBER">%d</xliff:g> ක් තිබේ."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"PUK2 අගුළු දැමිණි. අගුළු ඇරීමට සේවා සපයන්නා සම්බන්ධ කර ගන්න."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"තව දුරටත් PIN2 අවහිර කර නොතිබේ"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"ජාලයේ හෝ SIM කාඩ්පතෙහි දෝෂයක්"</string>
<string name="doneButton" msgid="7371209609238460207">"හරි"</string>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index 4a4173f..9bc4539 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"Heslo je nesprávne. SIM karta bola uzamknutá. Zadajte kód PUK2."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"Kód PUK2 je natrvalo blokovaný."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"Zostávajú vám pokusy (počet: <xliff:g id="NUMBER">%d</xliff:g>)"</string>
- <string name="puk2_locked" msgid="6497760825455461057">"SIM karta je blokovaná kódom PUK2. Ak ju chcete odblokovať, kontaktujte poskytovateľa služieb."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"Kód PIN2 už nie je blokovaný"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"Došlo k chybe siete alebo SIM karty"</string>
<string name="doneButton" msgid="7371209609238460207">"Hotovo"</string>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index fba55c1..0a0755e 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"Geslo je napačno. Kartica SIM je zaklenjena. Vnesite kodo PUK 2."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"Koda PUK2 je trajno blokirana."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"Imate še toliko poskusov: <xliff:g id="NUMBER">%d</xliff:g>."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"Zaklenjeno s kodo PUK2. Za odklepanje se obrnite na ponudnika storitev."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"Koda PIN 2 ni več blokirana"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"Napaka omrežja ali kartice SIM"</string>
<string name="doneButton" msgid="7371209609238460207">"Dokončano"</string>
diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml
index acefc2c..647d75a 100644
--- a/res/values-sq/strings.xml
+++ b/res/values-sq/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"Fjalëkalimi është i pasaktë. Karta SIM tani është e kyçur. Fut PUK2-shin."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK2-shi është i bllokuar përgjithmonë."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"Të kanë mbetur edhe <xliff:g id="NUMBER">%d</xliff:g> përpjekje."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"Kodi PUK2 i kyçur. Kontakto me ofruesin e shërbimit për ta shkyçur."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"PIN2-shi nuk është më i bllokuar"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"Gabim në rrjet ose në kartën SIM"</string>
<string name="doneButton" msgid="7371209609238460207">"U krye"</string>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index 434e355..d26cc50 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"Лозинка није тачна. SIM је сада блокиран. Унесите PUK2."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK2 је трајно блокиран."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"Имате још <xliff:g id="NUMBER">%d</xliff:g> покушаја."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"PUK2 је закључан. За откључавање се обратите добављачу услуге."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"PIN2 више није блокиран"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"Грешка на мрежи или SIM картици"</string>
<string name="doneButton" msgid="7371209609238460207">"Готово"</string>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index aa598ce..66304a2 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"Felaktigt lösenord. SIM-kortet är nu låst. Ange PUK2."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK-kod 2 har blockerats permanent."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"Du har <xliff:g id="NUMBER">%d</xliff:g> försök kvar."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"PUK2 låst. Kontakta tjänsteleverantören för att låsa upp."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"PIN2 är inte längre blockerad"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"Nätverks- eller SIM-kortsfel"</string>
<string name="doneButton" msgid="7371209609238460207">"Färdig"</string>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index c292108..246e47f 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"Nenosiri si sahihi. SIM sasa imefungwa. Weka PUK2."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK2 Imezuiwa kabisa."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"Una majaribio <xliff:g id="NUMBER">%d</xliff:g> yaliyobaki."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"Imefungwa kwa sababu PUK2 si sahihi. Wasiliana na mtoa huduma ili aifungue."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"PIN2 sasa haijazuiwa"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"Hitilafu ya mtandao au SIM kadi"</string>
<string name="doneButton" msgid="7371209609238460207">"Kwisha"</string>
diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml
index 9ed730c..53feaf6 100644
--- a/res/values-ta/strings.xml
+++ b/res/values-ta/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"கடவுச்சொல் தவறானது. சிம் இப்போது பூட்டப்பட்டது. PUK2ஐ உள்ளிடவும்."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK2 தற்காலிகமாகத் தடுக்கப்பட்டது."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"நீங்கள் <xliff:g id="NUMBER">%d</xliff:g> முறை முயற்சிக்கலாம்."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"PUK2 லாக் செய்யப்பட்டுள்ளது. அன்லாக் செய்ய சேவை வழங்குநரைத் தொடர்புகொள்ளவும்."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"PIN2 இனி தடுக்கப்படாது"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"நெட்வொர்க் அல்லது சிம் கார்டு பிழை"</string>
<string name="doneButton" msgid="7371209609238460207">"முடிந்தது"</string>
diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml
index 003a759..1addd62 100644
--- a/res/values-te/strings.xml
+++ b/res/values-te/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"పాస్వర్డ్ చెల్లదు. SIM ఇప్పుడు లాక్ చేయబడింది. PUK2ని నమోదు చేయండి."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK2 శాశ్వతంగా బ్లాక్ చేయబడింది."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"మీకు <xliff:g id="NUMBER">%d</xliff:g> ప్రయత్నాలు మిగిలి ఉన్నాయి."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"PUK2 లాక్ చేయబడింది. అన్లాక్ చేయడానికి సర్వీస్ ప్రొవైడర్ను కాంటాక్ట్ చేయండి."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"PIN2 ఇప్పుడు బ్లాక్ అయ్యి లేదు"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"నెట్వర్క్ లేదా SIM కార్డ్ లోపం"</string>
<string name="doneButton" msgid="7371209609238460207">"పూర్తయింది"</string>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index f709a7c..0c89178 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"รหัสผ่านไม่ถูกต้อง ระบบล็อกซิมแล้ว โปรดป้อน PUK2"</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK2 ถูกบล็อกอย่างถาวร"</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"คุณพยายามได้อีก <xliff:g id="NUMBER">%d</xliff:g> ครั้ง"</string>
- <string name="puk2_locked" msgid="6497760825455461057">"PUK2 ล็อกอยู่ ติดต่อผู้ให้บริการเพื่อปลดล็อก"</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"ไม่มีการบล็อก PIN2 อีกต่อไป"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"เครือข่ายหรือซิมการ์ดเกิดข้อผิดพลาด"</string>
<string name="doneButton" msgid="7371209609238460207">"เสร็จสิ้น"</string>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index 5d62d87..c781d71 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"Mali ang password. Naka-lock na ngayon ang SIM. Ilagay ang PUK2."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"Permanenteng na-block ang PUK2."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"Mayroon ka na lang <xliff:g id="NUMBER">%d</xliff:g> (na) natitirang pagsubok."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"Na-lock ang PUK2. Makipag-ugnayan sa service provider para i-unlock."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"Hindi na naka-block ang PIN2"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"Error sa network o SIM card"</string>
<string name="doneButton" msgid="7371209609238460207">"Tapos na"</string>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index c5a1060..7c9a00d 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"Şifre hatalı. SIM kilitlendi. PUK2\'yi girin."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK2 kalıcı olarak engellendi."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"<xliff:g id="NUMBER">%d</xliff:g> deneme hakkınız kaldı."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"PUK2 kilitlendi. Kilidi açmak için servis sağlayıcıyla iletişime geçin."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"PIN2 artık engellenmiş durumda değil"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"Ağ veya SIM kart hatası"</string>
<string name="doneButton" msgid="7371209609238460207">"Bitti"</string>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index 61c1c68..9ef5fed 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"Неправильний пароль. SIM-карту заблоковано. Введіть PUK2-код."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK2-код назавжди заблоковано."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"У вас залишилося стільки спроб: <xliff:g id="NUMBER">%d</xliff:g>."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"Заблоковано кодом PUK2. Щоб розблокувати, зв’яжіться з оператором."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"PIN2-код більше не заблоковано"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"Помилка мережі або SIM-карти"</string>
<string name="doneButton" msgid="7371209609238460207">"Готово"</string>
diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml
index cfc2df8..ec3b772 100644
--- a/res/values-ur/strings.xml
+++ b/res/values-ur/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"پاس ورڈ غلط ہے۔ SIM اب مقفل ہے۔ PUK2 درج کریں۔"</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK2 مستقل طور پر مسدود ہے۔"</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"آپ کے پاس <xliff:g id="NUMBER">%d</xliff:g> کوششیں بچی ہیں۔"</string>
- <string name="puk2_locked" msgid="6497760825455461057">"PUK2 مقفل ہے۔ غیر مقفل کرنے کے ليے سروس فراہم کنندہ سے رابطہ کریں۔"</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"PIN2 اب مسدود نہیں ہے"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"نیٹ ورک یا SIM کارڈ کی خرابی"</string>
<string name="doneButton" msgid="7371209609238460207">"ہوگیا"</string>
diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml
index 9ebb2ac..3bd6991 100644
--- a/res/values-uz/strings.xml
+++ b/res/values-uz/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"Parol noto‘g‘ri. SIM karta qulflandi. PUK2 kodini kiriting."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK2 kod butunlay to‘sib qo‘yildi."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"Sizda <xliff:g id="NUMBER">%d</xliff:g> ta urinish qoldi."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"PUK2 bloklangan. Uni blokdan chiqarish uchun xizmat ta’minotchisiga murojaat qiling."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"PIN2 kodi blokdan chiqarildi"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"Tarmoq yoki SIM kartada xato"</string>
<string name="doneButton" msgid="7371209609238460207">"Tayyor"</string>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index a0fb9a0..191e2e7 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"Mật khẩu không đúng. SIM hiện đã bị chặn. Hãy nhập PUK2."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK2 bị chặn vĩnh viễn."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"Bạn còn <xliff:g id="NUMBER">%d</xliff:g> lần thử."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"PUK2 đang bị khóa. Hãy liên hệ với nhà cung cấp dịch vụ để mở khóa."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"PIN2 không còn bị chặn"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"Lỗi mạng hoặc thẻ SIM"</string>
<string name="doneButton" msgid="7371209609238460207">"Xong"</string>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 50b4b27..08bb0fe 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"密码不正确。SIM 卡已锁定。请输入 PUK2 码。"</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK2码已被永远锁定。"</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"您还可以尝试输入 <xliff:g id="NUMBER">%d</xliff:g> 次。"</string>
- <string name="puk2_locked" msgid="6497760825455461057">"SIM 卡已通过 PUK2 进行锁定。请联系服务提供商来解锁。"</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"PIN2 码已解除锁定"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"网络或 SIM 卡错误"</string>
<string name="doneButton" msgid="7371209609238460207">"完成"</string>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index 4da008f..7b5391b 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"密碼不正確。SIM 現在已被封鎖,請輸入 PUK2。"</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK2 碼已被永久封鎖。"</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"您還有 <xliff:g id="NUMBER">%d</xliff:g> 次嘗試機會。"</string>
- <string name="puk2_locked" msgid="6497760825455461057">"PUK2 已鎖定。請通知服務供應商解鎖。"</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"PIN2 目前沒有封鎖"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"網絡或 SIM 卡錯誤。"</string>
<string name="doneButton" msgid="7371209609238460207">"完成"</string>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 440bb1d..f998c5e 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"密碼不正確,SIM 卡現已遭到封鎖。請輸入 PUK2。"</string>
<string name="puk2_blocked" msgid="3131139031779319911">"PUK2 遭到永久封鎖。"</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"您還可以嘗試 <xliff:g id="NUMBER">%d</xliff:g> 次。"</string>
- <string name="puk2_locked" msgid="6497760825455461057">"SIM 卡已遭 PUK2 碼鎖定,請要求服務供應商協助解鎖。"</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"PIN2 已解除封鎖"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"網路或 SIM 卡錯誤"</string>
<string name="doneButton" msgid="7371209609238460207">"完成"</string>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index 3456b3a..e84395b 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -515,7 +515,6 @@
<string name="puk2_requested" msgid="6992374450720307514">"Iphasiwedi ayilungile. I-SIM manje ikhiyiwe. Faka i-PUK2."</string>
<string name="puk2_blocked" msgid="3131139031779319911">"I-PUK2 ivinjiwe unaphakade."</string>
<string name="pin2_attempts" msgid="5625178102026453023">\n"Unemizamo engu-<xliff:g id="NUMBER">%d</xliff:g> esele."</string>
- <string name="puk2_locked" msgid="6497760825455461057">"I-PUK2 ikhiyiwe. Xhumana nomhlinzeki wesevisi ukuze uvule."</string>
<string name="pin2_unblocked" msgid="4481107908727789303">"I-PIN2 ayisavinjiwe"</string>
<string name="pin2_error_exception" msgid="8116103864600823641">"Iphutha lenethiwekhi noma lekhadi le-SIM"</string>
<string name="doneButton" msgid="7371209609238460207">"Kwenziwe"</string>
diff --git a/res/values/config.xml b/res/values/config.xml
index a296254..9f8cc81 100644
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -317,8 +317,4 @@
<!-- The package names which can request thermal mitigation. -->
<string-array name="thermal_mitigation_allowlisted_packages" translatable="false">
</string-array>
-
- <!-- The package name of the app which hosts the
- {@link TelecomManager#ACTION_SHOW_CALL_SETTINGS} settings screen. -->
- <string name="call_settings_package_name">com.android.phone</string>
</resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 88d2f1a..4e69d99 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1195,6 +1195,8 @@
<string name="incall_error_power_off" product="default">Turn off airplane mode to make a call.</string>
<!-- In-call screen: call failure message displayed in an error dialog when in airplane mode, WFC is enabled, not wifi-only, and not connected to wireless networks. [CHAR_LIMIT=NONE] -->
<string name="incall_error_power_off_wfc">Turn off airplane mode or connect to a wireless network to make a call.</string>
+ <!-- In-call screen: call failure message displayed in an error dialog when radio off due to thermal mitigation. [CHAR_LIMIT=NONE] -->
+ <string name="incall_error_power_off_thermal" product="default"><b>Phone too hot</b>\n\nCan\'t complete this call. Try again when your phone cools down.\n\nYou can still make emergency calls.</string>
<!-- In-call screen: call failure message displayed when the user attempts to make a non-emergency call while the phone is in emergency callback mode. -->
<string name="incall_error_ecm_emergency_only">Exit emergency callback mode to make a non-emergency call.</string>
<!-- In-call screen: call failure message displayed in an error dialog.
diff --git a/src/com/android/phone/CallerInfoCache.java b/src/com/android/phone/CallerInfoCache.java
deleted file mode 100644
index 2707c7c..0000000
--- a/src/com/android/phone/CallerInfoCache.java
+++ /dev/null
@@ -1,309 +0,0 @@
-/*
- * Copyright (C) 2012 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.phone;
-
-import android.content.Context;
-import android.database.Cursor;
-import android.os.AsyncTask;
-import android.os.PowerManager;
-import android.os.SystemProperties;
-import android.provider.ContactsContract.CommonDataKinds.Callable;
-import android.provider.ContactsContract.CommonDataKinds.Phone;
-import android.provider.ContactsContract.Data;
-import android.telephony.PhoneNumberUtils;
-import android.util.Log;
-
-import java.util.HashMap;
-import java.util.Map.Entry;
-
-/**
- * Holds "custom ringtone" and "send to voicemail" information for each contact as a fallback of
- * contacts database. The cached information is refreshed periodically and used when database
- * lookup (via ContentResolver) takes longer time than expected.
- *
- * The data inside this class shouldn't be treated as "primary"; they may not reflect the
- * latest information stored in the original database.
- */
-public class CallerInfoCache {
- private static final String LOG_TAG = CallerInfoCache.class.getSimpleName();
- private static final boolean DBG =
- (PhoneGlobals.DBG_LEVEL >= 1) && (SystemProperties.getInt("ro.debuggable", 0) == 1);
-
- /** This must not be set to true when submitting changes. */
- private static final boolean VDBG = false;
-
- public static final int MESSAGE_UPDATE_CACHE = 0;
-
- // Assuming DATA.DATA1 corresponds to Phone.NUMBER and SipAddress.ADDRESS, we just use
- // Data columns as much as we can. One exception: because normalized numbers won't be used in
- // SIP cases, Phone.NORMALIZED_NUMBER is used as is instead of using Data.
- private static final String[] PROJECTION = new String[] {
- Data.DATA1, // 0
- Phone.NORMALIZED_NUMBER, // 1
- Data.CUSTOM_RINGTONE, // 2
- Data.SEND_TO_VOICEMAIL // 3
- };
-
- private static final int INDEX_NUMBER = 0;
- private static final int INDEX_NORMALIZED_NUMBER = 1;
- private static final int INDEX_CUSTOM_RINGTONE = 2;
- private static final int INDEX_SEND_TO_VOICEMAIL = 3;
-
- private static final String SELECTION = "("
- + "(" + Data.CUSTOM_RINGTONE + " IS NOT NULL OR " + Data.SEND_TO_VOICEMAIL + "=1)"
- + " AND " + Data.DATA1 + " IS NOT NULL)";
-
- public static class CacheEntry {
- public final String customRingtone;
- public final boolean sendToVoicemail;
- public CacheEntry(String customRingtone, boolean shouldSendToVoicemail) {
- this.customRingtone = customRingtone;
- this.sendToVoicemail = shouldSendToVoicemail;
- }
-
- @Override
- public String toString() {
- return "ringtone: " + customRingtone + ", " + sendToVoicemail;
- }
- }
-
- private class CacheAsyncTask extends AsyncTask<Void, Void, Void> {
-
- private PowerManager.WakeLock mWakeLock;
-
- /**
- * Call {@link PowerManager.WakeLock#acquire} and call {@link AsyncTask#execute(Object...)},
- * guaranteeing the lock is held during the asynchronous task.
- */
- public void acquireWakeLockAndExecute() {
- // Prepare a separate partial WakeLock than what PhoneApp has so to avoid
- // unnecessary conflict.
- PowerManager pm = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
- mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, LOG_TAG);
- mWakeLock.acquire();
- execute();
- }
-
- @Override
- protected Void doInBackground(Void... params) {
- if (DBG) log("Start refreshing cache.");
- refreshCacheEntry();
- return null;
- }
-
- @Override
- protected void onPostExecute(Void result) {
- if (VDBG) log("CacheAsyncTask#onPostExecute()");
- super.onPostExecute(result);
- releaseWakeLock();
- }
-
- @Override
- protected void onCancelled(Void result) {
- if (VDBG) log("CacheAsyncTask#onCanceled()");
- super.onCancelled(result);
- releaseWakeLock();
- }
-
- private void releaseWakeLock() {
- if (mWakeLock != null && mWakeLock.isHeld()) {
- mWakeLock.release();
- }
- }
- }
-
- private final Context mContext;
-
- /**
- * The mapping from number to CacheEntry.
- *
- * The number will be:
- * - last 7 digits of each "normalized phone number when it is for PSTN phone call, or
- * - a full SIP address for SIP call
- *
- * When cache is being refreshed, this whole object will be replaced with a newer object,
- * instead of updating elements inside the object. "volatile" is used to make
- * {@link #getCacheEntry(String)} access to the newer one every time when the object is
- * being replaced.
- */
- private volatile HashMap<String, CacheEntry> mNumberToEntry;
-
- /**
- * Used to remember if the previous task is finished or not. Should be set to null when done.
- */
- private CacheAsyncTask mCacheAsyncTask;
-
- public static CallerInfoCache init(Context context) {
- if (DBG) log("init()");
- CallerInfoCache cache = new CallerInfoCache(context);
- // The first cache should be available ASAP.
- cache.startAsyncCache();
- return cache;
- }
-
- private CallerInfoCache(Context context) {
- mContext = context;
- mNumberToEntry = new HashMap<String, CacheEntry>();
- }
-
- /* package */ void startAsyncCache() {
- if (DBG) log("startAsyncCache");
-
- if (mCacheAsyncTask != null) {
- Log.w(LOG_TAG, "Previous cache task is remaining.");
- mCacheAsyncTask.cancel(true);
- }
- mCacheAsyncTask = new CacheAsyncTask();
- mCacheAsyncTask.acquireWakeLockAndExecute();
- }
-
- private void refreshCacheEntry() {
- if (VDBG) log("refreshCacheEntry() started");
-
- // There's no way to know which part of the database was updated. Also we don't want
- // to block incoming calls asking for the cache. So this method just does full query
- // and replaces the older cache with newer one. To refrain from blocking incoming calls,
- // it keeps older one as much as it can, and replaces it with newer one inside a very small
- // synchronized block.
-
- Cursor cursor = null;
- try {
- cursor = mContext.getContentResolver().query(Callable.CONTENT_URI,
- PROJECTION, SELECTION, null, null);
- if (cursor != null) {
- // We don't want to block real in-coming call, so prepare a completely fresh
- // cache here again, and replace it with older one.
- final HashMap<String, CacheEntry> newNumberToEntry =
- new HashMap<String, CacheEntry>(cursor.getCount());
-
- while (cursor.moveToNext()) {
- final String number = cursor.getString(INDEX_NUMBER);
- String normalizedNumber = cursor.getString(INDEX_NORMALIZED_NUMBER);
- if (normalizedNumber == null) {
- // There's no guarantee normalized numbers are available every time and
- // it may become null sometimes. Try formatting the original number.
- normalizedNumber = PhoneNumberUtils.normalizeNumber(number);
- }
- final String customRingtone = cursor.getString(INDEX_CUSTOM_RINGTONE);
- final boolean sendToVoicemail = cursor.getInt(INDEX_SEND_TO_VOICEMAIL) == 1;
-
- if (PhoneNumberUtils.isUriNumber(number)) {
- // SIP address case
- putNewEntryWhenAppropriate(
- newNumberToEntry, number, customRingtone, sendToVoicemail);
- } else {
- // PSTN number case
- // Each normalized number may or may not have full content of the number.
- // Contacts database may contain +15001234567 while a dialed number may be
- // just 5001234567. Also we may have inappropriate country
- // code in some cases (e.g. when the location of the device is inconsistent
- // with the device's place). So to avoid confusion we just rely on the last
- // 7 digits here. It may cause some kind of wrong behavior, which is
- // unavoidable anyway in very rare cases..
- final int length = normalizedNumber.length();
- final String key = length > 7
- ? normalizedNumber.substring(length - 7, length)
- : normalizedNumber;
- putNewEntryWhenAppropriate(
- newNumberToEntry, key, customRingtone, sendToVoicemail);
- }
- }
-
- if (VDBG) {
- Log.d(LOG_TAG, "New cache size: " + newNumberToEntry.size());
- for (Entry<String, CacheEntry> entry : newNumberToEntry.entrySet()) {
- Log.d(LOG_TAG, "Number: " + entry.getKey() + " -> " + entry.getValue());
- }
- }
-
- mNumberToEntry = newNumberToEntry;
-
- if (DBG) {
- log("Caching entries are done. Total: " + newNumberToEntry.size());
- }
- } else {
- // Let's just wait for the next refresh..
- //
- // If the cursor became null at that exact moment, probably we don't want to
- // drop old cache. Also the case is fairly rare in usual cases unless acore being
- // killed, so we don't take care much of this case.
- Log.w(LOG_TAG, "cursor is null");
- }
- } finally {
- if (cursor != null) {
- cursor.close();
- }
- }
-
- if (VDBG) log("refreshCacheEntry() ended");
- }
-
- private void putNewEntryWhenAppropriate(HashMap<String, CacheEntry> newNumberToEntry,
- String numberOrSipAddress, String customRingtone, boolean sendToVoicemail) {
- if (newNumberToEntry.containsKey(numberOrSipAddress)) {
- // There may be duplicate entries here and we should prioritize
- // "send-to-voicemail" flag in any case.
- final CacheEntry entry = newNumberToEntry.get(numberOrSipAddress);
- if (!entry.sendToVoicemail && sendToVoicemail) {
- newNumberToEntry.put(numberOrSipAddress,
- new CacheEntry(customRingtone, sendToVoicemail));
- }
- } else {
- newNumberToEntry.put(numberOrSipAddress,
- new CacheEntry(customRingtone, sendToVoicemail));
- }
- }
-
- /**
- * Returns CacheEntry for the given number (PSTN number or SIP address).
- *
- * @param number OK to be unformatted.
- * @return CacheEntry to be used. Maybe null if there's no cache here. Note that this may
- * return null when the cache itself is not ready. BE CAREFUL. (or might be better to throw
- * an exception)
- */
- public CacheEntry getCacheEntry(String number) {
- if (mNumberToEntry == null) {
- // Very unusual state. This implies the cache isn't ready during the request, while
- // it should be prepared on the boot time (i.e. a way before even the first request).
- Log.w(LOG_TAG, "Fallback cache isn't ready.");
- return null;
- }
-
- CacheEntry entry;
- if (PhoneNumberUtils.isUriNumber(number)) {
- if (VDBG) log("Trying to lookup " + number);
-
- entry = mNumberToEntry.get(number);
- } else {
- final String normalizedNumber = PhoneNumberUtils.normalizeNumber(number);
- final int length = normalizedNumber.length();
- final String key =
- (length > 7 ? normalizedNumber.substring(length - 7, length)
- : normalizedNumber);
- if (VDBG) log("Trying to lookup " + key);
-
- entry = mNumberToEntry.get(key);
- }
- if (VDBG) log("Obtained " + entry);
- return entry;
- }
-
- private static void log(String msg) {
- Log.d(LOG_TAG, msg);
- }
-}
diff --git a/src/com/android/phone/EmergencyCallbackModeExitDialog.java b/src/com/android/phone/EmergencyCallbackModeExitDialog.java
index 591f435..adba850 100644
--- a/src/com/android/phone/EmergencyCallbackModeExitDialog.java
+++ b/src/com/android/phone/EmergencyCallbackModeExitDialog.java
@@ -16,6 +16,8 @@
package com.android.phone;
+import static android.view.WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS;
+
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
@@ -74,7 +76,7 @@
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
-
+ getWindow().addPrivateFlags(SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS);
mPhone = PhoneGlobals.getInstance().getPhoneInEcm();
// Check if phone is in Emergency Callback Mode. If not, exit.
if (mPhone == null || !mPhone.isInEcm()) {
diff --git a/src/com/android/phone/ImsRcsController.java b/src/com/android/phone/ImsRcsController.java
index bcc312c..2e4ee94 100644
--- a/src/com/android/phone/ImsRcsController.java
+++ b/src/com/android/phone/ImsRcsController.java
@@ -94,7 +94,7 @@
mApp = app;
TelephonyFrameworkInitializer
.getTelephonyServiceManager().getTelephonyImsServiceRegisterer().register(this);
- mImsResolver = mApp.getImsResolver();
+ mImsResolver = ImsResolver.getInstance();
}
/**
@@ -421,6 +421,19 @@
return uceCtrlManager.removeUceRequestDisallowedStatus();
}
+ /**
+ * Set the timeout for contact capabilities request.
+ */
+ // Used for SHELL command only right now.
+ public boolean setCapabilitiesRequestTimeout(int subId, long timeoutAfter) throws ImsException {
+ UceControllerManager uceCtrlManager = getRcsFeatureController(subId).getFeature(
+ UceControllerManager.class);
+ if (uceCtrlManager == null) {
+ return false;
+ }
+ return uceCtrlManager.setCapabilitiesRequestTimeout(timeoutAfter);
+ }
+
@Override
public void registerUcePublishStateCallback(int subId, IRcsUcePublishStateCallback c) {
enforceReadPrivilegedPermission("registerUcePublishStateCallback");
diff --git a/src/com/android/phone/NotificationMgr.java b/src/com/android/phone/NotificationMgr.java
index fb45f4c..f2641a1 100644
--- a/src/com/android/phone/NotificationMgr.java
+++ b/src/com/android/phone/NotificationMgr.java
@@ -567,8 +567,6 @@
Intent intent = new Intent(TelecomManager.ACTION_SHOW_CALL_SETTINGS);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
- intent.setPackage(mContext.getResources().getString(
- R.string.call_settings_package_name));
SubscriptionInfoHelper.addExtrasToIntent(
intent, mSubscriptionManager.getActiveSubscriptionInfo(subId));
builder.setContentIntent(PendingIntent.getActivity(mContext, subId /* requestCode */,
diff --git a/src/com/android/phone/PhoneGlobals.java b/src/com/android/phone/PhoneGlobals.java
index 97eb5f5..c4686db 100644
--- a/src/com/android/phone/PhoneGlobals.java
+++ b/src/com/android/phone/PhoneGlobals.java
@@ -153,9 +153,7 @@
CallManager mCM;
CallNotifier notifier;
- CallerInfoCache callerInfoCache;
NotificationMgr notificationMgr;
- ImsResolver mImsResolver;
TelephonyRcsService mTelephonyRcsService;
public PhoneInterfaceManager phoneMgr;
public ImsRcsController imsRcsController;
@@ -402,10 +400,10 @@
R.string.config_ims_mmtel_package);
String defaultImsRcsPackage = getResources().getString(
R.string.config_ims_rcs_package);
- mImsResolver = new ImsResolver(this, defaultImsMmtelPackage,
+ ImsResolver.make(this, defaultImsMmtelPackage,
defaultImsRcsPackage, PhoneFactory.getPhones().length,
new ImsFeatureBinderRepository());
- mImsResolver.initialize();
+ ImsResolver.getInstance().initialize();
// With the IMS phone created, load static config.xml values from the phone process
// so that it can be provided to the ImsPhoneCallTracker.
@@ -453,12 +451,6 @@
mKeyguardManager = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
- // Create the CallerInfoCache singleton, which remembers custom ring tone and
- // send-to-voicemail settings.
- //
- // The asynchronous caching will start just after this call.
- callerInfoCache = CallerInfoCache.init(this);
-
phoneMgr = PhoneInterfaceManager.init(this);
imsRcsController = ImsRcsController.init(this);
@@ -484,8 +476,12 @@
mCM.registerForMmiComplete(mHandler, MMI_COMPLETE, null);
// Initialize cell status using current airplane mode.
- handleAirplaneModeChange(this, Settings.Global.getInt(getContentResolver(),
- Settings.Global.AIRPLANE_MODE_ON, AIRPLANE_OFF));
+ handleAirplaneModeChange(
+ Settings.Global.getInt(
+ getContentResolver(),
+ Settings.Global.AIRPLANE_MODE_ON,
+ AIRPLANE_OFF)
+ == AIRPLANE_ON);
// Register for misc other intent broadcasts.
IntentFilter intentFilter =
@@ -552,10 +548,6 @@
return PhoneFactory.getPhone(SubscriptionManager.getPhoneId(subId));
}
- public ImsResolver getImsResolver() {
- return mImsResolver;
- }
-
/* package */ CallManager getCallManager() {
return mCM;
}
@@ -641,20 +633,20 @@
notifier.updateCallNotifierRegistrationsAfterRadioTechnologyChange();
}
- private void handleAirplaneModeChange(Context context, int newMode) {
- int cellState = Settings.Global.getInt(context.getContentResolver(),
- Settings.Global.CELL_ON, PhoneConstants.CELL_ON_FLAG);
- boolean isAirplaneNewlyOn = (newMode == 1);
+ private void handleAirplaneModeChange(boolean isAirplaneNewlyOn) {
+ int cellState =
+ Settings.Global.getInt(
+ getContentResolver(), Settings.Global.CELL_ON, PhoneConstants.CELL_ON_FLAG);
switch (cellState) {
case PhoneConstants.CELL_OFF_FLAG:
// Airplane mode does not affect the cell radio if user
// has turned it off.
break;
case PhoneConstants.CELL_ON_FLAG:
- maybeTurnCellOff(context, isAirplaneNewlyOn);
+ maybeTurnCellOff(isAirplaneNewlyOn);
break;
case PhoneConstants.CELL_OFF_DUE_TO_AIRPLANE_MODE_FLAG:
- maybeTurnCellOn(context, isAirplaneNewlyOn);
+ maybeTurnCellOn(isAirplaneNewlyOn);
break;
}
for (Phone phone : PhoneFactory.getPhones()) {
@@ -665,57 +657,59 @@
/*
* Returns true if the radio must be turned off when entering airplane mode.
*/
- private boolean isCellOffInAirplaneMode(Context context) {
- String airplaneModeRadios = Settings.Global.getString(context.getContentResolver(),
- Settings.Global.AIRPLANE_MODE_RADIOS);
+ private boolean isCellOffInAirplaneMode() {
+ String airplaneModeRadios =
+ Settings.Global.getString(
+ getContentResolver(), Settings.Global.AIRPLANE_MODE_RADIOS);
return airplaneModeRadios == null
|| airplaneModeRadios.contains(Settings.Global.RADIO_CELL);
}
- private void setRadioPowerOff(Context context) {
+ private void setRadioPowerOff() {
Log.i(LOG_TAG, "Turning radio off - airplane");
- Settings.Global.putInt(context.getContentResolver(), Settings.Global.CELL_ON,
- PhoneConstants.CELL_OFF_DUE_TO_AIRPLANE_MODE_FLAG);
- TelephonyProperties.airplane_mode_on(true); // true means int value 1
+ Settings.Global.putInt(
+ getContentResolver(),
+ Settings.Global.CELL_ON,
+ PhoneConstants.CELL_OFF_DUE_TO_AIRPLANE_MODE_FLAG);
Settings.Global.putInt(getContentResolver(), Settings.Global.ENABLE_CELLULAR_ON_BOOT, 0);
+ TelephonyProperties.airplane_mode_on(true); // true means int value 1
PhoneUtils.setRadioPower(false);
}
- private void setRadioPowerOn(Context context) {
+ private void setRadioPowerOn() {
Log.i(LOG_TAG, "Turning radio on - airplane");
- Settings.Global.putInt(context.getContentResolver(), Settings.Global.CELL_ON,
- PhoneConstants.CELL_ON_FLAG);
- Settings.Global.putInt(getContentResolver(), Settings.Global.ENABLE_CELLULAR_ON_BOOT,
- 1);
+ Settings.Global.putInt(
+ getContentResolver(), Settings.Global.CELL_ON, PhoneConstants.CELL_ON_FLAG);
+ Settings.Global.putInt(getContentResolver(), Settings.Global.ENABLE_CELLULAR_ON_BOOT, 1);
TelephonyProperties.airplane_mode_on(false); // false means int value 0
PhoneUtils.setRadioPower(true);
}
- private void maybeTurnCellOff(Context context, boolean isAirplaneNewlyOn) {
+ private void maybeTurnCellOff(boolean isAirplaneNewlyOn) {
if (isAirplaneNewlyOn) {
// If we are trying to turn off the radio, make sure there are no active
// emergency calls. If there are, switch airplane mode back to off.
- TelecomManager tm = (TelecomManager) context.getSystemService(TELECOM_SERVICE);
+ TelecomManager tm = (TelecomManager) getSystemService(TELECOM_SERVICE);
if (tm != null && tm.isInEmergencyCall()) {
// Switch airplane mode back to off.
ConnectivityManager cm =
- (ConnectivityManager) context.getSystemService(CONNECTIVITY_SERVICE);
+ (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
cm.setAirplaneMode(false);
Toast.makeText(this, R.string.radio_off_during_emergency_call, Toast.LENGTH_LONG)
.show();
Log.i(LOG_TAG, "Ignoring airplane mode: emergency call. Turning airplane off");
- } else if (isCellOffInAirplaneMode(context)) {
- setRadioPowerOff(context);
+ } else if (isCellOffInAirplaneMode()) {
+ setRadioPowerOff();
} else {
Log.i(LOG_TAG, "Ignoring airplane mode: settings prevent cell radio power off");
}
}
}
- private void maybeTurnCellOn(Context context, boolean isAirplaneNewlyOn) {
+ private void maybeTurnCellOn(boolean isAirplaneNewlyOn) {
if (!isAirplaneNewlyOn) {
- setRadioPowerOn(context);
+ setRadioPowerOn();
}
}
@@ -727,13 +721,8 @@
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals(Intent.ACTION_AIRPLANE_MODE_CHANGED)) {
- int airplaneMode = Settings.Global.getInt(getContentResolver(),
- Settings.Global.AIRPLANE_MODE_ON, AIRPLANE_OFF);
- // Treat any non-OFF values as ON.
- if (airplaneMode != AIRPLANE_OFF) {
- airplaneMode = AIRPLANE_ON;
- }
- handleAirplaneModeChange(context, airplaneMode);
+ boolean airplaneMode = intent.getBooleanExtra("state", false);
+ handleAirplaneModeChange(airplaneMode);
} else if (action.equals(TelephonyIntents.ACTION_SIM_STATE_CHANGED)) {
// re-register as it may be a new IccCard
int phoneId = intent.getIntExtra(PhoneConstants.PHONE_KEY,
@@ -1021,7 +1010,7 @@
pw.println("ImsResolver:");
pw.increaseIndent();
try {
- if (mImsResolver != null) mImsResolver.dump(fd, pw, args);
+ if (ImsResolver.getInstance() != null) ImsResolver.getInstance().dump(fd, pw, args);
} catch (Exception e) {
e.printStackTrace();
}
diff --git a/src/com/android/phone/PhoneInterfaceManager.java b/src/com/android/phone/PhoneInterfaceManager.java
index 801c480..b03d6f3 100755
--- a/src/com/android/phone/PhoneInterfaceManager.java
+++ b/src/com/android/phone/PhoneInterfaceManager.java
@@ -18,6 +18,8 @@
import static android.content.pm.PackageManager.PERMISSION_GRANTED;
+import static com.android.internal.telephony.PhoneConstants.PHONE_TYPE_CDMA;
+import static com.android.internal.telephony.PhoneConstants.PHONE_TYPE_GSM;
import static com.android.internal.telephony.PhoneConstants.PHONE_TYPE_IMS;
import static com.android.internal.telephony.PhoneConstants.SUBSCRIPTION_KEY;
@@ -142,6 +144,7 @@
import com.android.internal.telephony.CommandsInterface;
import com.android.internal.telephony.DefaultPhoneNotifier;
import com.android.internal.telephony.GbaManager;
+import com.android.internal.telephony.GsmCdmaPhone;
import com.android.internal.telephony.HalVersion;
import com.android.internal.telephony.IBooleanConsumer;
import com.android.internal.telephony.ICallForwardingInfoCallback;
@@ -1618,8 +1621,8 @@
if (ar.exception == null && ar.result != null) {
request.result = ar.result;
} else {
- request.result = new IllegalArgumentException(
- "Failed to retrieve system selection channels");
+ request.result = new IllegalStateException(
+ "Failed to retrieve system selecton channels");
if (ar.result == null) {
loge("getSystemSelectionChannels: Empty response");
} else {
@@ -2093,7 +2096,7 @@
private PhoneInterfaceManager(PhoneGlobals app) {
mApp = app;
mCM = PhoneGlobals.getInstance().mCM;
- mImsResolver = PhoneGlobals.getInstance().getImsResolver();
+ mImsResolver = ImsResolver.getInstance();
mUserManager = (UserManager) app.getSystemService(Context.USER_SERVICE);
mAppOps = (AppOpsManager)app.getSystemService(Context.APP_OPS_SERVICE);
mMainThreadHandler = new MainThreadHandler();
@@ -6429,8 +6432,9 @@
private int getCarrierPrivilegeStatusFromCarrierConfigRules(int privilegeFromSim, int uid,
Phone phone) {
- if (uid == Process.SYSTEM_UID || uid == Process.PHONE_UID) {
- // Skip the check if it's one of these special uids
+ if (uid == Process.PHONE_UID) {
+ // Skip the check if it's the phone UID (system UID removed in b/184713596)
+ // TODO (b/184954344): Check for system/phone UID at call site instead of here
return TelephonyManager.CARRIER_PRIVILEGE_STATUS_HAS_ACCESS;
}
@@ -8591,6 +8595,31 @@
}
/**
+ * Start emergency callback mode for GsmCdmaPhone for testing.
+ */
+ @Override
+ public void startEmergencyCallbackMode() {
+ TelephonyPermissions.enforceShellOnly(Binder.getCallingUid(),
+ "startEmergencyCallbackMode");
+ enforceModifyPermission();
+ final long identity = Binder.clearCallingIdentity();
+ try {
+ for (Phone phone : PhoneFactory.getPhones()) {
+ Rlog.d(LOG_TAG, "startEmergencyCallbackMode phone type: " + phone.getPhoneType());
+ if (phone != null && ((phone.getPhoneType() == PHONE_TYPE_GSM)
+ || (phone.getPhoneType() == PHONE_TYPE_CDMA))) {
+ GsmCdmaPhone gsmCdmaPhone = (GsmCdmaPhone) phone;
+ gsmCdmaPhone.obtainMessage(
+ GsmCdmaPhone.EVENT_EMERGENCY_CALLBACK_MODE_ENTER).sendToTarget();
+ Rlog.d(LOG_TAG, "startEmergencyCallbackMode: triggered");
+ }
+ }
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
+ }
+
+ /**
* Update emergency number list for test mode.
*/
@Override
@@ -9043,9 +9072,11 @@
WorkSource workSource = getWorkSource(Binder.getCallingUid());
final long identity = Binder.clearCallingIdentity();
try {
- List<RadioAccessSpecifier> specifiers =
- (List<RadioAccessSpecifier>) sendRequest(CMD_GET_SYSTEM_SELECTION_CHANNELS,
- null, subId, workSource);
+ Object result = sendRequest(CMD_GET_SYSTEM_SELECTION_CHANNELS, null, subId, workSource);
+ if (result instanceof IllegalStateException) {
+ throw (IllegalStateException) result;
+ }
+ List<RadioAccessSpecifier> specifiers = (List<RadioAccessSpecifier>) result;
if (DBG) log("getSystemSelectionChannels: " + specifiers);
return specifiers;
} finally {
@@ -9467,7 +9498,9 @@
throw new IllegalArgumentException("modem returned INVALID_ARGUMENTS");
} else if (thermalMitigationResult
== MODEM_DOES_NOT_SUPPORT_DATA_THROTTLING_ERROR_CODE) {
- throw new IllegalArgumentException("modem does not support data throttling");
+ log("Modem likely does not support data throttling on secondary carrier. Data " +
+ "throttling action = " + dataThrottlingRequest.getDataThrottlingAction());
+ return TelephonyManager.THERMAL_MITIGATION_RESULT_MODEM_ERROR;
}
return thermalMitigationResult;
}
@@ -9486,6 +9519,24 @@
return sThermalMitigationAllowlistedPackages;
}
+ private boolean isAnyPhoneInEmergencyState() {
+ TelecomManager tm = mApp.getSystemService(TelecomManager.class);
+ if (tm.isInEmergencyCall()) {
+ Log.e(LOG_TAG , "Phone state is not valid. One of the phones is in an emergency call");
+ return true;
+ }
+ for (Phone phone : PhoneFactory.getPhones()) {
+ if (phone.isInEmergencySmsMode() || phone.isInEcm()) {
+ Log.e(LOG_TAG, "Phone state is not valid. isInEmergencySmsMode = "
+ + phone.isInEmergencySmsMode() + " isInEmergencyCallbackMode = "
+ + phone.isInEcm());
+ return true;
+ }
+ }
+
+ return false;
+ }
+
/**
* Used by shell commands to add an authorized package name for thermal mitigation.
* @param packageName name of package to be allowlisted
@@ -9568,8 +9619,6 @@
TelecomAccountRegistry registry = TelecomAccountRegistry.getInstance(null);
if (registry != null) {
- TelephonyConnectionService service =
- registry.getTelephonyConnectionService();
Phone phone = getPhone(subId);
if (phone == null) {
thermalMitigationResult =
@@ -9577,19 +9626,20 @@
break;
}
- if (PhoneConstantConversions.convertCallState(phone.getState())
- != TelephonyManager.CALL_STATE_IDLE
- || phone.isInEmergencySmsMode() || phone.isInEcm()
- || (service != null && service.isEmergencyCallPending())) {
- String errorMessage = "Phone state is not valid. call state = "
- + PhoneConstantConversions.convertCallState(phone.getState())
- + " isInEmergencySmsMode = " + phone.isInEmergencySmsMode()
- + " isInEmergencyCallbackMode = " + phone.isInEcm();
- errorMessage += service == null
- ? " TelephonyConnectionService is null"
- : " isEmergencyCallPending = "
- + service.isEmergencyCallPending();
- Log.e(LOG_TAG, errorMessage);
+ TelephonyConnectionService service =
+ registry.getTelephonyConnectionService();
+ if (service == null) {
+ Log.e(LOG_TAG, "TelephonyConnectionService is null");
+ thermalMitigationResult =
+ TelephonyManager.THERMAL_MITIGATION_RESULT_INVALID_STATE;
+ break;
+
+ } else if (service.isEmergencyCallPending()) {
+ Log.e(LOG_TAG, "An emergency call is pending");
+ thermalMitigationResult =
+ TelephonyManager.THERMAL_MITIGATION_RESULT_INVALID_STATE;
+ break;
+ } else if (isAnyPhoneInEmergencyState()) {
thermalMitigationResult =
TelephonyManager.THERMAL_MITIGATION_RESULT_INVALID_STATE;
break;
@@ -9734,9 +9784,13 @@
try {
RcsProvisioningMonitor rpm = RcsProvisioningMonitor.getInstance();
if (rpm != null) {
- return rpm.isRcsVolteSingleRegistrationEnabled(subId);
+ Boolean isCapable = rpm.isRcsVolteSingleRegistrationEnabled(subId);
+ if (isCapable != null) {
+ return isCapable;
+ }
}
- return false;
+ throw new ServiceSpecificException(ImsException.CODE_ERROR_SERVICE_UNAVAILABLE,
+ "service is temporarily unavailable.");
} finally {
Binder.restoreCallingIdentity(identity);
}
@@ -10158,6 +10212,22 @@
}
}
+ /**
+ * Remove UCE requests cannot be sent to the network status.
+ */
+ // Used for SHELL command only.
+ @Override
+ public boolean setCapabilitiesRequestTimeout(int subId, long timeoutAfterMs) {
+ TelephonyPermissions.enforceShellOnly(Binder.getCallingUid(), "setCapRequestTimeout");
+ final long identity = Binder.clearCallingIdentity();
+ try {
+ return mApp.imsRcsController.setCapabilitiesRequestTimeout(subId, timeoutAfterMs);
+ } catch (ImsException e) {
+ throw new ServiceSpecificException(e.getCode(), e.getMessage());
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
+ }
@Override
public void setSignalStrengthUpdateRequest(int subId, SignalStrengthUpdateRequest request,
diff --git a/src/com/android/phone/RcsProvisioningMonitor.java b/src/com/android/phone/RcsProvisioningMonitor.java
index 18c8c0b..8f4cd86 100644
--- a/src/com/android/phone/RcsProvisioningMonitor.java
+++ b/src/com/android/phone/RcsProvisioningMonitor.java
@@ -537,19 +537,12 @@
/**
* Returns whether Rcs Volte single registration is enabled for the sub.
*/
- public boolean isRcsVolteSingleRegistrationEnabled(int subId) {
+ public Boolean isRcsVolteSingleRegistrationEnabled(int subId) {
if (mRcsProvisioningInfos.containsKey(subId)) {
- if (mRcsProvisioningInfos.get(subId).getSingleRegistrationCapability()
- == ProvisioningManager.STATUS_CAPABLE) {
- try {
- RcsConfig rcsConfig = new RcsConfig(getConfig(subId));
- return rcsConfig.isRcsVolteSingleRegistrationSupported();
- } catch (IllegalArgumentException e) {
- logd("fail to get rcs config for sub:" + subId);
- }
- }
+ return mRcsProvisioningInfos.get(subId).getSingleRegistrationCapability()
+ == ProvisioningManager.STATUS_CAPABLE;
}
- return false;
+ return null;
}
/**
@@ -820,11 +813,6 @@
}
}
- private IImsConfig getIImsConfig(int subId, int feature) {
- return mPhone.getImsResolver().getImsConfig(
- SubscriptionManager.getSlotIndex(subId), feature);
- }
-
private String getDmaPackageName() {
try {
return CollectionUtils.firstOrNull(mRoleManager.getRoleHolders(RoleManager.ROLE_SMS));
diff --git a/src/com/android/phone/ServiceStateProvider.java b/src/com/android/phone/ServiceStateProvider.java
index 32562fa..08f0907 100644
--- a/src/com/android/phone/ServiceStateProvider.java
+++ b/src/com/android/phone/ServiceStateProvider.java
@@ -16,6 +16,7 @@
package com.android.phone;
+import static android.content.pm.PackageManager.PERMISSION_GRANTED;
import static android.provider.Telephony.ServiceStateTable;
import static android.provider.Telephony.ServiceStateTable.CONTENT_URI;
import static android.provider.Telephony.ServiceStateTable.DATA_NETWORK_TYPE;
@@ -26,6 +27,7 @@
import static android.provider.Telephony.ServiceStateTable.getUriForSubscriptionId;
import static android.provider.Telephony.ServiceStateTable.getUriForSubscriptionIdAndField;
+import android.Manifest;
import android.content.ContentProvider;
import android.content.ContentValues;
import android.content.Context;
@@ -33,16 +35,21 @@
import android.database.MatrixCursor;
import android.database.MatrixCursor.RowBuilder;
import android.net.Uri;
+import android.os.Binder;
+import android.os.Build;
import android.os.Parcel;
+import android.telephony.LocationAccessPolicy;
import android.telephony.ServiceState;
import android.telephony.SubscriptionManager;
import android.util.Log;
import com.android.internal.annotations.VisibleForTesting;
+import com.android.internal.telephony.TelephonyPermissions;
import java.util.HashMap;
import java.util.List;
import java.util.Objects;
+import java.util.Set;
/**
* The class to provide base facility to access ServiceState related content,
@@ -223,7 +230,9 @@
public static final String OPERATOR_ALPHA_SHORT_RAW = "operator_alpha_short_raw";
private final HashMap<Integer, ServiceState> mServiceStates = new HashMap<>();
- private static final String[] sColumns = {
+
+ @VisibleForTesting
+ /* package */ static final String[] ALL_COLUMNS = {
VOICE_REG_STATE,
DATA_REG_STATE,
VOICE_ROAMING_TYPE,
@@ -252,6 +261,34 @@
DUPLEX_MODE,
};
+ /**
+ * Columns that are exposed to public surface.
+ * These are the columns accessible to apps target S+ and lack
+ * {@link android.Manifest.permission#READ_PRIVILEGED_PHONE_STATE} permission.
+ */
+ @VisibleForTesting
+ /* package */ static final String[] PUBLIC_COLUMNS = {
+ VOICE_REG_STATE,
+ DATA_REG_STATE,
+ VOICE_OPERATOR_NUMERIC,
+ IS_MANUAL_NETWORK_SELECTION,
+ DATA_NETWORK_TYPE,
+ DUPLEX_MODE
+ };
+
+ /**
+ * Columns protected by location permissions (either FINE or COARSE).
+ * SecurityException will throw if applications without location permissions try to put those
+ * columns explicitly into cursor (e.g. through {@code projection} parameter in
+ * {@link #query(Uri, String[], String, String[], String)} method).
+ * Default (scrub-out) value will return if applications try to put all columns into cursor by
+ * specifying null of {@code projection} parameter and get values through the returned cursor.
+ */
+ private static final Set<String> LOCATION_PROTECTED_COLUMNS_SET = Set.of(
+ NETWORK_ID,
+ SYSTEM_ID
+ );
+
@Override
public boolean onCreate() {
return true;
@@ -354,12 +391,55 @@
}
// Get the service state
- ServiceState ss = getServiceState(subId);
- if (ss == null) {
+ ServiceState unredactedServiceState = getServiceState(subId);
+ if (unredactedServiceState == null) {
Log.d(TAG, "returning null");
return null;
}
+ final boolean targetingAtLeastS = TelephonyPermissions.getTargetSdk(getContext(),
+ getCallingPackage()) >= Build.VERSION_CODES.S;
+ final boolean canReadPrivilegedPhoneState = getContext().checkCallingOrSelfPermission(
+ Manifest.permission.READ_PRIVILEGED_PHONE_STATE) == PERMISSION_GRANTED;
+
+ final String[] availableColumns;
+ final ServiceState ss;
+ if (targetingAtLeastS && !canReadPrivilegedPhoneState) {
+ // targetSdkVersion S+ without read privileged phone state permission can only
+ // access public columns which have no location sensitive info.
+ availableColumns = PUBLIC_COLUMNS;
+ ss = unredactedServiceState;
+ } else {
+ availableColumns = ALL_COLUMNS;
+
+ final boolean hasLocationPermission =
+ hasFineLocationPermission() || hasCoarseLocationPermission();
+ if (hasLocationPermission) {
+ ss = unredactedServiceState;
+ } else {
+ // The caller has no location permission but explicitly requires for location
+ // protected columns. Throw SecurityException to fail loudly.
+ if (projection != null) {
+ for (String requiredColumn : projection) {
+ if (LOCATION_PROTECTED_COLUMNS_SET.contains(requiredColumn)) {
+ throw new SecurityException("Column " + requiredColumn
+ + "requires location permissions to access.");
+ }
+ }
+ }
+
+ // The caller has no location permission but only requires columns without
+ // location sensitive info or "all" columns, return result that scrub out all
+ // sensitive info. In later case, we will not know which columns will be fetched
+ // from the returned cursor until the result has been returned.
+ ss = unredactedServiceState.createLocationInfoSanitizedCopy(
+ true /*removeCoarseLocation*/);
+ // TODO(b/188061647): remove the additional redaction once it is fixed in SS
+ ss.setCdmaSystemAndNetworkId(ServiceState.UNKNOWN_ID,
+ ServiceState.UNKNOWN_ID);
+ }
+ }
+
// Build the result
final int voice_reg_state = ss.getState();
final int data_reg_state = ss.getDataRegistrationState();
@@ -388,7 +468,8 @@
final int data_network_type = ss.getDataNetworkType();
final int duplex_mode = ss.getDuplexMode();
- return buildSingleRowResult(projection, sColumns, new Object[] {
+ Object[] data = availableColumns == ALL_COLUMNS ? new Object[]{
+ // data for all columns
voice_reg_state,
data_reg_state,
voice_roaming_type,
@@ -415,7 +496,17 @@
operator_alpha_short_raw,
data_network_type,
duplex_mode,
- });
+ } : new Object[]{
+ // data for public columns only
+ voice_reg_state,
+ data_reg_state,
+ voice_operator_numeric,
+ is_manual_network_selection,
+ data_network_type,
+ duplex_mode,
+ };
+
+ return buildSingleRowResult(projection, availableColumns, data);
}
}
@@ -569,4 +660,38 @@
values.put(SERVICE_STATE, p.marshall());
return values;
}
+
+ private boolean hasFineLocationPermission() {
+ LocationAccessPolicy.LocationPermissionResult fineLocationResult =
+ LocationAccessPolicy.checkLocationPermission(getContext(),
+ new LocationAccessPolicy.LocationPermissionQuery.Builder()
+ .setCallingPackage(getCallingPackage())
+ .setCallingFeatureId(getCallingAttributionTag())
+ .setCallingPid(Binder.getCallingPid())
+ .setCallingUid(Binder.getCallingUid())
+ .setMethod("ServiceStateProvider#query")
+ .setLogAsInfo(true)
+ .setMinSdkVersionForFine(Build.VERSION_CODES.S)
+ .setMinSdkVersionForCoarse(Build.VERSION_CODES.S)
+ .setMinSdkVersionForEnforcement(Build.VERSION_CODES.S)
+ .build());
+ return fineLocationResult == LocationAccessPolicy.LocationPermissionResult.ALLOWED;
+ }
+
+ private boolean hasCoarseLocationPermission() {
+ LocationAccessPolicy.LocationPermissionResult coarseLocationResult =
+ LocationAccessPolicy.checkLocationPermission(getContext(),
+ new LocationAccessPolicy.LocationPermissionQuery.Builder()
+ .setCallingPackage(getCallingPackage())
+ .setCallingFeatureId(getCallingAttributionTag())
+ .setCallingPid(Binder.getCallingPid())
+ .setCallingUid(Binder.getCallingUid())
+ .setMethod("ServiceStateProvider#query")
+ .setLogAsInfo(true)
+ .setMinSdkVersionForCoarse(Build.VERSION_CODES.S)
+ .setMinSdkVersionForFine(Integer.MAX_VALUE)
+ .setMinSdkVersionForEnforcement(Build.VERSION_CODES.S)
+ .build());
+ return coarseLocationResult == LocationAccessPolicy.LocationPermissionResult.ALLOWED;
+ }
}
diff --git a/src/com/android/phone/SimPhonebookProvider.java b/src/com/android/phone/SimPhonebookProvider.java
index 4a15950..b921398 100644
--- a/src/com/android/phone/SimPhonebookProvider.java
+++ b/src/com/android/phone/SimPhonebookProvider.java
@@ -16,6 +16,9 @@
package com.android.phone;
+import static com.android.internal.telephony.IccProvider.STR_NEW_TAG;
+import static com.android.internal.telephony.IccProvider.STR_NEW_NUMBER;
+
import android.Manifest;
import android.annotation.TestApi;
import android.content.ContentProvider;
@@ -662,8 +665,11 @@
private boolean updateRecord(PhonebookArgs args, AdnRecord existingRecord, String pin2,
String newName, String newPhone) {
try {
+ ContentValues values = new ContentValues();
+ values.put(STR_NEW_TAG, newName);
+ values.put(STR_NEW_NUMBER, newPhone);
return mIccPhoneBookSupplier.get().updateAdnRecordsInEfByIndexForSubscriber(
- args.subscriptionId, existingRecord.getEfid(), newName, newPhone,
+ args.subscriptionId, existingRecord.getEfid(), values,
existingRecord.getRecId(),
pin2);
} catch (RemoteException e) {
diff --git a/src/com/android/phone/TelephonyShellCommand.java b/src/com/android/phone/TelephonyShellCommand.java
index 7b11c89..2af0823 100644
--- a/src/com/android/phone/TelephonyShellCommand.java
+++ b/src/com/android/phone/TelephonyShellCommand.java
@@ -74,6 +74,7 @@
private static final String IMS_SUBCOMMAND = "ims";
private static final String NUMBER_VERIFICATION_SUBCOMMAND = "numverify";
+ private static final String EMERGENCY_CALLBACK_MODE = "emergency-callback-mode";
private static final String EMERGENCY_NUMBER_TEST_MODE = "emergency-number-test-mode";
private static final String END_BLOCK_SUPPRESSION = "end-block-suppression";
private static final String RESTART_MODEM = "restart-modem";
@@ -128,6 +129,8 @@
private static final String UCE_GET_LAST_PIDF_XML = "get-last-publish-pidf";
private static final String UCE_REMOVE_REQUEST_DISALLOWED_STATUS =
"remove-request-disallowed-status";
+ private static final String UCE_SET_CAPABILITY_REQUEST_TIMEOUT =
+ "set-capabilities-request-timeout";
// Check if a package has carrier privileges on any SIM, regardless of subId/phoneId.
private static final String HAS_CARRIER_PRIVILEGES_COMMAND = "has-carrier-privileges";
@@ -251,6 +254,8 @@
return handleRcsUceCommand();
case NUMBER_VERIFICATION_SUBCOMMAND:
return handleNumberVerificationCommand();
+ case EMERGENCY_CALLBACK_MODE:
+ return handleEmergencyCallbackModeCommand();
case EMERGENCY_NUMBER_TEST_MODE:
return handleEmergencyNumberTestModeCommand();
case CARRIER_CONFIG_SUBCOMMAND: {
@@ -409,6 +414,8 @@
pw.println(" PUBLISH is active");
pw.println(" uce remove-request-disallowed-status [-s SLOT_ID]");
pw.println(" Remove the UCE is disallowed to execute UCE requests status");
+ pw.println(" uce set-capabilities-request-timeout [-s SLOT_ID] [REQUEST_TIMEOUT_MS]");
+ pw.println(" Set the timeout for contact capabilities request.");
}
private void onHelpNumberVerification() {
@@ -617,6 +624,19 @@
return 0;
}
+ private int handleEmergencyCallbackModeCommand() {
+ PrintWriter errPw = getErrPrintWriter();
+ try {
+ mInterface.startEmergencyCallbackMode();
+ Log.d(LOG_TAG, "handleEmergencyCallbackModeCommand: triggered");
+ } catch (RemoteException ex) {
+ Log.w(LOG_TAG, "emergency-callback-mode error: " + ex.getMessage());
+ errPw.println("Exception: " + ex.getMessage());
+ return -1;
+ }
+ return 0;
+ }
+
private int handleEmergencyNumberTestModeCommand() {
PrintWriter errPw = getErrPrintWriter();
String opt = getNextOption();
@@ -1815,6 +1835,8 @@
return handleUceGetPidfXml();
case UCE_REMOVE_REQUEST_DISALLOWED_STATUS:
return handleUceRemoveRequestDisallowedStatus();
+ case UCE_SET_CAPABILITY_REQUEST_TIMEOUT:
+ return handleUceSetCapRequestTimeout();
}
return -1;
}
@@ -1921,6 +1943,27 @@
return 0;
}
+ private int handleUceSetCapRequestTimeout() {
+ int subId = getSubId("uce set-capabilities-request-timeout");
+ if (subId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
+ Log.w(LOG_TAG, "uce set-capabilities-request-timeout, Invalid subscription ID");
+ return -1;
+ }
+ long timeoutAfterMs = Long.valueOf(getNextArg());
+ boolean result;
+ try {
+ result = mInterface.setCapabilitiesRequestTimeout(subId, timeoutAfterMs);
+ } catch (RemoteException e) {
+ Log.w(LOG_TAG, "uce set-capabilities-request-timeout, error " + e.getMessage());
+ return -1;
+ }
+ if (VDBG) {
+ Log.v(LOG_TAG, "uce set-capabilities-request-timeout, returned: " + result);
+ }
+ getOutPrintWriter().println(result);
+ return 0;
+ }
+
private int handleSrcSetTestEnabledCommand() {
String enabledStr = getNextArg();
if (enabledStr == null) {
diff --git a/src/com/android/services/telephony/CallQualityManager.java b/src/com/android/services/telephony/CallQualityManager.java
deleted file mode 100644
index 262ce88..0000000
--- a/src/com/android/services/telephony/CallQualityManager.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- * Copyright (C) 2020 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.services.telephony;
-
-import android.app.Notification;
-import android.app.NotificationChannel;
-import android.app.NotificationManager;
-import android.content.Context;
-import android.os.Bundle;
-import android.os.SystemClock;
-import android.telecom.BluetoothCallQualityReport;
-import android.util.Log;
-
-import com.android.internal.annotations.VisibleForTesting;
-import com.android.internal.telephony.SlidingWindowEventCounter;
-import com.android.phone.R;
-
-/**
- * class to handle call quality events that are received by telecom and telephony
- */
-public class CallQualityManager {
- private static final String TAG = CallQualityManager.class.getCanonicalName();
-
- /** notification ids */
- public static final int BLUETOOTH_CHOPPY_VOICE_NOTIFICATION_ID = 700;
- public static final String CALL_QUALITY_CHANNEL_ID = "CallQualityNotificationChannel";
- public static final long NOTIFICATION_BACKOFF_TIME_MILLIS = 5L * 60 * 1000;
- public static final int NUM_OCCURRENCES_THRESHOLD = 5;
- public static final long TIME_WINDOW_MILLIS = 5 * 1000;
-
- private final Context mContext;
- private final NotificationChannel mNotificationChannel;
- private final NotificationManager mNotificationManager;
- private final SlidingWindowEventCounter mSlidingWindowEventCounter;
-
- private long mNotificationLastTime;
-
- public CallQualityManager(Context context) {
- mContext = context;
- mNotificationChannel = new NotificationChannel(CALL_QUALITY_CHANNEL_ID,
- mContext.getString(R.string.call_quality_notification_name),
- NotificationManager.IMPORTANCE_HIGH);
- mNotificationManager = (NotificationManager)
- mContext.getSystemService(Context.NOTIFICATION_SERVICE);
- mNotificationManager.createNotificationChannel(mNotificationChannel);
- //making sure at the start we qualify to show notifications
- mNotificationLastTime =
- SystemClock.elapsedRealtime() - NOTIFICATION_BACKOFF_TIME_MILLIS - 1;
- mSlidingWindowEventCounter =
- new SlidingWindowEventCounter(TIME_WINDOW_MILLIS, NUM_OCCURRENCES_THRESHOLD);
- }
-
- /**
- * method that is called whenever a
- * {@code BluetoothCallQualityReport.EVENT_SEND_BLUETOOTH_CALL_QUALITY_REPORT} is received
- * @param extras Bundle that includes serialized {@code BluetoothCallQualityReport} parcelable
- */
- @VisibleForTesting
- public void onBluetoothCallQualityReported(Bundle extras) {
- if (extras == null) {
- Log.d(TAG, "onBluetoothCallQualityReported: no extras provided");
- }
-
- BluetoothCallQualityReport callQualityReport = extras.getParcelable(
- BluetoothCallQualityReport.EXTRA_BLUETOOTH_CALL_QUALITY_REPORT);
-
- if (callQualityReport.isChoppyVoice()) {
- onChoppyVoice();
- }
- // TODO: once other signals are also sent, we will add more actions here
- }
-
- /**
- * method to post a notification to user suggesting ways to improve call quality in case of
- * bluetooth choppy voice
- */
- @VisibleForTesting
- public void onChoppyVoice() {
- String title = "Call Quality Improvement";
- Log.d(TAG, "Bluetooth choppy voice signal received.");
- if (mSlidingWindowEventCounter.addOccurrence(SystemClock.elapsedRealtime())) {
- timedNotify(title,
- mContext.getText(R.string.call_quality_notification_bluetooth_details));
- }
- }
-
- // notify user only if you haven't in the last NOTIFICATION_BACKOFF_TIME_MILLIS milliseconds
- private void timedNotify(String title, CharSequence details) {
- if (!mContext.getResources().getBoolean(
- R.bool.enable_bluetooth_call_quality_notification)) {
- Log.d(TAG, "Bluetooth call quality notifications not enabled.");
- return;
- }
- long now = SystemClock.elapsedRealtime();
- if (now - mNotificationLastTime > NOTIFICATION_BACKOFF_TIME_MILLIS) {
- int iconId = android.R.drawable.stat_notify_error;
-
- Notification notification = new Notification.Builder(mContext)
- .setSmallIcon(iconId)
- .setWhen(System.currentTimeMillis())
- .setAutoCancel(true)
- .setContentTitle(title)
- .setContentText(details)
- .setStyle(new Notification.BigTextStyle().bigText(details))
- .setChannelId(CALL_QUALITY_CHANNEL_ID)
- .setOnlyAlertOnce(true)
- .build();
-
- mNotificationManager.notify(TAG, BLUETOOTH_CHOPPY_VOICE_NOTIFICATION_ID, notification);
- mNotificationLastTime = now;
- Log.d(TAG, "Call quality signal received, showing notification");
- } else {
- Log.d(TAG, "Call quality signal received, but not showing notification, "
- + "as recently notified in the last "
- + NOTIFICATION_BACKOFF_TIME_MILLIS / 1000 + " seconds");
- }
- }
-
- /**
- * close the notifications that have been emitted during the call
- */
- public void clearNotifications() {
- mNotificationManager.cancel(TAG, BLUETOOTH_CHOPPY_VOICE_NOTIFICATION_ID);
- }
-}
diff --git a/src/com/android/services/telephony/DisconnectCauseUtil.java b/src/com/android/services/telephony/DisconnectCauseUtil.java
index f243462..e17577f 100644
--- a/src/com/android/services/telephony/DisconnectCauseUtil.java
+++ b/src/com/android/services/telephony/DisconnectCauseUtil.java
@@ -654,12 +654,14 @@
break;
case android.telephony.DisconnectCause.POWER_OFF:
- // Radio is explictly powered off because the device is in airplane mode.
+ // Radio is explicitly powered off because the device's radio is off.
// TODO: Offer the option to turn the radio on, and automatically retry the call
// once network registration is complete.
- if (ImsUtil.shouldPromoteWfc(context, phoneId)) {
+ if (isRadioOffForThermalMitigation(phoneId)) {
+ resourceId = R.string.incall_error_power_off_thermal;
+ } else if (ImsUtil.shouldPromoteWfc(context, phoneId)) {
resourceId = R.string.incall_error_promote_wfc;
} else if (ImsUtil.isWfcModeWifiOnly(context, phoneId)) {
resourceId = R.string.incall_error_wfc_only_no_wireless_network;
@@ -781,7 +783,12 @@
default:
break;
}
- return resourceId == null ? "" : context.getResources().getString(resourceId);
+ return resourceId == null ? "" : context.getResources().getText(resourceId);
+ }
+
+ private static boolean isRadioOffForThermalMitigation(int phoneId) {
+ Phone phone = PhoneFactory.getPhone(phoneId);
+ return phone.isRadioOffForThermalMitigation();
}
/**
diff --git a/src/com/android/services/telephony/TelephonyConnection.java b/src/com/android/services/telephony/TelephonyConnection.java
index d745aab..78942a1 100755
--- a/src/com/android/services/telephony/TelephonyConnection.java
+++ b/src/com/android/services/telephony/TelephonyConnection.java
@@ -29,7 +29,6 @@
import android.os.Looper;
import android.os.Message;
import android.os.PersistableBundle;
-import android.telecom.BluetoothCallQualityReport;
import android.telecom.CallAudioState;
import android.telecom.Conference;
import android.telecom.Connection;
@@ -862,8 +861,6 @@
private final Set<TelephonyConnectionListener> mTelephonyListeners = Collections.newSetFromMap(
new ConcurrentHashMap<TelephonyConnectionListener, Boolean>(8, 0.9f, 1));
- private CallQualityManager mCallQualityManager;
-
protected TelephonyConnection(com.android.internal.telephony.Connection originalConnection,
String callId, @android.telecom.Call.Details.CallDirection int callDirection) {
setCallDirection(callDirection);
@@ -876,12 +873,6 @@
@Override
public void onCallEvent(String event, Bundle extras) {
switch (event) {
- case BluetoothCallQualityReport.EVENT_BLUETOOTH_CALL_QUALITY_REPORT:
- if (mCallQualityManager == null) {
- mCallQualityManager = new CallQualityManager(getPhone().getContext());
- }
- mCallQualityManager.onBluetoothCallQualityReported(extras);
- break;
default:
break;
}
@@ -3062,9 +3053,6 @@
setDisconnected(disconnectCause);
notifyDisconnected(disconnectCause);
notifyStateChanged(getState());
- if (mCallQualityManager != null) {
- mCallQualityManager.clearNotifications();
- }
}
/**
diff --git a/src/com/android/services/telephony/rcs/UceControllerManager.java b/src/com/android/services/telephony/rcs/UceControllerManager.java
index 009700f..5d0cab9 100644
--- a/src/com/android/services/telephony/rcs/UceControllerManager.java
+++ b/src/com/android/services/telephony/rcs/UceControllerManager.java
@@ -359,6 +359,33 @@
}
/**
+ * Set the timeout for contact capabilities request.
+ * @param timeoutAfterMs How long when the capabilities request will time up.
+ * @return true if this command is successful.
+ */
+ public boolean setCapabilitiesRequestTimeout(long timeoutAfterMs) throws ImsException {
+ Future<Boolean> future = mExecutorService.submit(() -> {
+ if (mUceController == null) {
+ throw new ImsException("UCE controller is null",
+ ImsException.CODE_ERROR_SERVICE_UNAVAILABLE);
+ }
+ mUceController.setCapabilitiesRequestTimeout(timeoutAfterMs);
+ return true;
+ });
+
+ try {
+ return future.get();
+ } catch (ExecutionException | InterruptedException e) {
+ Log.w(LOG_TAG, "setCapabilitiesRequestTimeout exception: " + e);
+ Throwable cause = e.getCause();
+ if (cause instanceof ImsException) {
+ throw (ImsException) cause;
+ }
+ return false;
+ }
+ }
+
+ /**
* Register the Publish state changed callback.
*
* @throws ImsException if the ImsService connected to this controller is currently down.
diff --git a/testapps/GbaTestApp/res/values-es/strings.xml b/testapps/GbaTestApp/res/values-es/strings.xml
index 269ea86..bde5d92 100644
--- a/testapps/GbaTestApp/res/values-es/strings.xml
+++ b/testapps/GbaTestApp/res/values-es/strings.xml
@@ -10,7 +10,7 @@
<string name="button_name_exit" msgid="8025683733431538975">"Salir"</string>
<string name="label_test_result" msgid="892984695972956196">"Resultado de la prueba"</string>
<string name="button_name_clear" msgid="436313515327318537">"Restablecer"</string>
- <string name="button_name_done" msgid="6030406534322497491">"Hecho"</string>
+ <string name="button_name_done" msgid="6030406534322497491">"Listo"</string>
<string name="title_activity_carrier_config" msgid="7807803900475957717">"CarrierConfigActivity"</string>
<string name="title_activity_service_config" msgid="5394662739555577279">"ServiceConfigActivity"</string>
<string name="title_activity_test_config" msgid="7585204485536359713">"TestConfigActivity"</string>
diff --git a/tests/src/com/android/phone/RcsProvisioningMonitorTest.java b/tests/src/com/android/phone/RcsProvisioningMonitorTest.java
index 57e01f0..85e190e 100644
--- a/tests/src/com/android/phone/RcsProvisioningMonitorTest.java
+++ b/tests/src/com/android/phone/RcsProvisioningMonitorTest.java
@@ -512,7 +512,7 @@
mRcsProvisioningMonitor.updateConfig(FAKE_SUB_ID_BASE, null, false);
processAllMessages();
- assertFalse(mRcsProvisioningMonitor.isRcsVolteSingleRegistrationEnabled(FAKE_SUB_ID_BASE));
+ assertTrue(mRcsProvisioningMonitor.isRcsVolteSingleRegistrationEnabled(FAKE_SUB_ID_BASE));
mRcsProvisioningMonitor.updateConfig(FAKE_SUB_ID_BASE, CONFIG_DEFAULT.getBytes(), false);
processAllMessages();
@@ -521,7 +521,10 @@
mRcsProvisioningMonitor.updateConfig(FAKE_SUB_ID_BASE,
CONFIG_SINGLE_REGISTRATION_DISABLED.getBytes(), false);
processAllMessages();
- assertFalse(mRcsProvisioningMonitor.isRcsVolteSingleRegistrationEnabled(FAKE_SUB_ID_BASE));
+ assertTrue(mRcsProvisioningMonitor.isRcsVolteSingleRegistrationEnabled(FAKE_SUB_ID_BASE));
+
+ assertNull(mRcsProvisioningMonitor.isRcsVolteSingleRegistrationEnabled(
+ FAKE_SUB_ID_BASE + 1));
}
@Test
diff --git a/tests/src/com/android/phone/ServiceStateProviderTest.java b/tests/src/com/android/phone/ServiceStateProviderTest.java
index d85976a..76d6ecc 100644
--- a/tests/src/com/android/phone/ServiceStateProviderTest.java
+++ b/tests/src/com/android/phone/ServiceStateProviderTest.java
@@ -16,22 +16,44 @@
package com.android.phone;
+import static android.content.pm.PackageManager.PERMISSION_DENIED;
+import static android.content.pm.PackageManager.PERMISSION_GRANTED;
import static android.provider.Telephony.ServiceStateTable;
+import static android.provider.Telephony.ServiceStateTable.DATA_NETWORK_TYPE;
+import static android.provider.Telephony.ServiceStateTable.DATA_REG_STATE;
+import static android.provider.Telephony.ServiceStateTable.DUPLEX_MODE;
+import static android.provider.Telephony.ServiceStateTable.VOICE_OPERATOR_NUMERIC;
+import static android.provider.Telephony.ServiceStateTable.VOICE_REG_STATE;
import static android.provider.Telephony.ServiceStateTable.getUriForSubscriptionId;
import static android.telephony.NetworkRegistrationInfo.REGISTRATION_STATE_HOME;
+import static com.android.phone.ServiceStateProvider.DATA_ROAMING_TYPE;
+
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertThrows;
import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.ArgumentMatchers.nullable;
import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+import android.Manifest;
+import android.app.AppOpsManager;
import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
import android.content.pm.ProviderInfo;
import android.database.ContentObserver;
import android.database.Cursor;
+import android.location.LocationManager;
import android.net.Uri;
+import android.os.Build;
+import android.os.UserHandle;
import android.telephony.AccessNetworkConstants;
import android.telephony.NetworkRegistrationInfo;
import android.telephony.ServiceState;
@@ -40,8 +62,13 @@
import android.test.mock.MockContentResolver;
import android.test.suitebuilder.annotation.SmallTest;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
import org.junit.Before;
import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
/**
* Tests for simple queries of ServiceStateProvider.
@@ -53,41 +80,18 @@
* runtest --path tests/src/com/android/phone/ServiceStateProviderTest.java \
* --test-method testGetServiceState
*/
+@RunWith(AndroidJUnit4.class)
public class ServiceStateProviderTest {
private static final String TAG = "ServiceStateProviderTest";
- private Context mContext;
private MockContentResolver mContentResolver;
private ServiceState mTestServiceState;
private ServiceState mTestServiceStateForSubId1;
- private final String[] mTestProjection =
- {
- ServiceStateTable.VOICE_REG_STATE,
- ServiceStateTable.DATA_REG_STATE,
- ServiceStateProvider.VOICE_OPERATOR_ALPHA_LONG,
- ServiceStateProvider.VOICE_OPERATOR_ALPHA_SHORT,
- ServiceStateTable.VOICE_OPERATOR_NUMERIC,
- ServiceStateProvider.DATA_OPERATOR_ALPHA_LONG,
- ServiceStateProvider.DATA_OPERATOR_ALPHA_SHORT,
- ServiceStateProvider.DATA_OPERATOR_NUMERIC,
- ServiceStateTable.IS_MANUAL_NETWORK_SELECTION,
- ServiceStateProvider.RIL_VOICE_RADIO_TECHNOLOGY,
- ServiceStateProvider.RIL_DATA_RADIO_TECHNOLOGY,
- ServiceStateProvider.CSS_INDICATOR,
- ServiceStateProvider.NETWORK_ID,
- ServiceStateProvider.SYSTEM_ID,
- ServiceStateProvider.CDMA_ROAMING_INDICATOR,
- ServiceStateProvider.CDMA_DEFAULT_ROAMING_INDICATOR,
- ServiceStateProvider.CDMA_ERI_ICON_INDEX,
- ServiceStateProvider.CDMA_ERI_ICON_MODE,
- ServiceStateProvider.IS_EMERGENCY_ONLY,
- ServiceStateProvider.IS_USING_CARRIER_AGGREGATION,
- ServiceStateProvider.OPERATOR_ALPHA_LONG_RAW,
- ServiceStateProvider.OPERATOR_ALPHA_SHORT_RAW,
- ServiceStateTable.DATA_NETWORK_TYPE,
- ServiceStateTable.DUPLEX_MODE,
- };
+ @Mock Context mContext;
+ @Mock AppOpsManager mAppOpsManager;
+ @Mock LocationManager mLocationManager;
+ @Mock PackageManager mPackageManager;
// Exception used internally to verify if the Resolver#notifyChange has been called.
private class TestNotifierException extends RuntimeException {
@@ -98,7 +102,11 @@
@Before
public void setUp() throws Exception {
- mContext = mock(Context.class);
+ MockitoAnnotations.initMocks(this);
+ mockSystemService(AppOpsManager.class, mAppOpsManager, Context.APP_OPS_SERVICE);
+ mockSystemService(LocationManager.class, mLocationManager, Context.LOCATION_SERVICE);
+ doReturn(mPackageManager).when(mContext).getPackageManager();
+
mContentResolver = new MockContentResolver() {
@Override
public void notifyChange(Uri uri, ContentObserver observer, boolean syncToNetwork) {
@@ -141,62 +149,165 @@
providerInfo.authority = "service-state";
provider.attachInfoForTesting(mContext, providerInfo);
mContentResolver.addProvider("service-state", provider);
- }
- @Test
- @SmallTest
- public void testQueryServiceStateWithNoSubId() {
- // Verify that when calling query with no subId in the uri the default ServiceState is
- // returned.
- // In this case the subId is set to 0 and the expected service state is
- // mTestServiceState.
- verifyServiceStateForSubId(ServiceStateTable.CONTENT_URI, mTestServiceState);
- }
-
- @Test
- @SmallTest
- public void testGetServiceStateWithDefaultSubId() {
- // Verify that when calling with the DEFAULT_SUBSCRIPTION_ID the correct ServiceState is
- // returned
- // In this case the subId is set to 0 and the expected service state is
- // mTestServiceState.
- verifyServiceStateForSubId(
- getUriForSubscriptionId(SubscriptionManager.DEFAULT_SUBSCRIPTION_ID),
- mTestServiceState);
+ // By default, test with app target R, no READ_PRIVILEGED_PHONE_STATE permission
+ setTargetSdkVersion(Build.VERSION_CODES.R);
+ setCanReadPrivilegedPhoneState(false);
}
/**
- * Test querying the service state for a given subId
+ * Verify that when calling query with no subId in the uri the default ServiceState is returned.
+ * In this case the subId is set to 0 and the expected service state is mTestServiceState.
*/
@Test
@SmallTest
- public void testGetServiceStateForSubId() {
- // Verify that when calling with a specific subId the correct ServiceState is returned
- // In this case the subId is set to 1 and the expected service state is
- // mTestServiceStateForSubId1
- verifyServiceStateForSubId(getUriForSubscriptionId(1), mTestServiceStateForSubId1);
+ public void testQueryServiceState_withNoSubId_withoutLocation() {
+ setLocationPermissions(false);
+
+ verifyServiceStateForSubId(ServiceStateTable.CONTENT_URI, mTestServiceState,
+ false /*hasLocation*/);
}
- private void verifyServiceStateForSubId(Uri uri, ServiceState ss) {
- Cursor cursor = mContentResolver.query(uri, mTestProjection, "",
+ @Test
+ @SmallTest
+ public void testQueryServiceState_withNoSubId_withLocation() {
+ setLocationPermissions(true);
+
+ verifyServiceStateForSubId(ServiceStateTable.CONTENT_URI, mTestServiceState,
+ true /*hasLocation*/);
+ }
+
+ /**
+ * Verify that when calling with the DEFAULT_SUBSCRIPTION_ID the correct ServiceState is
+ * returned. In this case the subId is set to 0 and the expected service state is
+ * mTestServiceState.
+ */
+ @Test
+ @SmallTest
+ public void testGetServiceState_withDefaultSubId_withoutLocation() {
+ setLocationPermissions(false);
+
+ verifyServiceStateForSubId(
+ getUriForSubscriptionId(SubscriptionManager.DEFAULT_SUBSCRIPTION_ID),
+ mTestServiceState, false /*hasLocation*/);
+ }
+
+ @Test
+ @SmallTest
+ public void testGetServiceState_withDefaultSubId_withLocation() {
+ setLocationPermissions(true);
+
+ verifyServiceStateForSubId(
+ getUriForSubscriptionId(SubscriptionManager.DEFAULT_SUBSCRIPTION_ID),
+ mTestServiceState, true /*hasLocation*/);
+ }
+
+ /**
+ * Verify that when calling with a specific subId the correct ServiceState is returned. In this
+ * case the subId is set to 1 and the expected service state is mTestServiceStateForSubId1
+ */
+ @Test
+ @SmallTest
+ public void testGetServiceStateForSubId_withoutLocation() {
+ setLocationPermissions(false);
+
+ verifyServiceStateForSubId(getUriForSubscriptionId(1), mTestServiceStateForSubId1,
+ false /*hasLocation*/);
+ }
+
+ @Test
+ @SmallTest
+ public void testGetServiceStateForSubId_withLocation() {
+ setLocationPermissions(true);
+
+ verifyServiceStateForSubId(getUriForSubscriptionId(1), mTestServiceStateForSubId1,
+ true /*hasLocation*/);
+ }
+
+ /**
+ * Verify that apps target S+ without READ_PRIVILEGED_PHONE_STATE permission can only access
+ * the public columns of ServiceStateTable.
+ */
+ @Test
+ public void testQueryAllColumns_targetS_noReadPrivilege() {
+ setTargetSdkVersion(Build.VERSION_CODES.S);
+ setCanReadPrivilegedPhoneState(false);
+
+ verifyServiceStateWithPublicColumns(mTestServiceState, null /*projection*/);
+ }
+
+ /**
+ * Verify that apps target S+ without READ_PRIVILEGED_PHONE_STATE permission try to access
+ * non-public columns should throw IllegalArgumentException.
+ */
+ @Test
+ public void testQueryNonPublicColumn_targetS_noReadPrivilege() {
+ setTargetSdkVersion(Build.VERSION_CODES.S);
+ setCanReadPrivilegedPhoneState(false);
+
+ // DATA_ROAMING_TYPE is a non-public column
+ String[] projection = new String[]{DATA_ROAMING_TYPE};
+
+ assertThrows(IllegalArgumentException.class,
+ () -> verifyServiceStateWithPublicColumns(mTestServiceState, projection));
+ }
+
+ /**
+ * Verify that apps target S+ with READ_PRIVILEGED_PHONE_STATE and location permissions should
+ * be able to access all columns.
+ */
+ @Test
+ public void testQueryAllColumn_targetS_withAllPermission() {
+ setTargetSdkVersion(Build.VERSION_CODES.S);
+ setCanReadPrivilegedPhoneState(true);
+ setLocationPermissions(true);
+
+ verifyServiceStateForSubId(
+ getUriForSubscriptionId(SubscriptionManager.DEFAULT_SUBSCRIPTION_ID),
+ mTestServiceState, true /*hasPermission*/);
+ }
+
+ private void verifyServiceStateWithPublicColumns(ServiceState ss, String[] projection) {
+ try (Cursor cursor = mContentResolver.query(ServiceStateTable.CONTENT_URI, projection, null,
+ null)) {
+ assertNotNull(cursor);
+ assertEquals(cursor.getColumnCount(), ServiceStateProvider.PUBLIC_COLUMNS.length);
+
+ cursor.moveToFirst();
+ assertEquals(ss.getVoiceRegState(),
+ cursor.getInt(cursor.getColumnIndex(VOICE_REG_STATE)));
+ assertEquals(ss.getDataRegistrationState(),
+ cursor.getInt(cursor.getColumnIndex(DATA_REG_STATE)));
+ assertEquals(ss.getOperatorNumeric(),
+ cursor.getString(cursor.getColumnIndex(VOICE_OPERATOR_NUMERIC)));
+ assertEquals(ss.getDataNetworkType(),
+ cursor.getInt(cursor.getColumnIndex(DATA_NETWORK_TYPE)));
+ assertEquals(ss.getDuplexMode(), cursor.getInt(cursor.getColumnIndex(DUPLEX_MODE)));
+ }
+ }
+
+ private void verifyServiceStateForSubId(Uri uri, ServiceState ss, boolean hasLocation) {
+ Cursor cursor = mContentResolver.query(uri, ServiceStateProvider.ALL_COLUMNS, "",
null, null);
assertNotNull(cursor);
cursor.moveToFirst();
final int voiceRegState = ss.getState();
final int dataRegState = ss.getDataRegistrationState();
- final String voiceOperatorAlphaLong = ss.getOperatorAlphaLong();
- final String voiceOperatorAlphaShort = ss.getOperatorAlphaShort();
- final String voiceOperatorNumeric = ss.getOperatorNumeric();
- final String dataOperatorAlphaLong = ss.getOperatorAlphaLong();
- final String dataOperatorAlphaShort = ss.getOperatorAlphaShort();
- final String dataOperatorNumeric = ss.getOperatorNumeric();
+ final int voiceRoamingType = ss.getVoiceRoamingType();
+ final int dataRoamingType = ss.getDataRoamingType();
+ final String voiceOperatorAlphaLong = hasLocation ? ss.getOperatorAlphaLong() : null;
+ final String voiceOperatorAlphaShort = hasLocation ? ss.getOperatorAlphaShort() : null;
+ final String voiceOperatorNumeric = hasLocation ? ss.getOperatorNumeric() : null;
+ final String dataOperatorAlphaLong = hasLocation ? ss.getOperatorAlphaLong() : null;
+ final String dataOperatorAlphaShort = hasLocation ? ss.getOperatorAlphaShort() : null;
+ final String dataOperatorNumeric = hasLocation ? ss.getOperatorNumeric() : null;
final int isManualNetworkSelection = (ss.getIsManualSelection()) ? 1 : 0;
final int rilVoiceRadioTechnology = ss.getRilVoiceRadioTechnology();
final int rilDataRadioTechnology = ss.getRilDataRadioTechnology();
final int cssIndicator = ss.getCssIndicator();
- final int networkId = ss.getCdmaNetworkId();
- final int systemId = ss.getCdmaSystemId();
+ final int networkId = hasLocation ? ss.getCdmaNetworkId() : ServiceState.UNKNOWN_ID;
+ final int systemId = hasLocation ? ss.getCdmaSystemId() : ServiceState.UNKNOWN_ID;
final int cdmaRoamingIndicator = ss.getCdmaRoamingIndicator();
final int cdmaDefaultRoamingIndicator = ss.getCdmaDefaultRoamingIndicator();
final int cdmaEriIconIndex = ss.getCdmaEriIconIndex();
@@ -210,28 +321,30 @@
assertEquals(voiceRegState, cursor.getInt(0));
assertEquals(dataRegState, cursor.getInt(1));
- assertEquals(voiceOperatorAlphaLong, cursor.getString(2));
- assertEquals(voiceOperatorAlphaShort, cursor.getString(3));
- assertEquals(voiceOperatorNumeric, cursor.getString(4));
- assertEquals(dataOperatorAlphaLong, cursor.getString(5));
- assertEquals(dataOperatorAlphaShort, cursor.getString(6));
- assertEquals(dataOperatorNumeric, cursor.getString(7));
- assertEquals(isManualNetworkSelection, cursor.getInt(8));
- assertEquals(rilVoiceRadioTechnology, cursor.getInt(9));
- assertEquals(rilDataRadioTechnology, cursor.getInt(10));
- assertEquals(cssIndicator, cursor.getInt(11));
- assertEquals(networkId, cursor.getInt(12));
- assertEquals(systemId, cursor.getInt(13));
- assertEquals(cdmaRoamingIndicator, cursor.getInt(14));
- assertEquals(cdmaDefaultRoamingIndicator, cursor.getInt(15));
- assertEquals(cdmaEriIconIndex, cursor.getInt(16));
- assertEquals(cdmaEriIconMode, cursor.getInt(17));
- assertEquals(isEmergencyOnly, cursor.getInt(18));
- assertEquals(isUsingCarrierAggregation, cursor.getInt(19));
- assertEquals(operatorAlphaLongRaw, cursor.getString(20));
- assertEquals(operatorAlphaShortRaw, cursor.getString(21));
- assertEquals(dataNetworkType, cursor.getInt(22));
- assertEquals(duplexMode, cursor.getInt(23));
+ assertEquals(voiceRoamingType, cursor.getInt(2));
+ assertEquals(dataRoamingType, cursor.getInt(3));
+ assertEquals(voiceOperatorAlphaLong, cursor.getString(4));
+ assertEquals(voiceOperatorAlphaShort, cursor.getString(5));
+ assertEquals(voiceOperatorNumeric, cursor.getString(6));
+ assertEquals(dataOperatorAlphaLong, cursor.getString(7));
+ assertEquals(dataOperatorAlphaShort, cursor.getString(8));
+ assertEquals(dataOperatorNumeric, cursor.getString(9));
+ assertEquals(isManualNetworkSelection, cursor.getInt(10));
+ assertEquals(rilVoiceRadioTechnology, cursor.getInt(11));
+ assertEquals(rilDataRadioTechnology, cursor.getInt(12));
+ assertEquals(cssIndicator, cursor.getInt(13));
+ assertEquals(networkId, cursor.getInt(14));
+ assertEquals(systemId, cursor.getInt(15));
+ assertEquals(cdmaRoamingIndicator, cursor.getInt(16));
+ assertEquals(cdmaDefaultRoamingIndicator, cursor.getInt(17));
+ assertEquals(cdmaEriIconIndex, cursor.getInt(18));
+ assertEquals(cdmaEriIconMode, cursor.getInt(19));
+ assertEquals(isEmergencyOnly, cursor.getInt(20));
+ assertEquals(isUsingCarrierAggregation, cursor.getInt(21));
+ assertEquals(operatorAlphaLongRaw, cursor.getString(22));
+ assertEquals(operatorAlphaShortRaw, cursor.getString(23));
+ assertEquals(dataNetworkType, cursor.getInt(24));
+ assertEquals(duplexMode, cursor.getInt(25));
}
/**
@@ -370,4 +483,50 @@
}
return false;
}
+
+ private void setLocationPermissions(boolean hasPermission) {
+ if (!hasPermission) {
+ // System location off, LocationAccessPolicy#checkLocationPermission returns DENIED_SOFT
+ when(mLocationManager.isLocationEnabledForUser(any(UserHandle.class)))
+ .thenReturn(false);
+ } else {
+ // Turn on all to let LocationAccessPolicy#checkLocationPermission returns ALLOWED
+ when(mContext.checkPermission(eq(Manifest.permission.ACCESS_FINE_LOCATION),
+ anyInt(), anyInt())).thenReturn(PackageManager.PERMISSION_GRANTED);
+
+ when(mContext.checkPermission(eq(Manifest.permission.ACCESS_COARSE_LOCATION),
+ anyInt(), anyInt())).thenReturn(PackageManager.PERMISSION_GRANTED);
+
+ when(mAppOpsManager.noteOpNoThrow(eq(AppOpsManager.OPSTR_FINE_LOCATION),
+ anyInt(), anyString(), nullable(String.class), nullable(String.class)))
+ .thenReturn(AppOpsManager.MODE_ALLOWED);
+ when(mAppOpsManager.noteOpNoThrow(eq(AppOpsManager.OPSTR_COARSE_LOCATION),
+ anyInt(), anyString(), nullable(String.class), nullable(String.class)))
+ .thenReturn(AppOpsManager.MODE_ALLOWED);
+
+ when(mLocationManager.isLocationEnabledForUser(any(UserHandle.class))).thenReturn(true);
+ when(mContext.checkPermission(eq(Manifest.permission.INTERACT_ACROSS_USERS_FULL),
+ anyInt(), anyInt())).thenReturn(PackageManager.PERMISSION_GRANTED);
+ }
+ }
+
+ private <T> void mockSystemService(Class<T> clazz , T obj, String serviceName) {
+ when(mContext.getSystemServiceName(eq(clazz))).thenReturn(serviceName);
+ when(mContext.getSystemService(eq(serviceName))).thenReturn(obj);
+ }
+
+ private void setTargetSdkVersion(int version) {
+ ApplicationInfo testAppInfo = new ApplicationInfo();
+ testAppInfo.targetSdkVersion = version;
+ try {
+ when(mPackageManager.getApplicationInfoAsUser(anyString(), anyInt(), any()))
+ .thenReturn(testAppInfo);
+ } catch (Exception ignored) {
+ }
+ }
+
+ private void setCanReadPrivilegedPhoneState(boolean granted) {
+ doReturn(granted ? PERMISSION_GRANTED : PERMISSION_DENIED).when(mContext)
+ .checkCallingOrSelfPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE);
+ }
}
diff --git a/tests/src/com/android/phone/SimPhonebookProviderTest.java b/tests/src/com/android/phone/SimPhonebookProviderTest.java
index 4ab92a7..f897fac 100644
--- a/tests/src/com/android/phone/SimPhonebookProviderTest.java
+++ b/tests/src/com/android/phone/SimPhonebookProviderTest.java
@@ -51,6 +51,7 @@
import androidx.test.rule.provider.ProviderTestRule;
import com.android.internal.telephony.IIccPhoneBook;
+import com.android.internal.telephony.uicc.AdnCapacity;
import com.android.internal.telephony.uicc.AdnRecord;
import com.android.internal.telephony.uicc.IccConstants;
@@ -1394,15 +1395,18 @@
}
@Override
- public boolean updateAdnRecordsInEfBySearch(int efid, String oldTag, String oldPhoneNumber,
- String newTag, String newPhoneNumber, String pin2) {
- return updateAdnRecordsInEfBySearchForSubscriber(
- mDefaultSubscriptionId, efid,
- oldTag, oldPhoneNumber, newTag, newPhoneNumber, pin2);
+ public boolean updateAdnRecordsInEfBySearchForSubscriber(int subId, int efid,
+ ContentValues values, String pin2) {
+ final String oldTag = values.getAsString(IccProvider.STR_TAG);
+ final String oldPhoneNumber = values.getAsString(IccProvider.STR_NUMBER);
+ final String newTag = values.getAsString(IccProvider.STR_NEW_TAG);
+ final String newPhoneNumber = values.getAsString(IccProvider.STR_NEW_NUMBER);
+ return updateAdnRecordsInEfBySearchForSubscriber(subId, efid, oldTag, oldPhoneNumber,
+ newTag, newPhoneNumber, pin2);
+
}
- @Override
- public boolean updateAdnRecordsInEfBySearchForSubscriber(int subId, int efid, String oldTag,
+ private boolean updateAdnRecordsInEfBySearchForSubscriber(int subId, int efid, String oldTag,
String oldPhoneNumber, String newTag, String newPhoneNumber, String pin2) {
if (!oldTag.isEmpty() || !oldPhoneNumber.isEmpty()) {
throw new IllegalArgumentException(
@@ -1413,14 +1417,16 @@
}
@Override
- public boolean updateAdnRecordsInEfByIndex(int efid, String newTag, String newPhoneNumber,
- int index, String pin2) {
- return updateAdnRecordsInEfByIndexForSubscriber(mDefaultSubscriptionId,
- efid, newTag, newPhoneNumber, index, pin2);
+ public boolean updateAdnRecordsInEfByIndexForSubscriber(int subId, int efid,
+ ContentValues values, int index, String pin2) {
+ final String newTag = values.getAsString(IccProvider.STR_NEW_TAG);
+ final String newPhoneNumber = values.getAsString(IccProvider.STR_NEW_NUMBER);
+ return updateAdnRecordsInEfByIndexForSubscriber(subId, efid, newTag, newPhoneNumber,
+ index, pin2);
+
}
- @Override
- public boolean updateAdnRecordsInEfByIndexForSubscriber(int subId, int efid, String newTag,
+ private boolean updateAdnRecordsInEfByIndexForSubscriber(int subId, int efid, String newTag,
String newPhoneNumber, int index, String pin2) {
AdnRecord[] records = mRecords.computeIfAbsent(Pair.create(subId, efid), unused ->
createEmptyRecords(efid, 100));
@@ -1443,6 +1449,11 @@
int count = mRecords.get(key).length;
return new int[]{recordSize, recordSize * count, count};
}
+
+ @Override
+ public AdnCapacity getAdnRecordsCapacityForSubscriber(int subId) {
+ return new AdnCapacity(0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+ }
}
/**