Merge "Key the conference participants using the Endpoint" into nyc-mr1-dev
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index ddc2dbe..39c5385 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -716,14 +716,15 @@
android:mimeType="vnd.android.cursor.dir/voicemails"/>
</intent-filter>
</receiver>
- <service
- android:name="com.android.phone.vvm.omtp.sync.OmtpVvmSyncService"
- android:exported="false" />
<service
android:name="com.android.phone.vvm.omtp.sms.OmtpProvisioningService"
android:exported="false" />
+ <service
+ android:name="com.android.phone.vvm.omtp.scheduling.TaskSchedulerService"
+ android:exported="false" />
+
<receiver android:name="com.android.phone.vvm.omtp.VvmPackageInstallReceiver"
androidprv:systemUserOnly="true">
<intent-filter>
@@ -732,5 +733,11 @@
<data android:scheme="package"/>
</intent-filter>
</receiver>
+
+ <activity android:name=".settings.VoicemailChangePinActivity"
+ android:exported="false"
+ android:theme="@style/DialerSettingsLight"
+ android:windowSoftInputMode="stateVisible|adjustResize">
+ </activity>
</application>
</manifest>
diff --git a/res/layout/voicemail_change_pin.xml b/res/layout/voicemail_change_pin.xml
new file mode 100644
index 0000000..ba0d823
--- /dev/null
+++ b/res/layout/voicemail_change_pin.xml
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:gravity="center_horizontal"
+ android:orientation="vertical">
+ <!-- header text ('Enter Pin') -->
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:layout_weight="1"
+ android:orientation="vertical"
+ android:padding="48dp">
+ <TextView
+ android:id="@+id/headerText"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:gravity="center"
+ android:lines="2"
+ android:textAppearance="@android:style/TextAppearance.DeviceDefault.DialogWindowTitle"
+ android:accessibilityLiveRegion="polite"/>
+
+ <!-- hint text ('PIN too short') -->
+ <TextView
+ android:id="@+id/hintText"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:gravity="center"
+ android:lines="2" />
+
+ <!-- error text ('PIN too short') -->
+ <TextView
+ android:id="@+id/errorText"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:gravity="center"
+ android:lines="2"
+ android:textColor="@android:color/holo_red_dark"/>
+
+ <!-- Password entry field -->
+ <EditText
+ android:id="@+id/pin_entry"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:gravity="center"
+ android:imeOptions="actionNext|flagNoExtractUi"
+ android:inputType="numberPassword"
+ android:textSize="24sp"/>
+ </LinearLayout>
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:clipChildren="false"
+ android:clipToPadding="false"
+ android:gravity="end"
+ android:orientation="horizontal">
+
+ <!-- left : cancel -->
+ <Button
+ android:id="@+id/cancel_button"
+ android:layout_width="0dp"
+ android:layout_weight="1"
+ android:layout_height="wrap_content"
+ android:text="@string/change_pin_cancel_label"/>
+
+ <!-- right : continue -->
+ <Button
+ android:id="@+id/next_button"
+ android:layout_width="0dp"
+ android:layout_weight="1"
+ android:layout_height="wrap_content"
+ android:text="@string/change_pin_continue_label"/>
+
+ </LinearLayout>
+</LinearLayout>
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index 8bd5c69..8383eb4 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"Jou diensverskaffer"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Ou PIN"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Nuwe PIN"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"Verander tans PIN"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Die nuwe PIN is te kort."</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Die nuwe PIN is te lank."</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Die nuwe PIN is te swak. \'n Sterk wagwoord moenie daaropvolgend wees of syfers bevat wat herhaal nie."</string>
@@ -459,6 +460,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Kan nie oproep(e) vrystel nie."</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Kan nie oproepe aanhou nie."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Koppel aan \'n draadlose netwerk om \'n oproep te maak."</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Noodoproep"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Skakel tans radio aan…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Geen sein nie. Probeer tans weer …"</string>
@@ -553,6 +556,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Vibreer"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Vibreer"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Visuele stemboodskapdiens"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Verander PIN"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Klank"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"Luitoon en vibreer"</string>
@@ -571,4 +576,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"Kon nie die boodskap dekodeer nie."</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"\'n SIM-kaart het jou diens geaktiveer en jou foon se swerwingvermoëns opgedateer."</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Daar is te veel aktiewe oproepe. Beëindig of voeg asseblief bestaande oproepe saam voordat jy \'n nuwe een maak."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index 152ae85..39aaa72 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"የእርስዎ ድምጸ ተያያዥ ሞደም"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"የቀድሞ ፒን"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"አዲስ ፒን"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"ፒን በመቀየር ላይ"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"አዲሱ ፒን በጣም አጭር ነው።"</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"አዲሱ ፒን በጣም ረጅም ነው።"</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"አዲሱ ፒን በጣም ደካማ ነው። ጠንካራ የይለፍ ቃል ተከታታይ ቅጥልጥል ወይም ተደጋጋሚ አኃዞች ሊኖሩት አይገባም።"</string>
@@ -455,6 +456,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"ጥሪ(ዎች)ን መልቀቅ አልተቻለም።"</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"ጥሪዎችን መያዝ አልተቻለም።"</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"ጥሪ ለማድረግ ወደ ሽቦ አልባ አውታረ መረብ ያገናኙ።"</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"የአደጋ ጊዜ ጥሪ"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"ሬዲዮ ክፈት"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"ምንም አገልግሎት የለም። ዳግም በመሞከር ላይ…"</string>
@@ -549,6 +552,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"ንዘር"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"ንዘር"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"ምስላዊ የድመጽ መልዕከት"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"ፒን ቀይር"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"ድምፅ"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"የደወል ቅላጼ እና ንዘረት"</string>
@@ -567,4 +572,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"መልዕክቱን በማመሳጠር ላይ ስህተት ነበር።"</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"አንድ ሲም ካርድ አገልግሎትዎን ገቢር አድርጎታል፣ እንዲሁም የስልክዎን የማስተላለፍ ችሎታዎችን አዘምኗል።"</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"እጅግ በጣም ብዙ ንቁ ጥሪዎች አሉ። እባክዎ አዲስ ከማስቀመጥዎ በፊት ያሉትን ጥሪዎች ይጨርሱ ወይም ያዋህዱ።"</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index cffda11..c83f035 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"مشغل شبكة الجوّال"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"رقم التعريف الشخصي القديم"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"رقم التعريف الشخصي الجديد"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"تغيير رقم التعريف الشخصي"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"رقم التعريف الشخصي الجديد قصير جدًا."</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"رقم التعريف الشخصي الجديد طويل جدًا."</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"رقم التعريف الشخصي الجديد ضعيف جدًا. لا ينبغي أن تكون كلمة المرور القوية عبارة عن تسلسل متتالٍ أو أرقام متكررة."</string>
@@ -455,6 +456,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"يتعذر تحرير المكالمات."</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"يتعذر وضع المكالمات قيد الانتظار."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"اتصل بشبكة لاسلكية لإجراء مكالمة."</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"مكالمة الطوارئ"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"جارٍ تشغيل اللاسلكي..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"لا تتوفر خدمة. جارٍ إعادة المحاولة…"</string>
@@ -561,6 +564,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"الاهتزاز"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"الاهتزاز"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"بريد صوتي مرئي"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"تغيير رقم التعريف الشخصي"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"الصوت"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"نغمة الرنين والاهتزاز"</string>
@@ -579,4 +584,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"حدث خطأ أثناء فك ترميز الرسالة."</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"نشطت شريحة SIM خدمتك وحدّثت إمكانات التجوال لهاتفك."</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"هناك الكثير من المكالمات النشطة. يرجى إنهاء أو دمج المكالمات الموجودة قبل إجراء مكالمة جديدة."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-az-rAZ/strings.xml b/res/values-az-rAZ/strings.xml
index 9fc08dd..a7dea72 100644
--- a/res/values-az-rAZ/strings.xml
+++ b/res/values-az-rAZ/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"Operatorunuz"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Köhnə PIN"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Yeni PIN"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"PIN kod dəyişdirilir"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Yeni PIN kod çox qısadır."</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Yeni PIN kod çox uzundur."</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Yeni PIN kod çox zəifdir. Güclü parol ardıcıllıqdan və ya təkrarlanan rəqəmlərdən ibarət olmamalıdır."</string>
@@ -455,6 +456,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Zəngləri buraxmaq mümkün deyil."</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Zənglər saxlanıla bilməz."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Zəng etmək üçün Wi-Fi şəbəkəsinə qoşulun."</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Təcili zəng"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Radio yandırılır ..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Xidmət yoxdur. Yenidən cəhd edilir…"</string>
@@ -549,6 +552,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Vibrasiya"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Vibrasiya"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Vizual Səsli Mesaj"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"PIN kodu dəyişin"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Səs"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"Zəng səsi & Vibrasiya"</string>
@@ -567,4 +572,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"Mesaj dekod edilən zaman xəta oldu."</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"SIM kart xidmətinizi aktivləşdirdi və telefonunuzun rominq imkanlarını güncəlləşdi."</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Burada həddindən çox aktiv zəng var. Yeni birini yerləşdirmək üçün mövcud zəngləri sonlandırın və ya birləşdirin."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index 65e3a3e..045492d 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"Вашият оператор"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Стар ПИН"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Нов ПИН"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"ПИН се променя"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Новият ПИН е твърде къс."</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Новият ПИН е твърде дълъг."</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Новият ПИН не е достатъчно надежден. Надеждната парола не бива да има последователни или повтарящи се цифри."</string>
@@ -455,6 +456,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Обаждането или съответно обажданията не могат да се освободят."</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Не може да се извършват обаждания."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Свържете се с безжична мрежа, за да осъществите обаждане."</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Спешно обаждане"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Радиото се включва…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Няма услуга. Извършва се нов опит…"</string>
@@ -549,6 +552,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Вибриране"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Вибриране"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Визуална гласова поща"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Промяна на ПИН"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Звук"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"Мелодия и вибриране"</string>
@@ -567,4 +572,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"При декодирането на съобщението възникна грешка."</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"SIM картата е активирала клетъчните ви услуги и е актуализирала възможностите за роуминг на телефона ви."</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Активните обаждания са твърде много. Моля, завършете или обединете съществуващи обаждания, преди да започнете ново."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-bn-rBD/strings.xml b/res/values-bn-rBD/strings.xml
index 5973fca..61e6ccf 100644
--- a/res/values-bn-rBD/strings.xml
+++ b/res/values-bn-rBD/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"আপনার পরিষেবা প্রদানকারী"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"পুরানো পিন"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"নতুন পিন"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"পিন পরিবর্তন করুন"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"নতুন পিনটি খুবই ছোট৷"</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"নতুন পিনটি খুবই বড়৷"</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"নতুন পিনটি খুবই দুর্বল৷ একটি শক্তিশালী পাসওয়ার্ডে ধারাবাহিক ক্রম বা পুনরাবৃত্ত সংখ্যা থাকা উচিৎ নয়৷"</string>
@@ -455,6 +456,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"কল(গুলি) কাটা যাবে না৷"</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"কলগুলি ধরে রাখা যাবে না।"</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"একটি কল করতে কোনো ওয়্যারলেস নেটওয়ার্কে সংযোগ করুন৷"</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"জরুরি কল"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"রেডিও চালু করা হচ্ছে…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"কোন পরিষেবা নেই৷ আবার চেষ্টা করা হচ্ছে..."</string>
@@ -549,6 +552,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"কম্পন"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"কম্পন"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"ভিজ্যুয়াল ভয়েসমেল"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"পিন পরিবর্তন করুন"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"শব্দ"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"রিংটোন ও কম্পন"</string>
@@ -567,4 +572,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"বার্তাটি ডিকোড করার সময় একটি ত্রুটি ঘটেছে৷"</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"একটি SIM কার্ড আপনার পরিষেবা সক্রিয় করেছে এবং আপনার ফোনের রোমিং ক্ষমতা আপডেট করা হয়েছে৷"</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"অনেকগুলি কল সক্রিয় রয়েছে। অনুগ্রহ করে একটি নতুন কল করার আগে বিদ্যমান কলগুলি কেটে দিন বা এটিকে সেই কলগুলিতে অন্তর্ভুক্ত করুন।"</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index d207d23..fc8cde4 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"EL teu operador"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"PIN antic"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"PIN nou"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"S\'està canviant el PIN"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"El PIN nou és massa curt."</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"El PIN nou és massa llarg."</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"El PIN nou no és prou segur. Les contrasenyes segures no poden contenir seqüències contínues ni dígits repetits."</string>
@@ -455,6 +456,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"No es poden alliberar trucades."</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"No es poden posar les trucades en espera."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Per fer una trucada, connecta amb una xarxa sense fil."</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Trucada d\'emergència"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"S\'està activant el senyal mòbil..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"No hi ha servei. S\'està tornant a provar..."</string>
@@ -549,6 +552,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Vibra"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Vibra"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Bústia de veu visual"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Canvia el PIN"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"So"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"So i vibració"</string>
@@ -567,4 +572,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"S\'ha produït un error en descodificar el missatge."</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"Una targeta SIM ha activat el servei, i s\'ha actualitzat la funció d\'itinerància del telèfon."</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Hi ha massa trucades actives. Finalitza\'n alguna o combina-les abans de fer-ne una de nova."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 00fd03c..36356b1 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"Váš operátor"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Starý kód PIN"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Nový kód PIN"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"Změna kódu PIN"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Nový kód PIN je příliš krátký."</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Nový kód PIN je příliš dlouhý."</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Nový kód PIN je příliš slabý. Silný kód by neměl obsahovat postupnou řadu čísel ani opakující se čísla."</string>
@@ -455,6 +456,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Hovor nelze ukončit."</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Hovory nelze podržet."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Chcete-li provést hovor, připojte se k bezdrátové síti."</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Tísňové volání"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Zapínání rádia..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Služba je nedostupná. Probíhá další pokus…"</string>
@@ -555,6 +558,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Vibrace"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Vibrace"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Vizuální hlasová schránka"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Změnit kód PIN"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Zvuk"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"Vyzvánění a vibrace"</string>
@@ -573,4 +578,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"Při dekódování zprávy došlo k chybě."</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"SIM karta aktivovala vaši službu a byly aktualizovány roamingové možnosti telefonu."</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Máte příliš mnoho aktivních hovorů. Ukončete nebo spojte stávající hovory, než zahájíte nový."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 2b7e2e8..94a291f 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"Dit mobilselskab"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Nuværende pinkode"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Ny pinkode"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"Skifter pinkoden"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Den nye pinkode er for kort."</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Den nye pinkode er for lang."</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Denne pinkode er for svag. En stærk adgangskode består ikke af en række tal og har ikke flere af de samme tal efter hinanden."</string>
@@ -461,6 +462,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Kan ikke frigive et eller flere opkald."</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Opkald kan ikke sættes i venteposition."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Opret forbindelse til et trådløst netværk for at foretage et opkald."</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Nødopkald"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Tænder for radio ..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Ingen tjeneste. Prøver igen..."</string>
@@ -555,6 +558,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Vibration"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Vibration"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Visuel telefonsvarer"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Skift pinkode"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Lyd"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"Ringetone og vibration"</string>
@@ -573,4 +578,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"Der opstod en fejl under afkodning af beskeden."</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"Et SIM-kort har aktiveret din tjeneste og opdateret telefonens roamingmuligheder."</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Der er for mange aktive opkald. Afslut et opkald, eller flet eksisterende opkald, inden du foretager et nyt."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 8f75543..e544fb5 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"Mobilfunkanbieter"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Alte PIN"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Neue PIN"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"PIN wird geändert"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Die neue PIN ist zu kurz."</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Die neue PIN ist zu lang."</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Die neue PIN ist zu unsicher. Ein sicheres Passwort sollte keine aufeinanderfolgenden oder wiederholten Zeichen enthalten."</string>
@@ -459,6 +460,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Anrufe können nicht freigegeben werden."</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Anrufe können nicht gehalten werden."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Stelle zum Telefonieren eine WLAN-Verbindung her."</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Notruf"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Mobilfunkverbindung wird aktiviert..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Kein Service. Erneuter Versuch..."</string>
@@ -553,6 +556,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Vibration"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Vibration"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Visuelle Mailbox"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"PIN ändern"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Töne"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"Klingelton & Vibration"</string>
@@ -571,4 +576,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"Beim Entschlüsseln der Nachricht ist ein Fehler aufgetreten."</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"Eine SIM-Karte hat deinen Dienst aktiviert und die Roamingfunktionen deines Smartphones aktualisiert."</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Zu viele aktive Anrufe. Beende aktive Anrufe oder führe sie zusammen, bevor du einen neuen Anruf tätigst."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index 1d52966..e992dd0 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"Ο πάροχος κινητής τηλεφωνίας"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Παλιό PIN"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Νέο PIN"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"Αλλαγή PIN σε εξέλιξη"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Το νέο PIN είναι πολύ μικρό."</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Το νέο PIN είναι πολύ μεγάλo."</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Το νέο PIN είναι πολύ αδύναμο. Ένας ισχυρός κωδικός πρόσβασης δεν θα πρέπει να αποτελείται από ακολουθίες χαρακτήρων ή επαναλαμβανόμενα ψηφία."</string>
@@ -455,6 +456,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Δεν είναι δυνατή η πραγματοποίηση κλήσεων."</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Δεν είναι δυνατή η αναμονή κλήσεων."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Συνδεθείτε σε ασύρματο δίκτυο για να πραγματοποιήσετε μια κλήση."</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Κλήσεις επείγουσας ανάγκης"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Ενεργοποίηση πομπού..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Δεν υπάρχει υπηρεσία. Νέα προσπάθεια…"</string>
@@ -549,6 +552,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Δόνηση"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Δόνηση"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Οπτικός αυτόματος τηλεφ."</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Αλλαγή PIN"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Ήχος"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"Ήχος κλήσης & δόνηση"</string>
@@ -567,4 +572,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"Παρουσιάστηκε κάποιο σφάλμα κατά την αποκωδικοποίηση του μηνύματος."</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"Μια κάρτα SIM ενεργοποίησε την υπηρεσία σας και ενημέρωσε τις δυνατότητες περιαγωγής του τηλεφώνου σας."</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Υπάρχουν πάρα πολλές ενεργές κλήσεις. Τερματίστε ή να συγχωνεύστε τις υπάρχουσες κλήσεις πριν πραγματοποιήσετε νέα."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
index fe6b526..ffdac7f 100644
--- a/res/values-en-rAU/strings.xml
+++ b/res/values-en-rAU/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"Your operator"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Old PIN"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"New PIN"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"Changing PIN"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"The new PIN is too short."</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"The new PIN is too long."</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"The new PIN is too weak. A strong password should not have a continuous sequence or repeated digits."</string>
@@ -455,6 +456,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Can\'t release call(s)."</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Can\'t hold calls."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Connect to a wireless network to make a call."</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Emergency call"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Turning on radio…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"No service. Trying again…"</string>
@@ -549,6 +552,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Vibrate"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Vibrate"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Visual Voicemail"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Change PIN"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Sound"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"Ringtone & Vibrate"</string>
@@ -567,4 +572,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"There was an error while decoding the message."</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"A SIM card has activated your service and updated your phone\'s roaming capabilities."</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"There are too many active calls. Please end or merge existing calls before placing a new one."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index fe6b526..ffdac7f 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"Your operator"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Old PIN"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"New PIN"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"Changing PIN"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"The new PIN is too short."</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"The new PIN is too long."</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"The new PIN is too weak. A strong password should not have a continuous sequence or repeated digits."</string>
@@ -455,6 +456,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Can\'t release call(s)."</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Can\'t hold calls."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Connect to a wireless network to make a call."</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Emergency call"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Turning on radio…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"No service. Trying again…"</string>
@@ -549,6 +552,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Vibrate"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Vibrate"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Visual Voicemail"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Change PIN"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Sound"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"Ringtone & Vibrate"</string>
@@ -567,4 +572,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"There was an error while decoding the message."</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"A SIM card has activated your service and updated your phone\'s roaming capabilities."</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"There are too many active calls. Please end or merge existing calls before placing a new one."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index fe6b526..ffdac7f 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"Your operator"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Old PIN"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"New PIN"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"Changing PIN"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"The new PIN is too short."</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"The new PIN is too long."</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"The new PIN is too weak. A strong password should not have a continuous sequence or repeated digits."</string>
@@ -455,6 +456,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Can\'t release call(s)."</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Can\'t hold calls."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Connect to a wireless network to make a call."</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Emergency call"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Turning on radio…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"No service. Trying again…"</string>
@@ -549,6 +552,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Vibrate"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Vibrate"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Visual Voicemail"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Change PIN"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Sound"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"Ringtone & Vibrate"</string>
@@ -567,4 +572,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"There was an error while decoding the message."</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"A SIM card has activated your service and updated your phone\'s roaming capabilities."</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"There are too many active calls. Please end or merge existing calls before placing a new one."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index dacf247..31bfcab 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"Tu proveedor"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"PIN anterior"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Nuevo PIN"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"Cambiando el PIN"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"El nuevo PIN es demasiado corto."</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"El nuevo PIN es demasiado largo."</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"El nuevo PIN no es muy seguro. Una contraseña segura no debería tener secuencias continuas ni dígitos repetidos."</string>
@@ -455,6 +456,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"No se puede liberar llamadas."</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"No es posible poner las llamadas en espera."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Conectarse a una red inalámbrica para hacer una llamada"</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Llamada de emergencia"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Encendiendo radio..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"No hay servicio. Vuelve a intentarlo."</string>
@@ -549,6 +552,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Vibrar"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Vibrar"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Buzón de voz visual"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Cambiar PIN"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Sonido"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"Tono y vibración"</string>
@@ -567,4 +572,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"Se produjo un error al decodificar el mensaje."</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"Una tarjeta SIM activó tu servicio y actualizó las capacidades de roaming del teléfono."</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Hay demasiadas llamadas activas. Finaliza o combina las llamadas existentes antes de realizar una llamada nueva."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 0cc1cc9..da78896 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"Tu operador"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"PIN antiguo"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"PIN nuevo"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"Cambiando PIN"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"El PIN nuevo es muy corto."</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"El PIN nuevo es muy largo."</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"El PIN nuevo no es lo bastante seguro. Una contraseña segura no debería contener secuencias continuas ni dígitos repetidos."</string>
@@ -459,6 +460,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"No se pueden hacer llamadas."</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"No se pueden retener llamadas."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Conéctate a una red inalámbrica para hacer llamadas."</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Llamada de emergencia"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Activando señal móvil…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Sin servicio. Reintentado…"</string>
@@ -553,6 +556,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Vibrar"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Vibrar"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Buzón de voz visual"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Cambiar PIN"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Sonido"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"Tono y vibración"</string>
@@ -571,4 +576,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"Se ha producido un error al decodificar el mensaje."</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"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="1556916577171457086">"Hay demasiadas llamadas activas. Finaliza o combina las llamadas que tienes antes de iniciar otra."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-et-rEE/strings.xml b/res/values-et-rEE/strings.xml
index a338c1e..acb092c 100644
--- a/res/values-et-rEE/strings.xml
+++ b/res/values-et-rEE/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"Teie operaator"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Vana PIN-kood"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Uus PIN-kood"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"PIN-koodi muutmine"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Uus PIN-kood on liiga lühike."</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Uus PIN-kood on liiga pikk."</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Uus PIN-kood on liiga nõrk. Tugevas paroolis ei tohi olla mitut järjestikust samasugust tähemärki ega korduvaid numbreid."</string>
@@ -455,6 +456,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Kõnet (kõnesid) ei saa vabastada."</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Kõnesid ei saa ootele panna."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Helistamiseks looge ühendus traadita võrguga."</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Hädaabikõne"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Raadioside sisselülitamine ..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Teenus puudub. Uuesti proovimine ..."</string>
@@ -549,6 +552,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Vibreerimine"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Vibreerimine"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Visuaalne kõnepost"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"PIN-koodi muutmine"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Heli"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"Helin ja vibratsioon"</string>
@@ -567,4 +572,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"Sõnumi dekodeerimisel ilmnes viga."</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"SIM-kaart aktiveeris teenuse ja värskendas telefoni rändlusvõimeid."</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Liiga palju aktiivseid kõnesid. Enne uue kõne tegemist lõpetage mõni olemasolev kõne või ühendage mitu kõnet omavahel."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-eu-rES/strings.xml b/res/values-eu-rES/strings.xml
index e784ddc..f7b0764 100644
--- a/res/values-eu-rES/strings.xml
+++ b/res/values-eu-rES/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"Operadorea"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"PIN kode zaharra"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"PIN kode berria"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"PIN kodea aldatzen"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Laburregia da PIN kode berria."</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Luzeegia da PIN kode berria."</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Ahulegia da PIN kode berria. Pasahitza sendoa izan dadin, ez du izan behar zenbaki-segidarik edo errepikatutako zenbakirik."</string>
@@ -461,6 +462,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Ezin dira deiak bereizi."</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Ezin dira zain utzi deiak."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Deia egiteko, konektatu haririk gabeko sare batera."</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Larrialdi-deia"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Irratia pizten…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Ez dago zerbitzurik. Berriro saiatzen…"</string>
@@ -555,6 +558,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Egin dar-dar"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Egin dar-dar"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Erantzungailu bisuala"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Aldatu PIN kodea"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Soinua"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"Tonua eta dardara"</string>
@@ -573,4 +578,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"Errore bat gertatu mezua deskodetzean."</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"SIM txartel batek zerbitzua aktibatu du eta telefonoaren ibiltaritza-gaitasunak aldatu ditu."</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Dei gehiegi daude aktibo. Amaitu edo bateratu abian diren deiak beste bat egin aurretik."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index 673f500..5db690d 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"شرکت مخابراتی شما"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"پین قدیمی"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"پین جدید"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"تغییر پین"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"پین جدید خیلی کوتاه است."</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"پین جدید خیلی طولانی است."</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"پین جدید خیلی ضعیف است. گذرواژه قوی نباید توالی از اعداد باشد یا عدد تکراری داشته باشد."</string>
@@ -455,6 +456,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"نمیتوانید تماس(ها) را آزاد کنید."</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"نگهداشتن تماسها ممکن نیست."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"برای برقراری تماس، به یک شبکه بیسیم وصل شوید"</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"تماس اضطراری"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"در حال روشن کردن رادیو..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"سرویسی در دسترس نیست. دوباره امتحان کنید..."</string>
@@ -549,6 +552,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"لرزش"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"لرزش"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"پست صوتی تصویری"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"تغییر پین"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"صدا"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"آهنگ زنگ و لرزش"</string>
@@ -567,4 +572,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"هنگام رمزگشایی پیام، خطایی روی داد."</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"یک سیمکارت سرویس شما را فعال کرده است و قابلیتهای رومینگ تلفنتان را بهروز کرده است."</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"تعداد زیادی تماس فعال وجود دارد. قبل از برقراری تماس جدید، لطفاً به تماسهای موجود پایان دهید یا آنها را ادغام کنید."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index 4a6fa68..9e80d27 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"Operaattorisi"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Vanha PIN-koodi"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Uusi PIN-koodi"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"PIN-koodia vaihdetaan"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Uusi PIN-koodi on liian lyhyt."</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Uusi PIN-koodi on liian pitkä."</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Uusi PIN-koodi on liian heikko. Vahvassa salasanassa ei saa olla peräkkäisiä tai toistuvia numeroita."</string>
@@ -459,6 +460,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Puheluja ei voi vapauttaa."</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Puhelujen pito ei onnistu."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Yhdistä langattomaan verkkoon, jos haluat soittaa puhelun."</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Hätäpuhelu"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Käynnistetään radiota…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Ei yhteyttä. Yritetään uudelleen…"</string>
@@ -553,6 +556,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Värinä"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Värinä"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Visuaalinen puhelinvastaaja"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Vaihda PIN-koodi"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Ääni"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"Soittoääni ja värinä"</string>
@@ -571,4 +576,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"Virhe purettaessa viestiä."</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"SIM-kortti on aktivoinut palvelusi ja päivittänyt puhelimesi roaming-toiminnot."</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Aktiivisia puheluja on liian monta. Lopeta puheluita tai yhdistä niitä ennen uuden puhelun aloittamista."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index d1b91fb..830dbeb 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"Votre fournisseur de services"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Ancien NIP"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Nouveau NIP"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"Modification du NIP en cours…"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Le nouveau NIP est trop court."</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Le nouveau NIP est trop long."</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Le nouveau NIP n\'est pas assez robuste. Il ne devrait pas contenir de séquences continues ni de chiffres répétés."</string>
@@ -459,6 +460,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Impossible de libérer l\'appel ou les appels."</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Impossible de mettre les appels en attente."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Connectez-vous à un réseau Wi-Fi pour faire un appel."</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Appel d\'urgence"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Activation du signal radio..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Aucun service. Nouvel essai en cours..."</string>
@@ -553,6 +556,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Vibreur"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Vibreur"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Messagerie vocale visuelle"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Modifier le NIP"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Son"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"Sonnerie et vibreur"</string>
@@ -571,4 +576,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"Une erreur s\'est produite lors du décodage du message."</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"Une carte SIM a activé votre service et mis à jour les fonctionnalités d\'itinérance de votre téléphone."</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Il y a trop d\'appels actifs. Veuillez mettre fin aux appels existants ou les fusionner avant d\'en passer un nouveau."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 75116ec..275ef60 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"Votre opérateur"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Ancien code"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Nouveau code"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"Modification du code..."</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Le nouveau code est trop court."</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Le nouveau code est trop long."</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Le nouveau code n\'est pas suffisamment sécurisé. Pour qu\'un mot de passe soit sûr, il ne doit pas contenir de chiffres qui se suivent ou qui se répètent."</string>
@@ -455,6 +456,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Impossible de lancer les appels."</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Impossible de mettre les appels en attente."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Connectez-vous à un réseau sans fil pour passer un appel."</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Appel d\'urgence"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Activation du signal radio..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Aucun service disponible. Nouvelle tentative en cours…"</string>
@@ -549,6 +552,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Vibreur"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Vibreur"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Messagerie vocale visuelle"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Modifier le code"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Sonnerie"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"Sonnerie et vibreur"</string>
@@ -567,4 +572,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"Une erreur s\'est produite lors du décodage du message."</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"Votre service a été activé et les fonctionnalités d\'itinérance de votre téléphone ont été mises à jour via une carte SIM."</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Il y a trop d\'appels actifs. Pour passer un autre appel, vous devez mettre fin aux appels existants ou fusionner ces derniers."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-gl-rES/strings.xml b/res/values-gl-rES/strings.xml
index 54df51f..a2e0ac3 100644
--- a/res/values-gl-rES/strings.xml
+++ b/res/values-gl-rES/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"O teu operador"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"PIN antigo"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"PIN novo"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"Cambiando PIN"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"O PIN novo é demasiado curto."</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"O PIN novo é demasiado longo."</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"O novo PIN é pouco seguro. Para que sexa seguro, non debe conter secuencias continuas nin díxitos repetidos."</string>
@@ -455,6 +456,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Non se poden desconectar as chamadas."</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Non se poden poñer as chamadas en espera."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Conéctate a unha rede sen fíos para facer unha chamada."</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Chamada de emerxencia"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Activando radio..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Sen servizo. Tentando de novo…"</string>
@@ -549,6 +552,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Vibrar"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Vibrar"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Correo de voz visual"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Cambiar PIN"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Son"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"Ton de chamada e vibración"</string>
@@ -567,4 +572,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"Produciuse un erro durante a descodificación da mensaxe."</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"A tarxeta SIM activou o teu servizo e actualizou as funcións de itinerancia do teléfono."</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Hai moitas chamadas activas. Finaliza as chamadas existentes ou combínaas antes de facer unha nova."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-gu-rIN/strings.xml b/res/values-gu-rIN/strings.xml
index 2e8c706..56e98b5 100644
--- a/res/values-gu-rIN/strings.xml
+++ b/res/values-gu-rIN/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"તમારો કેરિઅર"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"જૂનો PIN"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"નવો PIN"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"PIN બદલી રહ્યાં છે"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"નવો PIN ખૂબ ટૂંકો છે."</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"નવો PIN ખૂબ લાંબો છે."</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"નવો PIN ખૂબ નબળો છે. સશક્ત પાસવર્ડ સતત ક્રમ અથવા પુનરાવર્તિત અંકો ધરાવતો હોવો જોઇએ નહીં."</string>
@@ -455,6 +456,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"કૉલ(લ્સ) રિલીઝ કરી શકતા નથી."</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"કૉલ્સને હોલ્ડ કરી શકતાં નથી."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"કૉલ કરવા માટે વાયરલેસ નેટવર્કથી કનેક્ટ કરો."</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"કટોકટીનો કૉલ"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"રેડિઓ ચાલુ કરી રહ્યાં છે…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"કોઈ સેવા નથી. ફરી પ્રયાસ કરી રહ્યાં છે…"</string>
@@ -549,6 +552,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"વાઇબ્રેટ"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"વાઇબ્રેટ"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"વિઝ્યુઅલ વૉઇસમેઇલ"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"PIN બદલો"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"ધ્વનિ"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"રિંગટોન અને વાઇબ્રેટ"</string>
@@ -567,4 +572,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"સંદેશ ડીકોડિંગ કરતી વખતે ભૂલ આવી હતી."</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"એક SIM કાર્ડ એ તમારી સેવા સક્રિય કરી છે અને તમારા ફોનની રોમિંગ ક્ષમતાઓને અપડેટ કરી છે."</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"અહીં ઘણા બધા સક્રિય કૉલ્સ છે. કૃપા કરીને એક નવો કૉલ કરવા પહેલાં અસ્તિત્વમાંના કૉલ્સને સમાપ્ત કરો અથવા મર્જ કરો."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index ab6c5e5..ca4c677 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"आपका वाहक"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"पुराना पिन"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"नया पिन"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"पिन बदला जा रहा है"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"नया पिन बहुत छोटा है."</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"नया पिन बहुत बड़ा है."</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"नया पिन बहुत कमज़ोर है. किसी सशक्त पासवर्ड में निरंतर क्रम या अंकों का दोहराव नहीं होना चाहिए."</string>
@@ -455,6 +456,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"कॉल रिलीज़ नहीं किया जा सकता (किए जा सकते)."</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"कॉल होल्ड नहीं किए जा सकते."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"कॉल करने के लिए किसी वायरलेस नेटवर्क से कनेक्ट करें."</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"आपातकालीन कॉल"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"रेडियो चालू कर रहा है..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"कोई सेवा नहीं. पुन: प्रयास किया जा रहा है…"</string>
@@ -549,6 +552,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"कंपन करें"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"कंपन करें"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"विज़ुअल वॉइसमेल"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"पिन बदलें"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"ध्वनि"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"रिंगटोन और कंपन"</string>
@@ -567,4 +572,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"संदेश डीकोड करते समय कोई त्रुटि हुई थी."</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"सिम कार्ड द्वारा आपकी सेवा को सक्रिय किया गया है और आपके फ़ोन की रोमिंग क्षमताओं को अपडेट किया गया है."</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"बहुत अधिक कॉल सक्रिय हैं. नया कॉल करने से पहले कृपया मौजूदा कॉल समाप्त करें या उन्हें मिला दें."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index 8efb8f8..731bb87 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"Vaš mobilni operater"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Stari PIN"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Novi PIN"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"Promjena PIN-a"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Novi PIN je prekratak."</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Novi PIN je predugačak."</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Novi je PIN preslab. Jaka zaporka ne smije sadržavati kontinuirani niz ili ponovljene znamenke."</string>
@@ -455,6 +456,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Prekidanje poziva nije moguće."</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Pozivi se ne mogu stavljati na čekanje."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Povežite se s bežičnom mrežom da biste uputili poziv."</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Hitan poziv"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Uključivanje radija…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Nema usluge. Pokušavamo ponovo…"</string>
@@ -552,6 +555,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Vibracija"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Vibracija"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Vizualna govorna pošta"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Promjena PIN-a"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Zvuk"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"Melodija zvona i vibracija"</string>
@@ -570,4 +575,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"Došlo je do pogreške prilikom dekodiranja poruke."</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"SIM kartica aktivirala je vašu uslugu i ažurirala mogućnosti telefona za roaming."</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Postoji previše aktivnih poziva. Prekinite ili spojite postojeće pozive prije uspostavljanja novog poziva."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index dd4493f..862789d 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"Saját mobilszolgáltató"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Régi PIN-kód"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Új PIN-kód"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"PIN-kód módosítása"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Az új PIN-kód túl rövid."</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Az új PIN-kód túl hosszú."</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Az új PIN-kód túl gyenge. Az erős jelszavak nem tartalmaznak egymás után következő számokat vagy ismétlődő számjegyeket."</string>
@@ -455,6 +456,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"A tartásban lévő hívás(ok) folytatása sikertelen."</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"A hívások nem tarthatók."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Hívás indításához csatlakozzon egy vezeték nélküli hálózathoz."</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Segélyhívás"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Rádió bekapcsolása..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Nincs szolgáltatás. Újrapróbálkozás folyamatban…"</string>
@@ -549,6 +552,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Rezgés"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Rezgés"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Vizuális hangpostaüzenet"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"PIN-kód módosítása"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Hang"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"Csengőhang és rezgés"</string>
@@ -567,4 +572,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"Hiba történt az üzenet dekódolása közben."</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"Egy SIM kártya aktiválta a szolgáltatást, valamint frissítette a telefon barangolási képességeit."</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Túl sok aktív hívás van. Új hívás indítása előtt fejezzen be vagy vonjon össze meglévő hívásokat."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-hy-rAM/strings.xml b/res/values-hy-rAM/strings.xml
index 41628c9..db48d70 100644
--- a/res/values-hy-rAM/strings.xml
+++ b/res/values-hy-rAM/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"Ձեր օպերատորը"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Հին PIN"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Նոր PIN"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"PIN-ը փոխվում է"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Նոր PIN-ը չափազանց կարճ է:"</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Նոր PIN-ը չափազանց երկար է:"</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Նոր PIN-ը բավականաչափ հուսալի չէ: Հուսալի գաղտնաբառը չպետք է ունենա շարունակական հաջորդականություն կամ կրկնվող թվեր:"</string>
@@ -461,6 +462,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Հնարավոր չէ անջատել զանգ(եր)ը:"</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Հնարավոր չէ հետաձգել զանգերը:"</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Զանգ կատարելու համար միացեք անլար ցանցին:"</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Արտակարգ իրավիճակների զանգ"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Ռադիոն միացվում է..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Ծառայությունը մատչելի չէ: Նորից փորձեք…"</string>
@@ -485,8 +488,8 @@
<string name="importToFDNfromContacts" msgid="2130620207013368580">"Ներմուծել կոնտակտներից"</string>
<string name="singleContactImportedMsg" msgid="6868483416182599206">"Ներմուծված կոնտակտ"</string>
<string name="failedToImportSingleContactMsg" msgid="415399285420353917">"Չհաջողվեց ներմուծել կոնտակտը"</string>
- <string name="hac_mode_title" msgid="8740268574688743289">"Լսողական օգնական"</string>
- <string name="hac_mode_summary" msgid="6833851160514929341">"Միացնել լսողական օգնականի համատեղելիությունը"</string>
+ <string name="hac_mode_title" msgid="8740268574688743289">"Լսողական ապարատ"</string>
+ <string name="hac_mode_summary" msgid="6833851160514929341">"Միացնել լսողական ապարատի աջակցումը"</string>
<string-array name="tty_mode_entries">
<item msgid="512950011423868021">"TTY-ն անջատված է"</item>
<item msgid="3971695875449640648">"TTY Full"</item>
@@ -555,6 +558,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Թրթռալ"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Թրթռալ"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Տեսանելի ձայնային փոստ"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Փոխել PIN-ը"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Ձայն"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"Ձայներանգ & Թրթռոց"</string>
@@ -573,4 +578,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"Հաղորդագրությունն ապակոդավորելիս սխալ առաջացավ:"</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"SIM քարտն ակտիվացրել է ծառայությունը և թարմացրել ձեր հեռախոսի ռոումինգի հնարավորությունները:"</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Չափազանց շատ ընթացիկ զանգեր կան: Ավարտեք կամ միավորեք առկա զանգերը՝ նախքան նորն զանգ կատարելը:"</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index e699d02..abc3f72 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"Operator Anda"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"PIN Lama"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"PIN Baru"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"Mengubah PIN"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"PIN baru terlalu pendek."</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"PIN baru terlalu panjang."</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"PIN baru terlalu lemah. Sandi yang kuat tidak boleh memiliki urutan karakter kontinu atau digit berulang."</string>
@@ -455,6 +456,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Tidak dapat melepas panggilan telepon."</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Tidak dapat menahan panggilan."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Sambungkan ke jaringan nirkabel untuk melakukan panggilan"</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Panggilan darurat"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Menghidupkan radio..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Tidak ada layanan. Mencoba lagi…"</string>
@@ -549,6 +552,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Getar"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Getar"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Kotak Pesan Visual"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Ubah PIN"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Suara"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"Nada dering & Getar"</string>
@@ -567,4 +572,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"Terjadi kesalahan saat mendekode pesan."</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"Kartu SIM telah mengaktifkan layanan dan memperbarui kemampuan roaming ponsel."</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Ada terlalu banyak panggilan aktif. Akhiri atau gabungkan panggilan yang ada sebelum melakukan panggilan baru."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-is-rIS/strings.xml b/res/values-is-rIS/strings.xml
index fa52e5b..53c7ad3 100644
--- a/res/values-is-rIS/strings.xml
+++ b/res/values-is-rIS/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"Símafyrirtækið þitt"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Gamla PIN-númerið"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Nýtt PIN-númer"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"Skipt um PIN-númer"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Nýja PIN-númerið er of stutt."</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Nýja PIN-númerið er of langt."</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Nýja PIN-númerið er ekki nógu sterkt. Sterk aðgangsorð mega ekki vera með tölustafi í beinni röð eða endurtekna tölustafi."</string>
@@ -455,6 +456,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Ekki hægt að leggja á."</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Getur ekki sett símtöl í bið."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Tengstu þráðlausu neti til að hringja."</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Neyðarsímtal"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Kveikir á loftneti…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Ekkert samband. Reynir aftur…"</string>
@@ -549,6 +552,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Titringur"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Titringur"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Myndrænt talhólf"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Breyta PIN-númeri"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Hljóð"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"Hringitónn og titringur"</string>
@@ -567,4 +572,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"Villa kom upp við að afkóða skeytið."</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"SIM-kort hefur virkjað þjónustuna þína og uppfært reikigetu símans."</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Of mörg símtöl eru virk. Ljúktu eða sameinaðu fyrirliggjandi símtöl áður en þú hringir nýtt."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 206b3f4..1b72d76 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"Operatore"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Vecchio PIN"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Nuovo PIN"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"Modifica del PIN"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Il nuovo PIN è troppo corto."</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Il nuovo PIN è troppo lungo."</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Il nuovo PIN è troppo semplice. Una password efficace non deve contenere sequenze continue o cifre ripetute."</string>
@@ -459,6 +460,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Impossibile riagganciare."</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Impossibile mettere in attesa le chiamate."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Connettiti a una rete wireless per effettuare una chiamata."</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Chiamata di emergenza"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Attivazione segnale cellulare..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Nessun servizio. Nuovo tentativo…"</string>
@@ -553,6 +556,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Vibrazione"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Vibrazione"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Leggi la segreteria"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Cambia PIN"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Suono"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"Suoneria e vibrazione"</string>
@@ -571,4 +576,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"Si è verificato un errore durante la decodifica del messaggio."</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"Una scheda SIM ha attivato il tuo servizio e ha aggiornato le funzionalità di roaming del telefono."</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Ci sono troppe chiamate attive. Termina o unisci le chiamate esistenti prima di effettuarne una nuova."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 211c2b0..ba75818 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"הספק שלך"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"קוד גישה ישן"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"קוד גישה חדש"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"משנה את קוד הגישה"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"קוד הגישה החדש קצר מדי."</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"קוד הגישה החדש ארוך מדי."</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"קוד הגישה החדש חלש מדי. בסיסמה חזקה אסור שיהיו ספרות ברצף מספרי או ספרות שחוזרות על עצמן."</string>
@@ -455,6 +456,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"לא ניתן לשחרר שיחות."</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"לא ניתן להחזיק שיחות."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"התחבר לרשת אלחוטית כדי לבצע שיחה."</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"שיחת חירום"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"מפעיל את הרדיו…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"אין שירות. מנסה שוב..."</string>
@@ -555,6 +558,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"רטט"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"רטט"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"דואר קולי ויזואלי"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"שינוי קוד הגישה"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"צליל"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"רינגטון ורטט"</string>
@@ -573,4 +578,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"אירעה שגיאה בעת פענוח ההודעה."</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"כרטיס SIM הפעיל את השירות שלך ועדכן את יכולות הנדידה של הטלפון."</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"יש יותר מדי שיחות פעילות. כדי להתחיל שיחה חדשה עליך לסיים או למזג חלק מהשיחות הפעילות."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 6db4bc1..a0bde7f 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"携帯通信会社"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"古い PIN"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"新しい PIN"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"PIN を変更しています"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"新しい PIN が短すぎます。"</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"新しい PIN が長すぎます。"</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"新しい PIN の強度が弱すぎます。パスワードには連続する文字や、数字の繰り返しは使用しないでください。"</string>
@@ -455,6 +456,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"通話を解放できません。"</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"通話を保留にできません。"</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"電話をかけるには無線ネットワークに接続してください。"</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"緊急通報"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"無線通信をONにしています..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"通信サービスはありません。もう一度お試しください…"</string>
@@ -549,6 +552,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"バイブレーション"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"バイブレーション"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"ビジュアルボイスメール"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"PIN の変更"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"通知音"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"着信音とバイブレーション"</string>
@@ -567,4 +572,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"メッセージのデコード中にエラーが発生しました。"</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"SIMカードでサービスが有効になり、スマートフォンのローミング機能が更新されています。"</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"通話中の電話の数が多すぎます。新しく通話を発信するには、まず既存の通話を終了するか、統合してグループ通話にしてください。"</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-ka-rGE/strings.xml b/res/values-ka-rGE/strings.xml
index 241801b..5bf37c8 100644
--- a/res/values-ka-rGE/strings.xml
+++ b/res/values-ka-rGE/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"თქვენი ოპერატორი"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"ძველი PIN-კოდი"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"ახალი PIN-კოდი"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"მიმდინარეობს PIN-კოდის შეცვლა"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"ახალი PIN-კოდი ძალიან მოკლეა."</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"ახალი PIN-კოდი ძალიან გრძელია."</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"ახალი PIN-კოდი ძალიან სუსტია. ძლიერი პაროლი არ უნდა შეიცავდეს გამეორებული ციფრების გრძელ თანმიმდევრობას."</string>
@@ -455,6 +456,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"ვერ ხერხდება ზარ(ებ)ის გაშვება."</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"ზარების დაყოვნება ვერ ხერხდება."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"ზარის განსახორციელებლად, დაუკავშირდით უსადენო ქსელს."</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"გადაუდებელი ზარი"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"გადამცემის ჩართვა…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"მომხსახურება არ არის. სცადეთ ხელხლა..."</string>
@@ -549,6 +552,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"ვიბრაცია"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"ვიბრაცია"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"ვიზუალური ხმოვანი ფოსტა"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"PIN-კოდის შეცვლა"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"ხმა"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"ზარის მელოდია & ვიბრაცია"</string>
@@ -567,4 +572,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"შეტყობინების გაშიფრვისას წარმოიშვა შეცდომა."</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"SIM ბარათმა გაააქტიურა თქვენი სერვისი და თქვენი ტელეფონის როუმინგის შესაძლებლობები განაახლა."</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"ძალიან ბევრი აქტიური ზარია. გთხოვთ, დაასრულოთ ან გააერთიანოთ არსებული ზარები ახალი ზარის განხორციელებამდე."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-kk-rKZ/strings.xml b/res/values-kk-rKZ/strings.xml
index eb949b9..decc7b4 100644
--- a/res/values-kk-rKZ/strings.xml
+++ b/res/values-kk-rKZ/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"Операторыңыз"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Ескі PIN"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Жаңа PIN"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"PIN код өзгертілуде"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Жаңа PIN код тым қысқа."</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Жаңа PIN код тым ұзын."</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Жаңа PIN код тым әлсіз. Күшті құпия сөзде үздіксіз реттік немесе қайталанатын таңбалар болмауы тиіс."</string>
@@ -455,6 +456,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Қоңырау(лар)ды босату мүмкін емес."</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Қоңырауларды ұстау мүмкін емес."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Қоңырау шалу үшін сымсыз желіге қосылыңыз."</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Төтенше қоңырау"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Радионы қосуда…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Қызмет жоқ. Әрекет қайталануда…"</string>
@@ -549,6 +552,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Діріл"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Діріл"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Визуалды дауыс поштасы"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"PIN кодты өзгерту"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Дыбыс"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"Рингтон& Діріл"</string>
@@ -567,4 +572,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"Хабарды кодтан шығару кезінде қате пайда болды."</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"SIM карта қызметті белсендіріп, телефонның роуминг мүмкіндіктерін жаңартты."</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Белсенді қоңыраулар тым көп. Жаңа қоңырау шалудан бұрын бар қоңырауларды аяқтаңыз немесе біріктіріңіз."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-km-rKH/strings.xml b/res/values-km-rKH/strings.xml
index c0f998c..e41b3ce 100644
--- a/res/values-km-rKH/strings.xml
+++ b/res/values-km-rKH/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"អ្នកផ្តល់សេវាទូរស័ព្ទរបស់អ្នក"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"លេខកូដ PIN ថ្មី"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"លេខកូដ PIN ថ្មី"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"កំពុងប្ដូរលេខកូដ PIN"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"លេខកូដ PIN ថ្មីខ្លីពេក។"</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"លេខកូដ PIN ថ្មីវែងពេក។"</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"លេខកូដ PIN ថ្មីខ្សោយពេក។ ពាក្យសម្ងាត់ដែលខ្លាំងមិនគួរមានលេខរៀងតគ្នា ឬស្ទួនគ្នាទេ។"</string>
@@ -455,6 +456,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"មិនអាចបញ្ចេញការហៅបានទេ។"</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"មិនអាចរង់ចាំការហៅទេ"</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"ភ្ជាប់ទៅបណ្តាញឥតខ្សែដើម្បីធ្វើការហៅ។"</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"ការហៅនៅពេលមានអាសន្ន"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"កំពុងបើកវិទ្យុ…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"គ្មានសេវាទេ។ ព្យាយាមម្តង…"</string>
@@ -549,6 +552,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"ញ័រ"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"ញ័រ"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"សារជាសំឡេងអាចមើលឃើញ"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"ប្ដូរលេខកូដ PIN"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"សំឡេង"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"សំឡេងរោទ៍ & ញ័រ"</string>
@@ -567,4 +572,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"មានកំហុសខណៈពេលឌិកូដសារ។"</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"ស៊ីមកាតបានធ្វើឲ្យសេវាកម្មរបស់អ្នកសកម្ម និងបានធ្វើបច្ចុប្បន្នភាពសមត្ថភាពរ៉ូមីងសម្រាប់ទូរស័ព្ទរបស់អ្នក។"</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"មានការហៅដែលសកម្មច្រើនពេក។ សូមបញ្ចប់ ឬដាក់បញ្ចូលគ្នាការហៅដែលមានស្រាប់មុនពេលដាក់ការហៅថ្មី។"</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-kn-rIN/strings.xml b/res/values-kn-rIN/strings.xml
index ecb4a16..2507e9f 100644
--- a/res/values-kn-rIN/strings.xml
+++ b/res/values-kn-rIN/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"ನನ್ನ ವಾಹಕ"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"ಹಳೆಯ ಪಿನ್"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"ಹೊಸ ಪಿನ್"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"ಪಿನ್ ಬದಲಾಯಿಸಲಾಗುತ್ತಿದೆ"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"ಹೊಸ ಪಿನ್ ತುಂಬಾ ಚಿಕ್ಕದಾಗಿದೆ."</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"ಹೊಸ ಪಿನ್ ತುಂಬಾ ಉದ್ದವಾಗಿದೆ."</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"ಹೊಸ ಪಿನ್ ತುಂಬಾ ದುರ್ಬಲವಾಗಿದೆ. ಪ್ರಬಲ ಪಾಸ್ವರ್ಡ್ ನಿರಂತರ ಅನುಕ್ರಮ ಅಥವಾ ಪುನರಾವರ್ತಿತ ಅಂಕಿಗಳನ್ನು ಹೊಂದುವಂತಿಲ್ಲ."</string>
@@ -455,6 +456,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"ಕರೆ(ಗಳು) ಬಿಡುಗಡೆ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ."</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"ಕರೆಗಳನ್ನು ಹೋಲ್ಡ್ ಮಾಡಲಾಗುವುದಿಲ್ಲ."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"ಕರೆ ಮಾಡಲು ವೈರ್ಲೆಸ್ ನೆಟ್ವರ್ಕ್ಗೆ ಸಂಪರ್ಕಪಡಿಸಿ."</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"ತುರ್ತು ಕರೆಗಳು"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"ರೇಡಿಯೋ ಆನ್ ಮಾಡಲಾಗುತ್ತಿದೆ…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"ಯಾವುದೇ ಸೇವೆ ಇಲ್ಲ. ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಲಾಗುತ್ತಿದೆ..."</string>
@@ -549,6 +552,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"ವೈಬ್ರೇಟ್"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"ವೈಬ್ರೇಟ್"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"ದೃಶ್ಯ ಧ್ವನಿಮೇಲ್"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"ಪಿನ್ ಬದಲಾಯಿಸಿ"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"ಧ್ವನಿ"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"ರಿಂಗ್ಟೋನ್ & ವೈಬ್ರೇಟ್"</string>
@@ -567,4 +572,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"ಸಂದೇಶವನ್ನು ಡೀಕೋಡ್ ಮಾಡುವಾಗ ದೋಷವುಂಟಾಗಿದೆ."</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"ನಿಮ್ಮ ಸೇವೆಯನ್ನು ಸಿಮ್ ಕಾರ್ಡ್ ಸಕ್ರಿಯಗೊಳಿಸಿದೆ ಮತ್ತು ನಿಮ್ಮ ಫೋನ್ನ ರೋಮಿಂಗ್ ಸಾಮರ್ಥ್ಯವನ್ನು ಅಪ್ಡೇಟ್ ಮಾಡಲಾಗಿದೆ."</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"ಹಲವಾರು ಸಕ್ರಿಯ ಕರೆಗಳು. ಹೊಸ ಕರೆ ಮಾಡುವ ಮೊದಲು ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಕರೆಗಳನ್ನು ಅಂತ್ಯಗೊಳಿಸಿ ಅಥವಾ ವಿಲೀನಗೊಳಿಸಿ."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 3b9b86e..8b29553 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"이동통신사"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"이전 PIN"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"새 PIN"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"PIN 변경 중"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"새 PIN이 너무 짧습니다."</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"새 PIN이 너무 깁니다."</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"새 PIN의 안정성이 낮습니다. 안전한 비밀번호에는 연속되는 숫자 또는 반복되는 숫자를 사용하지 말아야 합니다."</string>
@@ -455,6 +456,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"통화를 끊을 수 없습니다."</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"통화를 보류할 수 없습니다."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"전화를 걸려면 무선 네트워크에 연결하세요."</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"긴급 전화"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"무선을 켜는 중..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"서비스를 사용할 수 없습니다. 다시 시도 중..."</string>
@@ -549,6 +552,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"진동"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"진동"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"시각적 음성사서함"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"PIN 변경"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"알림음"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"벨소리 및 진동"</string>
@@ -567,4 +572,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"메시지를 디코딩하는 중에 오류가 발생했습니다."</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"SIM 카드로 서비스가 활성화되었으며 휴대전화 로밍 기능이 업데이트되었습니다."</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"활성화된 통화가 너무 많습니다. 새로운 전화를 걸기 전에 기존의 통화를 끝내거나 합치세요."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-ky-rKG/strings.xml b/res/values-ky-rKG/strings.xml
index 3e20bef..a99e30b 100644
--- a/res/values-ky-rKG/strings.xml
+++ b/res/values-ky-rKG/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"Операторуңуз"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Эски PIN код"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Жаңы PIN код"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"PIN код өзгөртүлүүдө"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Жаңы PIN код өтө эле кыска."</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Жаңы PIN код өтө эле узун."</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Жаңы PIN код өтө эле жөнөкөй. Сырсөз күчтүү болушу үчүн анда сандар үзгүлтүксүз катардан турбашы же сандар кайталанбашы керек."</string>
@@ -455,6 +456,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Чалуу(лар) бошотулбай жатат."</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Чалууну кармап туруу мүмкүн эмес."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Чалуу үчүн зымсыз тармакка туташыңыз."</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Шашылыш чалуу"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Радио күйгүзүлүүдө…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Кызмат жок. Кайра аракет кылууда…"</string>
@@ -549,6 +552,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Дирилдөө"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Дирилдөө"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Визуалдык үн почтасы"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"PIN кодду өзгөртүү"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Үнү"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"Рингтон жана Титирөө"</string>
@@ -567,4 +572,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"Билдирүү дешифрленип жатканда ката кеткен."</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"SIM-карта кызматыңызды жандырып, телефонуңуздун роуминг мүмкүнчүлүктөрүн жаңыртты."</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Учурда жигердүү чалуулар өтө көп. Чалуу үчүн учурдагы чалууларды бүтүрүңүз же бириктириңиз."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-lo-rLA/strings.xml b/res/values-lo-rLA/strings.xml
index 76f1978..cbb201d 100644
--- a/res/values-lo-rLA/strings.xml
+++ b/res/values-lo-rLA/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"ຜູ້ໃຫ້ບໍລິການຂອງທ່ານ"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"ລະຫັດ PIN ເກົ່າ"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"ລະຫັດ PIN ໃໝ່"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"ກຳລັງປ່ຽນລະຫັດ PIN"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"ລະຫັດ PIN ໃໝ່ສັ້ນເກີນໄປ."</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"ລະຫັດ PIN ໃໝ່ຍາວເກີນໄປ."</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"ລະຫັດ PIN ໃໝ່ງ່າຍເກີນໄປ. ລະຫັດຜ່ານທີ່ຍາກບໍ່ຄວນຈະມີຕົວເລກຕໍ່ເນື່ອງ ຫຼື ຕົວເລກຊໍ້າໆກັນ."</string>
@@ -455,6 +456,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"ບໍ່ສາມາດປ່ອຍສາຍໂທໄດ້."</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"ບໍ່ສາມາດພັກສາຍໄດ້."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"ເຊື່ອມຕໍ່ກັບເຄືອຂ່າຍໄຮ້ສາຍເພື່ອເຮັດການໂທ."</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"ໂທສຸກເສີນ"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"ກຳລັງເປີດໃຊ້ວິທະຍຸ..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"ບໍ່ມີການບໍລິການ. ກຳລັງລອງໃໝ່ອີກ…"</string>
@@ -549,6 +552,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"ສັ່ນເຕືອນ"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"ສັ່ນເຕືອນ"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"ຂໍ້ຄວາມສຽງປະກອບພາບ"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"ປ່ຽນລະຫັດ PIN"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"ສຽງ"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"ຣິງໂທນ & ການສັ່ນເຕືອນ"</string>
@@ -567,4 +572,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"ມີຂໍ້ຜິດພາດໃນລະຫວ່າງຖອດລະຫັດຂໍ້ຄວາມດັ່ງກ່າວ."</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"ແຜ່ນ SIM ໄດ້ເປີດໃຊ້ງານການບໍລິການຂອງທ່ານ ແລະອັບເດດຄວາມສາມາດໃຊ້ງານຂ້າມເຂດຂອງໂທລະສັບຂອງທ່ານແລ້ວ."</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"ມີສາຍຫຼາຍເກີນໄປ. ກະລຸນາວາງສາຍ ຫຼື ຮວມສາຍທີ່ກຳລັງໂທກ່ອນໂທສາຍໃໝ່."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index 362bfd0..747a36d 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"Jūsų operatorius"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Senas PIN kodas"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Naujas PIN"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"PIN kodo keitimas"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Naujas PIN kodas per trumpas."</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Naujas PIN kodas per ilgas."</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Naujas PIN kodas nepakankamai patikimas. Patikimame slaptažodyje neturėtų būti kelių vienodų simbolių iš eilės ar pasikartojančių skaitmenų."</string>
@@ -455,6 +456,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Nepavyko atjungti skamb."</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Negalima sulaikyti skambučių."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Prisijunkite prie belaidžio ryšio tinklo, kad galėtumėte skambinti."</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Skambutis pagalbos numeriu"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Įjungiamas radijas…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Nėra ryšio. Bandoma dar kartą…"</string>
@@ -555,6 +558,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Vibruoti"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Vibruoti"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Vaizdinis balso paštas"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Keisti PIN kodą"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Garsas"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"Skambėjimo tonas ir vibracija"</string>
@@ -573,4 +578,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"Iškoduojant pranešimą įvyko klaida."</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"SIM kortelė suaktyvino paslaugą ir atnaujino telefono tarptinklinio duomenų ryšio funkcijas."</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Yra per daug aktyvių skambučių. Prieš skambindami kitu numeriu, užbaikite ar sujunkite esamus skambučius."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index ceafb8d..b9d13ad 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"Jūsu operators"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Iepriekšējais PIN"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Jaunais PIN"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"Notiek PIN maiņa"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Jaunais PIN ir pārāk īss."</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Jaunais PIN ir pārāk garš."</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Jaunais PIN nav pietiekami drošs. Droša parole nedrīkst ietvert secīgus vai atkārtotus ciparus."</string>
@@ -457,6 +458,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Nevar pārtraukt zvanu(-us)."</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Nevar aizturēt zvanus."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Lai veiktu zvanu, izveidojiet savienojumu ar bezvadu tīklu."</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Ārkārtas zvans"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Notiek radio ieslēgšana..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Nav pakalpojuma. Notiek atkārtots mēģinājums…"</string>
@@ -554,6 +557,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Vibrozvans"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Vibrozvans"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Vizuālais balss pasts"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Mainīt PIN"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Signāls"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"Zvana signāls un vibrācija"</string>
@@ -572,4 +577,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"Atšifrējot ziņojumu, radās kļūda."</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"SIM kartē ir aktivizēts jūsu pakalpojums un atjauninātas tālruņa viesabonēšanas iespējas."</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Ir pārāk daudz aktīvu zvanu. Pirms jauna zvana veikšanas pabeidziet vai apvienojiet esošos zvanus."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-mk-rMK/strings.xml b/res/values-mk-rMK/strings.xml
index a3edcea..25934e2 100644
--- a/res/values-mk-rMK/strings.xml
+++ b/res/values-mk-rMK/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"Вашиот оператор"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Стар PIN"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Нов PIN"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"PIN-кодот се променува"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Новиот PIN е премногу кус."</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Новиот PIN е премногу долг."</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Новиот PIN е премногу слаб. Силна лозинка не треба да содржи непрекината серија или цифри што се повторуваат."</string>
@@ -461,6 +462,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Не може да реализира повик(ци)."</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Не може да се задржат повици."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Поврзете се на безжична мрежа за да повикате."</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Повик за итни случаи"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Вклучување радио..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Нема услуга. Се обидува повторно…"</string>
@@ -555,6 +558,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Вибрирање"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Вибрирање"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Визуелна говорна пошта"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Променете PIN"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Звук"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"Мелодија и вибрации"</string>
@@ -573,4 +578,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"Настана грешка при дешифрирање на пораката."</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"Вашата СИМ-картичка ја активираше услугата и ги ажурираше способностите за роаминг на вашиот телефон."</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Има премногу активни повици. Завршете или спојте ги постоечките повици пред да започнете нов."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-ml-rIN/strings.xml b/res/values-ml-rIN/strings.xml
index 3d23868..9f61bcc 100644
--- a/res/values-ml-rIN/strings.xml
+++ b/res/values-ml-rIN/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"നിങ്ങളുടെ കാരിയർ"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"പഴയ പിൻ"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"പുതിയ പിൻ"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"പിൻ മാറ്റുന്നു"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"പുതിയ പിൻ വളരെ ചെറുതാണ്."</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"പുതിയ പിൻ വളരെ ദൈർഘ്യമേറിയതാണ്."</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"പുതിയ പിൻ വളരെ ദുർബലമാണ്. ഒരു ദൃഢമായ പാസ്വേഡിൽ തുടർച്ചയായി വരുന്നതോ ആവർത്തിച്ച് വരുന്നതോ ആയ അക്കങ്ങൾ ഉണ്ടാവരുത്."</string>
@@ -455,6 +456,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"കോൾ (കോളുകൾ) വിളിക്കാനാവില്ല."</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"കോളുകൾ ഹോൾഡുചെയ്യാൻ കഴിയില്ല."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"ഒരു കോൾ വിളിക്കാൻ വയർലെസ്സ് നെറ്റ്വർക്കിലേക്ക് കണക്റ്റുചെയ്യുക."</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"അടിയന്തര കോൾ"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"റേഡിയോ ഓൺ ചെയ്യുന്നു…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"സേവനമൊന്നുമില്ല. വീണ്ടും ശ്രമിക്കുന്നു…"</string>
@@ -549,6 +552,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"വൈബ്രേറ്റുചെയ്യുക"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"വൈബ്രേറ്റുചെയ്യുക"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"വിഷ്വൽ വോയ്സ്മെയിൽ"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"പിൻ മാറ്റുക"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"ശബ്ദം"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"റിംഗ്ടോണും വൈബ്രേറ്റുചെയ്യലും"</string>
@@ -567,4 +572,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"സന്ദേശം ഡീകോഡുചെയ്യുമ്പോൾ ഒരു പിശകുണ്ടായി."</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"ഒരു SIM കാർഡ് നിങ്ങളുടെ സേവനം സജീവമാക്കി, ഫോണിന്റെ റോമിംഗ് ശേഷികൾ അപ്ഡേറ്റ് ചെയ്തു."</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"നിരവധി കോളുകൾ നിലവിൽ സജീവമായുണ്ട്. പുതിയ കോൾ വിളിക്കുന്നതിനുമുമ്പ് നിലവിലുള്ള കോളുകൾ അവസാനിപ്പിക്കുകയോ ലയിപ്പിക്കുകയോ ചെയ്യുക."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-mn-rMN/strings.xml b/res/values-mn-rMN/strings.xml
index 15176d7..3ea11cf 100644
--- a/res/values-mn-rMN/strings.xml
+++ b/res/values-mn-rMN/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"Таны оператор компани"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Хуучин PIN"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Шинэ PIN"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"PIN өөрчилж байна"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Шинэ PIN хэт богино байна."</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Шинэ PIN хэт урт байна."</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Шинэ PIN хэт амархан байна. Сайн нууц үгэнд үргэлжилсэн дараалал буюу давтагдсан цифр ордоггүй."</string>
@@ -455,6 +456,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Дуудлага чөлөөлөх боломжгүй байна."</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Дуудлагыг хадгалах боломжгүй байна."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Дуудлага хийхийн тулд утасгүй интернетэд холбогдоно уу."</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Ослын дуудлага"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Радиог асааж байна…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Ажиллагаагүй байна. Дахин оролдоно уу..."</string>
@@ -549,6 +552,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Чичиргээ"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Чичиргээ"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Уншиж болохуйц дуут шуудан"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"PIN өөрчлөх"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Дуу"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"Хонхны ая & Чичиргээ"</string>
@@ -567,4 +572,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"Зурвасын кодыг тайлах явцад алдаа гарсан."</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"SIM карт таны үйлчилгээг идэвхжүүлж, утасны роаминг багтаамжийг шинэчиллээ."</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Хэт олон идэвхтэй дуудлага байна. Шинэ дуудлага хийхийн өмнө одоогийн дуудлагуудыг таслах буюу нэгтгэнэ үү."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-mr-rIN/strings.xml b/res/values-mr-rIN/strings.xml
index c26cd36..8fd3505 100644
--- a/res/values-mr-rIN/strings.xml
+++ b/res/values-mr-rIN/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"आपला वाहक"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"जुना पिन"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"नवीन पिन"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"पिन बदलत आहे"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"नवीन पिन खूप लहान आहे."</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"नवीन पिन खूप दीर्घ आहे."</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"नवीन पिन खूप कमकुवत आहे. सशक्त संकेतशब्दामध्ये अखंड क्रमवारी किंवा पुनरावृत्ती केलेले अंक नसावेत."</string>
@@ -455,6 +456,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"कॉल रिलीझ करू शकत नाही."</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"कॉल सुरु ठेवू शकत नाही."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"कॉल करण्यासाठी वायरलेस नेटवर्कशी कनेक्ट करा."</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"आणीबाणीचा कॉल"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"रेडिओ चालू करीत आहे..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"सेवा नाही. पुन्हा प्रयत्न करत आहे…"</string>
@@ -549,6 +552,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"कंपन होणे"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"कंपन होणे"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"दृश्यमान व्हॉइसमेल"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"पिन बदला"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"ध्वनी"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"रिंगटोन आणि कंपन"</string>
@@ -567,4 +572,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"संदेश डीकोड करताना एक त्रुटी आली."</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"सिम कार्डने आपली सेवा सक्रिय केली आहे आणि आपल्या फोनच्या रोमिंग क्षमता अद्यतनित केल्या."</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"बरेच सक्रिय कॉल आहेत. कृपया नवीन एक कॉल करण्यापूर्वी विद्यमान कॉल समाप्त करा किंवा विलीन करा."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-ms-rMY/strings.xml b/res/values-ms-rMY/strings.xml
index ec18bbc..183a6be 100644
--- a/res/values-ms-rMY/strings.xml
+++ b/res/values-ms-rMY/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"Pembawa anda"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"PIN lama"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"PIN baharu"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"Menukar PIN"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"PIN baharu terlalu pendek."</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"PIN baharu terlalu panjang."</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"PIN baharu terlalu lemah. Kata laluan yang kukuh tidak seharusnya mempunyai digit yang berturutan atau berulangan."</string>
@@ -455,6 +456,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Tidak dapat melepaskan panggilan."</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Tidak dapat menunda panggilan."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Sambungkan ke rangkaian wayarles untuk membuat panggilan."</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Panggilan kecemasan"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Menghidupkan radio..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Tiada perkhidmatan. Mencuba lagi..."</string>
@@ -549,6 +552,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Getar"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Getar"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Mel Suara Visual"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Tukar PIN"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Bunyi"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"Nada dering & Bergetar"</string>
@@ -567,4 +572,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"Terdapat ralat semasa menyahkodkan mesej."</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"Kad SIM telah mengaktifkan perkhidmatan anda dan mengemas kini keupayaan perayauan telefon anda."</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Terlalu banyak panggilan aktif. Sila tamatkan atau gabungkan panggilan yang sedia ada sebelum membuat panggilan baharu."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-my-rMM/strings.xml b/res/values-my-rMM/strings.xml
index 81aa492..2199246 100644
--- a/res/values-my-rMM/strings.xml
+++ b/res/values-my-rMM/strings.xml
@@ -28,7 +28,7 @@
<string name="mmiStarted" msgid="6347869857061147003">"MMIကုတ်နံပါတ်ကို စတင်ပြီးပါပြီ"</string>
<string name="ussdRunning" msgid="485588686340541690">"USSD ကုဒ် လုပ်ဆောင်နေပါသည်…"</string>
<string name="mmiCancelled" msgid="2771923949751842276">"MMIကုတ်နံပါတ်ကို ပယ်ဖျက်ပြီးပါပြီ"</string>
- <string name="cancel" msgid="5044513931633602634">"မလုပ်တော့ပါ"</string>
+ <string name="cancel" msgid="5044513931633602634">"မလုပ်တော့"</string>
<string name="enter_input" msgid="1810529547726803893">"USSD စာများဟာ စာလုံးရေ <xliff:g id="MIN_LEN">%d</xliff:g> မှ<xliff:g id="MAX_LEN">%d</xliff:g> အတွင်း ဖြစ်ရပါမည်။ နောက်တစ်ခေါက်ကြိုးစားပါ"</string>
<string name="manageConferenceLabel" msgid="4691922394301969053">"ကွန်းဖရင့် ခေါ်ဆိုမှုကို ထိန်းချုပ်သည်"</string>
<string name="ok" msgid="3811371167865772377">"အိုကေ"</string>
@@ -39,7 +39,7 @@
<string name="wait_prompt_str" msgid="7601815427707856238">"အောက်ပါ တီးလုံးများကို ပို့မလား?\n"</string>
<string name="pause_prompt_str" msgid="1789964702154314806">"အသံ ပို့နေစဉ်\n"</string>
<string name="send_button" msgid="4106860097497818751">"ပို့ခြင်း"</string>
- <string name="pause_prompt_yes" msgid="3564467212025151797">"ဟုတ်ကဲ့"</string>
+ <string name="pause_prompt_yes" msgid="3564467212025151797">"Yes"</string>
<string name="pause_prompt_no" msgid="6686238803236884877">"No"</string>
<string name="wild_prompt_str" msgid="5543521676355533577">"wildစာလုံးကို အစားထိုးရန်မှာ"</string>
<string name="no_vm_number" msgid="4164780423805688336">"အသံစာပို့စနစ် နံပါတ် ပျောက်နေပါသည်"</string>
@@ -48,7 +48,7 @@
<string name="puk_unlocked" msgid="2284912838477558454">"သင့် ဆင်းမ်ကဒ်အား ပိတ်ဆို့မှုကို ဖယ်ရှားပြီးပါပြီ။ သင့်ဖုန်းဟာ သော့ဖွင့်နေပါသည်…"</string>
<string name="label_ndp" msgid="780479633159517250">"ဆင်းမ်ကဒ် ကွန်ရက် သော့ဖွင့်သော ပင်နံပါတ်"</string>
<string name="sim_ndp_unlock_text" msgid="683628237760543009">"ဖွင့်ရန်"</string>
- <string name="sim_ndp_dismiss_text" msgid="1604823375752456947">"လွှတ်လိုက်သည်"</string>
+ <string name="sim_ndp_dismiss_text" msgid="1604823375752456947">"ပယ်ရန်"</string>
<string name="requesting_unlock" msgid="6412629401033249351">"ကွန်ယက်သော့ဖွင့်ခြင်း တောင်းဆိုနေပါသည်…"</string>
<string name="unlock_failed" msgid="6490531697031504225">"ကွန်ယက်ဖွင့်ရန် တောင်းဆိုမှု မအောင်မြင်ပါ"</string>
<string name="unlock_success" msgid="6770085622238180152">"ကွန်ယက်ဖွင့်ခြင်း မအောင်မြင်ပါ"</string>
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"သင့် မိုဘိုင်းဆက်သွယ်ရေး ဝန်ဆောင်မှုဌာန"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"ပင်နံပါတ်အဟောင်း"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"ပင်နံပါတ်အသစ်"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"ပင်နံပါတ်ပြောင်းနေသည်"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"ပင်နံပါတ်အသစ်မှာ တိုလွန်းနေသည်။"</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"ပင်နံပါတ်အသစ်မှာ ရှည်လွန်းနေသည်။"</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"ပင်နံပါတ်အသစ်မှာ အားနည်းလွန်းနေသည်။ အားကောင်းသောစကားဝှက်တစ်ခုတွင် အစဉ်လိုက်စာလုံးများ (သို့) ထပ်တလဲလဲသုံးထားသောကိန်းဂဏန်းများ မပါသင့်ပါ။"</string>
@@ -455,6 +456,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"ဖုန်းခေါ်ခြင်း(များ)အား လွှတ်မပေးနိုင်ပါ။"</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"ခေါ်ဆိုမှုများကို ကိုင်ထား၍မရပါ။"</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"ဖုန်းခေါ်ရန် ကြိုးမဲကွန်ယက်တစ်ခုသို့ ချိတ်ဆက်ပါ။"</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"အရေးပေါ်ခေါ်ဆိုမှု"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"ရေဒီယို ဖွင့်နေစဉ်…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"ဝန်ဆောင်မှု မရှိပါ။ ထပ်မံကြိုးစားပါ…"</string>
@@ -512,7 +515,7 @@
<string name="ota_successful" msgid="1880780692887077407">"သင့်ဖုန်းမှာ အခု အက်တီဗိတ် ဖြစ်နေပါပြီ။ ဝန်ဆောင်မှုများ စတင်ရန် ၁၅ မိနစ်ထိ ကြာနိုင်ပါသည်"</string>
<string name="ota_unsuccessful" msgid="8072141612635635357">"သင့်ဖုန်း အက်တီဗိတ် မဖြစ်ပါ။ \nဖုန်းလိုင်းအားပိုကောင်းသော နေရာကိုရှာပါ (ပြတင်းပေါက်နား, သို့မဟုတ် အပြင်ဖက်)။ \n\nပြန်လည်ကြိုးစားပါ သို့မဟုတ် သုံးစွဲသူအား အကူအညီပေးဝန်ဆောင်မှု ကို ဆက်သွယ်ပြီး နည်းလမ်းရှာပါ။"</string>
<string name="ota_spc_failure" msgid="3909983542575030796">"အလွန်အကျွံ SPC မအောင်မြင်မှုများ"</string>
- <string name="ota_call_end" msgid="4537279738134612388">"နောက်ပြန်သွားရန်"</string>
+ <string name="ota_call_end" msgid="4537279738134612388">"နောက်သို့"</string>
<string name="ota_try_again" msgid="7685477206465902290">"ပြန်ကြိုးစားပါ"</string>
<string name="ota_next" msgid="3904945374358235910">"ရှေ့ဆက်သွားရန်"</string>
<string name="ecm_exit_dialog" msgid="4448531867763097533">"EcmExitDialog"</string>
@@ -524,8 +527,8 @@
<item quantity="one"> ဒေတာဆက်သွယ်မှု <xliff:g id="COUNT_0">%s</xliff:g> မိနစ်မရှိပါ</item>
</plurals>
<plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
- <item quantity="other"> ဖုန်းသည် <xliff:g id="COUNT_1">%s</xliff:g> မိနစ်လောက် အရေးပေါ် ပြန်ခေါ်ခြင်းမုဒ်တွင် ရှိနေလိမ့်မည်။ ဤမုဒ်တွင် ဒေတာချိတ်ဆက်မှုအသုံးပြုသည့် app များကို အသုံးပြု၍ ရနိုင်မည်မဟုတ်ပါ။ ယခုထွက်လိုပါသလား? </item>
- <item quantity="one"> ဖုန်းသည် <xliff:g id="COUNT_0">%s</xliff:g> မိနစ်လောက် အရေးပေါ် ပြန်ခေါ်ခြင်းမုဒ်တွင် ရှိနေလိမ့်မည်။ ဤမုဒ်တွင် ဒေတာချိတ်ဆက်မှုအသုံးပြုသည့် app များကို အသုံးပြု၍ ရနိုင်မည်မဟုတ်ပါ။ ယခုထွက်လိုပါသလား?</item>
+ <item quantity="other"> ဖုန်းသည် <xliff:g id="COUNT_1">%s</xliff:g> မိနစ်လောက် အရေးပေါ် ပြန်ခေါ်ခြင်းမုဒ်တွင် ရှိနေလိမ့်မည်။ ဤမုဒ်တွင် ဒေတာချိတ်ဆက်မှုအသုံးပြုသည့် အက်ပ်များကို အသုံးပြု၍ ရနိုင်မည်မဟုတ်ပါ။ ယခုထွက်လိုပါသလား? </item>
+ <item quantity="one"> ဖုန်းသည် <xliff:g id="COUNT_0">%s</xliff:g> မိနစ်လောက် အရေးပေါ် ပြန်ခေါ်ခြင်းမုဒ်တွင် ရှိနေလိမ့်မည်။ ဤမုဒ်တွင် ဒေတာချိတ်ဆက်မှုအသုံးပြုသည့် အက်ပ်များကို အသုံးပြု၍ ရနိုင်မည်မဟုတ်ပါ။ ယခုထွက်လိုပါသလား?</item>
</plurals>
<plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
<item quantity="other"> ရွေးချယ်ထားသော အပြုအမူမှာ အရေပေါ်ခေါ်ဆိုမှုပြုလုပ်နေစဉ် မရှိနိုင်ပါ။ ဖုန်းသည်ဤ မုဒ်တွင် <xliff:g id="COUNT_1">%s</xliff:g> မိနစ်ရှိနေမည်ဖြစ်သည်။ ယခုထွက်လိုပါသလား?</item>
@@ -533,9 +536,9 @@
</plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"ရွေးချယ်ထားသော အပြုအမူမှာ အရေပေါ်ခေါ်ဆိုမှုပြုလုပ်နေစဉ် မရှိနိုင်ပါ"</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"အရေးပေါ်ပြန်လည်ခေါ်ဆိုမှု အခြေအနေအား ထွက်ပါမည်"</string>
- <string name="alert_dialog_yes" msgid="6674268047820703974">"ဟုတ်သည်"</string>
+ <string name="alert_dialog_yes" msgid="6674268047820703974">"Yes"</string>
<string name="alert_dialog_no" msgid="1476091437797628703">"No"</string>
- <string name="alert_dialog_dismiss" msgid="2491494287075907171">"လွှတ်လိုက်သည်"</string>
+ <string name="alert_dialog_dismiss" msgid="2491494287075907171">"ပယ်ရန်"</string>
<string name="voicemail_provider" msgid="5135942703327136909">"ဝန်ဆောင်မှု"</string>
<string name="voicemail_settings" msgid="72448049107749316">"ပြင်ဆင်သည်"</string>
<string name="voicemail_number_not_set" msgid="6724904736891087856">"မသတ်မှတ်ထားပါ"</string>
@@ -549,6 +552,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"တုန်ခါခြင်း"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"တုန်ခါခြင်း"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"အမြင် အသံမေးလ်"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"ပင်နံပါတ်ပြောင်းပါ"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"အသံ"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"ဖုန်းမြည်သံ & တုန်ခါသံ"</string>
@@ -567,4 +572,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"စာကို ကုဒ်ဖွင့်နေစဉ် အမှားရှိခဲ့သည်။"</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"SIM ကဒ်သည် သင့် ဖုန်းဝန်ဆောင်မှုအား အသက်သွင်းခဲ့ပြီး သင့်ဖုန်း၏ ကွန်ယက်ပြင်ပဒေတာသုံးနိုင်စွမ်းအား ပြင်ဆင်မွမ်းမံပြီးဖြစ်၏။"</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"လက်ရှိခေါ်ဆိုမှုများ အလွန်များနေပါသည်။ ခေါ်ဆိုမှုအသစ်တစ်ခု မပြုလုပ်ခင် လက်ရှိဖုန်းခေါ်ဆိုမှုများကို အဆုံးသတ် (သို့) ပေါင်း လိုက်ပါ။"</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 62c5538..23c2f13 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"Operatøren din"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Gammel PIN-kode"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Ny PIN-kode"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"Bytter PIN-kode"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Den nye PIN-koden er for kort."</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Den nye PIN-koden er for lang."</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Den nye PIN-koden er for svak. Sterke passord inneholder ikke sammenhengende sekvenser eller gjentatte sifre."</string>
@@ -461,6 +462,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Kan ikke frigjøre samtale(r)."</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Kan ikke sette samtaler på vent."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Koble til et trådløst nettverk for å ringe."</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Nødanrop"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Slår på radio…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Ingen tjeneste. Prøver på nytt …"</string>
@@ -555,6 +558,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Vibrering"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Vibrering"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Visuell talepostkasse"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Bytt PIN-kode"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Lyd"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"Ringetone og vibrering"</string>
@@ -573,4 +578,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"Det oppsto en feil under dekoding av meldingen."</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"Et SIM-kort har aktivert tjenesten din og oppdatert roamingfunksjonene for telefonen din."</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Du har for mange aktive samtaler. Avslutt eller slå sammen eksisterende samtaler før du starter en ny samtale."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-ne-rNP/strings.xml b/res/values-ne-rNP/strings.xml
index 8e1deda..a3a5b37 100644
--- a/res/values-ne-rNP/strings.xml
+++ b/res/values-ne-rNP/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"तपाईंको वाहक"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"पुरानो PIN"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"नयाँ PIN"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"PIN परिवर्तन गर्दै"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"नयाँ PIN अत्यन्त छोटो छ।"</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"नयाँ PIN अत्यन्त लामो छ।"</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"नयाँ PIN अत्यन्त कमजोर छ। बलियो पासवर्डमा लगातारको अनुक्रम वा दोहोरिएका अङ्कहरू हुनु हुँदैन।"</string>
@@ -455,6 +456,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"कल (हरू) जारी गर्न सकिँदैन ।"</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"कल सञ्चालन गर्न सकिँदैन।"</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"एक कल गर्न एक ताररहितको सञ्जालमा जडान गर्नुहोस्।"</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"आपतकालीन कल"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"रेडियो खोल्दै..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"कुनै सेवा छैन। फेरि प्रयास गर्दै ..."</string>
@@ -549,6 +552,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"भाइब्रेट"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"भाइब्रेट"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"भिजुअल भ्वाइस मेल"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"PIN परिवर्तन गर्नुहोस्"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"आवाज:"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"रिङ्गटोन र भाइब्रेट"</string>
@@ -567,4 +572,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"सन्देश डिकोड गर्दा एउटा समस्या भयो।"</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"SIM कार्डले तपाईँको सेवा सक्रिय गर्नुका तथा फोनको रोमिङ क्षमताहरू पनि अद्यावधिक गरिदिएको छ।"</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"धेरै सक्रिय कलहरू छन्। कृपया कुनै नयाँ राख्नु अघि विद्यमान कलहरूलाई अन्त्य वा मर्ज गर्नुहोस्।"</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 7563ff9..746a340 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"Je provider"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Oude pincode"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Nieuwe pincode"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"Pincode wijzigen"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"De nieuwe pincode is te kort."</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"De nieuwe pincode is te lang."</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"De nieuwe pincode is niet sterk genoeg. Een sterk wachtwoord mag geen opeenvolgende cijferreeks of herhaalde cijfers bevatten."</string>
@@ -455,6 +456,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Kan oproep(en) niet vrijgeven."</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Kan gesprekken niet in de wacht zetten."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Maak verbinding met een draadloos netwerk om te bellen."</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Noodoproep"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Radio aanzetten..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Geen bereik. Opnieuw proberen…"</string>
@@ -549,6 +552,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Trillen"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Trillen"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Visuele voicemail"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Pincode wijzigen"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Geluid"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"Beltoon en trillen"</string>
@@ -567,4 +572,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"Er is een fout opgetreden tijdens het decoderen van het bericht."</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"Een simkaart heeft je service geactiveerd en heeft de roaming-mogelijkheden van je telefoon geüpdatet."</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Er zijn te veel actieve oproepen. Beëindig bestaande oproepen of voeg ze samen voordat je een nieuwe oproep start."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-pa-rIN/strings.xml b/res/values-pa-rIN/strings.xml
index a2ce946..0ef36d7 100644
--- a/res/values-pa-rIN/strings.xml
+++ b/res/values-pa-rIN/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"ਤੁਹਾਡਾ ਕੈਰੀਅਰ"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"ਪੁਰਾਣਾ PIN"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"ਨਵਾਂ PIN"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"PIN ਬਦਲਿਆ ਜਾ ਰਿਹਾ ਹੈ"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"ਨਵਾਂ PIN ਬਹੁਤ ਹੀ ਛੋਟਾ ਹੈ।"</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"ਨਵਾਂ PIN ਬਹੁਤ ਹੀ ਵੱਡਾ ਹੈ।"</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"ਨਵਾਂ PIN ਬਹੁਤ ਹੀ ਕਮਜ਼ੋਰ ਹੈ। ਮਜ਼ਬੂਤ ਪਾਸਵਰਡ ਵਿੱਚ ਨਿਰੰਤਰ ਲੜੀ ਜਾਂ ਦੁਹਰਾਏ ਗਏ ਅੰਕ ਹੋਣੇ ਚਾਹੀਦੇ ਹਨ।"</string>
@@ -455,6 +456,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"ਕਾਲ(ਕਾਲਾਂ) ਰਿਲੀਜ ਨਹੀਂ ਕਰ ਸਕਦਾ।"</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"ਕਾਲਾਂ ਹੋਲਡ ਨਹੀਂ ਕੀਤੀਆਂ ਜਾ ਸਕਦੀਆਂ ਹਨ।"</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"ਇੱਕ ਕਾਲ ਕਰਨ ਲਈ ਇੱਕ ਵਾਇਰਲੈਸ ਨੈਟਵਰਕ ਨਾਲ ਕਨੈਕਟ ਕਰੋ।"</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"ਐਮਰਜੈਂਸੀ ਕਾਲ"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"ਰੇਡੀਓ ਚਾਲੂ ਕਰ ਰਿਹਾ ਹੈ…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"ਕੋਈ ਸੇਵਾ ਨਹੀਂ। ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰ ਰਿਹਾ ਹੈ…"</string>
@@ -549,6 +552,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"ਥਰਥਰਾਹਟ ਕਰੋ"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"ਥਰਥਰਾਹਟ ਕਰੋ"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"ਵਿਜੁਅਲ ਵੌਇਸਮੇਲ"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"PIN ਬਦਲੋ"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"ਅਵਾਜ਼"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"ਰਿੰਗਟੋਨ ਅਤੇ ਥਰਥਰਾਹਟ"</string>
@@ -567,4 +572,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"ਸੁਨੇਹਾ ਡੀਕੋਡ ਕਰਦੇ ਸਮੇਂ ਇੱਕ ਅਸ਼ੁੱਧੀ ਹੋਈ ਸੀ।"</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"ਇੱਕ SIM ਕਾਰਡ ਨੇ ਤੁਹਾਡੀ ਸੇਵਾ ਸਕਿਰਿਆ ਕੀਤੀ ਹੈ ਅਤੇ ਤੁਹਾਡੇ ਫੋਨ ਦੀਆਂ ਰੋਮਿੰਗ ਸਮਰੱਥਤਾਵਾਂ ਅਪਡੇਟ ਕੀਤੀਆਂ ਹਨ।"</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"ਇੱਥੇ ਬਹੁਤ ਸਾਰੀਆਂ ਕਿਰਿਆਸ਼ੀਲ ਕਾਲਾਂ ਹਨ। ਕਿਰਪਾ ਕਰਕੇ ਇੱਕ ਨਵੀਂ ਕਾਲ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਮੌਜੂਦਾ ਕਾਲਾਂ ਨੂੰ ਸਮਾਪਤ ਜਾਂ ਮਿਲਾਓ।"</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index 734a205..9fb9e4b 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"Mój operator"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Stary PIN"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Nowy PIN"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"Zmieniam PIN"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Nowy PIN jest za krótki."</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Nowy PIN jest za długi."</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Nowy PIN jest zbyt słaby. Silne hasło nie może zawierać ciągu kolejnych cyfr lub powtarzających się cyfr."</string>
@@ -455,6 +456,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Nie można zwolnić połączeń."</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Nie można zawieszać połączeń."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Połącz się z siecią bezprzewodową, by zadzwonić."</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Połączenie alarmowe"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Trwa włączanie sieci bezprzewodowych..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Brak sieci. Próbuję ponownie…"</string>
@@ -555,6 +558,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Wibracje"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Wibracje"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Wizualna poczta głosowa"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Zmień PIN"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Dźwięk"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"Dzwonek i wibracje"</string>
@@ -573,4 +578,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"Podczas dekodowania wiadomości wystąpił błąd."</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"Karta SIM aktywowała usługę i zaktualizowała funkcje roamingowe telefonu."</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Masz za dużo aktywnych połączeń. Scal lub zakończ istniejące połączenia, aby nawiązać nowe."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 6c87001..880ddb7 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"O seu operador"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"PIN antigo"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Novo PIN"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"A alterar o PIN…"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"O novo PIN é demasiado curto."</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"O novo PIN é demasiado longo."</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"O novo PIN é demasiado fraco. Uma palavra-passe forte não deve ter uma sequência de dígitos contínua ou repetida."</string>
@@ -455,6 +456,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Não é possível libertar a(s) chamada(s)."</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Não é possível colocar as chamadas em espera."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Ligue-se a uma rede sem fios para fazer uma chamada."</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Chamada de emergência"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"A ligar o rádio..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Sem serviço. A tentar novamente…"</string>
@@ -549,6 +552,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Vibrar"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Vibrar"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Correio de voz visual"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Alterar PIN"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Som"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"Tocar e Vibrar"</string>
@@ -567,4 +572,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"Ocorreu um erro durante a descodificação da mensagem."</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"Um cartão SIM ativou o seu serviço e atualizou as capacidades de roaming do seu telemóvel."</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Existem demasiadas chamadas ativas. Termine ou intercale as chamadas existentes antes de efetuar uma nova chamada."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 6194cfb..c984b21 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"Sua operadora"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"PIN antigo"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Novo PIN"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"Alterando o PIN"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"O novo PIN é curto demais."</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"O novo PIN é longo demais."</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"O novo PIN é fácil demais. Uma senha segura não deve ter uma sequência contínua nem dígitos repetidos."</string>
@@ -455,6 +456,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Não é possível liberar chamadas."</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Não é possível colocar chamadas em espera."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Conecte-se a uma rede sem fio para fazer uma chamada."</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Chamada de emergência"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Ativando o rádio…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Sem serviço. Tentando novamente..."</string>
@@ -549,6 +552,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Vibrar"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Vibrar"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Correio de voz visual"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Alterar PIN"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Som"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"Toque e vibração"</string>
@@ -567,4 +572,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"Ocorreu um erro ao decodificar a mensagem."</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"Um cartão SIM ativou seu serviço e atualizou os recursos de roaming do smartphone."</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Há muitas chamadas ativas. Finalize ou mescle as chamadas existentes antes de fazer uma nova."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index 2e763b4..2e231f9 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"Operatorul dvs."</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Codul PIN vechi"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Codul PIN nou"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"Se schimbă codul PIN"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Codul PIN nou este prea scurt."</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Codul PIN nou este prea lung."</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Codul PIN nou este prea slab. O parolă puternică nu ar trebui să aibă o secvență continuă sau cifre repetitive."</string>
@@ -455,6 +456,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Apelurile nu pot fi eliberate."</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Apelurile nu pot fi puse în așteptare."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Pentru a apela, conectați-vă la o rețea wireless."</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Apel de urgență"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Se activează semnalul radio..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Fără semnal. Se încearcă din nou..."</string>
@@ -552,6 +555,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Vibrații"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Vibrații"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Mesagerie vocală vizuală"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Schimbați codul PIN"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Sunet"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"Ton de apel și vibrare"</string>
@@ -570,4 +575,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"A apărut o eroare la decodificarea mesajului."</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"Un card SIM a activat serviciul și a actualizat funcțiile de roaming ale telefonului."</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Prea multe apeluri active. Încheiați sau îmbinați apeluri existente înainte de a iniția unul nou."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index e666ec2..dd6533b 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"Ваш оператор связи"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Старый PIN-код"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Новый PIN-код"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"Изменение PIN-кода…"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Новый PIN-код слишком короткий"</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Новый PIN-код слишком длинный"</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Новый PIN-код слишком простой. Чтобы пароль был надежным, он не должен содержать непрерывную последовательность чисел или повторяющиеся цифры."</string>
@@ -457,6 +458,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Не удалось разъединить."</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Удержание невозможно."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Чтобы позвонить, подключитесь к Wi-Fi."</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Экстренный вызов"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Включение радио…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Нет сигнала. Повторная попытка…"</string>
@@ -557,6 +560,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Вибросигнал"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Вибросигнал"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Визуальная голосовая почта"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Изменение PIN-кода"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Звук"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"Рингтон и вибросигнал"</string>
@@ -575,4 +580,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"При расшифровке сообщения произошла ошибка."</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"В вашем телефоне уже настроен роуминг и активирована SIM-карта."</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Слишком много активных вызовов. Чтобы выполнить новый вызов, завершите или объедините существующие."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-si-rLK/strings.xml b/res/values-si-rLK/strings.xml
index 021e157..1955108 100644
--- a/res/values-si-rLK/strings.xml
+++ b/res/values-si-rLK/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"ඔබගේ වාහකයා"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"පැරණි PIN අංකය"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"නව PIN අංකය"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"PIN අංකය වෙනස් කරමින්"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"නව PIN අංකය කෙටි වැඩිය."</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"නව PIN අංකය දිග වැඩිය."</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"නව PIN අංකය දුර්වල වැඩිය. ශක්තිමත් මුරපදයක අඛණ්ඩ අනුපිළිවෙළක් හෝ පුනරාවර්ත ඉලක්කම් නොතිබිය යුතුය."</string>
@@ -455,6 +456,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"ඇමතුම(ම්) මුදාහැරීම කළ නොහැක."</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"ඇමතුම් රඳවා තැබීමට නොහැකිය."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"ඇමතුමක් ගැනීමට රැහැන් රහිත ජාලයක් වෙත සම්බන්ධ වෙන්න."</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"හදිසි ඇමතුම"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"රේඩියෝව ආරම්භ කරමින්…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"සේවා නැත. නැවත උත්සාහ කරන්න…"</string>
@@ -549,6 +552,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"කම්පනය වීම"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"කම්පනය වීම"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"දෘශ්ය හඬ තැපෑල"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"PIN අංකය වෙනස් කරන්න"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"ශබ්දය"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"රිගින් ටෝන් සහ කම්පනය කරන්න"</string>
@@ -567,4 +572,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"පණිවිඩය විකේතනය කරන අතරතුර දෝෂයක් සිදු විය."</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"SIM කාඩ්පතක් ඔබේ සේවාව සක්රිය කර ඔබේ දුරකථනයේ රෝමිං හැකියා යාවත්කාලීන කර තිබේ."</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"සක්රිය ඇමතුම් ඉතා විශාල ගණනක් ඇත. කරුණාකර නව ඇමතුමක් ගැනීමට පෙර පවතින ඇමතුම් අවසන් හෝ ඒකාබද්ධ කරන්න."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index dd8a79c..e30460e 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"Váš operátor"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Starý PIN"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Nový PIN"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"Mení sa PIN"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Nový PIN je príliš krátky."</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Nový PIN je príliš dlhý."</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Nový PIN je príliš slabý. Silné heslo by nemalo obsahovať postupnosť ani opakujúce sa číslice."</string>
@@ -455,6 +456,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Nedajú sa ukončiť hovory"</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Hovory nie je možné podržať."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Ak chcete volať, pripojte sa k bezdrôtovej sieti"</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Tiesňové volanie"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Prebieha zapínanie rádia..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Žiadna služba. Prebieha opätovný pokus…"</string>
@@ -555,6 +558,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Vibrovať"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Vibrovať"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Vizuálna hlasová schránka"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Zmena kódu PIN"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Zvuk"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"Tón zvonenia a vibrovanie"</string>
@@ -573,4 +578,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"Pri dekódovaní správy sa vyskytla chyba"</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"SIM karta aktivovala vašu službu a aktualizovala možnosti roamingu vášho telefónu"</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Prebieha príliš veľa aktívnych hovorov. Skôr ako uskutočníte nový hovor, ukončite existujúce hovory alebo ich zlúčte."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index 3d4100c..1f34c35 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"Vaš operater"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Stara koda PIN"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Nova koda PIN"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"Spreminjanje kode PIN"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Nova koda PIN je prekratka."</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Nova koda PIN je predolga."</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Nova koda PIN je prešibka. Zapleteno geslo ne sme vsebovati zaporednih ali ponavljajočih se števk."</string>
@@ -455,6 +456,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Prevzem klicev ni mogoč."</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Klicev ni mogoče zadržati."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Povežite se v omrežje Wi-Fi, če želite opraviti klic."</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Klic v sili"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Vklop radia …"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Ni signala. Vnovičen poskus …"</string>
@@ -555,6 +558,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Vibriraj"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Vibriraj"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Vizualno sporočilo v odzivniku"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Sprememba kode PIN"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Zvok"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"Zvonjenje in vibriranje"</string>
@@ -573,4 +578,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"Napaka pri dekodiranju sporočila."</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"Kartica SIM je aktivirala vašo storitev in posodobila zmožnosti telefona za gostovanje."</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Preveč aktivnih klicev. Preden začnete nov klic, končajte ali združite obstoječe klice."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-sq-rAL/strings.xml b/res/values-sq-rAL/strings.xml
index bd91c9b..f9c5186 100644
--- a/res/values-sq-rAL/strings.xml
+++ b/res/values-sq-rAL/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"Operatori yt"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Kodi PIN i vjetër"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Kodi PIN i ri"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"Kodi PIN po ndryshohet"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Kodi i ri PIN është shumë i shkurtër."</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Kodi i ri PIN është shumë i gjatë."</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Kodi i ri PIN është shumë i dobët. Një fjalëkalim i fortë nuk duhet të ketë rend të vazhdueshëm ose shifra të përsëritura."</string>
@@ -455,6 +456,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Nuk mund të lëshojë telefonatën(at)."</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Telefonatat nuk mund të mbahen në pritje."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Lidhu me një rrjet me valë për të bërë një telefonatë."</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Telefonata e urgjencës"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Po aktivizon radion…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Nuk ka shërbim. Po provon sërish…"</string>
@@ -549,6 +552,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Dridhja"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Dridhja"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Posta zanore vizuale"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Ndrysho kodin PIN"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Tingulli"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"Me zile dhe me dridhje"</string>
@@ -567,4 +572,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"Ndodhi një gabim gjatë dekodimit të mesazhit."</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"Një kartë SIM ka aktivizuar shërbimin tënd dhe ka përditësuar aftësitë e roaming-ut të telefonit tënd."</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Ka shumë thirrje aktive. Përfundo ose të bashko thirrjet ekzistuese para kryerjes së një thirrjeje të re."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index a32a160..f626250 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"Мобилни оператер"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Стари PIN"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Нови PIN"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"Мењамо PIN"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Нови PIN је прекратак."</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Нови PIN је предугачак."</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Нови PIN је преслаб. Јака лозинка не треба да садржи узастопни низ ни поновљене цифре."</string>
@@ -455,6 +456,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Успостављање позива није успело."</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Није могуће стављати позиве на чекање."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Повежите се на бежичну мрежу да бисте упутили позив."</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Хитан позив"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Укључивање радија…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Нема мреже. Поновни покушај…"</string>
@@ -552,6 +555,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Вибрација"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Вибрација"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Визуелна говорна пошта"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Промените PIN"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Звук"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"Мелодија звона и вибрација"</string>
@@ -570,4 +575,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"Дошло је до грешке при декодирању поруке."</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"SIM картица је активирала услугу и ажурирала функције роминга на телефону."</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Има превише активних позива. Завршите или обједините постојеће позиве пре него што упутите нови."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index feb4a9d..d1a3a41 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"Din operatör"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Gammal pinkod"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Ny pinkod"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"Pinkoden ändras"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Den nya pinkoden är för kort."</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Den nya pinkoden är för lång."</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Den nya pinkoden är för svag. Ett säkert lösenord bör inte ha siffror i ordningsföljd eller upprepade siffror."</string>
@@ -461,6 +462,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Det gick inte att släppa samtal."</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Det går inte att hålla kvar samtal."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Anslut till ett trådlöst nätverk om du vill ringa."</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Nödsamtal"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Sätter på radion…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Ingen tjänst. Försök igen …"</string>
@@ -555,6 +558,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Vibrera"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Vibrera"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Visuell röstbrevlåda"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Byt pinkod"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Ljud"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"Ringsignal och vibrera"</string>
@@ -573,4 +578,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"Ett fel inträffade när meddelandet avkodades."</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"Ett SIM-kort har använts för att aktivera tjänsten och uppdatera roamingfunktionerna i mobilen."</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Det finns för många aktiva samtal. Avsluta eller slå samman pågående samtal innan du ringer ett nytt."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index df4e626..6eec416 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"Mtoa huduma wako"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"PIN ya zamani"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"PIN mpya"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"Inabadilisha PIN"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"PIN mpya ni fupi mno."</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"PIN mpya ni ndefu mno."</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"PIN mpya ni dhaifu mno. Nenosiri thabiti halifai kuwa na herufi zinazofuatana mfululizo au tarakimu zinazorudiwa."</string>
@@ -455,6 +456,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Haiwezi kutoa simu."</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Haiwezi kushikilia simu."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Unganisha kwenye mtandao pasiwaya ili upige simu."</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Simu ya dharura"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Inawasha redio..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Hakuna huduma. Inajaribu tena..."</string>
@@ -549,6 +552,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Mtetemo"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Mtetemo"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Ujumbe wa Sauti Unaoonekana"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Badilisha PIN"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Sauti"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"Mlio wa simu na Mtetemo"</string>
@@ -567,4 +572,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"Hitilafu imetokea wakati wa usimbuaji wa ujumbe."</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"SIM kadi yako imeanzisha huduma yako na kusasisha uwezo wa simu yako wa kutumia mitandao mingine."</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Kuna simu nyingi mno zinazoendelea. Tafadhali kata au uunganishe simu zinazoendelea kabla hujapiga nyingine."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-ta-rIN/strings.xml b/res/values-ta-rIN/strings.xml
index 791d9db..f64f03e 100644
--- a/res/values-ta-rIN/strings.xml
+++ b/res/values-ta-rIN/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"உங்கள் மொபைல் நிறுவனம்"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"பழைய பின்"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"புதிய பின்"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"பின்னை மாற்றுகிறது"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"புதிய பின் மிகவும் சிறியதாக உள்ளது."</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"புதிய பின் மிகவும் நீளமாக உள்ளது."</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"புதிய பின் மிகவும் வலுவற்றதாக உள்ளது. வலுவான கடவுச்சொல்லில் தொடர்வரிசையோ மீண்டும் மீண்டும் வரும் இலக்கங்களோ இருக்கக்கூடாது."</string>
@@ -455,6 +456,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"அழைப்பை(அழைப்புகளை) விடுவிக்க முடியாது."</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"அழைப்புகளை ஹோல்டு செய்ய முடியாது."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"அழைக்க, வயர்லெஸ் நெட்வொர்க்குடன் இணைக்கவும்."</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"அவசரகால அழைப்பு"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"ரேடியோவை இயக்குகிறது…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"சேவை இல்லை. மீண்டும் முயற்சிக்கிறது…"</string>
@@ -549,6 +552,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"அதிர்வு"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"அதிர்வு"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"விஷூவல் குரலஞ்சல்"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"பின்னை மாற்றவும்"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"ஒலி"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"ரிங்டோன் & அதிர்வு"</string>
@@ -567,4 +572,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"செய்தியைக் குறிவிலக்கும்போது பிழை ஏற்பட்டது."</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"ஏற்கனவே சிம் கார்டைப் பயன்படுத்தி சேவை இயக்கப்பட்டது மற்றும் மொபைலின் ரோமிங் செயல்திறன்கள் புதுப்பிக்கப்பட்டன."</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"மிகவும் அதிக அளவிலான அழைப்புகள் செயலில் உள்ளன. புதிய அழைப்பை மேற்கொள்ளும் முன், ஏற்கனவேயுள்ள அழைப்புகளைத் துண்டிக்கவும் அல்லது ஒன்றாகப் பிணைக்கவும்."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-te-rIN/strings.xml b/res/values-te-rIN/strings.xml
index 15ba603..ef66508 100644
--- a/res/values-te-rIN/strings.xml
+++ b/res/values-te-rIN/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"మీ క్యారియర్"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"పాత PIN"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"కొత్త PIN"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"PINను మార్చుతోంది"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"కొత్త PIN చాలా చిన్నదిగా ఉంది."</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"కొత్త PIN చాలా పొడవు ఉంది."</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"కొత్త PIN చాలా బలహీనంగా ఉంది. శక్తివంతమైన పాస్వర్డ్లో వరుస శ్రేణిలో అక్షరాలు/అంకెలు లేదా పునరావృత అంకెలు ఉండకూడదు."</string>
@@ -455,6 +456,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"కాల్(ల)ను విడిచిపెట్టలేరు."</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"కాల్లను హోల్డ్ చేయలేరు."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"కాల్ చేయడానికి వైర్లెస్ నెట్వర్క్కు కనెక్ట్ చేయండి."</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"అత్యవసర కాల్"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"రేడియోను ప్రారంభిస్తోంది…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"సేవ లేదు. మళ్లీ ప్రయత్నిస్తోంది…"</string>
@@ -549,6 +552,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"వైబ్రేట్"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"వైబ్రేట్"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"దృశ్యమాన వాయిస్మెయిల్"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"PINను మార్చు"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"ధ్వని"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"రింగ్టోన్ & వైబ్రేట్"</string>
@@ -567,4 +572,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"సందేశాన్ని డీకోడ్ చేస్తున్నప్పుడు లోపం సంభవించింది."</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"SIM కార్డ్ మీ సేవను సక్రియం చేసింది మరియు మీ ఫోన్ రోమింగ్ సామర్థ్యాలను నవీకరించింది."</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"చాలా ఎక్కువ కాల్లు సక్రియంగా ఉన్నాయి. దయచేసి మరొక కొత్త కాల్ చేసే ముందు ఇప్పటికే ఉన్న కాల్లను ముగించండి లేదా విలీనం చేయండి."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index eb8e4b3..f1b0a22 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"ผู้ให้บริการของคุณ"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"PIN เก่า"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"PIN ใหม่"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"กำลังเปลี่ยน PIN"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"PIN ใหม่สั้นเกินไป"</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"PIN ใหม่ยาวเกินไป"</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"PIN ใหม่เดาง่ายเกินไป รหัสผ่านที่เดายากไม่ควรมีตัวเลขที่เรียงค่ากันหรือตัวเลขซ้ำๆ"</string>
@@ -455,6 +456,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"ไม่สามารถเริ่มการโทรได้"</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"ไม่สามารถถือสายรอได้"</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"เชื่อมต่อเครือข่ายไร้สายเพื่อโทรออก"</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"หมายเลขฉุกเฉิน"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"กำลังเปิดวิทยุ…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"ไม่มีบริการ โปรดลองอีกครั้ง…"</string>
@@ -549,6 +552,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"สั่น"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"สั่น"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"ข้อความเสียงพร้อมภาพ"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"เปลี่ยน PIN"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"เสียง"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"เสียงเรียกเข้าและสั่น"</string>
@@ -567,4 +572,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"เกิดข้อผิดพลาดขณะถอดรหัสข้อความ"</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"ซิมการ์ดได้เปิดใช้บริการของคุณและอัปเดตความสามารถในการโรมมิ่งของโทรศัพท์"</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"มีสายที่ใช้งานอยู่มากเกินไป โปรดวางสายหรือรวมสายที่มีก่อนโทรออกครั้งใหม่"</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index 9b643a4..962ebbe 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"Ang iyong carrier"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Lumang PIN"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Bagong PIN"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"Binabago ang PIN"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Masyadong maikli ang bagong PIN."</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Masyadong mahaba ang bagong PIN."</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Masyadong mahina ang bagong PIN. Ang isang malakas na password ay hindi dapat magkaroon ng tuloy-tuloy na sequence o paulit-ulit na mga digit."</string>
@@ -455,6 +456,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Hindi mailabas ang (mga) tawag."</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Hindi makakapag-hold ng mga tawag."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Kumonekta sa isang wireless network upang makatawag."</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Emergency na tawag"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Ino-on ang radyo…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Walang serbisyo. Sinusubukang muli…"</string>
@@ -549,6 +552,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Mag-vibrate"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Mag-vibrate"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Visual Voicemail"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Baguhin ang PIN"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Tunog"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"Ringtone at Pag-vibrate"</string>
@@ -567,4 +572,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"Nagkaroon ng error habang dine-decode ang mensahe."</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"Na-activate ng isang SIM card ang iyong serbisyo at na-update ang mga kakayahang roaming ng iyong telepono."</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Masyadong maraming aktibong tawag. Mangyaring tapusin o pagsamahin ang mga umiiral na tawag bago gumawa ng bago."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index 9b62fa7..fed96e6 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"Operatörünüz"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Eski PIN"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Yeni PIN"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"PIN değiştiriliyor"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Yeni PIN çok kısa."</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Yeni PIN çok uzun."</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Yeni PIN çok zayıf. Güçlü bir şifrede birbirini sıralı şekilde takip eden veya yinelenen rakamlar bulunmamalıdır."</string>
@@ -455,6 +456,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Çağrılar bırakılamıyor."</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Çağrılar beklemeye alınamıyor."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Telefon etmek için kablosuz ağa bağlanın."</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Acil durum çağrısı"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Radyo açılıyor..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Servis yok. Tekrar deneniyor…"</string>
@@ -549,6 +552,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Titreşim"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Titreşim"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Görsel Sesli Mesaj"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"PIN\'i değiştirin"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Ses"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"Zil Sesi ve Titreşim"</string>
@@ -567,4 +572,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"İletinin kodu çözülürken bir hata oluştu."</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"Bir SIM kart, hizmetinizi etkinleştirdi ve telefonunuzun dolaşım özelliklerini güncelledi."</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Etkin çağrıların sayısı çok fazla. Yeni bir çağrı yapmadan önce lütfen mevcut çağrıları sonlandırın veya birleştirin."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index a818d3a..387d9ca 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"Ваш оператор"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Старий PIN-код"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Новий PIN-код"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"Змінення PIN-коду"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Новий PIN-код закороткий."</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Новий PIN-код задовгий."</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Новий PIN-код недостатньо надійний. Надійний PIN-код не має містити прямих послідовностей або повторюваних цифр."</string>
@@ -455,6 +456,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Неможливо телефонувати."</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Не можна призупиняти виклики."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Щоб зателефонувати, під’єднайтеся до бездротової мережі."</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Аварійний виклик"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Увімкнення радіо…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Зв’язку немає. Повторна спроба…"</string>
@@ -555,6 +558,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Вібросигнал"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Вібросигнал"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Візуальна голосова пошта"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Змінити PIN-код"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Звук"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"Сигнал дзвінка та вібросигнал"</string>
@@ -573,4 +578,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"Під час розшифрування повідомлення сталася помилка."</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"Коли ви вставили SIM-карту, було активовано мобільний зв’язок і оновлено можливості роумінгу вашого телефона."</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Забагато активних викликів. Перш ніж зателефонувати новому абоненту, завершіть або об’єднайте поточні виклики."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-ur-rPK/strings.xml b/res/values-ur-rPK/strings.xml
index 0ecee83..2ba80b8 100644
--- a/res/values-ur-rPK/strings.xml
+++ b/res/values-ur-rPK/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"آپ کا کیریئر"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"پرانا PIN"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"نیا PIN"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"PIN تبدیل ہو رہا ہے"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"نیا PIN بہت ہی مختصر ہے۔"</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"نیا PIN بہت ہی طویل ہے۔"</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"نیا PIN بہت ہی کمزور ہے۔ مضبوط پاسورڈ میں مسلسل ترتیب یا دہرے عدد نہیں ہونے چاہئیں۔"</string>
@@ -455,6 +456,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"کال(ز) ریلیز نہیں کر سکتے۔"</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"کالز کو ہولڈ نہیں کیا جا سکتا۔"</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"کال کرنے کیلئے کسی وائرلیس نیٹ ورک سے منسلک ہوں۔"</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"ہنگامی کال"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"ریڈیو آن کر رہا ہے…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"کوئی سروس نہیں ہے۔ دوبارہ کوشش کی جا رہی ہے…"</string>
@@ -549,6 +552,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"وائبریٹ"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"وائبریٹ"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"بصری صوتی میل"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"PIN تبدیل کریں"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"آواز"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"رنگ ٹون اور وائبریٹ"</string>
@@ -567,4 +572,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"پیغام کو ڈیکوڈ کرتے وقت ایک خرابی پیش آ گئی۔"</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"ایک SIM کارڈ نے آپ کی سروس فعال کر دی ہے اور آپ کے فون کی رومنگ اہلیتیں اپ ڈیٹ کر دی ہیں۔"</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"بہت زیادہ فعال کالیں ہیں۔ براہ کرم نئی کال کرنے سے پہلے موجودہ کالوں کو ضم کریں یا ختم کریں۔"</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-uz-rUZ/strings.xml b/res/values-uz-rUZ/strings.xml
index daec968..1c27a32 100644
--- a/res/values-uz-rUZ/strings.xml
+++ b/res/values-uz-rUZ/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"Aloqa operatoringiz"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Eski PIN kod"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Yangi PIN kod"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"PIN kod o‘zgartirilmoqda"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Yangi PIN kod juda qisqa."</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Yangi PIN kod juda uzun."</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Yangi PIN kod juda sodda. Ishonchli PIN kodda ketma-ket takrorlanadigan raqamlar bo‘lmasligi lozim."</string>
@@ -455,6 +456,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Qo‘ng‘iroq(lar)ni chiqarib bo‘lmadi."</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Qo‘ng‘iroqlarni ushlab turib bo‘lmadi."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Qo‘ng‘iroq qilish uchun simsiz tarmoqqa ulaning"</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Favqulodda chaqiruv"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Radio yoqilmoqda…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Aloqa yo‘q. Qayta urinilmoqda…"</string>
@@ -514,7 +517,7 @@
<string name="ota_spc_failure" msgid="3909983542575030796">"SPC XATOLARI KO‘PAYIB KETDI"</string>
<string name="ota_call_end" msgid="4537279738134612388">"Orqaga"</string>
<string name="ota_try_again" msgid="7685477206465902290">"Yana urinib ko‘ring"</string>
- <string name="ota_next" msgid="3904945374358235910">"Keyingi"</string>
+ <string name="ota_next" msgid="3904945374358235910">"Keyingisi"</string>
<string name="ecm_exit_dialog" msgid="4448531867763097533">"EcmExitDialog"</string>
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"Favqulodda teskari qo‘ng‘iroq rejimi kiritildi"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Favqulodda teskari qo‘ng‘iroq rejimi"</string>
@@ -549,6 +552,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Tebranish"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Tebratish"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Vizual ovozli pochta"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"PIN kodni o‘zgartirish"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Ovoz"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"Qo‘ng‘iroq ohangi & tebranish"</string>
@@ -567,4 +572,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"Xabarni kodsizlashda xatolik yuz berdi."</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"Telefoningizda rouming xizmati sozlangan va SIM karta faollashtirilgan."</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Hozir bir nechta qo‘ng‘iroqlar amalda. Boshqa abonentga qo‘ng‘iroq qilishdan avval, amaldagi qo‘ng‘iroqlarni tugating yoki ularni konferens-aloqaga birlashtiring."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index 13ac8c8..fd283da 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"Nhà cung cấp dịch vụ của bạn"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Mã PIN cũ"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Mã PIN mới"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"Đang thay đổi mã PIN"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Mã PIN mới quá ngắn."</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Mã PIN mới quá dài."</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Mã PIN mới quá yếu. Một mật khẩu mạnh không nên có các chữ số lặp lại hoặc chuỗi liên tiếp."</string>
@@ -455,6 +456,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Không thực hiện được cuộc gọi."</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Không thể giữ cuộc gọi."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Kết nối với mạng không dây để thực hiện cuộc gọi."</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Cuộc gọi khẩn cấp"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Đang bật radio..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Không có dịch vụ nào. Đang thử lại…"</string>
@@ -549,6 +552,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Rung"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Rung"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Thư thoại kèm theo hình ảnh"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Thay đổi mã PIN"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Âm thanh"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"Nhạc chuông và rung"</string>
@@ -567,4 +572,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"Đã xảy ra lỗi khi giải mã tin nhắn."</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"Thẻ SIM đã kích hoạt dịch vụ của bạn và đã cập nhật chức năng chuyển vùng của điện thoại."</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Có quá nhiều cuộc gọi hiện hoạt. Vui lòng kết thúc hoặc hợp nhất các cuộc gọi hiện có trước khi thực hiện cuộc gọi mới."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index aa61e49..c4a2cc7 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"您的运营商"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"旧的 PIN 码"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"新的 PIN 码"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"正在更改 PIN 码"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"新的 PIN 码太短。"</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"新的 PIN 码太长。"</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"新的 PIN 码安全系数太低。如要提高密码强度,请勿使用连续或重复的数字。"</string>
@@ -455,6 +456,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"无法挂断电话。"</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"无法保持通话。"</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"需连接至无线网络才能拨打电话。"</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"紧急呼救"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"正在打开天线..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"无服务,正在重试…"</string>
@@ -549,6 +552,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"振动"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"振动"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"可视语音邮箱"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"更改 PIN 码"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"提示音"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"铃声和振动"</string>
@@ -567,4 +572,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"对邮件解码时出错。"</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"SIM 卡已启用您的服务,并更新了您手机的漫游功能。"</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"进行中的通话过多。请结束现有通话或将其合并,然后再拨打新的电话。"</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index 6323d12..84246c2 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"您的流動網絡供應商"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"舊的 PIN"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"新的 PIN"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"正在變更 PIN"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"新的 PIN 太短。"</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"新的 PIN 太長。"</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"新的 PIN 太弱。強效密碼不應包含連續序列或重複數字。"</string>
@@ -461,6 +462,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"無法釋放通話。"</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"無法保留通話。"</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"連接無線網絡,以撥打電話。"</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"緊急電話"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"正在開啟無線電..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"沒有服務。請再試一次…"</string>
@@ -555,6 +558,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"震動"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"震動"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Visual Voicemail"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"變更 PIN"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"音效"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"鈴聲與震動"</string>
@@ -573,4 +578,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"為訊息解碼時發生錯誤。"</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"SIM 卡已啟動您的服務,並更新了您的手機漫遊功能。"</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"進行中的通話過多。請先結束或合併現有通話,再重新撥打。"</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 09c6406..505452e 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"您的行動通訊業者"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"舊的 PIN 碼"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"新的 PIN 碼"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"正在變更 PIN 碼"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"新的 PIN 碼太短。"</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"新的 PIN 碼太長。"</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"新的 PIN 碼不夠安全。安全強度高的密碼不得使用連續或重複的數字。"</string>
@@ -461,6 +462,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"無法掛斷電話。"</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"無法保留通話。"</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"連上無線網路即可撥打電話。"</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"緊急電話"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"開啟無線通訊中…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"找不到服務訊號,正在重試…"</string>
@@ -555,6 +558,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"震動"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"震動"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"具有畫面的語音信箱"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"變更 PIN 碼"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"音效"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"鈴聲與震動"</string>
@@ -573,4 +578,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"為郵件解碼時發生錯誤。"</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"SIM 卡已啟用您的服務並更新了手機的漫遊功能。"</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"進行中的通話過多。請先結束或合併現有通話,再撥打新的電話。"</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index 28316e8..2804321 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -149,7 +149,8 @@
<string name="voicemail_default" msgid="2001233554889016880">"Inkampani yakho yenethiwekhi"</string>
<string name="vm_change_pin_old_pin" msgid="7295220109886682573">"I-PIN endala"</string>
<string name="vm_change_pin_new_pin" msgid="5412922262839438097">"I-PIN entsha"</string>
- <string name="vm_change_pin_progress_message" msgid="6727847908454506025">"Ishintsha i-PIN"</string>
+ <!-- no translation found for vm_change_pin_progress_message (3977357361934350336) -->
+ <skip />
<string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"I-PIN entsha imfushane kakhulu."</string>
<string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"I-PIN entsha yinde kakhulu."</string>
<string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"I-PIN entsha ibuthakathaka. Iphasiwedi eqinile akufanele ibe nokulandelana okuqhubekayo noma amadijithi aphindaphindiwe."</string>
@@ -459,6 +460,8 @@
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Ayikwazi ukukhipha amakholi."</string>
<string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Ayikwazi ukubamba amakholi."</string>
<string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Xhumeka kunethiwekhi engenantambo ukuze wenze ikholi."</string>
+ <!-- no translation found for incall_error_promote_wfc (106510757624022064) -->
+ <skip />
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Ikholi ephuthumayo"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Ivula umsakazo..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Ayikho isevisi. Iyazama futhi…"</string>
@@ -553,6 +556,8 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Dlidliza"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Dlidliza"</string>
<string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Ivoyisimeyili ebonakalayo"</string>
+ <!-- no translation found for voicemail_set_pin_dialog_title (2797924461029093837) -->
+ <skip />
<string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Shintsha i-PIN"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Umsindo"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"Ithoni yokukhala nokudlidliza"</string>
@@ -571,4 +576,28 @@
<string name="message_decode_error" msgid="3456481534066924855">"Kube nephutha ngenkathi kukhishwa ikhodi kumlayezo."</string>
<string name="callFailed_cdma_activation" msgid="2307989779233262164">"Ikhadi le-SIM lenze kwasebenza isevisi yakho laphinde labuyekeza amakhono okuzula wefoni yakho."</string>
<string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Kunamakholi amaningi asebenzayo. Sicela uphelise noma uhlanganise amakholi akhona ngaphambi kokubeka eyodwa."</string>
+ <!-- no translation found for change_pin_title (7790232089699034029) -->
+ <skip />
+ <!-- no translation found for change_pin_continue_label (2135088662420163447) -->
+ <skip />
+ <!-- no translation found for change_pin_cancel_label (353535488390948596) -->
+ <skip />
+ <!-- no translation found for change_pin_ok_label (6204308560844889926) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_header (419179847657548887) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_old_pin_hint (8579171678763615453) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_header (2611191814590251532) -->
+ <skip />
+ <!-- no translation found for change_pin_enter_new_pin_hint (2322940054329689309) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pin_header (8113764019347322170) -->
+ <skip />
+ <!-- no translation found for change_pin_confirm_pins_dont_match (4795052654904027909) -->
+ <skip />
+ <!-- no translation found for change_pin_succeeded (2022852286442211151) -->
+ <skip />
+ <!-- no translation found for change_pin_system_error (8308462387154257840) -->
+ <skip />
</resources>
diff --git a/res/values/config.xml b/res/values/config.xml
index 0b1f93c..12b35c4 100644
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -207,6 +207,9 @@
<!-- Flag indicating whether to allow visual voicemail if available on the device.[DO NOT TRANSLATE] -->
<bool name="allow_visual_voicemail">true</bool>
+ <!-- Flag to enable VVM3 visual voicemail. VVM3 is used by Verizon Wireless. -->
+ <bool name="vvm3_enabled">false</bool>
+
<!-- Component for custom voicemail notification handling. [DO NOT TRANSLATE] -->
<string name="config_customVoicemailComponent">@null</string>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index a18ee87..d549653 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -336,7 +336,7 @@
<string name="vm_change_pin_new_pin">New PIN</string>
<!-- Message on the dialog when PIN changing is in progress -->
- <string name="vm_change_pin_progress_message">Changing PIN</string>
+ <string name="vm_change_pin_progress_message">Please wait.</string>
<!-- Error message for the voicemail PIN change if the PIN is too short -->
<string name="vm_change_pin_error_too_short">The new PIN is too short.</string>
<!-- Error message for the voicemail PIN change if the PIN is too long -->
@@ -1258,6 +1258,8 @@
<string name="voicemail_visual_voicemail_switch_title">Visual Voicemail</string>
<!-- Voicemail change PIN dialog title [CHAR LIMIT=40] -->
+ <string name="voicemail_set_pin_dialog_title">Set PIN</string>
+ <!-- Voicemail change PIN dialog title [CHAR LIMIT=40] -->
<string name="voicemail_change_pin_dialog_title">Change PIN</string>
<!-- Voicemail ringtone title. The user clicks on this preference to select
@@ -1353,4 +1355,28 @@
There are too many active calls. Please end or merge existing calls before placing a new one.
</string>
+ <!-- The title for the change voicemail PIN activity -->
+ <string name="change_pin_title">Change Voicemail PIN</string>
+ <!-- The label for the continue button in change voicemail PIN activity -->
+ <string name="change_pin_continue_label">Continue</string>
+ <!-- The label for the cancel button in change voicemail PIN activity -->
+ <string name="change_pin_cancel_label">Cancel</string>
+ <!-- The label for the ok button in change voicemail PIN activity -->
+ <string name="change_pin_ok_label">Ok</string>
+ <!-- The title for the enter old pin step in change voicemail PIN activity -->
+ <string name="change_pin_enter_old_pin_header">Confirm your old PIN</string>
+ <!-- The hint for the enter old pin step in change voicemail PIN activity -->
+ <string name="change_pin_enter_old_pin_hint">Enter your voicemail PIN to continue.</string>
+ <!-- The title for the enter new pin step in change voicemail PIN activity -->
+ <string name="change_pin_enter_new_pin_header">Set a new PIN</string>
+ <!-- The hint for the enter new pin step in change voicemail PIN activity -->
+ <string name="change_pin_enter_new_pin_hint">PIN must be <xliff:g id="min" example="4">%1$d</xliff:g>-<xliff:g id="max" example="7">%2$d</xliff:g> digits.</string>
+ <!-- The title for the confirm new pin step in change voicemail PIN activity -->
+ <string name="change_pin_confirm_pin_header">Confirm your PIN</string>
+ <!-- The error message for th confirm new pin step in change voicemail PIN activity, if the pin doen't match the one previously entered -->
+ <string name="change_pin_confirm_pins_dont_match">PINs don\'t match</string>
+ <!-- The toast to show after the voicemail PIN has been successfully changed -->
+ <string name="change_pin_succeeded">Voicemail PIN updated</string>
+ <!-- The error message to show if the server reported an error while attempting to change the voicemail PIN -->
+ <string name="change_pin_system_error">Unable to set PIN</string>
</resources>
diff --git a/res/xml/voicemail_settings.xml b/res/xml/voicemail_settings.xml
index 734d9d7..e1dafb0 100644
--- a/res/xml/voicemail_settings.xml
+++ b/res/xml/voicemail_settings.xml
@@ -65,8 +65,7 @@
android:key="@string/voicemail_visual_voicemail_key"
android:title="@string/voicemail_visual_voicemail_switch_title" />"
- <com.android.phone.settings.VoicemailChangePinDialogPreference
- android:key="@string/voicemail_change_pin_key"
- android:title="@string/voicemail_change_pin_dialog_title" />
-
+ <Preference
+ android:key="@string/voicemail_change_pin_key"
+ android:title="@string/voicemail_change_pin_dialog_title" />
</PreferenceScreen>
diff --git a/res/xml/vvm_config.xml b/res/xml/vvm_config.xml
index d55fdb2..3bfdf75 100644
--- a/res/xml/vvm_config.xml
+++ b/res/xml/vvm_config.xml
@@ -135,5 +135,8 @@
<string name="vvm_client_prefix_string">//VZWVVM</string>
<boolean name="vvm_cellular_data_required_bool" value="true"/>
<boolean name="vvm_legacy_mode_enabled_bool" value="true"/>
+ <!-- VVM3 specific value for the voicemail management gateway to use if the SMS didn't provide
+ one -->
+ <string name="default_vmg_url">https://mobile.vzw.com/VMGIMS/VMServices</string>
</pbundle_as_map>
</list>
\ No newline at end of file
diff --git a/sip/res/values-af/strings.xml b/sip/res/values-af/strings.xml
index b621aa9..c30b65c 100644
--- a/sip/res/values-af/strings.xml
+++ b/sip/res/values-af/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"Opsionele instellings"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Stawinggebruikernaam"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Gebruikernaam gebruik vir stawing"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<Nie gestel nie>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<Dieselfde as gebruikernaam>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<Opsioneel>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ Raak om almal te wys"</string>
diff --git a/sip/res/values-am/strings.xml b/sip/res/values-am/strings.xml
index 3d3c7a0..2e16d48 100644
--- a/sip/res/values-am/strings.xml
+++ b/sip/res/values-am/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"አማራጭ ቅንብሮች"</string>
<string name="auth_username_title" msgid="8262491689004708265">"የማረጋገጫ የተጠቃሚ ስም"</string>
<string name="auth_username_summary" msgid="941160241371436473">"ተጠቃሚ ስም ለማረጋገጫ ተጠቅሟል"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<አልተዘጋጀም>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<ከተጠቃሚ ስም ጋር አንድ አይነት>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<አስገዳጅ ያልሆነ>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"ሁሉን ለማሳየት ▷ ይንኩ"</string>
diff --git a/sip/res/values-ar/strings.xml b/sip/res/values-ar/strings.xml
index 1e21f1d..10ca49b 100644
--- a/sip/res/values-ar/strings.xml
+++ b/sip/res/values-ar/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"الإعدادات الاختيارية"</string>
<string name="auth_username_title" msgid="8262491689004708265">"اسم المستخدِم للمصادقة"</string>
<string name="auth_username_summary" msgid="941160241371436473">"اسم المستخدِم المستخدَم للمصادقة"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<لم يتم التعيين>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<مثل اسم المستخدم>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<اختياري>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ المس لإظهار الكل"</string>
diff --git a/sip/res/values-az-rAZ/strings.xml b/sip/res/values-az-rAZ/strings.xml
index eaeebe7..e8f0cc0 100644
--- a/sip/res/values-az-rAZ/strings.xml
+++ b/sip/res/values-az-rAZ/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"Əlavə seçimlər"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Autentifikasiya istifadəçi adı"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Autentifikasiya üçün istifadə edilən istifadəçi adı"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<Təyin edilməyib>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<İstifadəçi adı ilə eyni>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<İstəyə görə>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"Hamısını göstərmək üçün toxunun ▷"</string>
diff --git a/sip/res/values-bg/strings.xml b/sip/res/values-bg/strings.xml
index df5cbf9..1afdc2d 100644
--- a/sip/res/values-bg/strings.xml
+++ b/sip/res/values-bg/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"Незадължителни настройки"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Потребит. име за удостоверяване"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Потребителско име, използвано за удостоверяване"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<Не е зададено>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<Същото като потребителското име>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<По избор>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ Докоснете за показване на всички"</string>
diff --git a/sip/res/values-bn-rBD/strings.xml b/sip/res/values-bn-rBD/strings.xml
index d77cca9..dc572d7 100644
--- a/sip/res/values-bn-rBD/strings.xml
+++ b/sip/res/values-bn-rBD/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"ঐচ্ছিক সেটিংস"</string>
<string name="auth_username_title" msgid="8262491689004708265">"প্রমাণীকরণের ব্যবহারকারীর নাম"</string>
<string name="auth_username_summary" msgid="941160241371436473">"প্রমাণীকরণের জন্য ব্যবহৃত ব্যবহারকারী নাম"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<সেট করা নেই>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<ব্যবহারকারী নামের অনুরূপ>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<ঐচ্ছিক>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ সবকিছু দেখানোর জন্য স্পর্শ করুন"</string>
diff --git a/sip/res/values-ca/strings.xml b/sip/res/values-ca/strings.xml
index a626944..da6ec00 100644
--- a/sip/res/values-ca/strings.xml
+++ b/sip/res/values-ca/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"Configuració opcional"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Nom d\'usuari per a l\'autenticació"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Nom d\'usuari utilitzat per a l\'autenticació"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<No definit>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<Igual que el nom d\'usuari>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<Opcional>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ Toca per mostrar-ho tot."</string>
diff --git a/sip/res/values-cs/strings.xml b/sip/res/values-cs/strings.xml
index 2d7c682..b90772e 100644
--- a/sip/res/values-cs/strings.xml
+++ b/sip/res/values-cs/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"Nepovinná nastavení"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Ověřovací uživatelské jméno"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Uživatelské jméno používané k ověření"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<Nenastaveno>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<Stejné jako uživatelské jméno>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<Nepovinné>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ Výběrem této položky zobrazíte všechna nastavení"</string>
diff --git a/sip/res/values-da/strings.xml b/sip/res/values-da/strings.xml
index fc5e443..b40e27e 100644
--- a/sip/res/values-da/strings.xml
+++ b/sip/res/values-da/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"Valgfri indstillinger"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Brugernavn til godkendelse"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Brugernavn ved godkendelse"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<Ikke angivet>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<Samme som brugernavn>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<Valgfrit>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ Tryk for at vise alle"</string>
diff --git a/sip/res/values-de/strings.xml b/sip/res/values-de/strings.xml
index 9b1d47a..bb0d4bd 100644
--- a/sip/res/values-de/strings.xml
+++ b/sip/res/values-de/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"Optionale Einstellungen"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Nutzername für die Authentifizierung"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Für die Authentifizierung verwendeter Nutzername"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<Nicht festgelegt>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<Wie Nutzername>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<Optional>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ Tippen, um alle einzublenden"</string>
diff --git a/sip/res/values-el/strings.xml b/sip/res/values-el/strings.xml
index 01f8270..fc05539 100644
--- a/sip/res/values-el/strings.xml
+++ b/sip/res/values-el/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"Προαιρετικές ρυθμίσεις"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Όνομα χρήστη ελέγχου ταυτότητας"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Όνομα χρήστη που χρησιμοποιείται για έλεγχο ταυτότητας"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<Δεν έχει οριστεί>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<Ίδιο με το όνομα χρήστη>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<Προαιρετικό>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ Αγγίξτε για εμφάνιση όλων"</string>
diff --git a/sip/res/values-en-rAU/strings.xml b/sip/res/values-en-rAU/strings.xml
index 59a9b16..911657d 100644
--- a/sip/res/values-en-rAU/strings.xml
+++ b/sip/res/values-en-rAU/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"Optional settings"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Authentication username"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Username used for authentication"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<Not set>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<Same as username>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<Optional>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ Touch to show all"</string>
diff --git a/sip/res/values-en-rGB/strings.xml b/sip/res/values-en-rGB/strings.xml
index 59a9b16..911657d 100644
--- a/sip/res/values-en-rGB/strings.xml
+++ b/sip/res/values-en-rGB/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"Optional settings"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Authentication username"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Username used for authentication"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<Not set>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<Same as username>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<Optional>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ Touch to show all"</string>
diff --git a/sip/res/values-en-rIN/strings.xml b/sip/res/values-en-rIN/strings.xml
index 59a9b16..911657d 100644
--- a/sip/res/values-en-rIN/strings.xml
+++ b/sip/res/values-en-rIN/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"Optional settings"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Authentication username"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Username used for authentication"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<Not set>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<Same as username>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<Optional>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ Touch to show all"</string>
diff --git a/sip/res/values-es-rUS/strings.xml b/sip/res/values-es-rUS/strings.xml
index c16d375..8c431fa 100644
--- a/sip/res/values-es-rUS/strings.xml
+++ b/sip/res/values-es-rUS/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"Configuración opcional"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Nombre de usuario de autenticación"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Nombre de usuario utilizado para autenticación"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<Sin configurar>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<Igual que el nombre de usuario>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<Opcional>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ Tocar para mostrar todo"</string>
diff --git a/sip/res/values-es/strings.xml b/sip/res/values-es/strings.xml
index 61f8b1c..7dc4f41 100644
--- a/sip/res/values-es/strings.xml
+++ b/sip/res/values-es/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"Ajustes opcionales"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Nombre de usuario de autenticación"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Nombre de usuario utilizado para la autenticación"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<No definido>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<Igual que el nombre de usuario>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<Opcional>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ Tocar para mostrar todo"</string>
diff --git a/sip/res/values-et-rEE/strings.xml b/sip/res/values-et-rEE/strings.xml
index f3b467b..26dc925 100644
--- a/sip/res/values-et-rEE/strings.xml
+++ b/sip/res/values-et-rEE/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"Valikulised seaded"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Autentimise kasutajanimi"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Autentimiseks kasutatav kasutajanimi"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<Määramata>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<Sama kui kasutajanimi>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<Valikuline>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ Puudutage kõige kuvamiseks"</string>
diff --git a/sip/res/values-eu-rES/strings.xml b/sip/res/values-eu-rES/strings.xml
index b128da6..3b900a7 100644
--- a/sip/res/values-eu-rES/strings.xml
+++ b/sip/res/values-eu-rES/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"Aukerako ezarpenak"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Autentifikatzeko erabiltzaile-izena"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Autentifikatzeko erabili den erabiltzaile-izena"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<Ezarri gabe>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<Erabiltzaile-izenaren berdina>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<Aukerakoa>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ Guztiak erakusteko, ukitu"</string>
diff --git a/sip/res/values-fa/strings.xml b/sip/res/values-fa/strings.xml
index 7ea3987..caf9332 100644
--- a/sip/res/values-fa/strings.xml
+++ b/sip/res/values-fa/strings.xml
@@ -56,12 +56,17 @@
<string name="display_name_title" msgid="579241787583079773">"نام نمایشی"</string>
<string name="proxy_address_title" msgid="6890163365640631841">"آدرس پروکسی خارج از محدوده"</string>
<string name="port_title" msgid="6693965912656593862">"شماره درگاه"</string>
- <string name="transport_title" msgid="889155457465372527">"نوع حمل و نقل"</string>
+ <string name="transport_title" msgid="889155457465372527">"نوع حملونقل"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"ارسال حفظ اتصال"</string>
<string name="advanced_settings" msgid="6622996380747040711">"تنظیمات اختیاری"</string>
<string name="auth_username_title" msgid="8262491689004708265">"نام کاربری برای احراز هویت"</string>
<string name="auth_username_summary" msgid="941160241371436473">"نام کاربری مورد استفاده برای احراز هویت"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<تنظیم نشده>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<مانند نام کاربری>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<اختیاری>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ جهت نمایش همه لمس کنید"</string>
diff --git a/sip/res/values-fi/strings.xml b/sip/res/values-fi/strings.xml
index 05aa2a1..ae797b8 100644
--- a/sip/res/values-fi/strings.xml
+++ b/sip/res/values-fi/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"Lisäasetukset"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Todennuksessa käytettävä käyttäjänimi"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Käyttäjänimeä käytetään todennukseen"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<Ei asetettu>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<Sama kuin käyttäjänimi>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<Valinnainen>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ Näytä kaikki koskettamalla"</string>
diff --git a/sip/res/values-fr-rCA/strings.xml b/sip/res/values-fr-rCA/strings.xml
index 60bd945..f79651d 100644
--- a/sip/res/values-fr-rCA/strings.xml
+++ b/sip/res/values-fr-rCA/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"Paramètres facultatifs"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Nom d\'utilisateur d\'authentification"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Nom d\'utilisateur utilisé pour l\'authentification"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<Non défini>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<Identique au nom d\'utilisateur>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<Facultatif>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"Touchez ▷ pour tout afficher"</string>
diff --git a/sip/res/values-fr/strings.xml b/sip/res/values-fr/strings.xml
index 359576e..4c79680 100644
--- a/sip/res/values-fr/strings.xml
+++ b/sip/res/values-fr/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"Paramètres facultatifs"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Nom d\'utilisateur d\'authentification"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Nom d\'utilisateur utilisé pour l\'authentification"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<Non défini>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<Identique au nom d\'utilisateur>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<Facultatif>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ Appuyer ici pour tout afficher"</string>
diff --git a/sip/res/values-gl-rES/strings.xml b/sip/res/values-gl-rES/strings.xml
index 8368de0..5909559 100644
--- a/sip/res/values-gl-rES/strings.xml
+++ b/sip/res/values-gl-rES/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"Configuración opcional"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Nome de usuario da autenticación"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Nome de usuario utilizado para a autenticación"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<Sen configurar>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<Igual que o nome de usuario>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<Opcional>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ Toca aquí para mostrar todo"</string>
diff --git a/sip/res/values-gu-rIN/strings.xml b/sip/res/values-gu-rIN/strings.xml
index e4e72e9..5992e85 100644
--- a/sip/res/values-gu-rIN/strings.xml
+++ b/sip/res/values-gu-rIN/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"વૈકલ્પિક સેટિંગ્સ"</string>
<string name="auth_username_title" msgid="8262491689004708265">"પ્રમાણીકરણ વપરાશકર્તાનામ"</string>
<string name="auth_username_summary" msgid="941160241371436473">"પ્રમાણીકરણ માટે ઉપયોગમાં લેવાયેલ વપરાશકર્તાનામ"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<સેટ કરેલ નથી>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<વપરાશકર્તાનામના સમાન>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<વૈકલ્પિક>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ બધુ દર્શાવવા માટે ટચ કરો"</string>
diff --git a/sip/res/values-hi/strings.xml b/sip/res/values-hi/strings.xml
index ea665cb..8a60431 100644
--- a/sip/res/values-hi/strings.xml
+++ b/sip/res/values-hi/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"वैकल्पिक सेटिंग"</string>
<string name="auth_username_title" msgid="8262491689004708265">"प्रमाणीकरण उपयोगकर्ता नाम"</string>
<string name="auth_username_summary" msgid="941160241371436473">"प्रमाणीकरण के लिए उपयोग होने वाला उपयोगकर्ता नाम"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<सेट नहीं है>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<उपयोगकर्ता नाम के समान>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<वैकल्पिक>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ सभी दिखाने के लिए स्पर्श करें"</string>
diff --git a/sip/res/values-hr/strings.xml b/sip/res/values-hr/strings.xml
index cf57269..e623d29 100644
--- a/sip/res/values-hr/strings.xml
+++ b/sip/res/values-hr/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"Izborne postavke"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Korisničko ime za autentifikaciju"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Korisničko ime koje se upotrebljava za autentifikaciju"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<Nije postavljeno>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<Isto kao korisničko ime>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<Izborno>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ Dodirnite da biste prikazali sve"</string>
diff --git a/sip/res/values-hu/strings.xml b/sip/res/values-hu/strings.xml
index 12aef74..210a45a 100644
--- a/sip/res/values-hu/strings.xml
+++ b/sip/res/values-hu/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"További beállítások"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Azonosításhoz használt felhasználónév"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Azonosításhoz használt felhasználónév"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<Nincs beállítva>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<Ugyanaz, mint a felhasználónév>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<Nem kötelező>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ Érintse meg az összes megjelenítéséhez"</string>
diff --git a/sip/res/values-hy-rAM/strings.xml b/sip/res/values-hy-rAM/strings.xml
index cc1d26a..e761fbf 100644
--- a/sip/res/values-hy-rAM/strings.xml
+++ b/sip/res/values-hy-rAM/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"Ընտրովի կարգավորումներ"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Նույնականացման օգտանուն"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Օգտանունն օգտագործվել է նույնականացման համար"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<Կարգավորված չէ>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<Նույնը, ինչ օգտանունը>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<Ընտրովի>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ Հպեք՝ ցուցադրելու ամենը"</string>
diff --git a/sip/res/values-in/strings.xml b/sip/res/values-in/strings.xml
index 6b4bb10..ba2dba6 100644
--- a/sip/res/values-in/strings.xml
+++ b/sip/res/values-in/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"Setelan opsional"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Nama pengguna autentikasi"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Nama pengguna yang digunakan untuk autentikasi"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<Tidak disetel>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<Sama dengan nama pengguna>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<Opsional>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ Sentuh untuk menampilkan semua"</string>
diff --git a/sip/res/values-is-rIS/strings.xml b/sip/res/values-is-rIS/strings.xml
index 4033ca7..286ddb3 100644
--- a/sip/res/values-is-rIS/strings.xml
+++ b/sip/res/values-is-rIS/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"Valfrjálsar stillingar"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Notandanafn til auðkenningar"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Notandanafn notað til auðkenningar"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<Ekki valið>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<Sama og notandanafnið>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<Valfrjálst>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ Snertu til að sýna allt"</string>
diff --git a/sip/res/values-it/strings.xml b/sip/res/values-it/strings.xml
index ab04f42..5ba0445 100644
--- a/sip/res/values-it/strings.xml
+++ b/sip/res/values-it/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"Impostazioni facoltative"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Nome utente per autenticazione"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Nome utente utilizzato per l\'autenticazione"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<Non impostato>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<Uguale al nome utente>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<Facoltativo>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ Tocca per mostrare tutto"</string>
diff --git a/sip/res/values-iw/strings.xml b/sip/res/values-iw/strings.xml
index 7505f1d..eccac14 100644
--- a/sip/res/values-iw/strings.xml
+++ b/sip/res/values-iw/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"הגדרות אופציונליות"</string>
<string name="auth_username_title" msgid="8262491689004708265">"שם משתמש לאימות"</string>
<string name="auth_username_summary" msgid="941160241371436473">"שם משתמש המשמש לאימות"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<לא הוגדר>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<זהה לשם משתמש>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<אופציונלי>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"גע כדי להציג את הכל"</string>
diff --git a/sip/res/values-ja/strings.xml b/sip/res/values-ja/strings.xml
index 8487e9e..59b2ea0 100644
--- a/sip/res/values-ja/strings.xml
+++ b/sip/res/values-ja/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"オプション設定"</string>
<string name="auth_username_title" msgid="8262491689004708265">"認証ユーザー名"</string>
<string name="auth_username_summary" msgid="941160241371436473">"認証に使用するユーザー名"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<未設定>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<ユーザー名と同じ>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<オプション>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷すべて表示"</string>
diff --git a/sip/res/values-ka-rGE/strings.xml b/sip/res/values-ka-rGE/strings.xml
index 87eaa97..1f0e0ed 100644
--- a/sip/res/values-ka-rGE/strings.xml
+++ b/sip/res/values-ka-rGE/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"არასავალდებულო პარამეტრები"</string>
<string name="auth_username_title" msgid="8262491689004708265">"ავტორიზაციის მომხმარებლის სახელი"</string>
<string name="auth_username_summary" msgid="941160241371436473">"ავტორიზაციისათვის გამოყენებული მომხმარებლის სახელი"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<არ არის დაყენებული>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<იგივეა, რაც მომხმარებლის სახელი>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<სურვილისამებრ>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ შეეხეთ ყველას საჩვენებლად"</string>
diff --git a/sip/res/values-kk-rKZ/strings.xml b/sip/res/values-kk-rKZ/strings.xml
index b07dacd..affe09d 100644
--- a/sip/res/values-kk-rKZ/strings.xml
+++ b/sip/res/values-kk-rKZ/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"Қосымша параметрлер"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Аутентификациялау пайдаланушы аты"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Аутентификациялау үшін пайдаланылатын пайдаланушы аты"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<Орнатылмаған>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<Пайдаланушы атымен бірдей>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<Міндетті емес>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ Барлығын көрсету үшін түрту"</string>
diff --git a/sip/res/values-km-rKH/strings.xml b/sip/res/values-km-rKH/strings.xml
index cd5a2d9..ae00469 100644
--- a/sip/res/values-km-rKH/strings.xml
+++ b/sip/res/values-km-rKH/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"ការកំណត់ជាជម្រើស"</string>
<string name="auth_username_title" msgid="8262491689004708265">"ឈ្មោះអ្នកប្រើប្រាស់សម្រាប់ផ្ទៀងផ្ទាត់"</string>
<string name="auth_username_summary" msgid="941160241371436473">"ឈ្មោះអ្នកប្រើប្រាស់ដែលបានប្រើសម្រាប់ផ្ទៀងផ្ទាត់"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<មិនបានកំណត់>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<ដូចឈ្មោះអ្នកប្រើ>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<ជាជម្រើស>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"ប៉ះ ▷ ដើម្បីបង្ហាញទាំងអស់"</string>
diff --git a/sip/res/values-kn-rIN/strings.xml b/sip/res/values-kn-rIN/strings.xml
index 5698355..6b59d46 100644
--- a/sip/res/values-kn-rIN/strings.xml
+++ b/sip/res/values-kn-rIN/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"ಐಚ್ಛಿಕ ಸೆಟ್ಟಿಂಗ್ಗಳು"</string>
<string name="auth_username_title" msgid="8262491689004708265">"ದೃಢೀಕರಣ ಬಳಕೆದಾರಹೆಸರು"</string>
<string name="auth_username_summary" msgid="941160241371436473">"ದೃಢೀಕರಣಕ್ಕಾಗಿ ಬಳಕೆದಾರ ಹೆಸರನ್ನು ಬಳಸಲಾಗಿದೆ"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<ಹೊಂದಿಸಿಲ್ಲ>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<ಬಳಕೆದಾರ ಹೆಸರಿನಂತೆ>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<ಐಚ್ಛಿಕ>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ ಎಲ್ಲವನ್ನೂ ತೋರಿಸಲು ಸ್ಪರ್ಶಿಸಿ"</string>
diff --git a/sip/res/values-ko/strings.xml b/sip/res/values-ko/strings.xml
index afdb473..82909a9 100644
--- a/sip/res/values-ko/strings.xml
+++ b/sip/res/values-ko/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"설정(선택사항)"</string>
<string name="auth_username_title" msgid="8262491689004708265">"인증 사용자 이름"</string>
<string name="auth_username_summary" msgid="941160241371436473">"인증에 사용된 사용자 이름"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<설정 안됨>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<사용자 이름과 동일>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<선택사항>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ 모두 표시하려면 터치"</string>
diff --git a/sip/res/values-ky-rKG/strings.xml b/sip/res/values-ky-rKG/strings.xml
index 5f22df1..2cbea7e 100644
--- a/sip/res/values-ky-rKG/strings.xml
+++ b/sip/res/values-ky-rKG/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"Кошумча жөндөөлөр"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Аныктыкты текшерүүчү колдонуучунун ысымы"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Колдонуучунун ысымы аныктыкты текшерүү үчүн колдонулат"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<Коюлган эмес>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<Колдонуучунун ысымына окшош>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<Кошумча>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ Бардыгын көрсөтүү үчүн тийип коюңуз"</string>
diff --git a/sip/res/values-lo-rLA/strings.xml b/sip/res/values-lo-rLA/strings.xml
index e5921be..34e6187 100644
--- a/sip/res/values-lo-rLA/strings.xml
+++ b/sip/res/values-lo-rLA/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"ການຕັ້ງຄ່າທາງເລືອກເສີມ"</string>
<string name="auth_username_title" msgid="8262491689004708265">"ຊື່ຜູ່ໃຊ້ສຳລັບການພິສູດຢືນຢັນໂຕ"</string>
<string name="auth_username_summary" msgid="941160241371436473">"ຊື່ຜູ່ໃຊ້ເພື່ອການພິສູດຢືນຢັນໂຕ"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<ຍັງບໍ່ໄດ້ຕັ້ງ>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<ອັນດຽວກັບຊື່ຜູ່ໃຊ້>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<ໂຕເລືອກເສີມ>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ ແຕະເພື່ອສະແດງທັງໝົດ"</string>
diff --git a/sip/res/values-lt/strings.xml b/sip/res/values-lt/strings.xml
index da52cd5..00c7f75 100644
--- a/sip/res/values-lt/strings.xml
+++ b/sip/res/values-lt/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"Pasirenkami nustatymai"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Tapatybės nustatymo naudotojo vardas"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Tapatybei nustatyti naudotas naudotojo vardas"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<Nenustatyta>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<Kaip naudotojo vardas>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<Pasirenkama>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ Jei norite viską parodyti, palieskite"</string>
diff --git a/sip/res/values-lv/strings.xml b/sip/res/values-lv/strings.xml
index 48d6eb0..73eb8c7 100644
--- a/sip/res/values-lv/strings.xml
+++ b/sip/res/values-lv/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"Neobligāti iestatījumi"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Autentifikācijai izmantotais lietotājvārds"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Autentifikācijai izmantotais lietotājvārds"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<Nav iestatīts>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<Tāds pats kā lietotājvārds>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<Neobligāti>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ Pieskarieties, lai rādītu visu"</string>
diff --git a/sip/res/values-mk-rMK/strings.xml b/sip/res/values-mk-rMK/strings.xml
index 0f843c4..438e5bc 100644
--- a/sip/res/values-mk-rMK/strings.xml
+++ b/sip/res/values-mk-rMK/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"Изборни поставки"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Корисничко име за автентикација"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Корисничко име што се користи за автентикација"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<Нема поставка>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<Исто како корисничкото име>"</string>
<string name="optional_summary" msgid="2363105560396317624">"Изборно"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ Допрете за да се прикажат сите"</string>
diff --git a/sip/res/values-ml-rIN/strings.xml b/sip/res/values-ml-rIN/strings.xml
index 18a8ed1..9676ba7 100644
--- a/sip/res/values-ml-rIN/strings.xml
+++ b/sip/res/values-ml-rIN/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"ഓപ്ഷണൽ ക്രമീകരണങ്ങൾ"</string>
<string name="auth_username_title" msgid="8262491689004708265">"പ്രാമാണീകരണ ഉപയോക്തൃനാമം"</string>
<string name="auth_username_summary" msgid="941160241371436473">"പ്രാമാണീകരണത്തിന് ഉപയോഗിച്ച ഉപയോക്തൃനാമം"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<സജ്ജീകരിച്ചിട്ടില്ല>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<ഉപയോക്തൃനാമത്തിന് സമാനം>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<ഓപ്ഷണൽ>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ എല്ലാം കാണിക്കാൻ സ്പർശിക്കുക"</string>
diff --git a/sip/res/values-mn-rMN/strings.xml b/sip/res/values-mn-rMN/strings.xml
index b2a0eab..27cf7ae 100644
--- a/sip/res/values-mn-rMN/strings.xml
+++ b/sip/res/values-mn-rMN/strings.xml
@@ -40,16 +40,16 @@
<string name="registration_status_registering" msgid="2677183977796278749">"Бүртгэж байна…"</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"Оролдож байна…"</string>
<string name="registration_status_not_receiving" msgid="7620333886153361090">"Дуудлага хүлээж авахгүй байна."</string>
- <string name="registration_status_no_data" msgid="2541999976218192413">"Интернэт холболтгүй болсон учир акаунтын бүртгэл зогслоо."</string>
- <string name="registration_status_no_wifi_data" msgid="9154717387473039546">"Wi-Fi холболтгүй болсон учир акаунтын бүртгэл зогслоо"</string>
+ <string name="registration_status_no_data" msgid="2541999976218192413">"Интернэт холболтгүй болсон учир бүртгэлийн бүртгэл зогслоо."</string>
+ <string name="registration_status_no_wifi_data" msgid="9154717387473039546">"Wi-Fi холболтгүй болсон учир бүртгэлийн бүртгэл зогслоо"</string>
<string name="registration_status_not_running" msgid="514205414303796800">"Акаунтын бүртгэл амжилтгүй."</string>
<string name="registration_status_done" msgid="3264961069247314253">"Дуудлага хүлээн авч байна."</string>
<string name="registration_status_failed_try_later" msgid="2199970021756384317">"Акаунтын бүртгэл амжилтгүй боллоо: (<xliff:g id="REGISTRATION_ERROR_MESSAGE">%s</xliff:g>); дараа дахин оролдох болно"</string>
<string name="registration_status_invalid_credentials" msgid="8406872554323334182">"Акаунтын бүртгэл амжилтгүй боллооl: Хэрэглэгчийн нэр буюу нууц үг буруу"</string>
<string name="registration_status_server_unreachable" msgid="7710275557045148634">"Акаунтын бүртгэл амжилтгүй: Серверийн нэрийг шалгана уу."</string>
<string name="third_party_account_summary" msgid="9041060473615403041">"Энэ акаунтыг <xliff:g id="ACCOUNT_OWNER">%s</xliff:g> апп одоо ашиглаж байна."</string>
- <string name="sip_edit_title" msgid="1967247832635750410">"SIP акаунтын мэдээлэл"</string>
- <string name="sip_edit_new_title" msgid="266414118302574305">"SIP акаунтын мэдээлэл"</string>
+ <string name="sip_edit_title" msgid="1967247832635750410">"SIP бүртгэлийн мэдээлэл"</string>
+ <string name="sip_edit_new_title" msgid="266414118302574305">"SIP бүртгэлийн мэдээлэл"</string>
<string name="domain_address_title" msgid="1968479941328225423">"Сервер"</string>
<string name="username_title" msgid="6770064611005663470">"Хэрэглэгчийн нэр"</string>
<string name="password_title" msgid="5289013731515564295">"Нууц үг"</string>
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"Сонголтын тохиргоо"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Гэрчлэлийн хэрэглэгчийн нэр"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Гэрчлэлд ашигласан хэрэглэгчийн нэр"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<Тохируулаагүй>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<Хэрэглэгчийн нэртэй адил>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<Сонголтын>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ Бүгдийг харуулахын тулд хүрнэ үү"</string>
diff --git a/sip/res/values-mr-rIN/strings.xml b/sip/res/values-mr-rIN/strings.xml
index 9148071..b4567c6 100644
--- a/sip/res/values-mr-rIN/strings.xml
+++ b/sip/res/values-mr-rIN/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"पर्यायी सेटिंग्ज"</string>
<string name="auth_username_title" msgid="8262491689004708265">"प्रमाणीकरण वापरकर्तानाव"</string>
<string name="auth_username_summary" msgid="941160241371436473">"प्रमाणीकरणासाठी वापरकर्तानाव वापरले"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<सेट नाही>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<वापरकर्तानावासमान>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<पर्यायी>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ सर्व दर्शविण्यासाठी स्पर्श करा"</string>
diff --git a/sip/res/values-ms-rMY/strings.xml b/sip/res/values-ms-rMY/strings.xml
index 2ac1040..cf51489 100644
--- a/sip/res/values-ms-rMY/strings.xml
+++ b/sip/res/values-ms-rMY/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"Tetapan pilihan"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Nama pengguna pengesahan"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Nama pengguna yang digunakan untuk pengesahan"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<Tidak ditetapkan>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<Sama dengan nama pengguna>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<Pilihan>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ Sentuh untuk menunjukkan semua"</string>
diff --git a/sip/res/values-my-rMM/strings.xml b/sip/res/values-my-rMM/strings.xml
index 03d6257..74569fb 100644
--- a/sip/res/values-my-rMM/strings.xml
+++ b/sip/res/values-my-rMM/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"ရွေးနိုင်သော ဆက်တင်များ"</string>
<string name="auth_username_title" msgid="8262491689004708265">"အသုံးပြုသူ အမည် အထောက်အထားကို စိစစ်ခြင်း"</string>
<string name="auth_username_summary" msgid="941160241371436473">"အသုံးပြုသူ အမည်ကို အထောက်အထား စိစစ်ရန် သုံးခဲ့"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<သတ်မှတ်မထားပါ>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<အသုံးပြုသူ အမည်နှင့် တူညီသော>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<လိုချင်မှ လုပ်ရန်>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ အားလုံးပြရန် ထိပါ"</string>
diff --git a/sip/res/values-nb/strings.xml b/sip/res/values-nb/strings.xml
index 57bff86..878f85b 100644
--- a/sip/res/values-nb/strings.xml
+++ b/sip/res/values-nb/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"Valgfrie innstillinger"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Brukernavn for autentisering"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Brukernavn som brukes til autentisering"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<Ikke angitt>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<Samme som brukernavn>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<Valgfritt>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ Trykk for å vise alle"</string>
diff --git a/sip/res/values-ne-rNP/strings.xml b/sip/res/values-ne-rNP/strings.xml
index d2c2223..46250c7 100644
--- a/sip/res/values-ne-rNP/strings.xml
+++ b/sip/res/values-ne-rNP/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"वैकल्पिक सेटिङहरू"</string>
<string name="auth_username_title" msgid="8262491689004708265">"प्रमाणीकरणको एक-पटके पाठ सन्देश"</string>
<string name="auth_username_summary" msgid="941160241371436473">"प्रमाणीकरणको लागि एक-पटके पाठ सन्देश प्रयोग भएको"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<सेट गरिएको छैन>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<एक-पटके पाठ सन्देश जस्तै>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<वैकल्पिकgt;"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ छोएर सबै देखाउनुहोस्"</string>
diff --git a/sip/res/values-nl/strings.xml b/sip/res/values-nl/strings.xml
index 7375c4b..6aa5618 100644
--- a/sip/res/values-nl/strings.xml
+++ b/sip/res/values-nl/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"Optionele instellingen"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Gebruikersnaam voor verificatie"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Gebruikersnaam die voor de verificatie wordt gebruikt"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<Niet ingesteld>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<Gelijk aan gebruikersnaam>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<Optioneel>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ Tikken om alles weer te geven"</string>
diff --git a/sip/res/values-pa-rIN/strings.xml b/sip/res/values-pa-rIN/strings.xml
index 15dccb0..9294e0b 100644
--- a/sip/res/values-pa-rIN/strings.xml
+++ b/sip/res/values-pa-rIN/strings.xml
@@ -20,7 +20,7 @@
<string name="sip_accounts" msgid="85559497282185405">"SIP ਖਾਤੇ"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"ਖਾਤੇ"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"ਇਨਕਮਿੰਗ ਕਾਲਾਂ ਪ੍ਰਾਪਤ ਕਰੋ"</string>
- <string name="sip_receive_calls_summary" msgid="946161517528227523">"ਵੱਧ ਬੈਟਰੀ ਸਮਰੱਥਾ ਵਰਤਦਾ ਹੈ"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"ਬੈਟਰੀ ਦੀ ਖਪਤ ਵਧ ਜਾਂਦੀ ਹੈ"</string>
<string name="sip_call_options_title" msgid="8421210494703869806">"SIP ਕਾਲਿੰਗ ਵਰਤੋ"</string>
<string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"SIP ਕਾਲਿੰਗ ਵਰਤੋ (ਕੇਵਲ Wi-Fi)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"ਜਦੋਂ ਡਾਟਾ ਨੈਟਵਰਕ ਉਪਲਬਧ ਹੋਵੇ ਤਾਂ ਸਾਰੀਆਂ ਕਾਲਾਂ ਲਈ"</string>
@@ -45,27 +45,32 @@
<string name="registration_status_not_running" msgid="514205414303796800">"ਖਾਤਾ ਰਜਿਸਟਰੇਸ਼ਨ ਅਸਫਲ।"</string>
<string name="registration_status_done" msgid="3264961069247314253">"ਕਾਲਾਂ ਪ੍ਰਾਪਤ ਕਰ ਰਿਹਾ ਹੈ।"</string>
<string name="registration_status_failed_try_later" msgid="2199970021756384317">"ਖਾਤਾ ਰਜਿਸਟਰੇਸ਼ਨ ਅਸਫਲ: (<xliff:g id="REGISTRATION_ERROR_MESSAGE">%s</xliff:g>); ਬਾਅਦ ਵਿੱਚ ਕੋਸ਼ਿਸ਼ ਕਰੇਗਾ"</string>
- <string name="registration_status_invalid_credentials" msgid="8406872554323334182">"ਖਾਤਾ ਰਜਿਸਟਰੇਸ਼ਨ ਅਸਫਲ: ਗ਼ਲਤ ਉਪਭੋਗਤਾ ਨਾਮ ਜਾਂ ਪਾਸਵਰਡ।"</string>
+ <string name="registration_status_invalid_credentials" msgid="8406872554323334182">"ਖਾਤਾ ਰਜਿਸਟਰੇਸ਼ਨ ਅਸਫਲ: ਗ਼ਲਤ ਵਰਤੋਂਕਾਰ ਨਾਮ ਜਾਂ ਪਾਸਵਰਡ।"</string>
<string name="registration_status_server_unreachable" msgid="7710275557045148634">"ਖਾਤਾ ਰਜਿਸਟਰੇਸ਼ਨ ਅਸਫਲ: ਸਰਵਰ ਨਾਮ ਦੀ ਜਾਂਚ ਕਰੋ।"</string>
<string name="third_party_account_summary" msgid="9041060473615403041">"ਇਹ ਖਾਤਾ ਇਸ ਵੇਲੇ <xliff:g id="ACCOUNT_OWNER">%s</xliff:g> ਐਪ ਵੱਲੋਂ ਵਰਤੋਂ ਵਿੱਚ ਹੈ।"</string>
<string name="sip_edit_title" msgid="1967247832635750410">"SIP ਖਾਤਾ ਵੇਰਵੇ"</string>
<string name="sip_edit_new_title" msgid="266414118302574305">"SIP ਖਾਤਾ ਵੇਰਵੇ"</string>
<string name="domain_address_title" msgid="1968479941328225423">"ਸਰਵਰ"</string>
- <string name="username_title" msgid="6770064611005663470">"ਉਪਭੋਗਤਾ ਨਾਮ"</string>
+ <string name="username_title" msgid="6770064611005663470">"ਵਰਤੋਂਕਾਰ ਨਾਮ"</string>
<string name="password_title" msgid="5289013731515564295">"ਪਾਸਵਰਡ"</string>
<string name="display_name_title" msgid="579241787583079773">"ਡਿਸਪਲੇ ਨਾਮ"</string>
<string name="proxy_address_title" msgid="6890163365640631841">"ਆਊਟਬਾਊਂਡ ਪ੍ਰੌਕਸੀ ਪਤਾ"</string>
<string name="port_title" msgid="6693965912656593862">"ਪੋਰਟ ਨੰਬਰ"</string>
- <string name="transport_title" msgid="889155457465372527">"ਟ੍ਰਾਂਸਪੋਰਟ ਪ੍ਰਕਾਰ"</string>
+ <string name="transport_title" msgid="889155457465372527">"ਟ੍ਰਾਂਸਪੋਰਟ ਦੀ ਕਿਸਮ"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"ਕੀਪ-ਅਲਾਈਵ ਭੇਜੋ"</string>
- <string name="advanced_settings" msgid="6622996380747040711">"ਚੋਣ ਸੰਬੰਧੀ ਸੈਟਿੰਗਾਂ"</string>
- <string name="auth_username_title" msgid="8262491689004708265">"ਪ੍ਰਮਾਣੀਕਰਨ ਉਪਭੋਗਤਾ ਨਾਮ"</string>
- <string name="auth_username_summary" msgid="941160241371436473">"ਪ੍ਰਮਾਣੀਕਰਨ ਲਈ ਵਰਤਿਆ ਗਿਆ ਉਪਭੋਗਤਾ ਨਾਮ"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<ਸੈਟ ਨਹੀਂ ਕੀਤਾ>"</string>
- <string name="display_name_summary" msgid="7155076491675565407">"<ਉਪਭੋਗਤਾ ਨਾਮ ਦੇ ਸਮਾਨ>"</string>
- <string name="optional_summary" msgid="2363105560396317624">"<ਚੋਣਵਾਂ>"</string>
- <string name="advanced_settings_show" msgid="7838761602853998622">"▷ ਸਾਰੇ ਦਿਖਾਉਣ ਲਈ ਛੋਹਵੋ"</string>
- <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ ਸਾਰੇ ਲੁਕਾਉਣ ਲਈ ਛੋਹਵੋ"</string>
+ <string name="advanced_settings" msgid="6622996380747040711">"ਵਿਕਲਪਕ ਸੈਟਿੰਗਾਂ"</string>
+ <string name="auth_username_title" msgid="8262491689004708265">"ਪ੍ਰਮਾਣੀਕਰਨ ਵਰਤੋਂਕਾਰ ਨਾਮ"</string>
+ <string name="auth_username_summary" msgid="941160241371436473">"ਪ੍ਰਮਾਣੀਕਰਨ ਲਈ ਵਰਤਿਆ ਗਿਆ ਵਰਤੋਂਕਾਰ ਨਾਮ"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
+ <string name="display_name_summary" msgid="7155076491675565407">"<ਉਹੀ ਹੈ ਜੋ ਵਰਤੋਂਕਾਰ ਨਾਮ ਹੈ>"</string>
+ <string name="optional_summary" msgid="2363105560396317624">"<ਵਿਕਲਪਕ>"</string>
+ <string name="advanced_settings_show" msgid="7838761602853998622">"▷ ਸਾਰੇ ਦਿਖਾਉਣ ਲਈ ਸਪੱਰਸ਼ ਕਰੋ"</string>
+ <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ ਸਾਰੇ ਲੁਕਾਉਣ ਲਈ ਸਪੱਰਸ਼ ਕਰੋ"</string>
<string name="all_empty_alert" msgid="4087734950375192387">"ਨਵੇਂ SIP ਖਾਤੇ ਦੇ ਵੇਰਵੇ ਦਾਖ਼ਲ ਕਰੋ।"</string>
<string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> ਲੁੜੀਂਦਾ ਹੈ ਅਤੇ ਇਸਨੂੰ ਖਾਲੀ ਨਹੀਂ ਛੱਡਿਆ ਜਾ ਸਕਦਾ।"</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"ਪੋਰਟ ਨੰਬਰ 1000 ਅਤੇ 65534 ਵਿਚਕਾਰ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ।"</string>
diff --git a/sip/res/values-pl/strings.xml b/sip/res/values-pl/strings.xml
index 651af45..0bec1fa 100644
--- a/sip/res/values-pl/strings.xml
+++ b/sip/res/values-pl/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"Ustawienia opcjonalne"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Nazwa do uwierzytelniania"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Nazwa użytkownika używana do uwierzytelniania"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<Nie ustawiono>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<Taka sama jak nazwa użytkownika>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<Opcjonalny>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ Dotknij, by wyświetlić wszystkie ustawienia"</string>
diff --git a/sip/res/values-pt-rPT/strings.xml b/sip/res/values-pt-rPT/strings.xml
index 81652de..9303334 100644
--- a/sip/res/values-pt-rPT/strings.xml
+++ b/sip/res/values-pt-rPT/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"Definições opcionais"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Nome de utilizador para autenticação"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Nome de utilizador usado para autenticação"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<Não definido>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<Igual ao nome de utilizador>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<Opcional>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ Toque para mostrar tudo"</string>
diff --git a/sip/res/values-pt/strings.xml b/sip/res/values-pt/strings.xml
index 21c89a9..d783297 100644
--- a/sip/res/values-pt/strings.xml
+++ b/sip/res/values-pt/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"Configurações opcionais"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Nome de usuário da autenticação"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Nome de usuário utilizado para autenticação"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<Não definido>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<Igual ao nome de usuário>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<Opcional>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ Toque para mostrar todas"</string>
diff --git a/sip/res/values-ro/strings.xml b/sip/res/values-ro/strings.xml
index 158be24..cd783fe 100644
--- a/sip/res/values-ro/strings.xml
+++ b/sip/res/values-ro/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"Setări opționale"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Nume de utilizator pentru autentificare"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Numele de utilizator folosit pentru autentificare"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<Nesetat>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<Identic cu numele de utilizator>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<Opțional>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ Atingeți pentru a afișa tot"</string>
diff --git a/sip/res/values-ru/strings.xml b/sip/res/values-ru/strings.xml
index ea678c8..7381986 100644
--- a/sip/res/values-ru/strings.xml
+++ b/sip/res/values-ru/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"Расширенные настройки"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Имя пользователя"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Имя пользователя для аутентификации"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<Не задано>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<Совпадает с именем пользователя>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<Необязательно>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ Нажмите, чтобы показать все"</string>
diff --git a/sip/res/values-si-rLK/strings.xml b/sip/res/values-si-rLK/strings.xml
index c710b8b..3e4f296 100644
--- a/sip/res/values-si-rLK/strings.xml
+++ b/sip/res/values-si-rLK/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"වෛකල්පිත සැකසුම්"</string>
<string name="auth_username_title" msgid="8262491689004708265">"සත්යාපන පරිශීලක නාමය"</string>
<string name="auth_username_summary" msgid="941160241371436473">"සත්යාපනය සඳහා භාවිතා වන පරිශීලක නාමය"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<පිහිටුවා නැත>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<පරිශීලක නාමය වාගේම>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<වෛකල්පිත>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ සියල්ල පෙන්වීමට ස්පර්ශ කරන්න"</string>
diff --git a/sip/res/values-sk/strings.xml b/sip/res/values-sk/strings.xml
index a278b55..bb65a2d 100644
--- a/sip/res/values-sk/strings.xml
+++ b/sip/res/values-sk/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"Voliteľné nastavenia"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Používateľské meno na overenie"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Používateľské meno použité na overenie"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<Nenastavené>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<Rovnaké ako používateľské meno>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<Voliteľné>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ Klepnutím všetko zobrazíte"</string>
diff --git a/sip/res/values-sl/strings.xml b/sip/res/values-sl/strings.xml
index ae994e3..f1c1ccc 100644
--- a/sip/res/values-sl/strings.xml
+++ b/sip/res/values-sl/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"Izbirne nastavitve"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Uporabniško ime za preverjanje pristnosti"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Uporabniško ime za preverjanje pristnosti"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<Ni nastavljeno>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<Enako kot uporabniško ime>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<Izbirno>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ Dotaknite se, da prikažete vse"</string>
diff --git a/sip/res/values-sq-rAL/strings.xml b/sip/res/values-sq-rAL/strings.xml
index 3e42c58..c59c6d5 100644
--- a/sip/res/values-sq-rAL/strings.xml
+++ b/sip/res/values-sq-rAL/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"Cilësimet opsionale"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Emri i përdoruesit për vërtetim"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Emri i përdoruesit i përdorur për vërtetim"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<I pavendosur>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<Njësoj si emri i përdoruesit>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<Jo e detyrueshme>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ Prek për t\'i shfaqur të gjitha"</string>
diff --git a/sip/res/values-sr/strings.xml b/sip/res/values-sr/strings.xml
index 0c6b48a..2f84412 100644
--- a/sip/res/values-sr/strings.xml
+++ b/sip/res/values-sr/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"Опционална подешавања"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Корисничко име за потврду идентитета"</string>
<string name="auth_username_summary" msgid="941160241371436473">"За потврду идентитета користи се корисничко име"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<Није подешено>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<Исто као корисничко име>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<Опционално>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ Додирните да бисте приказали све"</string>
diff --git a/sip/res/values-sv/strings.xml b/sip/res/values-sv/strings.xml
index f08ebbc..9b391c0 100644
--- a/sip/res/values-sv/strings.xml
+++ b/sip/res/values-sv/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"Valfria inställningar"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Användarnamn vid autentisering"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Användarnamn som används vid autentisering"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<Har inte angetts>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<Samma som användarnamn>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<Valfritt>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ Tryck om du vill visa alla"</string>
diff --git a/sip/res/values-sw/strings.xml b/sip/res/values-sw/strings.xml
index 64f2101..e6f2189 100644
--- a/sip/res/values-sw/strings.xml
+++ b/sip/res/values-sw/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"Mipangilio ya hiari"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Jina la mtumiaji la uthibitishaji"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Jina la mtumiaji hutumika kwa uthibitishaji"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<Haijawekwa>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<Sawa na jina la mtumiaji>"</string>
<string name="optional_summary" msgid="2363105560396317624">"&lt Ni hiari >"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ Gusa ili uonyeshe yote"</string>
diff --git a/sip/res/values-ta-rIN/strings.xml b/sip/res/values-ta-rIN/strings.xml
index b31891e..7d243ea 100644
--- a/sip/res/values-ta-rIN/strings.xml
+++ b/sip/res/values-ta-rIN/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"விருப்ப அமைப்பு"</string>
<string name="auth_username_title" msgid="8262491689004708265">"அங்கீகாரப் பயனர்பெயர்"</string>
<string name="auth_username_summary" msgid="941160241371436473">"அங்கீகரிப்பிற்குப் பயன்படுத்தப்படும் பயனர்பெயர்"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<அமைக்கப்படவில்லை>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<பயனர்பெயர் போன்றது>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<விரும்பினால்>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ எல்லாவற்றையும் காட்ட தொடவும்"</string>
diff --git a/sip/res/values-te-rIN/strings.xml b/sip/res/values-te-rIN/strings.xml
index 4f5cef3..0c5ca9a 100644
--- a/sip/res/values-te-rIN/strings.xml
+++ b/sip/res/values-te-rIN/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"ఐచ్ఛిక సెట్టింగ్లు"</string>
<string name="auth_username_title" msgid="8262491689004708265">"ప్రామాణీకరణ వినియోగదారు పేరు"</string>
<string name="auth_username_summary" msgid="941160241371436473">"ప్రామాణీకరణ కోసం వినియోగదారు పేరు ఉపయోగించబడింది"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<సెట్ చేయలేదు>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<వినియోగదారు పేరు మాదిరే>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<ఐచ్ఛికం>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ అన్నీ చూపడానికి తాకండి"</string>
diff --git a/sip/res/values-th/strings.xml b/sip/res/values-th/strings.xml
index 92e1a3f..75a52ca 100644
--- a/sip/res/values-th/strings.xml
+++ b/sip/res/values-th/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"การตั้งค่าที่ไม่บังคับ"</string>
<string name="auth_username_title" msgid="8262491689004708265">"ชื่อผู้ใช้สำหรับตรวจสอบสิทธิ์"</string>
<string name="auth_username_summary" msgid="941160241371436473">"ชื่อผู้ใช้ที่ใช้ในการตรวจสอบสิทธิ์"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<ไม่ได้ตั้งค่า>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<เหมือนกับชื่อผู้ใช้>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<ไม่บังคับ>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ แตะเพื่อแสดงทั้งหมด"</string>
diff --git a/sip/res/values-tl/strings.xml b/sip/res/values-tl/strings.xml
index a2a9e82..9d971d9 100644
--- a/sip/res/values-tl/strings.xml
+++ b/sip/res/values-tl/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"Mga opsyonal na setting"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Username sa pagpapatunay"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Ginamit ang username para sa pagpapatunay"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<Hindi nakatakda>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<Katulad ng username>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<Opsyonal>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ Pindutin upang ipakita lahat"</string>
diff --git a/sip/res/values-tr/strings.xml b/sip/res/values-tr/strings.xml
index 168eb79..b3ff657 100644
--- a/sip/res/values-tr/strings.xml
+++ b/sip/res/values-tr/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"İsteğe bağlı ayarlar"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Kimlik doğrulama kullanıcı adı"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Kimlik doğrulama için kullanılan kullanıcı adı"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<Ayarlanmadı>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<Kullanıcı adıyla aynı>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<İsteğe bağlı>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ Tümünü görmek için dokunun"</string>
diff --git a/sip/res/values-uk/strings.xml b/sip/res/values-uk/strings.xml
index be20a10..feff72d 100644
--- a/sip/res/values-uk/strings.xml
+++ b/sip/res/values-uk/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"Додаткові налаштування"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Ім’я користувача для автентифікації"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Ім’я користувача, використане для автентифікації"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<Не встановлено>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<Те саме, що й ім’я користувача>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<Додатково>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ Торкніться, щоб показати все"</string>
diff --git a/sip/res/values-ur-rPK/strings.xml b/sip/res/values-ur-rPK/strings.xml
index ccd53c6..16c4664 100644
--- a/sip/res/values-ur-rPK/strings.xml
+++ b/sip/res/values-ur-rPK/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"اختیاری ترتیبات"</string>
<string name="auth_username_title" msgid="8262491689004708265">"توثیق کیلئے صارف نام"</string>
<string name="auth_username_summary" msgid="941160241371436473">"توثیق کیلئے استعمال کردہ صارف نام"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<سیٹ نہیں ہے>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<بالکل وہی جو صارف نام ہے>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<اختیاری>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"◁ سبھی کو دکھانے کیلئے ٹچ کریں"</string>
diff --git a/sip/res/values-uz-rUZ/strings.xml b/sip/res/values-uz-rUZ/strings.xml
index e777336..1dad08a 100644
--- a/sip/res/values-uz-rUZ/strings.xml
+++ b/sip/res/values-uz-rUZ/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"Kengaytirilgan sozlamalar"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Foydalanuvchi nomi"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Haqiqiylikni tekshirish uchun foydalanuvchi nomi"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<Ko‘rsatilmagan>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<Foydalanuvchi nomi bilan bir xil>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<Ixtiyoriy>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ Hammasini ko‘rsatish uchun bosing"</string>
diff --git a/sip/res/values-vi/strings.xml b/sip/res/values-vi/strings.xml
index df6cfde..38c2ced 100644
--- a/sip/res/values-vi/strings.xml
+++ b/sip/res/values-vi/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"Cài đặt tùy chọn"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Tên người dùng xác thực"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Tên người dùng để xác thực"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<Chưa đặt>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<Giống như tên người dùng>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<Tùy chọn>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ Chạm để hiển thị tất cả"</string>
diff --git a/sip/res/values-zh-rCN/strings.xml b/sip/res/values-zh-rCN/strings.xml
index 625c4af..cd6cf85 100644
--- a/sip/res/values-zh-rCN/strings.xml
+++ b/sip/res/values-zh-rCN/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"可选设置"</string>
<string name="auth_username_title" msgid="8262491689004708265">"身份验证用户名"</string>
<string name="auth_username_summary" msgid="941160241371436473">"用于验证身份的用户名"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<未设置>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<与用户名相同>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<可选>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ 触摸可全部显示"</string>
diff --git a/sip/res/values-zh-rHK/strings.xml b/sip/res/values-zh-rHK/strings.xml
index a62745b..fd8f97a 100644
--- a/sip/res/values-zh-rHK/strings.xml
+++ b/sip/res/values-zh-rHK/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"可選設定"</string>
<string name="auth_username_title" msgid="8262491689004708265">"驗證使用者名稱"</string>
<string name="auth_username_summary" msgid="941160241371436473">"用於驗證的使用者名稱"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<未設定>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<與使用者名稱相同>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<非必填>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ 輕觸即可全部顯示"</string>
diff --git a/sip/res/values-zh-rTW/strings.xml b/sip/res/values-zh-rTW/strings.xml
index 7f25be7..c0643aa 100644
--- a/sip/res/values-zh-rTW/strings.xml
+++ b/sip/res/values-zh-rTW/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"選用設定"</string>
<string name="auth_username_title" msgid="8262491689004708265">"驗證使用者名稱"</string>
<string name="auth_username_summary" msgid="941160241371436473">"用於進行驗證的使用者名稱"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<未設定>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<與使用者名稱相同>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<選擇性>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ 輕觸即可全部顯示"</string>
diff --git a/sip/res/values-zu/strings.xml b/sip/res/values-zu/strings.xml
index 3a6b00a..05e86c5 100644
--- a/sip/res/values-zu/strings.xml
+++ b/sip/res/values-zu/strings.xml
@@ -61,7 +61,12 @@
<string name="advanced_settings" msgid="6622996380747040711">"Izilungiselelo ongazikhetha"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Igama lomsebenzisi lokufakazela ubuqiniso"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Igama lomsebenzisi elisetshenziselwa ukufakazela ubuqiniso"</string>
- <string name="default_preference_summary" msgid="1979249643719483249">"<Ayisethiwe>"</string>
+ <!-- no translation found for default_preference_summary_username (8404717434312826082) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_password (4464464672997027904) -->
+ <skip />
+ <!-- no translation found for default_preference_summary_domain_address (4871971710197441673) -->
+ <skip />
<string name="display_name_summary" msgid="7155076491675565407">"<Ifana negama lomsebenzisi>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<Ongakukhetha>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ Thinta ukuze ubonise konke"</string>
diff --git a/src/com/android/phone/Assert.java b/src/com/android/phone/Assert.java
index d4233b2..143e66f 100644
--- a/src/com/android/phone/Assert.java
+++ b/src/com/android/phone/Assert.java
@@ -24,17 +24,39 @@
*/
public class Assert {
+ private static Boolean sIsMainThreadForTest;
+
public static void isTrue(boolean condition) {
if (!condition) {
throw new AssertionError("Expected condition to be true");
}
}
+ public static void isMainThread() {
+ if (sIsMainThreadForTest != null) {
+ isTrue(sIsMainThreadForTest);
+ return;
+ }
+ isTrue(Looper.getMainLooper().equals(Looper.myLooper()));
+ }
+
public static void isNotMainThread() {
+ if (sIsMainThreadForTest != null) {
+ isTrue(!sIsMainThreadForTest);
+ return;
+ }
isTrue(!Looper.getMainLooper().equals(Looper.myLooper()));
}
public static void fail() {
throw new AssertionError("Fail");
}
+
+ /**
+ * Override the main thread status for tests. Set to null to revert to normal behavior
+ */
+ @NeededForTesting
+ public static void setIsMainThreadForTesting(Boolean isMainThread) {
+ sIsMainThreadForTest = isMainThread;
+ }
}
diff --git a/src/com/android/phone/CallFeaturesSetting.java b/src/com/android/phone/CallFeaturesSetting.java
index 33aba17..c753b3c 100644
--- a/src/com/android/phone/CallFeaturesSetting.java
+++ b/src/com/android/phone/CallFeaturesSetting.java
@@ -262,7 +262,8 @@
}
}
- if (ImsManager.isVtEnabledByPlatform(mPhone.getContext())) {
+ if (ImsManager.isVtEnabledByPlatform(mPhone.getContext()) &&
+ mPhone.mDcTracker.isDataEnabled(true)) {
boolean currentValue =
ImsManager.isEnhanced4gLteModeSettingEnabledByUser(mPhone.getContext())
? PhoneGlobals.getInstance().phoneMgr.isVideoCallingEnabled(
diff --git a/src/com/android/phone/PhoneGlobals.java b/src/com/android/phone/PhoneGlobals.java
index 808a5d6..4ff8d8e 100644
--- a/src/com/android/phone/PhoneGlobals.java
+++ b/src/com/android/phone/PhoneGlobals.java
@@ -34,10 +34,8 @@
import android.os.Message;
import android.os.PersistableBundle;
import android.os.PowerManager;
-import android.os.ServiceManager;
import android.os.SystemClock;
import android.os.SystemProperties;
-import android.os.SystemService;
import android.os.UpdateLock;
import android.os.UserManager;
import android.preference.PreferenceManager;
@@ -59,7 +57,6 @@
import com.android.internal.telephony.TelephonyIntents;
import com.android.phone.common.CallLogAsync;
import com.android.phone.settings.SettingsConstants;
-import com.android.server.sip.SipService;
import com.android.services.telephony.activation.SimActivationManager;
import com.android.services.telephony.sip.SipUtil;
@@ -851,6 +848,8 @@
* @param subId the subscription id we should dismiss the notification for.
*/
public void clearMwiIndicator(int subId) {
- notificationMgr.updateMwi(subId, false);
+ // Setting voiceMessageCount to 0 will remove the current notification and clear the system
+ // cached value.
+ getPhone(subId).setVoiceMessageCount(0);
}
}
diff --git a/src/com/android/phone/PhoneInterfaceManager.java b/src/com/android/phone/PhoneInterfaceManager.java
index d050576..b3f3be5 100644
--- a/src/com/android/phone/PhoneInterfaceManager.java
+++ b/src/com/android/phone/PhoneInterfaceManager.java
@@ -3332,4 +3332,19 @@
}
return total;
}
+
+ /**
+ * Policy control of data connection. Usually used when data limit is passed.
+ * @param enabled True if enabling the data, otherwise disabling.
+ * @param subId Subscription index
+ * {@hide}
+ */
+ @Override
+ public void setPolicyDataEnabled(boolean enabled, int subId) {
+ enforceModifyPermission();
+ Phone phone = getPhone(subId);
+ if (phone != null) {
+ phone.setPolicyDataEnabled(enabled);
+ }
+ }
}
diff --git a/src/com/android/phone/common/mail/store/ImapFolder.java b/src/com/android/phone/common/mail/store/ImapFolder.java
index 9b51f34..4abb7f5 100644
--- a/src/com/android/phone/common/mail/store/ImapFolder.java
+++ b/src/com/android/phone/common/mail/store/ImapFolder.java
@@ -94,23 +94,7 @@
public void open(String mode) throws MessagingException {
try {
if (isOpen()) {
- if (mMode == mode) {
- // Make sure the connection is valid.
- // If it's not we'll close it down and continue on to get a new one.
- try {
- mConnection.executeSimpleCommand(ImapConstants.NOOP);
- return;
-
- } catch (IOException ioe) {
- mStore.getImapHelper().handleEvent(OmtpEvents.DATA_GENERIC_IMAP_IOE);
- ioExceptionHandler(mConnection, ioe);
- } finally {
- destroyResponses();
- }
- } else {
- // Return the connection to the pool, if exists.
- close(false);
- }
+ throw new AssertionError("Duplicated open on ImapFolder");
}
synchronized (this) {
mConnection = mStore.getConnection();
diff --git a/src/com/android/phone/settings/VisualVoicemailSettingsUtil.java b/src/com/android/phone/settings/VisualVoicemailSettingsUtil.java
index d7e573e..c38b595 100644
--- a/src/com/android/phone/settings/VisualVoicemailSettingsUtil.java
+++ b/src/com/android/phone/settings/VisualVoicemailSettingsUtil.java
@@ -16,49 +16,31 @@
package com.android.phone.settings;
import android.content.Context;
-import android.content.SharedPreferences;
-import android.preference.PreferenceManager;
import android.telecom.PhoneAccountHandle;
import com.android.internal.telephony.Phone;
import com.android.phone.PhoneUtils;
import com.android.phone.R;
-import com.android.phone.vvm.omtp.OmtpConstants;
import com.android.phone.vvm.omtp.OmtpVvmCarrierConfigHelper;
-import com.android.phone.vvm.omtp.sms.StatusMessage;
+import com.android.phone.vvm.omtp.VisualVoicemailPreferences;
import com.android.phone.vvm.omtp.utils.PhoneAccountHandleConverter;
/**
- * Save visual voicemail login values and whether or not a particular account is enabled in shared
- * preferences to be retrieved later.
- * Because a voicemail source is tied 1:1 to a phone account, the phone account handle is used in
- * the key for each voicemail source and the associated data.
+ * Save whether or not a particular account is enabled in shared to be retrieved later.
*/
public class VisualVoicemailSettingsUtil {
- private static final String VISUAL_VOICEMAIL_SHARED_PREFS_KEY_PREFIX =
- "visual_voicemail_";
private static final String IS_ENABLED_KEY = "is_enabled";
- // Record the timestamp of the last full sync so that duplicate syncs can be reduced.
- private static final String LAST_FULL_SYNC_TIMESTAMP = "last_full_sync_timestamp";
- // Constant indicating that there has never been a full sync.
- public static final long NO_PRIOR_FULL_SYNC = -1;
- // Setting for how often retries should be done.
- private static final String SYNC_RETRY_INTERVAL = "sync_retry_interval";
- private static final long MAX_SYNC_RETRY_INTERVAL_MS = 86400000; // 24 hours
- private static final long DEFAULT_SYNC_RETRY_INTERVAL_MS = 900000; // 15 minutes
- public static void setVisualVoicemailEnabled(Context context, PhoneAccountHandle phoneAccount,
+ public static void setEnabled(Context context, PhoneAccountHandle phoneAccount,
boolean isEnabled) {
- SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
- prefs.edit()
- .putBoolean(getVisualVoicemailSharedPrefsKey(IS_ENABLED_KEY, phoneAccount),
- isEnabled)
+ new VisualVoicemailPreferences(context, phoneAccount).edit()
+ .putBoolean(IS_ENABLED_KEY, isEnabled)
.apply();
}
- public static boolean isVisualVoicemailEnabled(Context context,
+ public static boolean isEnabled(Context context,
PhoneAccountHandle phoneAccount) {
if (phoneAccount == null) {
return false;
@@ -67,19 +49,18 @@
return false;
}
- SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
- String key = getVisualVoicemailSharedPrefsKey(IS_ENABLED_KEY, phoneAccount);
- if (prefs.contains(key)) {
+ VisualVoicemailPreferences prefs = new VisualVoicemailPreferences(context, phoneAccount);
+ if (prefs.contains(IS_ENABLED_KEY)) {
// isEnableByDefault is a bit expensive, so don't use it as default value of
// getBoolean(). The "false" here should never be actually used.
- return prefs.getBoolean(key, false);
+ return prefs.getBoolean(IS_ENABLED_KEY, false);
}
return new OmtpVvmCarrierConfigHelper(context,
PhoneAccountHandleConverter.toSubId(phoneAccount)).isEnabledByDefault();
}
- public static boolean isVisualVoicemailEnabled(Phone phone) {
- return isVisualVoicemailEnabled(phone.getContext(),
+ public static boolean isEnabled(Phone phone) {
+ return isEnabled(phone.getContext(),
PhoneUtils.makePstnPhoneAccountHandle(phone));
}
@@ -89,82 +70,12 @@
* VVM app is installed. If the carrier VVM app is installed the client should give priority to
* it if the settings are not touched.
*/
- public static boolean isVisualVoicemailUserSet(Context context,
+ public static boolean isEnabledUserSet(Context context,
PhoneAccountHandle phoneAccount) {
if (phoneAccount == null) {
return false;
}
- SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
- return prefs.contains(getVisualVoicemailSharedPrefsKey(IS_ENABLED_KEY, phoneAccount));
- }
-
- public static void setVisualVoicemailCredentialsFromStatusMessage(Context context,
- PhoneAccountHandle phoneAccount, StatusMessage message) {
- SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
- SharedPreferences.Editor editor = prefs.edit();
-
- editor.putString(
- getVisualVoicemailSharedPrefsKey(OmtpConstants.IMAP_PORT, phoneAccount),
- message.getImapPort());
- editor.putString(
- getVisualVoicemailSharedPrefsKey(OmtpConstants.SERVER_ADDRESS, phoneAccount),
- message.getServerAddress());
- editor.putString(
- getVisualVoicemailSharedPrefsKey(OmtpConstants.IMAP_USER_NAME, phoneAccount),
- message.getImapUserName());
- editor.putString(
- getVisualVoicemailSharedPrefsKey(OmtpConstants.IMAP_PASSWORD, phoneAccount),
- message.getImapPassword());
- editor.commit();
- }
-
- public static String getVisualVoicemailCredentials(Context context, String key,
- PhoneAccountHandle phoneAccount) {
- SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
- return prefs.getString(getVisualVoicemailSharedPrefsKey(key, phoneAccount), null);
- }
-
- public static long getVisualVoicemailRetryInterval(Context context,
- PhoneAccountHandle phoneAccount) {
- SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
- return prefs.getLong(getVisualVoicemailSharedPrefsKey(SYNC_RETRY_INTERVAL, phoneAccount),
- DEFAULT_SYNC_RETRY_INTERVAL_MS);
- }
-
- public static void resetVisualVoicemailRetryInterval(Context context,
- PhoneAccountHandle phoneAccount) {
- setVisualVoicemailRetryInterval(context, phoneAccount, DEFAULT_SYNC_RETRY_INTERVAL_MS);
- }
-
- public static void setVisualVoicemailRetryInterval(Context context,
- PhoneAccountHandle phoneAccount, long interval) {
- SharedPreferences.Editor editor =
- PreferenceManager.getDefaultSharedPreferences(context).edit();
- editor.putLong(getVisualVoicemailSharedPrefsKey(SYNC_RETRY_INTERVAL, phoneAccount),
- Math.min(interval, MAX_SYNC_RETRY_INTERVAL_MS));
- editor.commit();
- }
-
- public static void setVisualVoicemailLastFullSyncTime(Context context,
- PhoneAccountHandle phoneAccount, long timestamp) {
- SharedPreferences.Editor editor =
- PreferenceManager.getDefaultSharedPreferences(context).edit();
- editor.putLong(getVisualVoicemailSharedPrefsKey(LAST_FULL_SYNC_TIMESTAMP, phoneAccount),
- timestamp);
- editor.commit();
-
- }
-
- public static long getVisualVoicemailLastFullSyncTime(Context context,
- PhoneAccountHandle phoneAccount) {
- SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
- return prefs.getLong(
- getVisualVoicemailSharedPrefsKey(LAST_FULL_SYNC_TIMESTAMP, phoneAccount),
- NO_PRIOR_FULL_SYNC);
- }
-
- public static String getVisualVoicemailSharedPrefsKey(String key,
- PhoneAccountHandle phoneAccount) {
- return VISUAL_VOICEMAIL_SHARED_PREFS_KEY_PREFIX + key + "_" + phoneAccount.getId();
+ VisualVoicemailPreferences prefs = new VisualVoicemailPreferences(context, phoneAccount);
+ return prefs.contains(IS_ENABLED_KEY);
}
}
diff --git a/src/com/android/phone/settings/VoicemailChangePinActivity.java b/src/com/android/phone/settings/VoicemailChangePinActivity.java
new file mode 100644
index 0000000..fcf5bd3
--- /dev/null
+++ b/src/com/android/phone/settings/VoicemailChangePinActivity.java
@@ -0,0 +1,615 @@
+/*
+ * Copyright (C) 2016 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.settings;
+
+import android.annotation.Nullable;
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.app.ProgressDialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.DialogInterface.OnDismissListener;
+import android.content.SharedPreferences;
+import android.net.Network;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.preference.PreferenceManager;
+import android.telecom.PhoneAccountHandle;
+import android.text.Editable;
+import android.text.InputFilter;
+import android.text.InputFilter.LengthFilter;
+import android.text.TextWatcher;
+import android.view.KeyEvent;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.view.WindowManager;
+import android.view.inputmethod.EditorInfo;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.TextView;
+import android.widget.TextView.OnEditorActionListener;
+import android.widget.Toast;
+import com.android.phone.PhoneUtils;
+import com.android.phone.R;
+import com.android.phone.common.mail.MessagingException;
+import com.android.phone.vvm.omtp.OmtpConstants;
+import com.android.phone.vvm.omtp.OmtpConstants.ChangePinResult;
+import com.android.phone.vvm.omtp.OmtpEvents;
+import com.android.phone.vvm.omtp.OmtpVvmCarrierConfigHelper;
+import com.android.phone.vvm.omtp.VisualVoicemailPreferences;
+import com.android.phone.vvm.omtp.VvmLog;
+import com.android.phone.vvm.omtp.imap.ImapHelper;
+import com.android.phone.vvm.omtp.imap.ImapHelper.InitializingException;
+import com.android.phone.vvm.omtp.sync.VvmNetworkRequestCallback;
+
+/**
+ * Dialog to change the voicemail PIN. The TUI (Telephony User Interface) PIN is used when accessing
+ * traditional voicemail through phone call. The intent to launch this activity must contain {@link
+ * #EXTRA_PHONE_ACCOUNT_HANDLE}
+ */
+public class VoicemailChangePinActivity extends Activity implements OnClickListener,
+ OnEditorActionListener, TextWatcher {
+
+ private static final String TAG = "VmChangePinActivity";
+
+ public static final String EXTRA_PHONE_ACCOUNT_HANDLE = "extra_phone_account_handle";
+
+ private static final String KEY_DEFAULT_OLD_PIN = "default_old_pin";
+
+ private static final int MESSAGE_HANDLE_RESULT = 1;
+
+ private PhoneAccountHandle mPhoneAccountHandle;
+ private OmtpVvmCarrierConfigHelper mConfig;
+
+ private int mPinMinLength;
+ private int mPinMaxLength;
+
+ private State mUiState = State.Initial;
+ private String mOldPin;
+ private String mFirstPin;
+
+ private ProgressDialog mProgressDialog;
+
+ private TextView mHeaderText;
+ private TextView mHintText;
+ private TextView mErrorText;
+ private EditText mPinEntry;
+ private Button mCancelButton;
+ private Button mNextButton;
+
+ private Handler mHandler = new Handler() {
+ @Override
+ public void handleMessage(Message message) {
+ if (message.what == MESSAGE_HANDLE_RESULT) {
+ mUiState.handleResult(VoicemailChangePinActivity.this, message.arg1);
+ }
+ }
+ };
+
+ private enum State {
+ /**
+ * Empty state to handle initial state transition. Will immediately switch into {@link
+ * #VerifyOldPin} if a default PIN has been set by the OMTP client, or {@link #EnterOldPin}
+ * if not.
+ */
+ Initial,
+ /**
+ * Prompt the user to enter old PIN. The PIN will be verified with the server before
+ * proceeding to {@link #EnterNewPin}.
+ */
+ EnterOldPin {
+ @Override
+ public void onEnter(VoicemailChangePinActivity activity) {
+ activity.setHeader(R.string.change_pin_enter_old_pin_header);
+ activity.mHintText.setText(R.string.change_pin_enter_old_pin_hint);
+ activity.mNextButton.setText(R.string.change_pin_continue_label);
+ activity.mErrorText.setText(null);
+ }
+
+ @Override
+ public void onInputChanged(VoicemailChangePinActivity activity) {
+ activity.setNextEnabled(activity.getCurrentPasswordInput().length() > 0);
+ }
+
+
+ @Override
+ public void handleNext(VoicemailChangePinActivity activity) {
+ activity.mOldPin = activity.getCurrentPasswordInput();
+ activity.verifyOldPin();
+ }
+
+ @Override
+ public void handleResult(VoicemailChangePinActivity activity,
+ @ChangePinResult int result) {
+ if (result == OmtpConstants.CHANGE_PIN_SUCCESS) {
+ activity.updateState(State.EnterNewPin);
+ } else {
+ CharSequence message = activity.getChangePinResultMessage(result);
+ activity.showError(message);
+ activity.mPinEntry.setText("");
+ }
+ }
+ },
+ /**
+ * The default old PIN is found. Show a blank screen while verifying with the server to make
+ * sure the PIN is still valid. If the PIN is still valid, proceed to {@link #EnterNewPin}.
+ * If not, the user probably changed the PIN through other means, proceed to {@link
+ * #EnterOldPin}. If any other issue caused the verifying to fail, show an error and exit.
+ */
+ VerifyOldPin {
+ @Override
+ public void onEnter(VoicemailChangePinActivity activity) {
+ activity.findViewById(android.R.id.content).setVisibility(View.INVISIBLE);
+ activity.verifyOldPin();
+ }
+
+ @Override
+ public void handleResult(VoicemailChangePinActivity activity,
+ @ChangePinResult int result) {
+ if (result == OmtpConstants.CHANGE_PIN_SUCCESS) {
+ activity.updateState(State.EnterNewPin);
+ } else if (result == OmtpConstants.CHANGE_PIN_SYSTEM_ERROR) {
+ activity.getWindow().setSoftInputMode(
+ WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
+ activity.showError(activity.getString(R.string.change_pin_system_error),
+ new OnDismissListener() {
+ @Override
+ public void onDismiss(DialogInterface dialog) {
+ activity.finish();
+ }
+ });
+ } else {
+ VvmLog.e(TAG, "invalid default old PIN: " + activity
+ .getChangePinResultMessage(result));
+ // If the default old PIN is rejected by the server, the PIN is probably changed
+ // through other means, or the generated pin is invalid
+ // Wipe the default old PIN so the old PIN input box will be shown to the user
+ // on the next time.
+ setDefaultOldPIN(activity, activity.mPhoneAccountHandle, null);
+ activity.mConfig.handleEvent(OmtpEvents.CONFIG_PIN_SET);
+ activity.updateState(State.EnterOldPin);
+ }
+ }
+
+ @Override
+ public void onLeave(VoicemailChangePinActivity activity) {
+ activity.findViewById(android.R.id.content).setVisibility(View.VISIBLE);
+ }
+ },
+ /**
+ * Let the user enter the new PIN and validate the format. Only length is enforced, PIN
+ * strength check relies on the server. After a valid PIN is entered, proceed to {@link
+ * #ConfirmNewPin}
+ */
+ EnterNewPin {
+ @Override
+ public void onEnter(VoicemailChangePinActivity activity) {
+ activity.mHeaderText.setText(R.string.change_pin_enter_new_pin_header);
+ activity.mNextButton.setText(R.string.change_pin_continue_label);
+ activity.mHintText.setText(
+ activity.getString(R.string.change_pin_enter_new_pin_hint,
+ activity.mPinMinLength, activity.mPinMaxLength));
+ }
+
+ @Override
+ public void onInputChanged(VoicemailChangePinActivity activity) {
+ String password = activity.getCurrentPasswordInput();
+ CharSequence error = activity.validatePassword(password);
+ if (error != null) {
+ activity.mErrorText.setText(error);
+ activity.setNextEnabled(false);
+ } else {
+ activity.mErrorText.setText(null);
+ activity.setNextEnabled(true);
+ }
+ }
+
+ @Override
+ public void handleNext(VoicemailChangePinActivity activity) {
+ CharSequence errorMsg;
+ errorMsg = activity.validatePassword(activity.getCurrentPasswordInput());
+ if (errorMsg != null) {
+ activity.showError(errorMsg);
+ return;
+ }
+ activity.mFirstPin = activity.getCurrentPasswordInput();
+ activity.updateState(State.ConfirmNewPin);
+ }
+ },
+ /**
+ * Let the user type in the same PIN again to avoid typos. If the PIN matches then perform a
+ * PIN change to the server. Finish the activity if succeeded. Return to {@link
+ * #EnterOldPin} if the old PIN is rejected, {@link #EnterNewPin} for other failure.
+ */
+ ConfirmNewPin {
+ @Override
+ public void onEnter(VoicemailChangePinActivity activity) {
+ activity.mHeaderText.setText(R.string.change_pin_confirm_pin_header);
+ activity.mHintText.setText(null);
+ activity.mNextButton.setText(R.string.change_pin_ok_label);
+ }
+
+ @Override
+ public void onInputChanged(VoicemailChangePinActivity activity) {
+
+ if (activity.getCurrentPasswordInput().equals(activity.mFirstPin)) {
+ activity.setNextEnabled(true);
+ activity.mErrorText.setText(null);
+ } else {
+ activity.setNextEnabled(false);
+ activity.mErrorText.setText(R.string.change_pin_confirm_pins_dont_match);
+ }
+ }
+
+ @Override
+ public void handleResult(VoicemailChangePinActivity activity,
+ @ChangePinResult int result) {
+ if (result == OmtpConstants.CHANGE_PIN_SUCCESS) {
+ // If the PIN change succeeded we no longer know what the old (current) PIN is.
+ // Wipe the default old PIN so the old PIN input box will be shown to the user
+ // on the next time.
+ setDefaultOldPIN(activity, activity.mPhoneAccountHandle, null);
+ activity.mConfig.handleEvent(OmtpEvents.CONFIG_PIN_SET);
+
+ activity.finish();
+
+ Toast.makeText(activity, activity.getString(R.string.change_pin_succeeded),
+ Toast.LENGTH_SHORT).show();
+ } else {
+ CharSequence message = activity.getChangePinResultMessage(result);
+ activity.showError(message);
+ if (result == OmtpConstants.CHANGE_PIN_MISMATCH) {
+ // Somehow the PIN has changed, prompt to enter the old PIN again.
+ activity.updateState(State.EnterOldPin);
+ } else {
+ // The new PIN failed to fulfil other restrictions imposed by the server.
+ activity.updateState(State.EnterNewPin);
+ }
+
+ }
+
+ }
+
+ @Override
+ public void handleNext(VoicemailChangePinActivity activity) {
+ activity.processPinChange(activity.mOldPin, activity.mFirstPin);
+ }
+ };
+
+ /**
+ * The activity has switched from another state to this one.
+ */
+ public void onEnter(VoicemailChangePinActivity activity) {
+ // Do nothing
+ }
+
+ /**
+ * The user has typed something into the PIN input field. Also called after {@link
+ * #onEnter(VoicemailChangePinActivity)}
+ */
+ public void onInputChanged(VoicemailChangePinActivity activity) {
+ // Do nothing
+ }
+
+ /**
+ * The asynchronous call to change the PIN on the server has returned.
+ */
+ public void handleResult(VoicemailChangePinActivity activity, @ChangePinResult int result) {
+ // Do nothing
+ }
+
+ /**
+ * The user has pressed the "next" button.
+ */
+ public void handleNext(VoicemailChangePinActivity activity) {
+ // Do nothing
+ }
+
+ /**
+ * The activity has switched from this state to another one.
+ */
+ public void onLeave(VoicemailChangePinActivity activity) {
+ // Do nothing
+ }
+
+ }
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ mPhoneAccountHandle = getIntent().getParcelableExtra(EXTRA_PHONE_ACCOUNT_HANDLE);
+ mConfig = new OmtpVvmCarrierConfigHelper(this, mPhoneAccountHandle);
+ setContentView(R.layout.voicemail_change_pin);
+ setTitle(R.string.change_pin_title);
+
+ readPinLength();
+
+ View view = findViewById(android.R.id.content);
+
+ mCancelButton = (Button) view.findViewById(R.id.cancel_button);
+ mCancelButton.setOnClickListener(this);
+ mNextButton = (Button) view.findViewById(R.id.next_button);
+ mNextButton.setOnClickListener(this);
+
+ mPinEntry = (EditText) view.findViewById(R.id.pin_entry);
+ mPinEntry.setOnEditorActionListener(this);
+ mPinEntry.addTextChangedListener(this);
+ if (mPinMaxLength != 0) {
+ mPinEntry.setFilters(new InputFilter[]{new LengthFilter(mPinMaxLength)});
+ }
+
+
+ mHeaderText = (TextView) view.findViewById(R.id.headerText);
+ mHintText = (TextView) view.findViewById(R.id.hintText);
+ mErrorText = (TextView) view.findViewById(R.id.errorText);
+
+ migrateDefaultOldPin();
+
+ if (isDefaultOldPinSet(this, mPhoneAccountHandle)) {
+ mOldPin = getDefaultOldPin(this, mPhoneAccountHandle);
+ updateState(State.VerifyOldPin);
+ } else {
+ updateState(State.EnterOldPin);
+ }
+ }
+
+ /**
+ * Extracts the pin length requirement sent by the server with a STATUS SMS.
+ */
+ private void readPinLength() {
+ VisualVoicemailPreferences preferences = new VisualVoicemailPreferences(this,
+ mPhoneAccountHandle);
+ // The OMTP pin length format is {min}-{max}
+ String[] lengths = preferences.getString(OmtpConstants.TUI_PASSWORD_LENGTH, "").split("-");
+ if (lengths.length == 2) {
+ try {
+ mPinMinLength = Integer.parseInt(lengths[0]);
+ mPinMaxLength = Integer.parseInt(lengths[1]);
+ } catch (NumberFormatException e) {
+ mPinMinLength = 0;
+ mPinMaxLength = 0;
+ }
+ } else {
+ mPinMinLength = 0;
+ mPinMaxLength = 0;
+ }
+ }
+
+ @Override
+ public void onResume() {
+ super.onResume();
+ updateState(mUiState);
+
+ }
+
+ public void handleNext() {
+ if (mPinEntry.length() == 0) {
+ return;
+ }
+ mUiState.handleNext(this);
+ }
+
+ public void onClick(View v) {
+ switch (v.getId()) {
+ case R.id.next_button:
+ handleNext();
+ break;
+
+ case R.id.cancel_button:
+ finish();
+ break;
+ }
+ }
+
+ public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
+ // Check if this was the result of hitting the enter or "done" key
+ if (actionId == EditorInfo.IME_NULL
+ || actionId == EditorInfo.IME_ACTION_DONE
+ || actionId == EditorInfo.IME_ACTION_NEXT) {
+ handleNext();
+ return true;
+ }
+ return false;
+ }
+
+ public void afterTextChanged(Editable s) {
+ mUiState.onInputChanged(this);
+ }
+
+ public void beforeTextChanged(CharSequence s, int start, int count, int after) {
+ // Do nothing
+ }
+
+ public void onTextChanged(CharSequence s, int start, int before, int count) {
+ // Do nothing
+ }
+
+ /**
+ * After replacing the default PIN with a random PIN, call this to store the random PIN. The
+ * stored PIN will be automatically entered when the user attempts to change the PIN.
+ */
+ public static void setDefaultOldPIN(Context context, PhoneAccountHandle phoneAccountHandle,
+ String pin) {
+ new VisualVoicemailPreferences(context, phoneAccountHandle)
+ .edit().putString(KEY_DEFAULT_OLD_PIN, pin).apply();
+ }
+
+ public static boolean isDefaultOldPinSet(Context context,
+ PhoneAccountHandle phoneAccountHandle) {
+ return getDefaultOldPin(context, phoneAccountHandle) != null;
+ }
+
+ private static String getDefaultOldPin(Context context, PhoneAccountHandle phoneAccountHandle) {
+ return new VisualVoicemailPreferences(context, phoneAccountHandle)
+ .getString(KEY_DEFAULT_OLD_PIN);
+ }
+
+ /**
+ * Storage location has changed mid development. Migrate from the old location to avoid losing
+ * tester's default old pin.
+ */
+ private void migrateDefaultOldPin() {
+ String key = "voicemail_pin_dialog_preference_"
+ + PhoneUtils.getSubIdForPhoneAccountHandle(mPhoneAccountHandle)
+ + "_default_old_pin";
+
+ SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
+ if (preferences.contains(key)) {
+ setDefaultOldPIN(this, mPhoneAccountHandle, preferences.getString(key, null));
+ preferences.edit().putString(key, null).apply();
+ }
+ }
+
+ private String getCurrentPasswordInput() {
+ return mPinEntry.getText().toString();
+ }
+
+ private void updateState(State state) {
+ State previousState = mUiState;
+ mUiState = state;
+ if (previousState != state) {
+ previousState.onLeave(this);
+ mPinEntry.setText("");
+ mUiState.onEnter(this);
+ }
+ mUiState.onInputChanged(this);
+ }
+
+ /**
+ * Validates PIN and returns a message to display if PIN fails test.
+ *
+ * @param password the raw password the user typed in
+ * @return error message to show to user or null if password is OK
+ */
+ private CharSequence validatePassword(String password) {
+ if (mPinMinLength == 0 && mPinMaxLength == 0) {
+ // Invalid length requirement is sent by the server, just accept anything and let the
+ // server decide.
+ return null;
+ }
+
+ if (password.length() < mPinMinLength) {
+ return getString(R.string.vm_change_pin_error_too_short);
+ }
+ return null;
+ }
+
+ private void setHeader(int text) {
+ mHeaderText.setText(text);
+ mPinEntry.setContentDescription(mHeaderText.getText());
+ }
+
+ /**
+ * Get the corresponding message for the {@link ChangePinResult}.<code>result</code> must not
+ * {@link OmtpConstants#CHANGE_PIN_SUCCESS}
+ */
+ private CharSequence getChangePinResultMessage(@ChangePinResult int result) {
+ switch (result) {
+ case OmtpConstants.CHANGE_PIN_TOO_SHORT:
+ return getString(R.string.vm_change_pin_error_too_short);
+ case OmtpConstants.CHANGE_PIN_TOO_LONG:
+ return getString(R.string.vm_change_pin_error_too_long);
+ case OmtpConstants.CHANGE_PIN_TOO_WEAK:
+ return getString(R.string.vm_change_pin_error_too_weak);
+ case OmtpConstants.CHANGE_PIN_INVALID_CHARACTER:
+ return getString(R.string.vm_change_pin_error_invalid);
+ case OmtpConstants.CHANGE_PIN_MISMATCH:
+ return getString(R.string.vm_change_pin_error_mismatch);
+ case OmtpConstants.CHANGE_PIN_SYSTEM_ERROR:
+ return getString(R.string.vm_change_pin_error_system_error);
+ default:
+ VvmLog.wtf(TAG, "Unexpected ChangePinResult " + result);
+ return null;
+ }
+ }
+
+ private void verifyOldPin() {
+ processPinChange(mOldPin, mOldPin);
+ }
+
+ private void setNextEnabled(boolean enabled) {
+ mNextButton.setEnabled(enabled);
+ }
+
+
+ private void showError(CharSequence message) {
+ showError(message, null);
+ }
+
+ private void showError(CharSequence message, @Nullable OnDismissListener callback) {
+ new AlertDialog.Builder(this)
+ .setMessage(message)
+ .setPositiveButton(android.R.string.ok, null)
+ .setOnDismissListener(callback)
+ .show();
+ }
+
+ /**
+ * Asynchronous call to change the PIN on the server.
+ */
+ private void processPinChange(String oldPin, String newPin) {
+ mProgressDialog = new ProgressDialog(this);
+ mProgressDialog.setCancelable(false);
+ mProgressDialog.setMessage(getString(R.string.vm_change_pin_progress_message));
+ mProgressDialog.show();
+
+ ChangePinNetworkRequestCallback callback = new ChangePinNetworkRequestCallback(oldPin,
+ newPin);
+ callback.requestNetwork();
+ }
+
+ private class ChangePinNetworkRequestCallback extends VvmNetworkRequestCallback {
+
+ private final String mOldPin;
+ private final String mNewPin;
+
+ public ChangePinNetworkRequestCallback(String oldPin, String newPin) {
+ super(mConfig, mPhoneAccountHandle);
+ mOldPin = oldPin;
+ mNewPin = newPin;
+ }
+
+ @Override
+ public void onAvailable(Network network) {
+ super.onAvailable(network);
+ try (ImapHelper helper =
+ new ImapHelper(VoicemailChangePinActivity.this, mPhoneAccountHandle, network)){
+
+ @ChangePinResult int result =
+ helper.changePin(mOldPin, mNewPin);
+ sendResult(result);
+ } catch (InitializingException | MessagingException e) {
+ sendResult(OmtpConstants.CHANGE_PIN_SYSTEM_ERROR);
+ }
+ }
+
+ @Override
+ public void onFailed(String reason) {
+ super.onFailed(reason);
+ sendResult(OmtpConstants.CHANGE_PIN_SYSTEM_ERROR);
+ }
+
+ private void sendResult(@ChangePinResult int result) {
+ mProgressDialog.dismiss();
+ mHandler.obtainMessage(MESSAGE_HANDLE_RESULT, result, 0).sendToTarget();
+ releaseNetwork();
+ }
+ }
+
+}
diff --git a/src/com/android/phone/settings/VoicemailChangePinDialogPreference.java b/src/com/android/phone/settings/VoicemailChangePinDialogPreference.java
deleted file mode 100644
index 3411228..0000000
--- a/src/com/android/phone/settings/VoicemailChangePinDialogPreference.java
+++ /dev/null
@@ -1,211 +0,0 @@
-/*
- * Copyright (C) 2016 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.settings;
-
-import android.annotation.Nullable;
-import android.app.AlertDialog;
-import android.app.ProgressDialog;
-import android.content.Context;
-import android.content.SharedPreferences;
-import android.net.Network;
-import android.preference.DialogPreference;
-import android.preference.PreferenceManager;
-import android.telecom.PhoneAccountHandle;
-import android.util.AttributeSet;
-import android.util.Log;
-import android.view.View;
-import android.widget.EditText;
-
-import com.android.phone.PhoneUtils;
-import com.android.phone.R;
-import com.android.phone.common.mail.MessagingException;
-import com.android.phone.vvm.omtp.OmtpConstants;
-import com.android.phone.vvm.omtp.OmtpConstants.ChangePinResult;
-import com.android.phone.vvm.omtp.OmtpEvents;
-import com.android.phone.vvm.omtp.imap.ImapHelper;
-import com.android.phone.vvm.omtp.sync.VvmNetworkRequestCallback;
-
-/**
- * Dialog to change the voicemail PIN. The TUI PIN is used when accessing traditional voicemail through
- * phone call.
- */
-public class VoicemailChangePinDialogPreference extends DialogPreference {
-
- private static final String TAG = "VmChangePinDialog";
-
- private EditText mOldPin;
- private EditText mNewPin;
- private PhoneAccountHandle mPhoneAccountHandle;
-
- private ProgressDialog mProgressDialog;
-
- private static final String DEFAULT_OLD_PIN_KEY = "default_old_pin";
-
- public VoicemailChangePinDialogPreference(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
-
- public VoicemailChangePinDialogPreference(Context context, AttributeSet attrs,
- int defStyle) {
- super(context, attrs, defStyle);
- }
-
- @Override
- protected View onCreateDialogView() {
- setDialogLayoutResource(R.layout.voicemail_dialog_change_pin);
-
- View dialog = super.onCreateDialogView();
-
- mOldPin = (EditText) dialog.findViewById(R.id.vm_old_pin);
- mNewPin = (EditText) dialog.findViewById(R.id.vm_new_pin);
- String defaultOldPin = getDefaultOldPin(getContext(), mPhoneAccountHandle);
- if (defaultOldPin != null) {
- // If the old PIN was set by the system, read its' value and hide the input box.
- mOldPin.setText(defaultOldPin);
- mOldPin.setVisibility(View.GONE);
- dialog.findViewById(R.id.vm_old_pin_label).setVisibility(View.GONE);
- }
- return dialog;
- }
-
- @Override
- protected void onDialogClosed(boolean positiveResult) {
- if (positiveResult) {
- processPinChange();
- }
- super.onDialogClosed(positiveResult);
- }
-
- public VoicemailChangePinDialogPreference setPhoneAccountHandle(PhoneAccountHandle handle) {
- mPhoneAccountHandle = handle;
- return this;
- }
-
- @Nullable
- public static String getDefaultOldPin(Context context, PhoneAccountHandle handle) {
- return getSharedPreference(context)
- .getString(getPerPhoneAccountKey(handle, DEFAULT_OLD_PIN_KEY), null);
- }
-
- public static void setDefaultOldPIN(Context context, PhoneAccountHandle handle,
- @Nullable String pin) {
- SharedPreferences preferences = getSharedPreference(context);
- preferences.edit()
- .putString(getPerPhoneAccountKey(handle, DEFAULT_OLD_PIN_KEY), pin)
- .apply();
- }
-
- private static String getPerPhoneAccountKey(PhoneAccountHandle handle, String key) {
- return "voicemail_pin_dialog_preference_"
- + PhoneUtils.getSubIdForPhoneAccountHandle(handle) + "_" + key;
- }
-
- private static SharedPreferences getSharedPreference(Context context) {
- return PreferenceManager.getDefaultSharedPreferences(context);
- }
-
- private void processPinChange() {
- mProgressDialog = new ProgressDialog(getContext());
- mProgressDialog.setCancelable(false);
- mProgressDialog.setMessage(getContext().getString(R.string.vm_change_pin_progress_message));
- mProgressDialog.show();
-
- ChangePinNetworkRequestCallback callback = new ChangePinNetworkRequestCallback();
- callback.requestNetwork();
- }
-
- private void finishPinChange() {
- mProgressDialog.dismiss();
- }
-
- private void showError(@ChangePinResult int result) {
- if (result != OmtpConstants.CHANGE_PIN_SUCCESS) {
- CharSequence message;
- switch (result) {
- case OmtpConstants.CHANGE_PIN_TOO_SHORT:
- message = getContext().getString(R.string.vm_change_pin_error_too_short);
- break;
- case OmtpConstants.CHANGE_PIN_TOO_LONG:
- message = getContext().getString(R.string.vm_change_pin_error_too_long);
- break;
-
- case OmtpConstants.CHANGE_PIN_TOO_WEAK:
- message = getContext().getString(R.string.vm_change_pin_error_too_weak);
- break;
- case OmtpConstants.CHANGE_PIN_INVALID_CHARACTER:
- message = getContext().getString(R.string.vm_change_pin_error_invalid);
- break;
- case OmtpConstants.CHANGE_PIN_MISMATCH:
- message = getContext().getString(R.string.vm_change_pin_error_mismatch);
- break;
- case OmtpConstants.CHANGE_PIN_SYSTEM_ERROR:
- message = getContext().getString(R.string.vm_change_pin_error_system_error);
- break;
- default:
- Log.wtf(TAG, "Unexpected ChangePinResult " + result);
- return;
- }
- new AlertDialog.Builder(getContext())
- .setMessage(message)
- .setPositiveButton(android.R.string.ok, null)
- .show();
- }
- }
-
- private class ChangePinNetworkRequestCallback extends VvmNetworkRequestCallback {
-
- public ChangePinNetworkRequestCallback() {
- super(getContext(), mPhoneAccountHandle);
- }
-
- @Override
- public void onAvailable(Network network) {
- super.onAvailable(network);
- try (ImapHelper helper = new ImapHelper(getContext(), mPhoneAccountHandle, network)) {
- @ChangePinResult int result =
- helper.changePin(mOldPin.getText().toString(),
- mNewPin.getText().toString());
- finishPinChange();
- if (result != OmtpConstants.CHANGE_PIN_SUCCESS) {
- showError(result);
- }
-
- if (result == OmtpConstants.CHANGE_PIN_SUCCESS
- || result == OmtpConstants.CHANGE_PIN_MISMATCH) {
- // If the PIN change succeeded we no longer know what the old (current) PIN is.
- // If the default old PIN is rejected by the server, the PIN is probably changed
- // through other means.
- // Wipe the default old PIN so the old PIN input box will be shown to the user
- // on the next time.
- setDefaultOldPIN(mContext, mPhoneAccountHandle, null);
- helper.handleEvent(OmtpEvents.CONFIG_PIN_SET);
- }
- } catch (MessagingException e) {
- finishPinChange();
- showError(OmtpConstants.CHANGE_PIN_SYSTEM_ERROR);
- }
-
- }
-
- @Override
- public void onFailed(String reason) {
- super.onFailed(reason);
- finishPinChange();
- showError(OmtpConstants.CHANGE_PIN_SYSTEM_ERROR);
- }
- }
-}
diff --git a/src/com/android/phone/settings/VoicemailSettingsActivity.java b/src/com/android/phone/settings/VoicemailSettingsActivity.java
index b10af6e..af4f2ad 100644
--- a/src/com/android/phone/settings/VoicemailSettingsActivity.java
+++ b/src/com/android/phone/settings/VoicemailSettingsActivity.java
@@ -205,7 +205,7 @@
private VoicemailRingtonePreference mVoicemailNotificationRingtone;
private CheckBoxPreference mVoicemailNotificationVibrate;
private SwitchPreference mVoicemailVisualVoicemail;
- private VoicemailChangePinDialogPreference mVoicemailChangePinPreference;
+ private Preference mVoicemailChangePinPreference;
//*********************************************************************************************
// Preference Activity Methods
@@ -266,18 +266,24 @@
mVoicemailVisualVoicemail = (SwitchPreference) findPreference(
getResources().getString(R.string.voicemail_visual_voicemail_key));
- mVoicemailChangePinPreference = (VoicemailChangePinDialogPreference) findPreference(
+ mVoicemailChangePinPreference = findPreference(
getResources().getString(R.string.voicemail_change_pin_key));
- mVoicemailChangePinPreference
- .setPhoneAccountHandle(PhoneUtils.makePstnPhoneAccountHandle(mPhone));
+ PhoneAccountHandle phoneAccountHandle = PhoneUtils.makePstnPhoneAccountHandle(mPhone);
+ Intent changePinIntent = new Intent(new Intent(this, VoicemailChangePinActivity.class));
+ changePinIntent.putExtra(VoicemailChangePinActivity.EXTRA_PHONE_ACCOUNT_HANDLE,
+ phoneAccountHandle);
+
+ mVoicemailChangePinPreference.setIntent(changePinIntent);
+ if (VoicemailChangePinActivity.isDefaultOldPinSet(this, phoneAccountHandle)) {
+ mVoicemailChangePinPreference.setTitle(R.string.voicemail_set_pin_dialog_title);
+ } else {
+ mVoicemailChangePinPreference.setTitle(R.string.voicemail_change_pin_dialog_title);
+ }
if (mOmtpVvmCarrierConfigHelper.isValid()) {
mVoicemailVisualVoicemail.setOnPreferenceChangeListener(this);
mVoicemailVisualVoicemail.setChecked(
- VisualVoicemailSettingsUtil.isVisualVoicemailEnabled(mPhone));
-
- mVoicemailChangePinPreference
- .setPhoneAccountHandle(PhoneUtils.makePstnPhoneAccountHandle(mPhone));
+ VisualVoicemailSettingsUtil.isEnabled(mPhone));
} else {
prefSet.removePreference(mVoicemailVisualVoicemail);
prefSet.removePreference(mVoicemailChangePinPreference);
@@ -405,7 +411,7 @@
boolean isEnabled = (boolean) objValue;
PhoneAccountHandle handle = PhoneUtils.makePstnPhoneAccountHandle(mPhone);
VisualVoicemailSettingsUtil
- .setVisualVoicemailEnabled(mPhone.getContext(), handle, isEnabled);
+ .setEnabled(mPhone.getContext(), handle, isEnabled);
PreferenceScreen prefSet = getPreferenceScreen();
if (isEnabled) {
OmtpVvmSourceManager.getInstance(mPhone.getContext()).addPhoneStateListener(mPhone);
diff --git a/src/com/android/phone/vvm/omtp/ActivationTask.java b/src/com/android/phone/vvm/omtp/ActivationTask.java
new file mode 100644
index 0000000..101a96f
--- /dev/null
+++ b/src/com/android/phone/vvm/omtp/ActivationTask.java
@@ -0,0 +1,166 @@
+/*
+ * Copyright (C) 2016 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.vvm.omtp;
+
+import android.annotation.Nullable;
+import android.annotation.WorkerThread;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.telecom.PhoneAccountHandle;
+import com.android.phone.Assert;
+import com.android.phone.PhoneGlobals;
+import com.android.phone.vvm.omtp.protocol.VisualVoicemailProtocol;
+import com.android.phone.vvm.omtp.scheduling.BaseTask;
+import com.android.phone.vvm.omtp.scheduling.RetryPolicy;
+import com.android.phone.vvm.omtp.sms.StatusMessage;
+import com.android.phone.vvm.omtp.sms.StatusSmsFetcher;
+import com.android.phone.vvm.omtp.sync.OmtpVvmSourceManager;
+import com.android.phone.vvm.omtp.sync.OmtpVvmSyncService;
+import com.android.phone.vvm.omtp.sync.SyncTask;
+import com.android.phone.vvm.omtp.utils.PhoneAccountHandleConverter;
+import java.io.IOException;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.TimeoutException;
+
+/**
+ * Task to activate the visual voicemail service. A request to activate VVM will be sent to the
+ * carrier, which will respond with a STATUS SMS. The credentials will be updated from the SMS. If
+ * the user is not provisioned provisioning will be attempted. Activation happens when the phone
+ * boots, the SIM is inserted, signal returned when VVM is not activated yet, and when the carrier
+ * spontaneously sent a STATUS SMS.
+ */
+public class ActivationTask extends BaseTask {
+
+ private static final String TAG = "ActivationTask";
+
+ private static final int RETRY_TIMES = 4;
+ private static final int RETRY_INTERVAL_MILLIS = 5_000;
+
+ private static final String EXTRA_MESSAGE_DATA_BUNDLE = "extra_message_data_bundle";
+
+ private Bundle mData;
+
+ public ActivationTask() {
+ super(TASK_ACTIVATION);
+ addPolicy(new RetryPolicy(RETRY_TIMES, RETRY_INTERVAL_MILLIS));
+ }
+
+ public static void start(Context context, int subId, @Nullable Bundle data) {
+ Intent intent = BaseTask.createIntent(context, ActivationTask.class, subId);
+ if (data != null) {
+ intent.putExtra(EXTRA_MESSAGE_DATA_BUNDLE, data);
+ }
+ context.startService(intent);
+ }
+
+ public void onCreate(Context context, Intent intent, int flags, int startId) {
+ super.onCreate(context, intent, flags, startId);
+ mData = intent.getParcelableExtra(EXTRA_MESSAGE_DATA_BUNDLE);
+ }
+
+ @Override
+ public Intent createRestartIntent() {
+ Intent intent = super.createRestartIntent();
+ // mData is discarded, request a fresh STATUS SMS for retries.
+ return intent;
+ }
+
+ @Override
+ @WorkerThread
+ public void onExecuteInBackgroundThread() {
+ Assert.isNotMainThread();
+ int subId = getSubId();
+
+ OmtpVvmCarrierConfigHelper helper = new OmtpVvmCarrierConfigHelper(getContext(), subId);
+ helper.handleEvent(OmtpEvents.CONFIG_ACTIVATING);
+ helper.activateSmsFilter();
+ PhoneAccountHandle phoneAccountHandle = PhoneAccountHandleConverter.fromSubId(subId);
+
+ VisualVoicemailProtocol protocol = helper.getProtocol();
+
+ Bundle data;
+ if (mData != null) {
+ // The content of STATUS SMS is provided to launch this task, no need to request it
+ // again.
+ data = mData;
+ } else {
+ try (StatusSmsFetcher fetcher = new StatusSmsFetcher(getContext(), subId)) {
+ protocol.startActivation(helper);
+ // Both the fetcher and OmtpMessageReceiver will be triggered, but
+ // OmtpMessageReceiver will just route the SMS back to ActivationTask, which will be
+ // rejected because the task is still running.
+ data = fetcher.get();
+ } catch (TimeoutException e) {
+ // The carrier is expected to return an STATUS SMS within STATUS_SMS_TIMEOUT_MILLIS
+ // handleEvent() will do the logging.
+ helper.handleEvent(OmtpEvents.CONFIG_STATUS_SMS_TIME_OUT);
+ fail();
+ return;
+ } catch (InterruptedException | ExecutionException | IOException e) {
+ VvmLog.e(TAG, "can't get future STATUS SMS", e);
+ fail();
+ return;
+ }
+ }
+
+ StatusMessage message = new StatusMessage(data);
+ VvmLog.d(TAG, "STATUS SMS received: st=" + message.getProvisioningStatus()
+ + ", rc=" + message.getReturnCode());
+
+ if (message.getProvisioningStatus().equals(OmtpConstants.SUBSCRIBER_READY)) {
+ VvmLog.d(TAG, "subscriber ready, no activation required");
+ updateSource(getContext(), phoneAccountHandle, getSubId(), message);
+ } else {
+ if (helper.supportsProvisioning()) {
+ VvmLog.i(TAG, "Subscriber not ready, start provisioning");
+ helper.startProvisioning(this, phoneAccountHandle, message, data);
+
+ } else {
+ VvmLog.i(TAG, "Subscriber not ready but provisioning is not supported");
+ // Ignore the non-ready state and attempt to use the provided info as is.
+ // This is probably caused by not completing the new user tutorial.
+ updateSource(getContext(), phoneAccountHandle, getSubId(), message);
+ }
+ }
+ }
+
+ public static void updateSource(Context context, PhoneAccountHandle phone, int subId,
+ StatusMessage message) {
+ OmtpVvmSourceManager vvmSourceManager =
+ OmtpVvmSourceManager.getInstance(context);
+
+ if (OmtpConstants.SUCCESS.equals(message.getReturnCode())) {
+ OmtpVvmCarrierConfigHelper helper = new OmtpVvmCarrierConfigHelper(context, subId);
+ helper.handleEvent(OmtpEvents.CONFIG_REQUEST_STATUS_SUCCESS);
+
+ // Save the IMAP credentials in preferences so they are persistent and can be retrieved.
+ VisualVoicemailPreferences prefs = new VisualVoicemailPreferences(context, phone);
+ message.putStatus(prefs.edit()).apply();
+
+ // Add the source to indicate that it is active.
+ vvmSourceManager.addSource(phone);
+
+ SyncTask.start(context, phone, OmtpVvmSyncService.SYNC_FULL_SYNC);
+ // Remove the message waiting indicator, which is a stick notification fo traditional
+ // voicemails.
+ PhoneGlobals.getInstance().clearMwiIndicator(subId);
+ } else {
+ VvmLog.e(TAG, "Visual voicemail not available for subscriber.");
+ }
+ }
+}
diff --git a/src/com/android/phone/vvm/omtp/DefaultOmtpEventHandler.java b/src/com/android/phone/vvm/omtp/DefaultOmtpEventHandler.java
index c49df64..45ed406 100644
--- a/src/com/android/phone/vvm/omtp/DefaultOmtpEventHandler.java
+++ b/src/com/android/phone/vvm/omtp/DefaultOmtpEventHandler.java
@@ -57,6 +57,15 @@
.setNotificationChannelState(Status.NOTIFICATION_CHANNEL_STATE_OK)
.apply();
break;
+ case CONFIG_ACTIVATING:
+ VoicemailStatus.edit(context, config.getSubId())
+ .setConfigurationState(Status.CONFIGURATION_STATE_CONFIGURING).apply();
+ break;
+ case CONFIG_STATUS_SMS_TIME_OUT:
+ VoicemailStatus.edit(context, config.getSubId())
+ .setConfigurationState(Status.CONFIGURATION_STATE_FAILED)
+ .apply();
+ break;
default:
VvmLog.wtf(TAG, "invalid configuration event " + event);
}
diff --git a/src/com/android/phone/vvm/omtp/OmtpConstants.java b/src/com/android/phone/vvm/omtp/OmtpConstants.java
index 8975b59..3f5722f 100644
--- a/src/com/android/phone/vvm/omtp/OmtpConstants.java
+++ b/src/com/android/phone/vvm/omtp/OmtpConstants.java
@@ -125,6 +125,7 @@
public static final String SERVER_ADDRESS = "srv";
/** Phone number to access voicemails through Telephony User Interface */
public static final String TUI_ACCESS_NUMBER = "tui";
+ public static final String TUI_PASSWORD_LENGTH = "pw_len";
/** Number to send client origination SMS */
public static final String CLIENT_SMS_DESTINATION_NUMBER = "dn";
public static final String IMAP_PORT = "ipt";
diff --git a/src/com/android/phone/vvm/omtp/OmtpEvents.java b/src/com/android/phone/vvm/omtp/OmtpEvents.java
index f42db72..787cb35 100644
--- a/src/com/android/phone/vvm/omtp/OmtpEvents.java
+++ b/src/com/android/phone/vvm/omtp/OmtpEvents.java
@@ -34,6 +34,8 @@
CONFIG_PIN_SET(Type.CONFIGURATION, true),
// The voicemail PIN is replaced with a generated PIN, user should change it.
CONFIG_DEFAULT_PIN_REPLACED(Type.CONFIGURATION, true),
+ CONFIG_ACTIVATING(Type.CONFIGURATION, true),
+ CONFIG_STATUS_SMS_TIME_OUT(Type.CONFIGURATION),
// Data channel State
@@ -103,7 +105,8 @@
VVM3_STATUS_SMS_TIMEOUT,
VVM3_SUBSCRIBER_PROVISIONED,
- VVM3_SUBSCRIBER_BLOCKED;
+ VVM3_SUBSCRIBER_BLOCKED,
+ VVM3_SUBSCRIBER_UNKNOWN;
public static class Type {
diff --git a/src/com/android/phone/vvm/omtp/OmtpVvmCarrierConfigHelper.java b/src/com/android/phone/vvm/omtp/OmtpVvmCarrierConfigHelper.java
index b570744..00a70be 100644
--- a/src/com/android/phone/vvm/omtp/OmtpVvmCarrierConfigHelper.java
+++ b/src/com/android/phone/vvm/omtp/OmtpVvmCarrierConfigHelper.java
@@ -27,13 +27,12 @@
import android.telephony.VisualVoicemailSmsFilterSettings;
import android.text.TextUtils;
import android.util.ArraySet;
-
import com.android.internal.annotations.VisibleForTesting;
import com.android.phone.VoicemailStatus;
import com.android.phone.vvm.omtp.protocol.VisualVoicemailProtocol;
import com.android.phone.vvm.omtp.protocol.VisualVoicemailProtocolFactory;
import com.android.phone.vvm.omtp.sms.StatusMessage;
-
+import com.android.phone.vvm.omtp.utils.PhoneAccountHandleConverter;
import java.util.Arrays;
import java.util.Set;
@@ -96,6 +95,8 @@
private final VisualVoicemailProtocol mProtocol;
private final PersistableBundle mTelephonyConfig;
+ private PhoneAccountHandle mPhoneAccountHandle;
+
public OmtpVvmCarrierConfigHelper(Context context, int subId) {
mContext = context;
mSubId = subId;
@@ -107,18 +108,23 @@
.getConfig(telephonyManager.getSimOperator(subId));
mVvmType = getVvmType();
- mProtocol = VisualVoicemailProtocolFactory.create(mVvmType);
+ mProtocol = VisualVoicemailProtocolFactory.create(mContext.getResources(), mVvmType);
+ }
+
+ public OmtpVvmCarrierConfigHelper(Context context, PhoneAccountHandle handle) {
+ this(context, PhoneAccountHandleConverter.toSubId(handle));
+ mPhoneAccountHandle = handle;
}
@VisibleForTesting
- OmtpVvmCarrierConfigHelper(PersistableBundle carrierConfig,
+ OmtpVvmCarrierConfigHelper(Context context, PersistableBundle carrierConfig,
PersistableBundle telephonyConfig) {
- mContext = null;
+ mContext = context;
mSubId = 0;
mCarrierConfig = carrierConfig;
mTelephonyConfig = telephonyConfig;
mVvmType = getVvmType();
- mProtocol = VisualVoicemailProtocolFactory.create(mVvmType);
+ mProtocol = VisualVoicemailProtocolFactory.create(mContext.getResources(), mVvmType);
}
public Context getContext() {
@@ -129,6 +135,13 @@
return mSubId;
}
+ public PhoneAccountHandle getPhoneAccountHandle() {
+ if (mPhoneAccountHandle == null) {
+ mPhoneAccountHandle = PhoneAccountHandleConverter.fromSubId(mSubId);
+ }
+ return mPhoneAccountHandle;
+ }
+
/**
* return whether the carrier's visual voicemail is supported, with KEY_VVM_TYPE_STRING set as a
* known protocol.
@@ -147,6 +160,14 @@
return mProtocol;
}
+ /**
+ * @returns arbitrary String stored in the config file. Used for protocol specific values.
+ */
+ @Nullable
+ public String getString(String key) {
+ return (String) getValue(key);
+ }
+
@Nullable
public Set<String> getCarrierVvmPackageNames() {
Set<String> names = getCarrierVvmPackageNames(mCarrierConfig);
@@ -291,7 +312,7 @@
activateSmsFilter();
if (mProtocol != null) {
- mProtocol.startActivation(this);
+ ActivationTask.start(mContext, mSubId, null);
}
}
@@ -313,9 +334,17 @@
}
}
- public void startProvisioning(PhoneAccountHandle phone, StatusMessage message, Bundle data) {
+ public boolean supportsProvisioning() {
if (mProtocol != null) {
- mProtocol.startProvisioning(phone, this, message, data);
+ return mProtocol.supportsProvisioning();
+ }
+ return false;
+ }
+
+ public void startProvisioning(ActivationTask task, PhoneAccountHandle phone,
+ StatusMessage message, Bundle data) {
+ if (mProtocol != null) {
+ mProtocol.startProvisioning(task, phone, this, message, data);
}
}
@@ -395,4 +424,5 @@
}
return defaultValue;
}
+
}
\ No newline at end of file
diff --git a/src/com/android/phone/vvm/omtp/SimChangeReceiver.java b/src/com/android/phone/vvm/omtp/SimChangeReceiver.java
index f22711a..24f7a2a 100644
--- a/src/com/android/phone/vvm/omtp/SimChangeReceiver.java
+++ b/src/com/android/phone/vvm/omtp/SimChangeReceiver.java
@@ -24,6 +24,7 @@
import android.os.UserManager;
import android.telecom.PhoneAccountHandle;
import android.telephony.CarrierConfigManager;
+import android.telephony.ServiceState;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
@@ -88,15 +89,23 @@
if (carrierConfigHelper.isValid()) {
PhoneAccountHandle phoneAccount = PhoneAccountHandleConverter.fromSubId(subId);
- if (VisualVoicemailSettingsUtil.isVisualVoicemailEnabled(context, phoneAccount)) {
- VvmLog.i(TAG, "Sim state or carrier config changed: requesting"
- + " activation for " + subId);
-
+ if (VisualVoicemailSettingsUtil.isEnabled(context, phoneAccount)) {
+ VvmLog.i(TAG, "Sim state or carrier config changed for " + subId);
// Add a phone state listener so that changes to the communication channels
// can be recorded.
OmtpVvmSourceManager.getInstance(context).addPhoneStateListener(
phoneAccount);
- carrierConfigHelper.startActivation();
+ // Check for signal before activating. The event often happen while boot and the
+ // network is not connected yet. Launching activation will likely to cause the SMS
+ // sending to fail and waste unnecessary time waiting for time out.
+ if (context.getSystemService(TelephonyManager.class)
+ .getServiceStateForSubscriber(subId).getState()
+ == ServiceState.STATE_IN_SERVICE) {
+ VvmLog.i(TAG, "Sim/config changed while in service, requesting activation");
+ carrierConfigHelper.startActivation();
+ } else {
+ VvmLog.i(TAG, "Sim/config changed while not in service.");
+ }
} else {
if (carrierConfigHelper.isLegacyModeEnabled()) {
// SMS still need to be filtered under legacy mode.
diff --git a/src/com/android/phone/vvm/omtp/VisualVoicemailPreferences.java b/src/com/android/phone/vvm/omtp/VisualVoicemailPreferences.java
new file mode 100644
index 0000000..be51ea9
--- /dev/null
+++ b/src/com/android/phone/vvm/omtp/VisualVoicemailPreferences.java
@@ -0,0 +1,146 @@
+/*
+ * Copyright (C) 2016 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.vvm.omtp;
+
+import android.annotation.Nullable;
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.preference.PreferenceManager;
+import android.telecom.PhoneAccountHandle;
+
+import com.android.phone.NeededForTesting;
+
+import java.util.Set;
+
+/**
+ * Save visual voicemail values in shared preferences to be retrieved later. Because a voicemail
+ * source is tied 1:1 to a phone account, the phone account handle is used in the key for each
+ * voicemail source and the associated data.
+ */
+public class VisualVoicemailPreferences {
+
+ private static final String VISUAL_VOICEMAIL_SHARED_PREFS_KEY_PREFIX =
+ "visual_voicemail_";
+
+ private final SharedPreferences mPreferences;
+ private final PhoneAccountHandle mPhoneAccountHandle;
+
+ public VisualVoicemailPreferences(Context context, PhoneAccountHandle phoneAccountHandle) {
+ mPreferences = PreferenceManager.getDefaultSharedPreferences(context);
+ mPhoneAccountHandle = phoneAccountHandle;
+ }
+
+ public class Editor {
+
+ private final SharedPreferences.Editor mEditor;
+
+ private Editor() {
+ mEditor = mPreferences.edit();
+ }
+
+ public void apply() {
+ mEditor.apply();
+ }
+
+ public Editor putBoolean(String key, boolean value) {
+ mEditor.putBoolean(getKey(key), value);
+ return this;
+ }
+
+ @NeededForTesting
+ public Editor putFloat(String key, float value) {
+ mEditor.putFloat(getKey(key), value);
+ return this;
+ }
+
+ public Editor putInt(String key, int value) {
+ mEditor.putInt(getKey(key), value);
+ return this;
+ }
+
+ @NeededForTesting
+ public Editor putLong(String key, long value) {
+ mEditor.putLong(getKey(key), value);
+ return this;
+ }
+
+ public Editor putString(String key, String value) {
+ mEditor.putString(getKey(key), value);
+ return this;
+ }
+
+ @NeededForTesting
+ public Editor putStringSet(String key, Set<String> value) {
+ mEditor.putStringSet(getKey(key), value);
+ return this;
+ }
+ }
+
+ public Editor edit() {
+ return new Editor();
+ }
+
+ public boolean getBoolean(String key, boolean defValue) {
+ return getValue(key, defValue);
+ }
+
+ @NeededForTesting
+ public float getFloat(String key, float defValue) {
+ return getValue(key, defValue);
+ }
+
+ public int getInt(String key, int defValue) {
+ return getValue(key, defValue);
+ }
+
+ @NeededForTesting
+ public long getLong(String key, long defValue) {
+ return getValue(key, defValue);
+ }
+
+ public String getString(String key, String defValue) {
+ return getValue(key, defValue);
+ }
+
+ @Nullable
+ public String getString(String key) {
+ return getValue(key, null);
+ }
+
+ @NeededForTesting
+ public Set<String> getStringSet(String key, Set<String> defValue) {
+ return getValue(key, defValue);
+ }
+
+ public boolean contains(String key) {
+ return mPreferences.contains(getKey(key));
+ }
+
+ private <T> T getValue(String key, T defValue) {
+ if (!contains(key)) {
+ return defValue;
+ }
+ Object object = mPreferences.getAll().get(getKey(key));
+ if (object == null) {
+ return defValue;
+ }
+ return (T) object;
+ }
+
+ private String getKey(String key) {
+ return VISUAL_VOICEMAIL_SHARED_PREFS_KEY_PREFIX + key + "_" + mPhoneAccountHandle.getId();
+ }
+}
diff --git a/src/com/android/phone/vvm/omtp/VvmPackageInstallReceiver.java b/src/com/android/phone/vvm/omtp/VvmPackageInstallReceiver.java
index 8a0495b..7c20065 100644
--- a/src/com/android/phone/vvm/omtp/VvmPackageInstallReceiver.java
+++ b/src/com/android/phone/vvm/omtp/VvmPackageInstallReceiver.java
@@ -48,7 +48,7 @@
OmtpVvmSourceManager vvmSourceManager = OmtpVvmSourceManager.getInstance(context);
Set<PhoneAccountHandle> phoneAccounts = vvmSourceManager.getOmtpVvmSources();
for (PhoneAccountHandle phoneAccount : phoneAccounts) {
- if (VisualVoicemailSettingsUtil.isVisualVoicemailUserSet(context, phoneAccount)) {
+ if (VisualVoicemailSettingsUtil.isEnabledUserSet(context, phoneAccount)) {
// Skip the check if this voicemail source's setting is overridden by the user.
continue;
}
diff --git a/src/com/android/phone/vvm/omtp/VvmPhoneStateListener.java b/src/com/android/phone/vvm/omtp/VvmPhoneStateListener.java
index 64b37c6..1cb23d4 100644
--- a/src/com/android/phone/vvm/omtp/VvmPhoneStateListener.java
+++ b/src/com/android/phone/vvm/omtp/VvmPhoneStateListener.java
@@ -16,7 +16,6 @@
package com.android.phone.vvm.omtp;
import android.content.Context;
-import android.content.Intent;
import android.telecom.PhoneAccountHandle;
import android.telephony.PhoneStateListener;
import android.telephony.ServiceState;
@@ -25,6 +24,7 @@
import com.android.phone.PhoneUtils;
import com.android.phone.vvm.omtp.sync.OmtpVvmSourceManager;
import com.android.phone.vvm.omtp.sync.OmtpVvmSyncService;
+import com.android.phone.vvm.omtp.sync.SyncTask;
import com.android.phone.vvm.omtp.sync.VoicemailStatusQueryHelper;
import com.android.phone.vvm.omtp.utils.PhoneAccountHandleConverter;
@@ -76,10 +76,7 @@
.v(TAG, "Signal returned: requesting resync for " + subId);
// If the source is already registered, run a full sync in case something was missed
// while signal was down.
- Intent serviceIntent = OmtpVvmSyncService.getSyncIntent(
- mContext, OmtpVvmSyncService.SYNC_FULL_SYNC, mPhoneAccount,
- true /* firstAttempt */);
- mContext.startService(serviceIntent);
+ SyncTask.start(mContext, mPhoneAccount, OmtpVvmSyncService.SYNC_FULL_SYNC);
} else {
VvmLog.v(TAG,
"Signal returned: reattempting activation for " + subId);
@@ -90,9 +87,6 @@
}
} else {
VvmLog.v(TAG, "Notifications channel is inactive for " + subId);
- mContext.stopService(OmtpVvmSyncService.getSyncIntent(
- mContext, OmtpVvmSyncService.SYNC_FULL_SYNC, mPhoneAccount,
- true /* firstAttempt */));
if (!OmtpVvmSourceManager.getInstance(mContext).isVvmSourceRegistered(mPhoneAccount)) {
return;
diff --git a/src/com/android/phone/vvm/omtp/fetch/FetchVoicemailReceiver.java b/src/com/android/phone/vvm/omtp/fetch/FetchVoicemailReceiver.java
index d267e68..5ec190f 100644
--- a/src/com/android/phone/vvm/omtp/fetch/FetchVoicemailReceiver.java
+++ b/src/com/android/phone/vvm/omtp/fetch/FetchVoicemailReceiver.java
@@ -35,6 +35,7 @@
import com.android.phone.vvm.omtp.OmtpVvmCarrierConfigHelper;
import com.android.phone.vvm.omtp.VvmLog;
import com.android.phone.vvm.omtp.imap.ImapHelper;
+import com.android.phone.vvm.omtp.imap.ImapHelper.InitializingException;
import com.android.phone.vvm.omtp.sync.OmtpVvmSourceManager;
import com.android.phone.vvm.omtp.sync.VvmNetworkRequestCallback;
@@ -161,11 +162,6 @@
VvmLog.i(TAG, "fetching voicemail, retry count=" + mRetryCount);
try (ImapHelper imapHelper = new ImapHelper(mContext, mPhoneAccount,
network)) {
- if (!imapHelper.isSuccessfullyInitialized()) {
- VvmLog.w(TAG, "Can't retrieve Imap credentials.");
- return;
- }
-
boolean success = imapHelper.fetchVoicemailPayload(
new VoicemailFetchedCallback(mContext, mUri), mUid);
if (!success && mRetryCount > 0) {
@@ -174,6 +170,9 @@
} else {
return;
}
+ } catch (InitializingException e) {
+ VvmLog.w(TAG, "Can't retrieve Imap credentials ", e);
+ return;
}
}
} finally {
diff --git a/src/com/android/phone/vvm/omtp/imap/ImapHelper.java b/src/com/android/phone/vvm/omtp/imap/ImapHelper.java
index 908d0f7..532991f 100644
--- a/src/com/android/phone/vvm/omtp/imap/ImapHelper.java
+++ b/src/com/android/phone/vvm/omtp/imap/ImapHelper.java
@@ -16,16 +16,13 @@
package com.android.phone.vvm.omtp.imap;
import android.content.Context;
-import android.content.SharedPreferences;
import android.net.ConnectivityManager;
import android.net.Network;
import android.net.NetworkInfo;
-import android.preference.PreferenceManager;
import android.provider.VoicemailContract;
import android.telecom.PhoneAccountHandle;
import android.telecom.Voicemail;
import android.util.Base64;
-
import com.android.phone.PhoneUtils;
import com.android.phone.VoicemailStatus;
import com.android.phone.common.mail.Address;
@@ -44,17 +41,14 @@
import com.android.phone.common.mail.store.imap.ImapConstants;
import com.android.phone.common.mail.store.imap.ImapResponse;
import com.android.phone.common.mail.utils.LogUtils;
-import com.android.phone.settings.VisualVoicemailSettingsUtil;
import com.android.phone.vvm.omtp.OmtpConstants;
import com.android.phone.vvm.omtp.OmtpConstants.ChangePinResult;
import com.android.phone.vvm.omtp.OmtpEvents;
import com.android.phone.vvm.omtp.OmtpVvmCarrierConfigHelper;
+import com.android.phone.vvm.omtp.VisualVoicemailPreferences;
import com.android.phone.vvm.omtp.VvmLog;
import com.android.phone.vvm.omtp.fetch.VoicemailFetchedCallback;
import com.android.phone.vvm.omtp.sync.OmtpVvmSyncService.TranscriptionFetchedCallback;
-
-import libcore.io.IoUtils;
-
import java.io.BufferedOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.Closeable;
@@ -63,6 +57,7 @@
import java.util.Arrays;
import java.util.List;
import java.util.Locale;
+import libcore.io.IoUtils;
/**
* A helper interface to abstract commands sent across IMAP interface for a given account.
@@ -78,7 +73,7 @@
private final PhoneAccountHandle mPhoneAccount;
private final Network mNetwork;
- SharedPreferences mPrefs;
+ VisualVoicemailPreferences mPrefs;
private static final String PREF_KEY_QUOTA_OCCUPIED = "quota_occupied_";
private static final String PREF_KEY_QUOTA_TOTAL = "quota_total_";
@@ -87,24 +82,36 @@
private final OmtpVvmCarrierConfigHelper mConfig;
- public ImapHelper(Context context, PhoneAccountHandle phoneAccount, Network network) {
+ public class InitializingException extends Exception {
+
+ public InitializingException(String message) {
+ super(message);
+ }
+ }
+
+ public ImapHelper(Context context, PhoneAccountHandle phoneAccount, Network network)
+ throws InitializingException {
+ this(context, new OmtpVvmCarrierConfigHelper(context,
+ PhoneUtils.getSubIdForPhoneAccountHandle(phoneAccount)), phoneAccount, network);
+ }
+
+ public ImapHelper(Context context, OmtpVvmCarrierConfigHelper config,
+ PhoneAccountHandle phoneAccount, Network network) throws InitializingException {
mContext = context;
mPhoneAccount = phoneAccount;
mNetwork = network;
- mConfig = new OmtpVvmCarrierConfigHelper(context,
- PhoneUtils.getSubIdForPhoneAccountHandle(phoneAccount));
+ mConfig = config;
+ mPrefs = new VisualVoicemailPreferences(context,
+ phoneAccount);
+
try {
TempDirectory.setTempDirectory(context);
- String username = VisualVoicemailSettingsUtil.getVisualVoicemailCredentials(context,
- OmtpConstants.IMAP_USER_NAME, phoneAccount);
- String password = VisualVoicemailSettingsUtil.getVisualVoicemailCredentials(context,
- OmtpConstants.IMAP_PASSWORD, phoneAccount);
- String serverName = VisualVoicemailSettingsUtil.getVisualVoicemailCredentials(context,
- OmtpConstants.SERVER_ADDRESS, phoneAccount);
+ String username = mPrefs.getString(OmtpConstants.IMAP_USER_NAME, null);
+ String password = mPrefs.getString(OmtpConstants.IMAP_PASSWORD, null);
+ String serverName = mPrefs.getString(OmtpConstants.SERVER_ADDRESS, null);
int port = Integer.parseInt(
- VisualVoicemailSettingsUtil.getVisualVoicemailCredentials(context,
- OmtpConstants.IMAP_PORT, phoneAccount));
+ mPrefs.getString(OmtpConstants.IMAP_PORT, null));
int auth = ImapStore.FLAG_NONE;
int sslPort = mConfig.getSslPort();
@@ -118,13 +125,13 @@
} catch (NumberFormatException e) {
mConfig.handleEvent(OmtpEvents.DATA_INVALID_PORT);
LogUtils.w(TAG, "Could not parse port number");
+ throw new InitializingException("cannot initialize ImapHelper:" + e.toString());
}
- mPrefs = PreferenceManager.getDefaultSharedPreferences(context);
- mQuotaOccupied = mPrefs.getInt(getSharedPrefsKey(PREF_KEY_QUOTA_OCCUPIED),
- VoicemailContract.Status.QUOTA_UNAVAILABLE);
- mQuotaTotal = mPrefs.getInt(getSharedPrefsKey(PREF_KEY_QUOTA_TOTAL),
- VoicemailContract.Status.QUOTA_UNAVAILABLE);
+ mQuotaOccupied = mPrefs
+ .getInt(PREF_KEY_QUOTA_OCCUPIED, VoicemailContract.Status.QUOTA_UNAVAILABLE);
+ mQuotaTotal = mPrefs
+ .getInt(PREF_KEY_QUOTA_TOTAL, VoicemailContract.Status.QUOTA_UNAVAILABLE);
}
@Override
@@ -132,15 +139,6 @@
mImapStore.closeConnection();
}
- /**
- * If mImapStore is null, this means that there was a missing or badly formatted port number,
- * which means there aren't sufficient credentials for login. If mImapStore is succcessfully
- * initialized, then ImapHelper is ready to go.
- */
- public boolean isSuccessfullyInitialized() {
- return mImapStore != null;
- }
-
public boolean isRoaming() {
ConnectivityManager connectivityManager = (ConnectivityManager) mContext.getSystemService(
Context.CONNECTIVITY_SERVICE);
@@ -500,8 +498,8 @@
.setQuota(mQuotaOccupied, mQuotaTotal)
.apply();
mPrefs.edit()
- .putInt(getSharedPrefsKey(PREF_KEY_QUOTA_OCCUPIED), mQuotaOccupied)
- .putInt(getSharedPrefsKey(PREF_KEY_QUOTA_TOTAL), mQuotaTotal)
+ .putInt(PREF_KEY_QUOTA_OCCUPIED, mQuotaOccupied)
+ .putInt(PREF_KEY_QUOTA_TOTAL, mQuotaTotal)
.apply();
VvmLog.v(TAG, "Quota changed to " + mQuotaOccupied + "/" + mQuotaTotal);
}
@@ -576,6 +574,8 @@
messageStructureWrapper.messageStructure = message;
} else if (bodyPartMimeType.startsWith("text/")) {
messageStructureWrapper.transcriptionBodyPart = bodyPart;
+ } else {
+ VvmLog.v(TAG, "Unknown bodyPart MIME: " + bodyPartMimeType);
}
}
@@ -702,8 +702,4 @@
IoUtils.closeQuietly(out);
}
}
-
- private String getSharedPrefsKey(String key) {
- return VisualVoicemailSettingsUtil.getVisualVoicemailSharedPrefsKey(key, mPhoneAccount);
- }
}
\ No newline at end of file
diff --git a/src/com/android/phone/vvm/omtp/protocol/VisualVoicemailProtocol.java b/src/com/android/phone/vvm/omtp/protocol/VisualVoicemailProtocol.java
index be2a77f..5f89471 100644
--- a/src/com/android/phone/vvm/omtp/protocol/VisualVoicemailProtocol.java
+++ b/src/com/android/phone/vvm/omtp/protocol/VisualVoicemailProtocol.java
@@ -16,11 +16,12 @@
package com.android.phone.vvm.omtp.protocol;
+import android.annotation.Nullable;
import android.content.Context;
import android.os.Bundle;
import android.telecom.PhoneAccountHandle;
import android.telephony.SmsManager;
-
+import com.android.phone.vvm.omtp.ActivationTask;
import com.android.phone.vvm.omtp.DefaultOmtpEventHandler;
import com.android.phone.vvm.omtp.OmtpEvents;
import com.android.phone.vvm.omtp.OmtpVvmCarrierConfigHelper;
@@ -29,6 +30,9 @@
public abstract class VisualVoicemailProtocol {
+ /**
+ * Activation should cause the carrier to respond with a STATUS SMS.
+ */
public void startActivation(OmtpVvmCarrierConfigHelper config) {
OmtpMessageSender messageSender = ProtocolHelper.getMessageSender(this, config);
if (messageSender != null) {
@@ -43,8 +47,12 @@
}
}
- public void startProvisioning(PhoneAccountHandle handle, OmtpVvmCarrierConfigHelper config,
- StatusMessage message, Bundle data) {
+ public boolean supportsProvisioning() {
+ return false;
+ }
+
+ public void startProvisioning(ActivationTask task, PhoneAccountHandle handle,
+ OmtpVvmCarrierConfigHelper config, StatusMessage message, Bundle data) {
// Do nothing
}
@@ -74,4 +82,14 @@
OmtpEvents event) {
DefaultOmtpEventHandler.handleEvent(context, config, event);
}
+
+ /**
+ * Given an VVM SMS with an unknown {@code event}, let the protocol attempt to translate it into
+ * an equivalent STATUS SMS. Returns {@code null} if it cannot be translated.
+ */
+ @Nullable
+ public Bundle translateStatusSmsBundle(OmtpVvmCarrierConfigHelper config, String event,
+ Bundle data) {
+ return null;
+ }
}
diff --git a/src/com/android/phone/vvm/omtp/protocol/VisualVoicemailProtocolFactory.java b/src/com/android/phone/vvm/omtp/protocol/VisualVoicemailProtocolFactory.java
index 5f54a50..4d39ae2 100644
--- a/src/com/android/phone/vvm/omtp/protocol/VisualVoicemailProtocolFactory.java
+++ b/src/com/android/phone/vvm/omtp/protocol/VisualVoicemailProtocolFactory.java
@@ -17,8 +17,10 @@
package com.android.phone.vvm.omtp.protocol;
import android.annotation.Nullable;
+import android.content.res.Resources;
import android.telephony.TelephonyManager;
+import com.android.phone.R;
import com.android.phone.vvm.omtp.VvmLog;
public class VisualVoicemailProtocolFactory {
@@ -28,7 +30,7 @@
private static final String VVM_TYPE_VVM3 = "vvm_type_vvm3";
@Nullable
- public static VisualVoicemailProtocol create(String type) {
+ public static VisualVoicemailProtocol create(Resources resources, String type) {
if (type == null) {
return null;
}
@@ -38,7 +40,12 @@
case TelephonyManager.VVM_TYPE_CVVM:
return new CvvmProtocol();
case VVM_TYPE_VVM3:
- return new Vvm3Protocol();
+ if (resources.getBoolean(R.bool.vvm3_enabled)) {
+ return new Vvm3Protocol();
+ } else {
+ VvmLog.e(TAG, "VVM3 is disabled");
+ return null;
+ }
default:
VvmLog.e(TAG, "Unexpected visual voicemail type: " + type);
}
diff --git a/src/com/android/phone/vvm/omtp/protocol/Vvm3EventHandler.java b/src/com/android/phone/vvm/omtp/protocol/Vvm3EventHandler.java
index 8eacb99..3a3adb8 100644
--- a/src/com/android/phone/vvm/omtp/protocol/Vvm3EventHandler.java
+++ b/src/com/android/phone/vvm/omtp/protocol/Vvm3EventHandler.java
@@ -20,15 +20,13 @@
import android.content.Context;
import android.telecom.PhoneAccountHandle;
import android.util.Log;
-
import com.android.phone.VoicemailStatus;
-import com.android.phone.settings.VoicemailChangePinDialogPreference;
+import com.android.phone.settings.VoicemailChangePinActivity;
import com.android.phone.vvm.omtp.DefaultOmtpEventHandler;
import com.android.phone.vvm.omtp.OmtpEvents;
import com.android.phone.vvm.omtp.OmtpEvents.Type;
import com.android.phone.vvm.omtp.OmtpVvmCarrierConfigHelper;
import com.android.phone.vvm.omtp.utils.PhoneAccountHandleConverter;
-
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -83,6 +81,9 @@
// Non VVM3 codes:
public static final int VMG_UNKNOWN_ERROR = -1;
public static final int PIN_NOT_SET = -100;
+ // STATUS SMS returned st=U and rc!=2. The user cannot be provisioned and must contact customer
+ // support.
+ public static final int SUBSCRIBER_UNKNOWN = -99;
public static void handleEvent(Context context, OmtpVvmCarrierConfigHelper config,
@@ -116,7 +117,7 @@
case CONFIG_REQUEST_STATUS_SUCCESS:
PhoneAccountHandle handle = PhoneAccountHandleConverter
.fromSubId(config.getSubId());
- if (VoicemailChangePinDialogPreference.getDefaultOldPin(context, handle) == null) {
+ if (!VoicemailChangePinActivity.isDefaultOldPinSet(context, handle)) {
return false;
} else {
postError(context, config, PIN_NOT_SET);
@@ -125,6 +126,9 @@
case CONFIG_DEFAULT_PIN_REPLACED:
postError(context, config, PIN_NOT_SET);
break;
+ case CONFIG_STATUS_SMS_TIME_OUT:
+ postError(context, config, STATUS_SMS_TIMEOUT);
+ break;
default:
return false;
}
@@ -136,8 +140,14 @@
switch (event) {
case DATA_NO_CONNECTION:
case DATA_NO_CONNECTION_CELLULAR_REQUIRED:
+ case DATA_ALL_SOCKET_CONNECTION_FAILED:
postError(context, config, VMS_NO_CELLULAR);
break;
+ case DATA_SSL_INVALID_HOST_NAME:
+ case DATA_CANNOT_ESTABLISH_SSL_SESSION:
+ case DATA_IOE_ON_OPEN:
+ postError(context, config, VMS_TIMEOUT);
+ break;
case DATA_CANNOT_RESOLVE_HOST_ON_NETWORK:
postError(context, config, VMS_DNS_FAILURE);
break;
@@ -165,18 +175,11 @@
case DATA_AUTH_USER_IS_BLOCKED:
postError(context, config, USER_BLOCKED);
break;
-
- case DATA_INVALID_PORT:
- case DATA_SSL_INVALID_HOST_NAME:
- case DATA_CANNOT_ESTABLISH_SSL_SESSION:
- case DATA_IOE_ON_OPEN:
case DATA_REJECTED_SERVER_RESPONSE:
case DATA_INVALID_INITIAL_SERVER_RESPONSE:
case DATA_SSL_EXCEPTION:
- case DATA_ALL_SOCKET_CONNECTION_FAILED:
postError(context, config, IMAP_ERROR);
break;
-
default:
return false;
}
@@ -209,11 +212,15 @@
case VVM3_VMG_TIMEOUT:
postError(context, config, VMG_TIMEOUT);
break;
-
case VVM3_SUBSCRIBER_PROVISIONED:
postError(context, config, SERVICE_NOT_ACTIVATED);
+ break;
case VVM3_SUBSCRIBER_BLOCKED:
postError(context, config, SUBSCRIBER_BLOCKED);
+ break;
+ case VVM3_SUBSCRIBER_UNKNOWN:
+ postError(context, config, SUBSCRIBER_UNKNOWN);
+ break;
default:
return false;
}
@@ -244,6 +251,7 @@
case VMG_DB_ERROR:
case VMG_COMMUNICATION_ERROR:
case PIN_NOT_SET:
+ case SUBSCRIBER_UNKNOWN:
editor.setConfigurationState(errorCode);
break;
case VMS_NO_CELLULAR:
diff --git a/src/com/android/phone/vvm/omtp/protocol/Vvm3Protocol.java b/src/com/android/phone/vvm/omtp/protocol/Vvm3Protocol.java
index b238c8d..c6dd434 100644
--- a/src/com/android/phone/vvm/omtp/protocol/Vvm3Protocol.java
+++ b/src/com/android/phone/vvm/omtp/protocol/Vvm3Protocol.java
@@ -22,19 +22,24 @@
import android.os.Bundle;
import android.telecom.PhoneAccountHandle;
import android.telephony.SmsManager;
+import android.text.TextUtils;
import com.android.phone.common.mail.MessagingException;
import com.android.phone.settings.VisualVoicemailSettingsUtil;
-import com.android.phone.settings.VoicemailChangePinDialogPreference;
+import com.android.phone.settings.VoicemailChangePinActivity;
+import com.android.phone.vvm.omtp.ActivationTask;
import com.android.phone.vvm.omtp.OmtpConstants;
import com.android.phone.vvm.omtp.OmtpEvents;
import com.android.phone.vvm.omtp.OmtpVvmCarrierConfigHelper;
+import com.android.phone.vvm.omtp.VisualVoicemailPreferences;
import com.android.phone.vvm.omtp.VvmLog;
import com.android.phone.vvm.omtp.imap.ImapHelper;
+import com.android.phone.vvm.omtp.imap.ImapHelper.InitializingException;
import com.android.phone.vvm.omtp.sms.OmtpMessageSender;
import com.android.phone.vvm.omtp.sms.StatusMessage;
import com.android.phone.vvm.omtp.sms.Vvm3MessageSender;
-import com.android.phone.vvm.omtp.sync.VvmNetworkRequestCallback;
+import com.android.phone.vvm.omtp.sync.VvmNetworkRequest;
+import com.android.phone.vvm.omtp.sync.VvmNetworkRequest.NetworkWrapper;
import java.io.IOException;
import java.security.SecureRandom;
@@ -47,21 +52,34 @@
*/
public class Vvm3Protocol extends VisualVoicemailProtocol {
- private static String TAG = "Vvm3Protocol";
+ private static final String TAG = "Vvm3Protocol";
- private static String IMAP_CHANGE_TUI_PWD_FORMAT = "CHANGE_TUI_PWD PWD=%1$s OLD_PWD=%2$s";
- private static String IMAP_CHANGE_VM_LANG_FORMAT = "CHANGE_VM_LANG Lang=%1$s";
- private static String IMAP_CLOSE_NUT = "CLOSE_NUT";
+ private static final String SMS_EVENT_UNRECOGNIZED = "UNRECOGNIZED";
+ private static final String SMS_EVENT_UNRECOGNIZED_CMD = "cmd";
+ private static final String SMS_EVENT_UNRECOGNIZED_STATUS = "STATUS";
+ private static final String DEFAULT_VMG_URL_KEY = "default_vmg_url";
- private static String ISO639_Spanish = "es";
+ private static final String IMAP_CHANGE_TUI_PWD_FORMAT = "CHANGE_TUI_PWD PWD=%1$s OLD_PWD=%2$s";
+ private static final String IMAP_CHANGE_VM_LANG_FORMAT = "CHANGE_VM_LANG Lang=%1$s";
+ private static final String IMAP_CLOSE_NUT = "CLOSE_NUT";
+
+ private static final String ISO639_Spanish = "es";
+
+ /**
+ * For VVM3, if the STATUS SMS returns {@link StatusMessage#getProvisioningStatus()} of {@link
+ * OmtpConstants#SUBSCRIBER_UNKNOWN} and {@link StatusMessage#getReturnCode()} of this value,
+ * the user can self-provision visual voicemail service. For other response codes, the user must
+ * contact customer support to resolve the issue.
+ */
+ private static final String VVM3_UNKNOWN_SUBSCRIBER_CAN_SUBSCRIBE_RESPONSE_CODE = "2";
// Default prompt level when using the telephone user interface.
// Standard prompt when the user call into the voicemail, and no prompts when someone else is
// leaving a voicemail.
- private static String VVM3_VM_LANGUAGE_ENGLISH_STANDARD_NO_GUEST_PROMPTS = "5";
- private static String VVM3_VM_LANGUAGE_SPANISH_STANDARD_NO_GUEST_PROMPTS = "6";
+ private static final String VVM3_VM_LANGUAGE_ENGLISH_STANDARD_NO_GUEST_PROMPTS = "5";
+ private static final String VVM3_VM_LANGUAGE_SPANISH_STANDARD_NO_GUEST_PROMPTS = "6";
- private static final int PIN_LENGTH = 6;
+ private static final int DEFAULT_PIN_LENGTH = 6;
@Override
public void startActivation(OmtpVvmCarrierConfigHelper config) {
@@ -79,21 +97,35 @@
}
@Override
- public void startProvisioning(PhoneAccountHandle phoneAccountHandle,
+ public boolean supportsProvisioning() {
+ return true;
+ }
+
+ @Override
+ public void startProvisioning(ActivationTask task, PhoneAccountHandle phoneAccountHandle,
OmtpVvmCarrierConfigHelper config, StatusMessage message, Bundle data) {
VvmLog.i(TAG, "start vvm3 provisioning");
if (OmtpConstants.SUBSCRIBER_UNKNOWN.equals(message.getProvisioningStatus())) {
- VvmLog.i(TAG, "Provisioning status: Unknown, subscribing");
- new Vvm3Subscriber(phoneAccountHandle, config, data).subscribe();
+ VvmLog.i(TAG, "Provisioning status: Unknown");
+ if (VVM3_UNKNOWN_SUBSCRIBER_CAN_SUBSCRIBE_RESPONSE_CODE
+ .equals(message.getReturnCode())) {
+ VvmLog.i(TAG, "Self provisioning available, subscribing");
+ new Vvm3Subscriber(task, phoneAccountHandle, config, data).subscribe();
+ } else {
+ config.handleEvent(OmtpEvents.VVM3_SUBSCRIBER_UNKNOWN);
+ }
} else if (OmtpConstants.SUBSCRIBER_NEW.equals(message.getProvisioningStatus())) {
VvmLog.i(TAG, "setting up new user");
- VisualVoicemailSettingsUtil.setVisualVoicemailCredentialsFromStatusMessage(
- config.getContext(), phoneAccountHandle, message);
+ // Save the IMAP credentials in preferences so they are persistent and can be retrieved.
+ VisualVoicemailPreferences prefs =
+ new VisualVoicemailPreferences(config.getContext(), phoneAccountHandle);
+ message.putStatus(prefs.edit()).apply();
+
startProvisionNewUser(phoneAccountHandle, config, message);
} else if (OmtpConstants.SUBSCRIBER_PROVISIONED.equals(message.getProvisioningStatus())) {
VvmLog.i(TAG, "User provisioned but not activated, disabling VVM");
VisualVoicemailSettingsUtil
- .setVisualVoicemailEnabled(config.getContext(), phoneAccountHandle, false);
+ .setEnabled(config.getContext(), phoneAccountHandle, false);
} else if (OmtpConstants.SUBSCRIBER_BLOCKED.equals(message.getProvisioningStatus())) {
VvmLog.i(TAG, "User blocked");
config.handleEvent(OmtpEvents.VVM3_SUBSCRIBER_BLOCKED);
@@ -125,30 +157,40 @@
return super.getCommand(command);
}
- private void startProvisionNewUser(PhoneAccountHandle phoneAccountHandle,
- OmtpVvmCarrierConfigHelper config, StatusMessage message) {
- new Vvm3ProvisioningNetworkRequestCallback(config, phoneAccountHandle, message)
- .requestNetwork();
+ @Override
+ public Bundle translateStatusSmsBundle(OmtpVvmCarrierConfigHelper config, String event,
+ Bundle data) {
+ // UNRECOGNIZED?cmd=STATUS is the response of a STATUS request when the user is provisioned
+ // with iPhone visual voicemail without VoLTE. Translate it into an unprovisioned status
+ // so provisioning can be done.
+ if (!SMS_EVENT_UNRECOGNIZED.equals(event)) {
+ return null;
+ }
+ if (!SMS_EVENT_UNRECOGNIZED_STATUS.equals(data.getString(SMS_EVENT_UNRECOGNIZED_CMD))) {
+ return null;
+ }
+ Bundle bundle = new Bundle();
+ bundle.putString(OmtpConstants.PROVISIONING_STATUS, OmtpConstants.SUBSCRIBER_UNKNOWN);
+ bundle.putString(OmtpConstants.RETURN_CODE,
+ VVM3_UNKNOWN_SUBSCRIBER_CAN_SUBSCRIBE_RESPONSE_CODE);
+ String vmgUrl = config.getString(DEFAULT_VMG_URL_KEY);
+ if (TextUtils.isEmpty(vmgUrl)) {
+ VvmLog.e(TAG, "Unable to translate STATUS SMS: VMG URL is not set in config");
+ return null;
+ }
+ bundle.putString(Vvm3Subscriber.VMG_URL_KEY, vmgUrl);
+ VvmLog.i(TAG, "UNRECOGNIZED?cmd=STATUS translated into unprovisioned STATUS SMS");
+ return bundle;
}
- private static class Vvm3ProvisioningNetworkRequestCallback extends VvmNetworkRequestCallback {
+ private void startProvisionNewUser(PhoneAccountHandle phoneAccountHandle,
+ OmtpVvmCarrierConfigHelper config, StatusMessage message) {
+ try (NetworkWrapper wrapper = VvmNetworkRequest.getNetwork(config, phoneAccountHandle)) {
+ Network network = wrapper.get();
- private final OmtpVvmCarrierConfigHelper mConfig;
- private final StatusMessage mMessage;
-
- public Vvm3ProvisioningNetworkRequestCallback(OmtpVvmCarrierConfigHelper config,
- PhoneAccountHandle phoneAccountHandle, StatusMessage message) {
- super(config, phoneAccountHandle);
- mConfig = config;
- mMessage = message;
- }
-
- @Override
- public void onAvailable(Network network) {
- super.onAvailable(network);
VvmLog.i(TAG, "new user: network available");
- ImapHelper helper = new ImapHelper(mContext, mPhoneAccount, network);
- try {
+ try (ImapHelper helper = new ImapHelper(config.getContext(), phoneAccountHandle,
+ network)) {
// VVM3 has inconsistent error language code to OMTP. Just issue a raw command
// here.
// TODO(b/29082671): use LocaleList
@@ -164,68 +206,83 @@
}
VvmLog.i(TAG, "new user: language set");
- if (setPin(helper)) {
+ if (setPin(config.getContext(), phoneAccountHandle, helper, message)) {
// Only close new user tutorial if the PIN has been changed.
helper.closeNewUserTutorial();
VvmLog.i(TAG, "new user: NUT closed");
- mConfig.requestStatus();
+ config.requestStatus();
}
- } catch (MessagingException | IOException e) {
- helper.handleEvent(OmtpEvents.VVM3_NEW_USER_SETUP_FAILED);
+ } catch (InitializingException | MessagingException | IOException e) {
+ config.handleEvent(OmtpEvents.VVM3_NEW_USER_SETUP_FAILED);
VvmLog.e(TAG, e.toString());
- } finally {
- helper.close();
}
}
- private boolean setPin(ImapHelper helper) throws IOException, MessagingException {
- String defaultPin = getDefaultPin();
- if (defaultPin == null) {
- VvmLog.i(TAG, "cannot generate default PIN");
- return false;
- }
+ }
- if (VoicemailChangePinDialogPreference.getDefaultOldPin(mContext, mPhoneAccount)
- != null) {
- // The pin was already set
- VvmLog.i(TAG, "PIN already set");
- return true;
- }
- String newPin = generatePin();
- if (helper.changePin(defaultPin, newPin) == OmtpConstants.CHANGE_PIN_SUCCESS) {
- VoicemailChangePinDialogPreference
- .setDefaultOldPIN(mContext, mPhoneAccount, newPin);
- helper.handleEvent(OmtpEvents.CONFIG_DEFAULT_PIN_REPLACED);
- }
- VvmLog.i(TAG, "new user: PIN set");
+
+ private static boolean setPin(Context context, PhoneAccountHandle phoneAccountHandle,
+ ImapHelper helper, StatusMessage message)
+ throws IOException, MessagingException {
+ String defaultPin = getDefaultPin(message);
+ if (defaultPin == null) {
+ VvmLog.i(TAG, "cannot generate default PIN");
+ return false;
+ }
+
+ if (VoicemailChangePinActivity.isDefaultOldPinSet(context, phoneAccountHandle)) {
+ // The pin was already set
+ VvmLog.i(TAG, "PIN already set");
return true;
}
+ String newPin = generatePin(getMinimumPinLength(context, phoneAccountHandle));
+ if (helper.changePin(defaultPin, newPin) == OmtpConstants.CHANGE_PIN_SUCCESS) {
+ VoicemailChangePinActivity.setDefaultOldPIN(context, phoneAccountHandle, newPin);
+ helper.handleEvent(OmtpEvents.CONFIG_DEFAULT_PIN_REPLACED);
+ }
+ VvmLog.i(TAG, "new user: PIN set");
+ return true;
+ }
- @Nullable
- private String getDefaultPin() {
- // The IMAP username is [phone number]@example.com
- String username = mMessage.getImapUserName();
- try {
- String number = username.substring(0, username.indexOf('@'));
- if (number.length() < 4) {
- VvmLog.e(TAG, "unable to extract number from IMAP username");
- return null;
- }
- return "1" + number.substring(number.length() - 4);
- } catch (StringIndexOutOfBoundsException e) {
+ @Nullable
+ private static String getDefaultPin(StatusMessage message) {
+ // The IMAP username is [phone number]@example.com
+ String username = message.getImapUserName();
+ try {
+ String number = username.substring(0, username.indexOf('@'));
+ if (number.length() < 4) {
VvmLog.e(TAG, "unable to extract number from IMAP username");
return null;
}
-
+ return "1" + number.substring(number.length() - 4);
+ } catch (StringIndexOutOfBoundsException e) {
+ VvmLog.e(TAG, "unable to extract number from IMAP username");
+ return null;
}
+
}
- private static String generatePin() {
+ private static int getMinimumPinLength(Context context, PhoneAccountHandle phoneAccountHandle) {
+ VisualVoicemailPreferences preferences = new VisualVoicemailPreferences(context,
+ phoneAccountHandle);
+ // The OMTP pin length format is {min}-{max}
+ String[] lengths = preferences.getString(OmtpConstants.TUI_PASSWORD_LENGTH, "").split("-");
+ if (lengths.length == 2) {
+ try {
+ return Integer.parseInt(lengths[0]);
+ } catch (NumberFormatException e) {
+ return DEFAULT_PIN_LENGTH;
+ }
+ }
+ return DEFAULT_PIN_LENGTH;
+ }
+
+ private static String generatePin(int length) {
SecureRandom random = new SecureRandom();
- // TODO(b/29102412): generate base on the length requirement from the server
- return String.format("%010d", Math.abs(random.nextLong())).substring(0, PIN_LENGTH);
+ return String.format(Locale.US, "%010d", Math.abs(random.nextLong()))
+ .substring(0, length);
}
}
diff --git a/src/com/android/phone/vvm/omtp/protocol/Vvm3Subscriber.java b/src/com/android/phone/vvm/omtp/protocol/Vvm3Subscriber.java
index 980701e..7562275 100644
--- a/src/com/android/phone/vvm/omtp/protocol/Vvm3Subscriber.java
+++ b/src/com/android/phone/vvm/omtp/protocol/Vvm3Subscriber.java
@@ -26,12 +26,13 @@
import android.text.Spanned;
import android.text.style.URLSpan;
import android.util.ArrayMap;
-
import com.android.phone.Assert;
+import com.android.phone.vvm.omtp.ActivationTask;
import com.android.phone.vvm.omtp.OmtpEvents;
import com.android.phone.vvm.omtp.OmtpVvmCarrierConfigHelper;
import com.android.phone.vvm.omtp.VvmLog;
-import com.android.phone.vvm.omtp.sync.VvmNetworkRequestCallback;
+import com.android.phone.vvm.omtp.sync.VvmNetworkRequest;
+import com.android.phone.vvm.omtp.sync.VvmNetworkRequest.NetworkWrapper;
import com.android.volley.AuthFailureError;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
@@ -39,7 +40,6 @@
import com.android.volley.toolbox.RequestFuture;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
-
import java.io.IOException;
import java.net.CookieHandler;
import java.net.CookieManager;
@@ -91,7 +91,7 @@
+ " </MessageBody>"
+ "</VMGVVMRequest>";
- private static final String VMG_URL_KEY = "vmg_url";
+ static final String VMG_URL_KEY = "vmg_url";
// Self provisioning POST key/values. VVM3 API 2.1.0 12.3
private static final String SPG_VZW_MDN_PARAM = "VZW_MDN";
@@ -109,6 +109,7 @@
private static final int REQUEST_TIMEOUT_SECONDS = 30;
+ private final ActivationTask mTask;
private final PhoneAccountHandle mHandle;
private final OmtpVvmCarrierConfigHelper mHelper;
private final Bundle mData;
@@ -134,9 +135,10 @@
}
@WorkerThread
- public Vvm3Subscriber(PhoneAccountHandle handle, OmtpVvmCarrierConfigHelper helper,
- Bundle data) {
+ public Vvm3Subscriber(ActivationTask task, PhoneAccountHandle handle,
+ OmtpVvmCarrierConfigHelper helper, Bundle data) {
Assert.isNotMainThread();
+ mTask = task;
mHandle = handle;
mHelper = helper;
mData = data;
@@ -153,7 +155,14 @@
// Cellular data is required to subscribe.
// processSubscription() is called after network is available.
VvmLog.i(TAG, "Subscribing");
- new Vvm3ProvisioningNetworkRequestCallback(mHelper, mHandle).requestNetwork();
+
+ try (NetworkWrapper wrapper = VvmNetworkRequest.getNetwork(mHelper, mHandle)) {
+ Network network = wrapper.get();
+ VvmLog.d(TAG, "provisioning: network available");
+ mRequestQueue = Volley
+ .newRequestQueue(mHelper.getContext(), new NetworkSpecifiedHurlStack(network));
+ processSubscription();
+ }
}
private void processSubscription() {
@@ -164,6 +173,7 @@
clickSubscribeLink(subscribeLink);
} catch (ProvisioningException e) {
VvmLog.e(TAG, e.toString());
+ mTask.fail();
}
}
@@ -217,13 +227,16 @@
StringRequest stringRequest = new StringRequest(Request.Method.POST,
subscribeLink, future, future);
mRequestQueue.add(stringRequest);
-
try {
+ // A new STATUS SMS will be sent after this request.
future.get(REQUEST_TIMEOUT_SECONDS, TimeUnit.SECONDS);
- } catch (InterruptedException | ExecutionException | TimeoutException e) {
+ } catch (TimeoutException | ExecutionException | InterruptedException e) {
mHelper.handleEvent(OmtpEvents.VVM3_SPG_CONNECTION_FAILED);
throw new ProvisioningException(e.toString());
}
+ // It could take very long for the STATUS SMS to return. Waiting for it is unreliable.
+ // Just leave the CONFIG STATUS as CONFIGURING and end the task. The user can always
+ // manually retry if it took too long.
}
private String vvm3XmlRequest(String operation) throws ProvisioningException {
@@ -262,13 +275,15 @@
private String findSubscribeLink(String response) throws ProvisioningException {
Spanned doc = Html.fromHtml(response, Html.FROM_HTML_MODE_LEGACY);
URLSpan[] spans = doc.getSpans(0, doc.length(), URLSpan.class);
+ StringBuilder fulltext = new StringBuilder();
for (URLSpan span : spans) {
String text = doc.subSequence(doc.getSpanStart(span), doc.getSpanEnd(span)).toString();
if (BASIC_SUBSCRIBE_LINK_TEXT.equals(text)) {
return span.getURL();
}
+ fulltext.append(text);
}
- throw new ProvisioningException("Subscribe link not found");
+ throw new ProvisioningException("Subscribe link not found: " + fulltext);
}
private String createTransactionId() {
@@ -284,23 +299,6 @@
throw new ProvisioningException("Tag " + tag + " not found in xml response");
}
- private class Vvm3ProvisioningNetworkRequestCallback extends VvmNetworkRequestCallback {
-
- public Vvm3ProvisioningNetworkRequestCallback(OmtpVvmCarrierConfigHelper config,
- PhoneAccountHandle phoneAccountHandle) {
- super(config, phoneAccountHandle);
- }
-
- @Override
- public void onAvailable(Network network) {
- super.onAvailable(network);
- VvmLog.d(TAG, "provisioning: network available");
- mRequestQueue = Volley
- .newRequestQueue(mContext, new NetworkSpecifiedHurlStack(network));
- processSubscription();
- }
- }
-
private static class NetworkSpecifiedHurlStack extends HurlStack {
private final Network mNetwork;
diff --git a/src/com/android/phone/vvm/omtp/scheduling/BaseTask.java b/src/com/android/phone/vvm/omtp/scheduling/BaseTask.java
new file mode 100644
index 0000000..8b3e88e
--- /dev/null
+++ b/src/com/android/phone/vvm/omtp/scheduling/BaseTask.java
@@ -0,0 +1,204 @@
+/*
+ * Copyright (C) 2016 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.vvm.omtp.scheduling;
+
+import android.annotation.CallSuper;
+import android.annotation.MainThread;
+import android.annotation.WorkerThread;
+import android.content.Context;
+import android.content.Intent;
+import android.os.SystemClock;
+import android.support.annotation.NonNull;
+
+import com.android.phone.Assert;
+import com.android.phone.NeededForTesting;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Provides common utilities for task implementations, such as execution time and managing {@link
+ * Policy}
+ */
+public abstract class BaseTask implements Task {
+
+ private static final String EXTRA_SUB_ID = "extra_sub_id";
+
+ private Context mContext;
+
+ private int mId;
+ private int mSubId = TaskId.SUB_ID_ANY;
+
+ private boolean mHasStarted;
+ private volatile boolean mHasFailed;
+
+ @NonNull
+ private final List<Policy> mPolicies = new ArrayList<>();
+
+ private long mExecutionTime;
+
+ private static Clock sClock = new Clock();
+
+ protected BaseTask(int id) {
+ mId = id;
+ mExecutionTime = getTimeMillis();
+ }
+
+ /**
+ * Modify the task ID to prevent arbitrary task from executing. Can only be called before {@link
+ * #onCreate(Context, Intent, int, int)} returns.
+ */
+ @MainThread
+ public void setId(int id) {
+ Assert.isMainThread();
+ mId = id;
+ }
+
+ @MainThread
+ public boolean hasStarted() {
+ Assert.isMainThread();
+ return mHasStarted;
+ }
+
+ @MainThread
+ public boolean hasFailed() {
+ Assert.isMainThread();
+ return mHasFailed;
+ }
+
+ public Context getContext() {
+ return mContext;
+ }
+
+ public int getSubId() {
+ return mSubId;
+ }
+ /**
+ * Should be call in the constructor or {@link Policy#onCreate(BaseTask, Intent, int, int)} will
+ * be missed.
+ */
+ @MainThread
+ public BaseTask addPolicy(Policy policy) {
+ Assert.isMainThread();
+ mPolicies.add(policy);
+ return this;
+ }
+
+ /**
+ * Indicate the task has failed. {@link Policy#onFail()} will be triggered once the execution
+ * ends. This mechanism is used by policies for actions such as determining whether to schedule
+ * a retry. Must be call inside {@link #onExecuteInBackgroundThread()}
+ */
+ @WorkerThread
+ public void fail() {
+ Assert.isNotMainThread();
+ mHasFailed = true;
+ }
+
+ @MainThread
+ public void setExecutionTime(long timeMillis) {
+ Assert.isMainThread();
+ mExecutionTime = timeMillis;
+ }
+
+ public long getTimeMillis() {
+ return sClock.getTimeMillis();
+ }
+
+ /**
+ * Creates an intent that can be used to restart the current task. Derived class should build
+ * their intent upon this.
+ */
+ public Intent createRestartIntent() {
+ return createIntent(getContext(), this.getClass(), mSubId);
+ }
+
+ /**
+ * Creates an intent that can be used to start the {@link TaskSchedulerService}. Derived class
+ * should build their intent upon this.
+ */
+ public static Intent createIntent(Context context, Class<? extends BaseTask> task, int subId) {
+ Intent intent = TaskSchedulerService.createIntent(context, task);
+ intent.putExtra(EXTRA_SUB_ID, subId);
+ return intent;
+ }
+
+ @Override
+ public TaskId getId() {
+ return new TaskId(mId, mSubId);
+ }
+
+ @Override
+ @CallSuper
+ public void onCreate(Context context, Intent intent, int flags, int startId) {
+ mContext = context;
+ mSubId = intent.getIntExtra(EXTRA_SUB_ID, TaskId.SUB_ID_ANY);
+ for (Policy policy : mPolicies) {
+ policy.onCreate(this, intent, flags, startId);
+ }
+ }
+
+ @Override
+ public long getReadyInMilliSeconds() {
+ return mExecutionTime - getTimeMillis();
+ }
+
+ @Override
+ @CallSuper
+ public void onBeforeExecute() {
+ for (Policy policy : mPolicies) {
+ policy.onBeforeExecute();
+ }
+ mHasStarted = true;
+ }
+
+ @Override
+ public void onCompleted() {
+ if (mHasFailed) {
+ for (Policy policy : mPolicies) {
+ policy.onFail();
+ }
+ }
+
+ for (Policy policy : mPolicies) {
+ policy.onCompleted();
+ }
+ }
+
+ @Override
+ public void onDuplicatedTaskAdded(Task task) {
+ for (Policy policy : mPolicies) {
+ policy.onDuplicatedTaskAdded();
+ }
+ }
+
+ @NeededForTesting
+ static class Clock {
+
+ public long getTimeMillis() {
+ return SystemClock.elapsedRealtime();
+ }
+ }
+
+ /**
+ * Used to replace the clock with an deterministic clock
+ */
+ @NeededForTesting
+ static void setClockForTesting(Clock clock) {
+ sClock = clock;
+ }
+}
diff --git a/src/com/android/phone/vvm/omtp/scheduling/BlockerTask.java b/src/com/android/phone/vvm/omtp/scheduling/BlockerTask.java
new file mode 100644
index 0000000..9d91828
--- /dev/null
+++ b/src/com/android/phone/vvm/omtp/scheduling/BlockerTask.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2016 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.vvm.omtp.scheduling;
+
+import android.content.Context;
+import android.content.Intent;
+
+import com.android.phone.vvm.omtp.VvmLog;
+
+/**
+ * Task to block another task of the same ID from being queued for a certain amount of time.
+ */
+public class BlockerTask extends BaseTask {
+
+ private static final String TAG = "BlockerTask";
+
+ public static final String EXTRA_TASK_ID = "extra_task_id";
+ public static final String EXTRA_BLOCK_FOR_MILLIS = "extra_block_for_millis";
+
+ public BlockerTask() {
+ super(TASK_INVALID);
+ }
+
+ @Override
+ public void onCreate(Context context, Intent intent, int flags, int startId) {
+ super.onCreate(context, intent, flags, startId);
+ setId(intent.getIntExtra(EXTRA_TASK_ID, TASK_INVALID));
+ setExecutionTime(getTimeMillis() + intent.getIntExtra(EXTRA_BLOCK_FOR_MILLIS, 0));
+ }
+
+ @Override
+ public void onExecuteInBackgroundThread() {
+ // Do nothing.
+ }
+
+ @Override
+ public void onDuplicatedTaskAdded(Task task) {
+ VvmLog
+ .v(TAG, task.toString() + "blocked, " + getReadyInMilliSeconds() + "millis remaining");
+ }
+}
diff --git a/src/com/android/phone/vvm/omtp/scheduling/MinimalIntervalPolicy.java b/src/com/android/phone/vvm/omtp/scheduling/MinimalIntervalPolicy.java
new file mode 100644
index 0000000..8bb22ca
--- /dev/null
+++ b/src/com/android/phone/vvm/omtp/scheduling/MinimalIntervalPolicy.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2016 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.vvm.omtp.scheduling;
+
+import android.content.Intent;
+
+import com.android.phone.vvm.omtp.scheduling.Task.TaskId;
+
+/**
+ * If a task with this policy succeeds, a {@link BlockerTask} with the same {@link TaskId} of the
+ * task will be queued immediately, preventing the same task from running for a certain amount of
+ * time.
+ */
+public class MinimalIntervalPolicy implements Policy {
+
+ BaseTask mTask;
+ TaskId mId;
+ int mBlockForMillis;
+
+ public MinimalIntervalPolicy(int blockForMillis) {
+ mBlockForMillis = blockForMillis;
+ }
+
+ @Override
+ public void onCreate(BaseTask task, Intent intent, int flags, int startId) {
+ mTask = task;
+ mId = mTask.getId();
+ }
+
+ @Override
+ public void onBeforeExecute() {
+
+ }
+
+ @Override
+ public void onCompleted() {
+ if (!mTask.hasFailed()) {
+ Intent intent = mTask
+ .createIntent(mTask.getContext(), BlockerTask.class, mId.subId);
+ intent.putExtra(BlockerTask.EXTRA_TASK_ID, mId.id);
+ intent.putExtra(BlockerTask.EXTRA_BLOCK_FOR_MILLIS, mBlockForMillis);
+ mTask.getContext().startService(intent);
+ }
+ }
+
+ @Override
+ public void onFail() {
+
+ }
+
+ @Override
+ public void onDuplicatedTaskAdded() {
+
+ }
+}
diff --git a/src/com/android/phone/vvm/omtp/scheduling/Policy.java b/src/com/android/phone/vvm/omtp/scheduling/Policy.java
new file mode 100644
index 0000000..fcb01b8
--- /dev/null
+++ b/src/com/android/phone/vvm/omtp/scheduling/Policy.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2016 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.vvm.omtp.scheduling;
+
+import android.content.Intent;
+
+/**
+ * A set of listeners managed by {@link BaseTask} for common behaviors such as retrying. Call {@link
+ * BaseTask#addPolicy(Policy)} to add a policy.
+ */
+public interface Policy {
+
+ void onCreate(BaseTask task, Intent intent, int flags, int startId);
+
+ void onBeforeExecute();
+
+ void onCompleted();
+
+ void onFail();
+
+ void onDuplicatedTaskAdded();
+}
diff --git a/src/com/android/phone/vvm/omtp/scheduling/PostponePolicy.java b/src/com/android/phone/vvm/omtp/scheduling/PostponePolicy.java
new file mode 100644
index 0000000..f23d7f7
--- /dev/null
+++ b/src/com/android/phone/vvm/omtp/scheduling/PostponePolicy.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2016 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.vvm.omtp.scheduling;
+
+import android.content.Intent;
+
+import com.android.phone.vvm.omtp.VvmLog;
+
+/**
+ * A task with Postpone policy will not be executed immediately. It will wait for a while and if a
+ * duplicated task is queued during the duration, the task will be postponed further. The task will
+ * only be executed if no new task was added in postponeMillis. Useful to batch small tasks in quick
+ * succession together.
+ */
+public class PostponePolicy implements Policy {
+
+ private static final String TAG = "PostponePolicy";
+
+ private final int mPostponeMillis;
+ private BaseTask mTask;
+
+ public PostponePolicy(int postponeMillis) {
+ mPostponeMillis = postponeMillis;
+ }
+
+ @Override
+ public void onCreate(BaseTask task, Intent intent, int flags, int startId) {
+ mTask = task;
+ mTask.setExecutionTime(mTask.getTimeMillis() + mPostponeMillis);
+ }
+
+ @Override
+ public void onBeforeExecute() {
+ // Do nothing
+ }
+
+ @Override
+ public void onCompleted() {
+ // Do nothing
+ }
+
+ @Override
+ public void onFail() {
+ // Do nothing
+ }
+
+ @Override
+ public void onDuplicatedTaskAdded() {
+ if (mTask.hasStarted()) {
+ return;
+ }
+ VvmLog.d(TAG, "postponing " + mTask);
+ mTask.setExecutionTime(mTask.getTimeMillis() + mPostponeMillis);
+ }
+}
diff --git a/src/com/android/phone/vvm/omtp/scheduling/RetryPolicy.java b/src/com/android/phone/vvm/omtp/scheduling/RetryPolicy.java
new file mode 100644
index 0000000..3c2274f
--- /dev/null
+++ b/src/com/android/phone/vvm/omtp/scheduling/RetryPolicy.java
@@ -0,0 +1,87 @@
+/*
+ * Copyright (C) 2016 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.vvm.omtp.scheduling;
+
+import android.content.Intent;
+
+import com.android.phone.vvm.omtp.VvmLog;
+
+/**
+ * A task with this policy will automatically re-queue itself if {@link BaseTask#fail()} has been
+ * called during {@link BaseTask#onExecuteInBackgroundThread()}. A task will be retried at most
+ * <code>retryLimit</code> times and with a <code>retryDelayMillis</code> interval in between.
+ */
+public class RetryPolicy implements Policy {
+
+ private static final String TAG = "RetryPolicy";
+ private static final String EXTRA_RETRY_COUNT = "extra_retry_count";
+
+ private final int mRetryLimit;
+ private final int mRetryDelayMillis;
+
+ private BaseTask mTask;
+
+ private int mRetryCount;
+ private boolean mFailed;
+
+ public RetryPolicy(int retryLimit, int retryDelayMillis) {
+ mRetryLimit = retryLimit;
+ mRetryDelayMillis = retryDelayMillis;
+ }
+
+ @Override
+ public void onCreate(BaseTask task, Intent intent, int flags, int startId) {
+ mTask = task;
+ mRetryCount = intent.getIntExtra(EXTRA_RETRY_COUNT, 0);
+ if (mRetryCount > 0) {
+ VvmLog.d(TAG, "retry #" + mRetryCount + " for " + mTask + " queued, executing in "
+ + mRetryDelayMillis);
+ mTask.setExecutionTime(mTask.getTimeMillis() + mRetryDelayMillis);
+ }
+ }
+
+ @Override
+ public void onBeforeExecute() {
+
+ }
+
+ @Override
+ public void onCompleted() {
+ if (!mFailed) {
+ return;
+ }
+ if (mRetryCount >= mRetryLimit) {
+ VvmLog.d(TAG, "Retry limit for " + mTask + " reached");
+ return;
+ }
+
+ Intent intent = mTask.createRestartIntent();
+ intent.putExtra(EXTRA_RETRY_COUNT, mRetryCount + 1);
+
+ mTask.getContext().startService(intent);
+ }
+
+ @Override
+ public void onFail() {
+ mFailed = true;
+ }
+
+ @Override
+ public void onDuplicatedTaskAdded() {
+
+ }
+}
diff --git a/src/com/android/phone/vvm/omtp/scheduling/Task.java b/src/com/android/phone/vvm/omtp/scheduling/Task.java
new file mode 100644
index 0000000..68dbad9
--- /dev/null
+++ b/src/com/android/phone/vvm/omtp/scheduling/Task.java
@@ -0,0 +1,138 @@
+/*
+ * Copyright (C) 2016 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.vvm.omtp.scheduling;
+
+import android.annotation.MainThread;
+import android.annotation.WorkerThread;
+import android.content.Context;
+import android.content.Intent;
+
+import java.util.Objects;
+
+/**
+ * A task for {@link TaskSchedulerService} to execute. Since the task is sent through a intent to
+ * the scheduler, The task must be constructable with the intent. Specifically, It must have a
+ * constructor with zero arguments, and have all relevant data packed inside the intent. Use {@link
+ * TaskSchedulerService#createIntent(Context, Class)} to create a intent that will construct the
+ * Task.
+ *
+ * <p>Only {@link #onExecuteInBackgroundThread()} is run on the worker thread.
+ */
+public interface Task {
+
+ /**
+ * TaskId to indicate it has not be set. If a task does not provide a default TaskId it should
+ * be set before {@link Task#onCreate(Context, Intent, int, int) returns}
+ */
+ int TASK_INVALID = -1;
+
+ /**
+ * TaskId to indicate it should always be queued regardless of duplicates. {@link
+ * Task#onDuplicatedTaskAdded(Task)} will never be called on tasks with this TaskId.
+ */
+ int TASK_ALLOW_DUPLICATES = -2;
+
+ int TASK_UPLOAD = 1;
+ int TASK_SYNC = 2;
+ int TASK_ACTIVATION = 3;
+
+ /**
+ * Used to differentiate between types of tasks. If a task with the same TaskId is already in
+ * the queue the new task will be rejected.
+ */
+ class TaskId {
+
+ /**
+ * Special subId value to indicate unspecified subId. Having SUB_ID_ANY does NOT prevent
+ * task on other subId from executing.
+ */
+ public static final int SUB_ID_ANY = -1;
+
+ /**
+ * Indicates the operation type of the task.
+ */
+ public final int id;
+ /**
+ * Same operation for a different subId is allowed. subId is used to differentiate phone
+ * accounts in multi-SIM scenario. For example, each SIM can queue a sync task for their
+ * own.
+ */
+ public final int subId;
+
+ public TaskId(int id, int subId) {
+ this.id = id;
+ this.subId = subId;
+ }
+
+ @Override
+ public boolean equals(Object object) {
+ if (!(object instanceof TaskId)) {
+ return false;
+ }
+ TaskId other = (TaskId) object;
+ return id == other.id && subId == other.subId;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(id, subId);
+ }
+ }
+
+ TaskId getId();
+
+ @MainThread
+ void onCreate(Context context, Intent intent, int flags, int startId);
+
+ /**
+ * @return number of milliSeconds the scheduler should wait before running this task. A value
+ * less than {@link TaskSchedulerService#READY_TOLERANCE_MILLISECONDS} will be considered ready.
+ * If no tasks are ready, the scheduler will sleep for this amount of time before doing another
+ * check (it will still wake if a new task is added). The first task in the queue that is ready
+ * will be executed.
+ */
+ @MainThread
+ long getReadyInMilliSeconds();
+
+ /**
+ * Called on the main thread when the scheduler is about to send the task into the worker
+ * thread, calling {@link #onExecuteInBackgroundThread()}
+ */
+ @MainThread
+ void onBeforeExecute();
+
+ /**
+ * The actual payload of the task, executed on the worker thread.
+ */
+ @WorkerThread
+ void onExecuteInBackgroundThread();
+
+ /**
+ * Called on the main thread when {@link #onExecuteInBackgroundThread()} has finished or thrown
+ * an uncaught exception. The task is already removed from the queue at this point, and a same
+ * task can be queued again.
+ */
+ @MainThread
+ void onCompleted();
+
+ /**
+ * Another task with the same TaskId has been added. Necessary data can be retrieved from the
+ * other task, and after this returns the task will be discarded.
+ */
+ @MainThread
+ void onDuplicatedTaskAdded(Task task);
+}
diff --git a/src/com/android/phone/vvm/omtp/scheduling/TaskSchedulerService.java b/src/com/android/phone/vvm/omtp/scheduling/TaskSchedulerService.java
new file mode 100644
index 0000000..a965795
--- /dev/null
+++ b/src/com/android/phone/vvm/omtp/scheduling/TaskSchedulerService.java
@@ -0,0 +1,344 @@
+/*
+ * Copyright (C) 2016 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.vvm.omtp.scheduling;
+
+import android.annotation.MainThread;
+import android.annotation.Nullable;
+import android.annotation.WorkerThread;
+import android.app.Service;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Binder;
+import android.os.Handler;
+import android.os.HandlerThread;
+import android.os.IBinder;
+import android.os.Looper;
+import android.os.Message;
+import android.os.PowerManager;
+import android.os.PowerManager.WakeLock;
+
+import com.android.internal.annotations.VisibleForTesting;
+import com.android.phone.Assert;
+import com.android.phone.NeededForTesting;
+import com.android.phone.vvm.omtp.VvmLog;
+import com.android.phone.vvm.omtp.scheduling.Task.TaskId;
+
+import java.util.ArrayDeque;
+import java.util.Queue;
+
+/**
+ * A service to queue and run {@link Task} on a worker thread. Only one task will be ran at a time,
+ * and same task cannot exist in the queue at the same time. The service will be started when a
+ * intent is received, and stopped when there are no more tasks in the queue.
+ */
+public class TaskSchedulerService extends Service {
+
+ private static final String TAG = "TaskSchedulerService";
+
+ private static final int READY_TOLERANCE_MILLISECONDS = 100;
+ /**
+ * When there are no more tasks to be run the service should be stopped. But when all tasks has
+ * finished there might still be more tasks in the message queue waiting to be processed,
+ * especially the ones submitted in {@link Task#onCompleted()}. Wait for a while before stopping
+ * the service to make sure there are no pending messages.
+ */
+ private static final int STOP_DELAY_MILLISECONDS = 5_000;
+ private static final String EXTRA_CLASS_NAME = "extra_class_name";
+
+ private static final String WAKE_LOCK_TAG = "TaskSchedulerService_wakelock";
+
+ // The thread to run tasks on
+ private volatile WorkerThreadHandler mWorkerThreadHandler;
+
+ private Context mContext = this;
+ /**
+ * Used by tests to turn task handling into a single threaded process by calling {@link
+ * Handler#handleMessage(Message)} directly
+ */
+ private MessageSender mMessageSender = new MessageSender();
+
+ private MainThreadHandler mMainThreadHandler;
+
+ private WakeLock mWakeLock;
+
+ /**
+ * Main thread only, access through {@link #getTasks()}
+ */
+ private final Queue<Task> mTasks = new ArrayDeque<>();
+ private boolean mWorkerThreadIsBusy = false;
+
+ private final Runnable mStopServiceWithDelay = new Runnable() {
+ @Override
+ public void run() {
+ VvmLog.d(TAG, "Stopping service");
+ stopSelf();
+ }
+ };
+ /**
+ * Should attempt to run the next task when a task has finished or been added.
+ */
+ private boolean mTaskAutoRunDisabledForTesting = false;
+
+ @VisibleForTesting
+ final class WorkerThreadHandler extends Handler {
+
+ public WorkerThreadHandler(Looper looper) {
+ super(looper);
+ }
+
+ @Override
+ @WorkerThread
+ public void handleMessage(Message msg) {
+ Assert.isNotMainThread();
+ Task task = (Task) msg.obj;
+ try {
+ VvmLog.v(TAG, "executing task " + task);
+ task.onExecuteInBackgroundThread();
+ } catch (Throwable throwable) {
+ VvmLog.e(TAG, "Exception while executing task " + task + ":" + throwable);
+ }
+
+ Message schedulerMessage = mMainThreadHandler.obtainMessage();
+ schedulerMessage.obj = task;
+ mMessageSender.send(schedulerMessage);
+ }
+ }
+
+ @VisibleForTesting
+ final class MainThreadHandler extends Handler {
+
+ public MainThreadHandler(Looper looper) {
+ super(looper);
+ }
+
+ @Override
+ @MainThread
+ public void handleMessage(Message msg) {
+ Assert.isMainThread();
+ Task task = (Task) msg.obj;
+ getTasks().remove(task);
+ task.onCompleted();
+ mWorkerThreadIsBusy = false;
+ maybeRunNextTask();
+ }
+ }
+
+ @Override
+ @MainThread
+ public void onCreate() {
+ super.onCreate();
+ mWakeLock = getSystemService(PowerManager.class)
+ .newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, WAKE_LOCK_TAG);
+ mWakeLock.acquire();
+ HandlerThread thread = new HandlerThread("VvmTaskSchedulerService");
+ thread.start();
+
+ mWorkerThreadHandler = new WorkerThreadHandler(thread.getLooper());
+ mMainThreadHandler = new MainThreadHandler(Looper.getMainLooper());
+ }
+
+ @Override
+ public void onDestroy() {
+ mWorkerThreadHandler.getLooper().quit();
+ mWakeLock.release();
+ }
+
+ @Override
+ @MainThread
+ public int onStartCommand(@Nullable Intent intent, int flags, int startId) {
+ Assert.isMainThread();
+ Task task = createTask(intent, flags, startId);
+ if (task == null) {
+ VvmLog.e(TAG, "cannot create task form intent");
+ } else {
+ addTask(task);
+ }
+ // STICKY means the service will be automatically restarted will the last intent if it is
+ // killed.
+ return START_NOT_STICKY;
+ }
+
+ @MainThread
+ @VisibleForTesting
+ void addTask(Task task) {
+ Assert.isMainThread();
+ if (task.getId().id == Task.TASK_INVALID) {
+ throw new AssertionError("Task id was not set to a valid value before adding.");
+ }
+ if (task.getId().id != Task.TASK_ALLOW_DUPLICATES) {
+ Task oldTask = getTask(task.getId());
+ if (oldTask != null) {
+ oldTask.onDuplicatedTaskAdded(task);
+ return;
+ }
+ }
+ mMainThreadHandler.removeCallbacks(mStopServiceWithDelay);
+ getTasks().add(task);
+ maybeRunNextTask();
+
+ }
+
+ @MainThread
+ @Nullable
+ private Task getTask(TaskId taskId) {
+ Assert.isMainThread();
+ for (Task task : getTasks()) {
+ if (task.getId().equals(taskId)) {
+ return task;
+ }
+ }
+ return null;
+ }
+
+ @MainThread
+ private Queue<Task> getTasks() {
+ Assert.isMainThread();
+ return mTasks;
+ }
+
+ /**
+ * Create an intent that will queue the <code>task</code>
+ */
+ public static Intent createIntent(Context context, Class<? extends Task> task) {
+ Intent intent = new Intent(context, TaskSchedulerService.class);
+ intent.putExtra(EXTRA_CLASS_NAME, task.getName());
+ return intent;
+ }
+
+ @VisibleForTesting
+ @MainThread
+ @Nullable
+ Task createTask(@Nullable Intent intent, int flags, int startId) {
+ Assert.isMainThread();
+ if (intent == null) {
+ return null;
+ }
+ String className = intent.getStringExtra(EXTRA_CLASS_NAME);
+ VvmLog.d(TAG, "create task:" + className);
+ if (className == null) {
+ throw new IllegalArgumentException("EXTRA_CLASS_NAME expected");
+ }
+ try {
+ Task task = (Task) Class.forName(className).newInstance();
+ task.onCreate(mContext, intent, flags, startId);
+ return task;
+ } catch (ClassNotFoundException | IllegalAccessException | InstantiationException e) {
+ throw new IllegalArgumentException(e);
+ }
+ }
+
+ @MainThread
+ private void maybeRunNextTask() {
+ Assert.isMainThread();
+ if (mWorkerThreadIsBusy) {
+ return;
+ }
+ if (mTaskAutoRunDisabledForTesting) {
+ // If mTaskAutoRunDisabledForTesting is true, runNextTask() must be explicitly called
+ // to run the next task.
+ return;
+ }
+
+ runNextTask();
+ }
+
+ @VisibleForTesting
+ @MainThread
+ void runNextTask() {
+ Assert.isMainThread();
+ if (getTasks().isEmpty()) {
+ prepareStop();
+ return;
+ }
+ Long minimalWaitTime = null;
+ for (Task task : getTasks()) {
+ long waitTime = task.getReadyInMilliSeconds();
+ if (waitTime < READY_TOLERANCE_MILLISECONDS) {
+ task.onBeforeExecute();
+ Message message = mWorkerThreadHandler.obtainMessage();
+ message.obj = task;
+ mWorkerThreadIsBusy = true;
+ mMessageSender.send(message);
+ return;
+ } else {
+ if (minimalWaitTime == null || waitTime < minimalWaitTime) {
+ minimalWaitTime = waitTime;
+ }
+ }
+ }
+ VvmLog.d(TAG, "minimal wait time:" + minimalWaitTime);
+ if (!mTaskAutoRunDisabledForTesting && minimalWaitTime != null) {
+ // No tests are currently ready. Sleep until the next one should be.
+ // If a new task is added during the sleep the service will wake immediately.
+ mMainThreadHandler.postDelayed(new Runnable() {
+ @Override
+ public void run() {
+ maybeRunNextTask();
+ }
+ }, minimalWaitTime);
+ }
+ }
+
+ private void prepareStop() {
+ VvmLog.d(TAG,
+ "No more tasks, stopping service if no task are added in "
+ + STOP_DELAY_MILLISECONDS + " millis");
+ mMainThreadHandler.postDelayed(mStopServiceWithDelay, STOP_DELAY_MILLISECONDS);
+ }
+
+ static class MessageSender {
+
+ public void send(Message message) {
+ message.sendToTarget();
+ }
+ }
+
+ @NeededForTesting
+ void setContextForTest(Context context) {
+ mContext = context;
+ }
+
+ @NeededForTesting
+ void setTaskAutoRunDisabledForTest(boolean value) {
+ mTaskAutoRunDisabledForTesting = value;
+ }
+
+ @NeededForTesting
+ void setMessageSenderForTest(MessageSender sender) {
+ mMessageSender = sender;
+ }
+
+ @NeededForTesting
+ void clearTasksForTest() {
+ mTasks.clear();
+ }
+
+ @Override
+ @Nullable
+ public IBinder onBind(Intent intent) {
+ return new LocalBinder();
+ }
+
+ @NeededForTesting
+ class LocalBinder extends Binder {
+
+ @NeededForTesting
+ public TaskSchedulerService getService() {
+ return TaskSchedulerService.this;
+ }
+ }
+}
diff --git a/src/com/android/phone/vvm/omtp/sms/OmtpMessageReceiver.java b/src/com/android/phone/vvm/omtp/sms/OmtpMessageReceiver.java
index c930a98..7b4d2c3 100644
--- a/src/com/android/phone/vvm/omtp/sms/OmtpMessageReceiver.java
+++ b/src/com/android/phone/vvm/omtp/sms/OmtpMessageReceiver.java
@@ -25,15 +25,15 @@
import android.provider.VoicemailContract;
import android.telecom.PhoneAccountHandle;
import android.telecom.Voicemail;
-
-import com.android.phone.PhoneGlobals;
import com.android.phone.settings.VisualVoicemailSettingsUtil;
+import com.android.phone.vvm.omtp.ActivationTask;
import com.android.phone.vvm.omtp.OmtpConstants;
-import com.android.phone.vvm.omtp.OmtpEvents;
import com.android.phone.vvm.omtp.OmtpVvmCarrierConfigHelper;
import com.android.phone.vvm.omtp.VvmLog;
-import com.android.phone.vvm.omtp.sync.OmtpVvmSourceManager;
+import com.android.phone.vvm.omtp.protocol.VisualVoicemailProtocol;
import com.android.phone.vvm.omtp.sync.OmtpVvmSyncService;
+import com.android.phone.vvm.omtp.sync.SyncOneTask;
+import com.android.phone.vvm.omtp.sync.SyncTask;
import com.android.phone.vvm.omtp.sync.VoicemailsQueryHelper;
import com.android.phone.vvm.omtp.utils.PhoneAccountHandleConverter;
@@ -41,18 +41,13 @@
* Receive SMS messages and send for processing by the OMTP visual voicemail source.
*/
public class OmtpMessageReceiver extends BroadcastReceiver {
+
private static final String TAG = "OmtpMessageReceiver";
private Context mContext;
@Override
public void onReceive(Context context, Intent intent) {
- if (!UserManager.get(context).isUserUnlocked()) {
- VvmLog.i(TAG, "Received message on locked device");
- // A full sync will happen after the device is unlocked, so nothing need to be done.
- return;
- }
-
mContext = context;
int subId = intent.getExtras().getInt(VoicemailContract.EXTRA_VOICEMAIL_SMS_SUBID);
PhoneAccountHandle phone = PhoneAccountHandleConverter.fromSubId(subId);
@@ -62,8 +57,17 @@
return;
}
+ if (!UserManager.get(context).isUserUnlocked()) {
+ VvmLog.i(TAG, "Received message on locked device");
+ // LegacyModeSmsHandler can handle new message notifications without storage access
+ LegacyModeSmsHandler.handle(context, intent, phone);
+ // A full sync will happen after the device is unlocked, so nothing else need to be
+ // done.
+ return;
+ }
+
OmtpVvmCarrierConfigHelper helper = new OmtpVvmCarrierConfigHelper(mContext, subId);
- if (!VisualVoicemailSettingsUtil.isVisualVoicemailEnabled(mContext, phone)) {
+ if (!VisualVoicemailSettingsUtil.isEnabled(mContext, phone)) {
if (helper.isLegacyModeEnabled()) {
LegacyModeSmsHandler.handle(context, intent, phone);
} else {
@@ -84,15 +88,23 @@
processSync(phone, message);
} else if (eventType.equals(OmtpConstants.STATUS_SMS_PREFIX)) {
VvmLog.v(TAG, "Received Status sms for " + subId);
- StatusMessage message = new StatusMessage(data);
- if (message.getProvisioningStatus().equals(OmtpConstants.SUBSCRIBER_READY)) {
- updateSource(phone, subId, message);
- } else {
- VvmLog.v(TAG, "Subscriber not ready, start provisioning");
- mContext.startService(OmtpProvisioningService.getProvisionIntent(mContext, intent));
- }
+ // If the STATUS SMS is initiated by ActivationTask the TaskSchedulerService will reject
+ // the follow request. Providing the data will also prevent ActivationTask from
+ // requesting another STATUS SMS. The following task will only run if the carrier
+ // spontaneous send a STATUS SMS, in that case, the VVM service should be reactivated.
+ ActivationTask.start(context, subId, data);
} else {
- VvmLog.e(TAG, "Unknown prefix: " + eventType);
+ VvmLog.w(TAG, "Unknown prefix: " + eventType);
+ VisualVoicemailProtocol protocol = helper.getProtocol();
+ if (protocol == null) {
+ return;
+ }
+ Bundle statusData = helper.getProtocol()
+ .translateStatusSmsBundle(helper, eventType, data);
+ if (statusData != null) {
+ VvmLog.i(TAG, "Protocol recognized the SMS as STATUS, activating");
+ ActivationTask.start(context, subId, data);
+ }
}
}
@@ -108,6 +120,12 @@
Intent serviceIntent = null;
switch (message.getSyncTriggerEvent()) {
case OmtpConstants.NEW_MESSAGE:
+ if (!OmtpConstants.VOICE.equals(message.getContentType())) {
+ VvmLog.i(TAG, "Non-voice message of type '" + message.getContentType()
+ + "' received, ignoring");
+ return;
+ }
+
Voicemail.Builder builder = Voicemail.createForInsertion(
message.getTimestampMillis(), message.getSender())
.setPhoneAccount(phone)
@@ -120,15 +138,11 @@
if (queryHelper.isVoicemailUnique(voicemail)) {
Uri uri = VoicemailContract.Voicemails.insert(mContext, voicemail);
voicemail = builder.setId(ContentUris.parseId(uri)).setUri(uri).build();
- serviceIntent = OmtpVvmSyncService.getSyncIntent(mContext,
- OmtpVvmSyncService.SYNC_DOWNLOAD_ONE_TRANSCRIPTION, phone,
- voicemail, true /* firstAttempt */);
+ SyncOneTask.start(mContext, phone, voicemail);
}
break;
case OmtpConstants.MAILBOX_UPDATE:
- serviceIntent = OmtpVvmSyncService.getSyncIntent(
- mContext, OmtpVvmSyncService.SYNC_DOWNLOAD_ONLY, phone,
- true /* firstAttempt */);
+ SyncTask.start(mContext, phone, OmtpVvmSyncService.SYNC_DOWNLOAD_ONLY);
break;
case OmtpConstants.GREETINGS_UPDATE:
// Not implemented in V1
@@ -136,39 +150,7 @@
default:
VvmLog.e(TAG,
"Unrecognized sync trigger event: " + message.getSyncTriggerEvent());
- break;
- }
-
- if (serviceIntent != null) {
- mContext.startService(serviceIntent);
- }
- }
-
- private void updateSource(PhoneAccountHandle phone, int subId, StatusMessage message) {
- OmtpVvmSourceManager vvmSourceManager =
- OmtpVvmSourceManager.getInstance(mContext);
-
- if (OmtpConstants.SUCCESS.equals(message.getReturnCode())) {
- OmtpVvmCarrierConfigHelper helper = new OmtpVvmCarrierConfigHelper(mContext, subId);
- helper.handleEvent(OmtpEvents.CONFIG_REQUEST_STATUS_SUCCESS);
-
- // Save the IMAP credentials in preferences so they are persistent and can be retrieved.
- VisualVoicemailSettingsUtil.setVisualVoicemailCredentialsFromStatusMessage(
- mContext,
- phone,
- message);
-
- // Add the source to indicate that it is active.
- vvmSourceManager.addSource(phone);
-
- Intent serviceIntent = OmtpVvmSyncService.getSyncIntent(
- mContext, OmtpVvmSyncService.SYNC_FULL_SYNC, phone,
- true /* firstAttempt */);
- mContext.startService(serviceIntent);
-
- PhoneGlobals.getInstance().clearMwiIndicator(subId);
- } else {
- VvmLog.e(TAG, "Visual voicemail not available for subscriber.");
+ break;
}
}
}
diff --git a/src/com/android/phone/vvm/omtp/sms/OmtpProvisioningService.java b/src/com/android/phone/vvm/omtp/sms/OmtpProvisioningService.java
index ced9490..154eeeb 100644
--- a/src/com/android/phone/vvm/omtp/sms/OmtpProvisioningService.java
+++ b/src/com/android/phone/vvm/omtp/sms/OmtpProvisioningService.java
@@ -65,6 +65,6 @@
private void startProvisioning(PhoneAccountHandle phone, StatusMessage message, Bundle data) {
OmtpVvmCarrierConfigHelper helper = new OmtpVvmCarrierConfigHelper(this,
PhoneUtils.getSubIdForPhoneAccountHandle(phone));
- helper.startProvisioning(phone, message, data);
+
}
}
diff --git a/src/com/android/phone/vvm/omtp/sms/StatusMessage.java b/src/com/android/phone/vvm/omtp/sms/StatusMessage.java
index f9d972f..65455d0 100644
--- a/src/com/android/phone/vvm/omtp/sms/StatusMessage.java
+++ b/src/com/android/phone/vvm/omtp/sms/StatusMessage.java
@@ -20,6 +20,7 @@
import com.android.phone.NeededForTesting;
import com.android.phone.vvm.omtp.OmtpConstants;
+import com.android.phone.vvm.omtp.VisualVoicemailPreferences;
/**
* Structured data representation of OMTP STATUS message.
@@ -44,6 +45,7 @@
private final String mSmtpPort;
private final String mSmtpUserName;
private final String mSmtpPassword;
+ private final String mTuiPasswordLength;
@Override
public String toString() {
@@ -58,7 +60,8 @@
+ ", mImapPassword=" + Log.pii(mImapPassword)
+ ", mSmtpPort=" + mSmtpPort
+ ", mSmtpUserName=" + mSmtpUserName
- + ", mSmtpPassword=" + Log.pii(mSmtpPassword) + "]";
+ + ", mSmtpPassword=" + Log.pii(mSmtpPassword)
+ + ", mTuiPasswordLength=" + mTuiPasswordLength + "]";
}
public StatusMessage(Bundle wrappedData) {
@@ -75,6 +78,7 @@
mSmtpPort = getString(wrappedData, OmtpConstants.SMTP_PORT);
mSmtpUserName = getString(wrappedData, OmtpConstants.SMTP_USER_NAME);
mSmtpPassword = getString(wrappedData, OmtpConstants.SMTP_PASSWORD);
+ mTuiPasswordLength = getString(wrappedData, OmtpConstants.TUI_PASSWORD_LENGTH);
}
private static String unquote(String string) {
@@ -180,6 +184,10 @@
return mSmtpPassword;
}
+ public String getTuiPasswordLength() {
+ return mTuiPasswordLength;
+ }
+
private static String getString(Bundle bundle, String key) {
String value = bundle.getString(key);
if (value == null) {
@@ -187,4 +195,16 @@
}
return value;
}
+
+ /**
+ * Saves a StatusMessage to the {@link VisualVoicemailPreferences}. Not all fields are saved.
+ */
+ public VisualVoicemailPreferences.Editor putStatus(VisualVoicemailPreferences.Editor editor) {
+ return editor
+ .putString(OmtpConstants.IMAP_PORT, getImapPort())
+ .putString(OmtpConstants.SERVER_ADDRESS, getServerAddress())
+ .putString(OmtpConstants.IMAP_USER_NAME, getImapUserName())
+ .putString(OmtpConstants.IMAP_PASSWORD, getImapPassword())
+ .putString(OmtpConstants.TUI_PASSWORD_LENGTH, getTuiPasswordLength());
+ }
}
\ No newline at end of file
diff --git a/src/com/android/phone/vvm/omtp/sms/StatusSmsFetcher.java b/src/com/android/phone/vvm/omtp/sms/StatusSmsFetcher.java
new file mode 100644
index 0000000..2c37dd9
--- /dev/null
+++ b/src/com/android/phone/vvm/omtp/sms/StatusSmsFetcher.java
@@ -0,0 +1,108 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.phone.vvm.omtp.sms;
+
+import android.annotation.MainThread;
+import android.annotation.WorkerThread;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.os.Bundle;
+import android.provider.VoicemailContract;
+import com.android.phone.Assert;
+import com.android.phone.vvm.omtp.OmtpConstants;
+import com.android.phone.vvm.omtp.OmtpVvmCarrierConfigHelper;
+import com.android.phone.vvm.omtp.VvmLog;
+import com.android.phone.vvm.omtp.protocol.VisualVoicemailProtocol;
+import java.io.Closeable;
+import java.io.IOException;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+
+/**
+ * Intercepts a incoming STATUS SMS with a blocking call.
+ */
+public class StatusSmsFetcher extends BroadcastReceiver implements Closeable {
+
+ private static final String TAG = "VvmStatusSmsFetcher";
+
+ private static final long STATUS_SMS_TIMEOUT_MILLIS = 60_000;
+
+ private CompletableFuture<Bundle> mFuture = new CompletableFuture<>();
+
+ private final Context mContext;
+ private final int mSubId;
+
+ public StatusSmsFetcher(Context context, int subId) {
+ mContext = context;
+ mSubId = subId;
+ IntentFilter filter = new IntentFilter(VoicemailContract.ACTION_VOICEMAIL_SMS_RECEIVED);
+ context.registerReceiver(this, filter);
+ }
+
+ @Override
+ public void close() throws IOException {
+ mContext.unregisterReceiver(this);
+ }
+
+ @WorkerThread
+ public Bundle get()
+ throws InterruptedException, ExecutionException, TimeoutException {
+ Assert.isNotMainThread();
+ return mFuture.get(STATUS_SMS_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
+ }
+
+ @Override
+ @MainThread
+ public void onReceive(Context context, Intent intent) {
+ Assert.isMainThread();
+ int subId = intent.getExtras().getInt(VoicemailContract.EXTRA_VOICEMAIL_SMS_SUBID);
+
+ if (mSubId != subId) {
+ return;
+ }
+ String eventType = intent.getExtras()
+ .getString(VoicemailContract.EXTRA_VOICEMAIL_SMS_PREFIX);
+
+ if (eventType.equals(OmtpConstants.STATUS_SMS_PREFIX)) {
+ mFuture.complete(intent.getBundleExtra(VoicemailContract.EXTRA_VOICEMAIL_SMS_FIELDS));
+ return;
+ }
+
+ if (eventType.equals(OmtpConstants.SYNC_SMS_PREFIX)) {
+ return;
+ }
+
+ VvmLog.i(TAG, "VVM SMS with event " + eventType
+ + " received, attempting to translate to STATUS SMS");
+ OmtpVvmCarrierConfigHelper helper = new OmtpVvmCarrierConfigHelper(context, subId);
+ VisualVoicemailProtocol protocol = helper.getProtocol();
+ if (protocol == null) {
+ return;
+ }
+ Bundle translatedBundle = protocol.translateStatusSmsBundle(helper, eventType,
+ intent.getBundleExtra(VoicemailContract.EXTRA_VOICEMAIL_SMS_FIELDS));
+
+ if (translatedBundle != null) {
+ VvmLog.i(TAG, "Translated to STATUS SMS");
+ mFuture.complete(translatedBundle);
+ }
+ }
+}
diff --git a/src/com/android/phone/vvm/omtp/sync/OmtpVvmSourceManager.java b/src/com/android/phone/vvm/omtp/sync/OmtpVvmSourceManager.java
index 1b9e53f..1972ca6 100644
--- a/src/com/android/phone/vvm/omtp/sync/OmtpVvmSourceManager.java
+++ b/src/com/android/phone/vvm/omtp/sync/OmtpVvmSourceManager.java
@@ -111,7 +111,6 @@
.handleEvent(OmtpEvents.OTHER_SOURCE_REMOVED);
removePhoneStateListener(phoneAccount);
mActiveVvmSources.remove(phoneAccount);
- OmtpVvmSyncService.cancelAllRetries(mContext, phoneAccount);
}
public void addPhoneStateListener(Phone phone) {
diff --git a/src/com/android/phone/vvm/omtp/sync/OmtpVvmSyncReceiver.java b/src/com/android/phone/vvm/omtp/sync/OmtpVvmSyncReceiver.java
index 415fc91..b424281 100644
--- a/src/com/android/phone/vvm/omtp/sync/OmtpVvmSyncReceiver.java
+++ b/src/com/android/phone/vvm/omtp/sync/OmtpVvmSyncReceiver.java
@@ -31,10 +31,7 @@
public void onReceive(final Context context, Intent intent) {
if (VoicemailContract.ACTION_SYNC_VOICEMAIL.equals(intent.getAction())) {
VvmLog.v(TAG, "Sync intent received");
- Intent syncIntent = OmtpVvmSyncService
- .getSyncIntent(context, OmtpVvmSyncService.SYNC_FULL_SYNC, null, true);
- intent.putExtra(OmtpVvmSyncService.EXTRA_IS_MANUAL_SYNC, true);
- context.startService(syncIntent);
+ SyncTask.start(context, null, OmtpVvmSyncService.SYNC_FULL_SYNC);
}
}
}
diff --git a/src/com/android/phone/vvm/omtp/sync/OmtpVvmSyncService.java b/src/com/android/phone/vvm/omtp/sync/OmtpVvmSyncService.java
index 9884e9d..2140e02 100644
--- a/src/com/android/phone/vvm/omtp/sync/OmtpVvmSyncService.java
+++ b/src/com/android/phone/vvm/omtp/sync/OmtpVvmSyncService.java
@@ -15,28 +15,25 @@
*/
package com.android.phone.vvm.omtp.sync;
-import android.app.AlarmManager;
-import android.app.IntentService;
-import android.app.PendingIntent;
import android.content.Context;
-import android.content.Intent;
import android.net.Network;
-import android.net.NetworkInfo;
import android.net.Uri;
import android.provider.VoicemailContract;
import android.telecom.PhoneAccountHandle;
import android.telecom.Voicemail;
import android.text.TextUtils;
-
import com.android.phone.PhoneUtils;
-import com.android.phone.VoicemailStatus;
import com.android.phone.settings.VisualVoicemailSettingsUtil;
+import com.android.phone.vvm.omtp.ActivationTask;
import com.android.phone.vvm.omtp.OmtpEvents;
import com.android.phone.vvm.omtp.OmtpVvmCarrierConfigHelper;
import com.android.phone.vvm.omtp.VvmLog;
import com.android.phone.vvm.omtp.fetch.VoicemailFetchedCallback;
import com.android.phone.vvm.omtp.imap.ImapHelper;
-
+import com.android.phone.vvm.omtp.imap.ImapHelper.InitializingException;
+import com.android.phone.vvm.omtp.scheduling.BaseTask;
+import com.android.phone.vvm.omtp.sync.VvmNetworkRequest.NetworkWrapper;
+import com.android.phone.vvm.omtp.utils.PhoneAccountHandleConverter;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -45,13 +42,10 @@
/**
* Sync OMTP visual voicemail.
*/
-public class OmtpVvmSyncService extends IntentService {
+public class OmtpVvmSyncService {
private static final String TAG = OmtpVvmSyncService.class.getSimpleName();
- // Number of retries
- private static final int NETWORK_RETRY_COUNT = 3;
-
/**
* Signifies a sync with both uploading to the server and downloading from the server.
*/
@@ -69,208 +63,81 @@
*/
public static final String SYNC_DOWNLOAD_ONE_TRANSCRIPTION =
"download_one_transcription";
- /**
- * The account to sync.
- */
- public static final String EXTRA_PHONE_ACCOUNT = "phone_account";
- /**
- * The voicemail to fetch.
- */
- public static final String EXTRA_VOICEMAIL = "voicemail";
- /**
- * The sync request is initiated by the user, should allow shorter sync interval.
- */
- public static final String EXTRA_IS_MANUAL_SYNC = "is_manual_sync";
- // Minimum time allowed between full syncs
- private static final int MINIMUM_FULL_SYNC_INTERVAL_MILLIS = 60 * 1000;
- // Minimum time allowed between manual syncs
- private static final int MINIMUM_MANUAL_SYNC_INTERVAL_MILLIS = 3 * 1000;
+ private final Context mContext;
+
+ // Record the timestamp of the last full sync so that duplicate syncs can be reduced.
+ private static final String LAST_FULL_SYNC_TIMESTAMP = "last_full_sync_timestamp";
+ // Constant indicating that there has never been a full sync.
+ public static final long NO_PRIOR_FULL_SYNC = -1;
private VoicemailsQueryHelper mQueryHelper;
- public OmtpVvmSyncService() {
- super("OmtpVvmSyncService");
+ public OmtpVvmSyncService(Context context) {
+ mContext = context;
+ mQueryHelper = new VoicemailsQueryHelper(mContext);
}
- public static Intent getSyncIntent(Context context, String action,
- PhoneAccountHandle phoneAccount, boolean firstAttempt) {
- return getSyncIntent(context, action, phoneAccount, null, firstAttempt);
- }
-
- public static Intent getSyncIntent(Context context, String action,
- PhoneAccountHandle phoneAccount, Voicemail voicemail, boolean firstAttempt) {
- if (firstAttempt) {
- if (phoneAccount != null) {
- VisualVoicemailSettingsUtil.resetVisualVoicemailRetryInterval(context,
- phoneAccount);
- } else {
- OmtpVvmSourceManager vvmSourceManager =
- OmtpVvmSourceManager.getInstance(context);
- Set<PhoneAccountHandle> sources = vvmSourceManager.getOmtpVvmSources();
- for (PhoneAccountHandle source : sources) {
- VisualVoicemailSettingsUtil.resetVisualVoicemailRetryInterval(context, source);
- }
- }
- }
-
- Intent serviceIntent = new Intent(context, OmtpVvmSyncService.class);
- serviceIntent.setAction(action);
- if (phoneAccount != null) {
- serviceIntent.putExtra(EXTRA_PHONE_ACCOUNT, phoneAccount);
- }
- if (voicemail != null) {
- serviceIntent.putExtra(EXTRA_VOICEMAIL, voicemail);
- }
-
- cancelRetriesForIntent(context, serviceIntent);
- return serviceIntent;
- }
-
- /**
- * Cancel all retry syncs for an account.
- *
- * @param context The context the service runs in.
- * @param phoneAccount The phone account for which to cancel syncs.
- */
- public static void cancelAllRetries(Context context, PhoneAccountHandle phoneAccount) {
- cancelRetriesForIntent(context, getSyncIntent(context, SYNC_FULL_SYNC, phoneAccount,
- false));
- }
-
- /**
- * A helper method to cancel all pending alarms for intents that would be identical to the given
- * intent.
- *
- * @param context The context the service runs in.
- * @param intent The intent to search and cancel.
- */
- private static void cancelRetriesForIntent(Context context, Intent intent) {
- AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
- alarmManager.cancel(PendingIntent.getService(context, 0, intent, 0));
-
- Intent copyIntent = new Intent(intent);
- if (SYNC_FULL_SYNC.equals(copyIntent.getAction())) {
- // A full sync action should also cancel both of the other types of syncs
- copyIntent.setAction(SYNC_DOWNLOAD_ONLY);
- alarmManager.cancel(PendingIntent.getService(context, 0, copyIntent, 0));
- copyIntent.setAction(SYNC_UPLOAD_ONLY);
- alarmManager.cancel(PendingIntent.getService(context, 0, copyIntent, 0));
- }
- }
-
- @Override
- public void onCreate() {
- super.onCreate();
- mQueryHelper = new VoicemailsQueryHelper(this);
- }
-
- @Override
- protected void onHandleIntent(Intent intent) {
- if (intent == null) {
- VvmLog.d(TAG, "onHandleIntent: could not handle null intent");
- return;
- }
- String action = intent.getAction();
- PhoneAccountHandle phoneAccount = intent.getParcelableExtra(EXTRA_PHONE_ACCOUNT);
+ public void sync(BaseTask task, String action, PhoneAccountHandle phoneAccount,
+ Voicemail voicemail) {
VvmLog.log(TAG, "Sync requested: " + action +
" for all accounts: " + String.valueOf(phoneAccount == null));
-
- boolean isManualSync = intent.getBooleanExtra(EXTRA_IS_MANUAL_SYNC, false);
- Voicemail voicemail = intent.getParcelableExtra(EXTRA_VOICEMAIL);
if (phoneAccount != null) {
VvmLog.v(TAG, "Sync requested: " + action + " - for account: " + phoneAccount);
- setupAndSendRequest(phoneAccount, voicemail, action, isManualSync);
+ setupAndSendRequest(task, phoneAccount, voicemail, action);
} else {
VvmLog.v(TAG, "Sync requested: " + action + " - for all accounts");
OmtpVvmSourceManager vvmSourceManager =
- OmtpVvmSourceManager.getInstance(this);
+ OmtpVvmSourceManager.getInstance(mContext);
Set<PhoneAccountHandle> sources = vvmSourceManager.getOmtpVvmSources();
for (PhoneAccountHandle source : sources) {
- setupAndSendRequest(source, null, action, isManualSync);
+ setupAndSendRequest(task, source, null, action);
}
}
}
- private void setupAndSendRequest(PhoneAccountHandle phoneAccount, Voicemail voicemail,
- String action, boolean isManualSync) {
- if (!VisualVoicemailSettingsUtil.isVisualVoicemailEnabled(this, phoneAccount)) {
+ private void setupAndSendRequest(BaseTask task, PhoneAccountHandle phoneAccount,
+ Voicemail voicemail, String action) {
+ if (!VisualVoicemailSettingsUtil.isEnabled(mContext, phoneAccount)) {
VvmLog.v(TAG, "Sync requested for disabled account");
return;
}
-
- if (SYNC_FULL_SYNC.equals(action)) {
- long lastSyncTime = VisualVoicemailSettingsUtil.getVisualVoicemailLastFullSyncTime(
- this, phoneAccount);
- long currentTime = System.currentTimeMillis();
- int minimumInterval = isManualSync ? MINIMUM_MANUAL_SYNC_INTERVAL_MILLIS
- : MINIMUM_MANUAL_SYNC_INTERVAL_MILLIS;
- if (currentTime - lastSyncTime < minimumInterval) {
- // If it's been less than a minute since the last sync, bail.
- VvmLog.v(TAG, "Avoiding duplicate full sync: synced recently for "
- + phoneAccount.getId());
-
- /**
- * Perform a NOOP change to the database so the sender can observe the sync is
- * completed.
- * TODO: Instead of this hack, refactor the sync to be synchronous so the sender
- * can use sendOrderedBroadcast() to register a callback once all syncs are
- * finished
- * b/26937720
- */
- VoicemailStatus.edit(this, phoneAccount).apply();
- return;
- }
- VisualVoicemailSettingsUtil.setVisualVoicemailLastFullSyncTime(
- this, phoneAccount, currentTime);
+ int subId = PhoneAccountHandleConverter.toSubId(phoneAccount);
+ if (!OmtpVvmSourceManager.getInstance(mContext).isVvmSourceRegistered(phoneAccount)) {
+ ActivationTask.start(mContext, subId, null);
+ return;
}
- VvmNetworkRequestCallback networkCallback = new SyncNetworkRequestCallback(this,
- phoneAccount, voicemail, action);
- networkCallback.requestNetwork();
+ OmtpVvmCarrierConfigHelper config = new OmtpVvmCarrierConfigHelper(mContext, subId);
+ try (NetworkWrapper network = VvmNetworkRequest.getNetwork(config, phoneAccount)) {
+ if (network == null) {
+ VvmLog.e(TAG, "unable to acquire network");
+ task.fail();
+ return;
+ }
+ doSync(task, network.get(), phoneAccount, voicemail, action);
+ }
}
- private void doSync(Network network, VvmNetworkRequestCallback callback,
- PhoneAccountHandle phoneAccount, Voicemail voicemail, String action) {
- int retryCount = NETWORK_RETRY_COUNT;
- try {
- while (retryCount > 0) {
- try (ImapHelper imapHelper = new ImapHelper(this, phoneAccount, network)) {
- if (!imapHelper.isSuccessfullyInitialized()) {
- VvmLog.w(TAG, "Can't retrieve Imap credentials.");
- VisualVoicemailSettingsUtil.resetVisualVoicemailRetryInterval(this,
- phoneAccount);
- return;
- }
-
- boolean success = true;
- if (voicemail == null) {
- success = syncAll(action, imapHelper, phoneAccount);
- } else {
- success = syncOne(imapHelper, voicemail, phoneAccount);
- }
- imapHelper.updateQuota();
-
- // Need to check again for whether visual voicemail is enabled because it could
- // have been disabled while waiting for the response from the network.
- if (VisualVoicemailSettingsUtil.isVisualVoicemailEnabled(this, phoneAccount) &&
- !success) {
- retryCount--;
- VvmLog.v(TAG, "Retrying " + action);
- } else {
- // Nothing more to do here, just exit.
- VisualVoicemailSettingsUtil.resetVisualVoicemailRetryInterval(this,
- phoneAccount);
-
- imapHelper.handleEvent(OmtpEvents.DATA_IMAP_OPERATION_COMPLETED);
- return;
- }
- }
+ private void doSync(BaseTask task, Network network, PhoneAccountHandle phoneAccount,
+ Voicemail voicemail, String action) {
+ try(ImapHelper imapHelper = new ImapHelper(mContext, phoneAccount, network)) {
+ boolean success;
+ if (voicemail == null) {
+ success = syncAll(action, imapHelper, phoneAccount);
+ } else {
+ success = syncOne(imapHelper, voicemail, phoneAccount);
}
- } finally {
- if (callback != null) {
- callback.releaseNetwork();
+ imapHelper.updateQuota();
+
+ if (success) {
+ imapHelper.handleEvent(OmtpEvents.DATA_IMAP_OPERATION_COMPLETED);
+ } else {
+ task.fail();
}
+ } catch (InitializingException e) {
+ VvmLog.w(TAG, "Can't retrieve Imap credentials.", e);
+ return;
}
}
@@ -288,58 +155,22 @@
VvmLog.v(TAG, "upload succeeded: [" + String.valueOf(uploadSuccess)
+ "] download succeeded: [" + String.valueOf(downloadSuccess) + "]");
- boolean success = uploadSuccess && downloadSuccess;
- if (!uploadSuccess || !downloadSuccess) {
- if (uploadSuccess) {
- action = SYNC_DOWNLOAD_ONLY;
- } else if (downloadSuccess) {
- action = SYNC_UPLOAD_ONLY;
- }
- }
-
- return success;
+ return uploadSuccess && downloadSuccess;
}
private boolean syncOne(ImapHelper imapHelper, Voicemail voicemail,
PhoneAccountHandle account) {
if (shouldPerformPrefetch(account, imapHelper)) {
- VoicemailFetchedCallback callback = new VoicemailFetchedCallback(this,
+ VoicemailFetchedCallback callback = new VoicemailFetchedCallback(mContext,
voicemail.getUri());
imapHelper.fetchVoicemailPayload(callback, voicemail.getSourceData());
}
return imapHelper.fetchTranscription(
- new TranscriptionFetchedCallback(this, voicemail),
+ new TranscriptionFetchedCallback(mContext, voicemail),
voicemail.getSourceData());
}
- private class SyncNetworkRequestCallback extends VvmNetworkRequestCallback {
-
- Voicemail mVoicemail;
- private String mAction;
-
- public SyncNetworkRequestCallback(Context context, PhoneAccountHandle phoneAccount,
- Voicemail voicemail, String action) {
- super(context, phoneAccount);
- mAction = action;
- mVoicemail = voicemail;
- }
-
- @Override
- public void onAvailable(Network network) {
- super.onAvailable(network);
- NetworkInfo info = getConnectivityManager().getNetworkInfo(network);
- if (info == null) {
- VvmLog.d(TAG, "Network Type: Unknown");
- } else {
- VvmLog.d(TAG, "Network Type: " + info.getTypeName());
- }
-
- doSync(network, this, mPhoneAccount, mVoicemail, mAction);
- }
-
- }
-
private boolean upload(ImapHelper imapHelper) {
List<Voicemail> readVoicemails = mQueryHelper.getReadVoicemails();
List<Voicemail> deletedVoicemails = mQueryHelper.getDeletedVoicemails();
@@ -404,9 +235,10 @@
// The leftover messages are messages that exist on the server but not locally.
boolean prefetchEnabled = shouldPerformPrefetch(account, imapHelper);
for (Voicemail remoteVoicemail : remoteMap.values()) {
- Uri uri = VoicemailContract.Voicemails.insert(this, remoteVoicemail);
+ Uri uri = VoicemailContract.Voicemails.insert(mContext, remoteVoicemail);
if (prefetchEnabled) {
- VoicemailFetchedCallback fetchedCallback = new VoicemailFetchedCallback(this, uri);
+ VoicemailFetchedCallback fetchedCallback =
+ new VoicemailFetchedCallback(mContext, uri);
imapHelper.fetchVoicemailPayload(fetchedCallback, remoteVoicemail.getSourceData());
}
}
@@ -416,28 +248,10 @@
private boolean shouldPerformPrefetch(PhoneAccountHandle account, ImapHelper imapHelper) {
OmtpVvmCarrierConfigHelper carrierConfigHelper = new OmtpVvmCarrierConfigHelper(
- this, PhoneUtils.getSubIdForPhoneAccountHandle(account));
+ mContext, PhoneUtils.getSubIdForPhoneAccountHandle(account));
return carrierConfigHelper.isPrefetchEnabled() && !imapHelper.isRoaming();
}
- protected void setRetryAlarm(PhoneAccountHandle phoneAccount, String action) {
- Intent serviceIntent = new Intent(this, OmtpVvmSyncService.class);
- serviceIntent.setAction(action);
- serviceIntent.putExtra(OmtpVvmSyncService.EXTRA_PHONE_ACCOUNT, phoneAccount);
- PendingIntent pendingIntent = PendingIntent.getService(this, 0, serviceIntent, 0);
- long retryInterval = VisualVoicemailSettingsUtil.getVisualVoicemailRetryInterval(this,
- phoneAccount);
-
- VvmLog.v(TAG, "Retrying " + action + " in " + retryInterval + "ms");
-
- AlarmManager alarmManager = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE);
- alarmManager.set(AlarmManager.RTC, System.currentTimeMillis() + retryInterval,
- pendingIntent);
-
- VisualVoicemailSettingsUtil.setVisualVoicemailRetryInterval(this, phoneAccount,
- retryInterval * 2);
- }
-
/**
* Builds a map from provider data to message for the given collection of voicemails.
*/
diff --git a/src/com/android/phone/vvm/omtp/sync/SyncOneTask.java b/src/com/android/phone/vvm/omtp/sync/SyncOneTask.java
new file mode 100644
index 0000000..165f043
--- /dev/null
+++ b/src/com/android/phone/vvm/omtp/sync/SyncOneTask.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright (C) 2016 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.vvm.omtp.sync;
+
+import android.content.Context;
+import android.content.Intent;
+import android.telecom.PhoneAccountHandle;
+import android.telecom.Voicemail;
+
+import com.android.phone.vvm.omtp.scheduling.BaseTask;
+import com.android.phone.vvm.omtp.scheduling.RetryPolicy;
+import com.android.phone.vvm.omtp.utils.PhoneAccountHandleConverter;
+
+/**
+ * Task to download a single voicemail from the server. This task is initiated by a SMS notifying
+ * the new voicemail arrival, and ignores the duplicated tasks constraint.
+ */
+public class SyncOneTask extends BaseTask {
+
+ private static final int RETRY_TIMES = 2;
+ private static final int RETRY_INTERVAL_MILLIS = 5_000;
+
+ private static final String EXTRA_PHONE_ACCOUNT_HANDLE = "extra_phone_account_handle";
+ private static final String EXTRA_SYNC_TYPE = "extra_sync_type";
+ private static final String EXTRA_VOICEMAIL = "extra_voicemail";
+
+ private PhoneAccountHandle mPhone;
+ private String mSyncType;
+ private Voicemail mVoicemail;
+
+ public static void start(Context context, PhoneAccountHandle phone, Voicemail voicemail) {
+ Intent intent = BaseTask
+ .createIntent(context, SyncOneTask.class,
+ PhoneAccountHandleConverter.toSubId(phone));
+ intent.putExtra(EXTRA_PHONE_ACCOUNT_HANDLE, phone);
+ intent.putExtra(EXTRA_SYNC_TYPE, OmtpVvmSyncService.SYNC_DOWNLOAD_ONE_TRANSCRIPTION);
+ intent.putExtra(EXTRA_VOICEMAIL, voicemail);
+ context.startService(intent);
+ }
+
+ public SyncOneTask() {
+ super(TASK_ALLOW_DUPLICATES);
+ addPolicy(new RetryPolicy(RETRY_TIMES, RETRY_INTERVAL_MILLIS));
+ }
+
+ public void onCreate(Context context, Intent intent, int flags, int startId) {
+ super.onCreate(context, intent, flags, startId);
+ mPhone = intent.getParcelableExtra(EXTRA_PHONE_ACCOUNT_HANDLE);
+ mSyncType = intent.getStringExtra(EXTRA_SYNC_TYPE);
+ mVoicemail = intent.getParcelableExtra(EXTRA_VOICEMAIL);
+ }
+
+ @Override
+ public void onExecuteInBackgroundThread() {
+ OmtpVvmSyncService service = new OmtpVvmSyncService(getContext());
+ service.sync(this, mSyncType, mPhone, mVoicemail);
+ }
+
+ @Override
+ public Intent createRestartIntent() {
+ Intent intent = super.createRestartIntent();
+ intent.putExtra(EXTRA_PHONE_ACCOUNT_HANDLE, mPhone);
+ intent.putExtra(EXTRA_SYNC_TYPE, mSyncType);
+ intent.putExtra(EXTRA_VOICEMAIL, mVoicemail);
+ return intent;
+ }
+
+}
diff --git a/src/com/android/phone/vvm/omtp/sync/SyncTask.java b/src/com/android/phone/vvm/omtp/sync/SyncTask.java
new file mode 100644
index 0000000..d4efc6e
--- /dev/null
+++ b/src/com/android/phone/vvm/omtp/sync/SyncTask.java
@@ -0,0 +1,76 @@
+/*
+ * Copyright (C) 2016 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.vvm.omtp.sync;
+
+import android.content.Context;
+import android.content.Intent;
+import android.telecom.PhoneAccountHandle;
+
+import com.android.phone.vvm.omtp.scheduling.BaseTask;
+import com.android.phone.vvm.omtp.scheduling.MinimalIntervalPolicy;
+import com.android.phone.vvm.omtp.scheduling.RetryPolicy;
+import com.android.phone.vvm.omtp.utils.PhoneAccountHandleConverter;
+
+/**
+ * System initiated sync request.
+ */
+public class SyncTask extends BaseTask {
+
+ private static final int RETRY_TIMES = 2;
+ private static final int RETRY_INTERVAL_MILLIS = 5_000;
+ private static final int MINIMAL_INTERVAL_MILLIS = 60_000;
+
+ private static final String EXTRA_PHONE_ACCOUNT_HANDLE = "extra_phone_account_handle";
+ private static final String EXTRA_SYNC_TYPE = "extra_sync_type";
+
+ private PhoneAccountHandle mPhone;
+ private String mSyncType;
+
+ public static void start(Context context, PhoneAccountHandle phone, String syncType) {
+ Intent intent = BaseTask
+ .createIntent(context, SyncTask.class, PhoneAccountHandleConverter.toSubId(phone));
+ intent.putExtra(EXTRA_PHONE_ACCOUNT_HANDLE, phone);
+ intent.putExtra(EXTRA_SYNC_TYPE, syncType);
+ context.startService(intent);
+ }
+
+ public SyncTask() {
+ super(TASK_SYNC);
+ addPolicy(new RetryPolicy(RETRY_TIMES, RETRY_INTERVAL_MILLIS));
+ addPolicy(new MinimalIntervalPolicy(MINIMAL_INTERVAL_MILLIS));
+ }
+
+ public void onCreate(Context context, Intent intent, int flags, int startId) {
+ super.onCreate(context, intent, flags, startId);
+ mPhone = intent.getParcelableExtra(EXTRA_PHONE_ACCOUNT_HANDLE);
+ mSyncType = intent.getStringExtra(EXTRA_SYNC_TYPE);
+ }
+
+ @Override
+ public void onExecuteInBackgroundThread() {
+ OmtpVvmSyncService service = new OmtpVvmSyncService(getContext());
+ service.sync(this, mSyncType, mPhone, null);
+ }
+
+ @Override
+ public Intent createRestartIntent() {
+ Intent intent = super.createRestartIntent();
+ intent.putExtra(EXTRA_PHONE_ACCOUNT_HANDLE, mPhone);
+ intent.putExtra(EXTRA_SYNC_TYPE, mSyncType);
+ return intent;
+ }
+}
diff --git a/src/com/android/phone/vvm/omtp/sync/UploadTask.java b/src/com/android/phone/vvm/omtp/sync/UploadTask.java
new file mode 100644
index 0000000..afdee58
--- /dev/null
+++ b/src/com/android/phone/vvm/omtp/sync/UploadTask.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2016 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.vvm.omtp.sync;
+
+import android.content.Context;
+import android.content.Intent;
+
+import com.android.phone.vvm.omtp.scheduling.BaseTask;
+import com.android.phone.vvm.omtp.scheduling.PostponePolicy;
+
+/**
+ * Upload task triggered by database changes. Will wait until the database has been stable for
+ * {@link #POSTPONE_MILLIS} to execute.
+ */
+public class UploadTask extends BaseTask {
+
+ private static final int POSTPONE_MILLIS = 5_000;
+
+ public UploadTask() {
+ super(TASK_UPLOAD);
+ addPolicy(new PostponePolicy(POSTPONE_MILLIS));
+ }
+
+ public static void start(Context context) {
+ Intent intent = BaseTask
+ .createIntent(context, UploadTask.class, TaskId.SUB_ID_ANY);
+ context.startService(intent);
+ }
+
+ @Override
+ public void onExecuteInBackgroundThread() {
+ OmtpVvmSyncService service = new OmtpVvmSyncService(getContext());
+ service.sync(this, OmtpVvmSyncService.SYNC_UPLOAD_ONLY, null, null);
+ }
+}
diff --git a/src/com/android/phone/vvm/omtp/sync/VoicemailProviderChangeReceiver.java b/src/com/android/phone/vvm/omtp/sync/VoicemailProviderChangeReceiver.java
index c2e6178..bf2e125 100644
--- a/src/com/android/phone/vvm/omtp/sync/VoicemailProviderChangeReceiver.java
+++ b/src/com/android/phone/vvm/omtp/sync/VoicemailProviderChangeReceiver.java
@@ -24,15 +24,14 @@
* Receives changes to the voicemail provider so they can be sent to the voicemail server.
*/
public class VoicemailProviderChangeReceiver extends BroadcastReceiver {
+
@Override
public void onReceive(Context context, Intent intent) {
boolean isSelfChanged = intent.getBooleanExtra(VoicemailContract.EXTRA_SELF_CHANGE, false);
OmtpVvmSourceManager vvmSourceManager =
OmtpVvmSourceManager.getInstance(context);
if (vvmSourceManager.getOmtpVvmSources().size() > 0 && !isSelfChanged) {
- Intent serviceIntent = OmtpVvmSyncService.getSyncIntent(
- context, OmtpVvmSyncService.SYNC_UPLOAD_ONLY, null, true /* firstAttempt */);
- context.startService(serviceIntent);
+ UploadTask.start(context);
}
}
}
diff --git a/src/com/android/phone/vvm/omtp/sync/VvmNetworkRequest.java b/src/com/android/phone/vvm/omtp/sync/VvmNetworkRequest.java
new file mode 100644
index 0000000..fba6a26
--- /dev/null
+++ b/src/com/android/phone/vvm/omtp/sync/VvmNetworkRequest.java
@@ -0,0 +1,104 @@
+/*
+ * Copyright (C) 2016 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.vvm.omtp.sync;
+
+import android.net.Network;
+import android.telecom.PhoneAccountHandle;
+
+import com.android.phone.vvm.omtp.OmtpVvmCarrierConfigHelper;
+import com.android.phone.vvm.omtp.VvmLog;
+
+import java.io.Closeable;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Future;
+
+/**
+ * Class to retrieve a {@link Network} synchronously. {@link #getNetwork(OmtpVvmCarrierConfigHelper,
+ * PhoneAccountHandle)} will block until a suitable network is retrieved or it has failed.
+ */
+public class VvmNetworkRequest {
+
+ private static final String TAG = "VvmNetworkRequest";
+
+ /**
+ * A wrapper around a Network returned by a {@link VvmNetworkRequestCallback}, which should be
+ * closed once not needed anymore.
+ */
+ public static class NetworkWrapper implements Closeable {
+
+ private final Network mNetwork;
+ private final VvmNetworkRequestCallback mCallback;
+
+ private NetworkWrapper(Network network, VvmNetworkRequestCallback callback) {
+ mNetwork = network;
+ mCallback = callback;
+ }
+
+ public Network get() {
+ return mNetwork;
+ }
+
+ @Override
+ public void close() {
+ mCallback.releaseNetwork();
+ }
+ }
+
+ public static NetworkWrapper getNetwork(OmtpVvmCarrierConfigHelper config,
+ PhoneAccountHandle handle) {
+ FutureNetworkRequestCallback callback = new FutureNetworkRequestCallback(config, handle);
+ callback.requestNetwork();
+ try {
+ return callback.getFuture().get();
+ } catch (InterruptedException | ExecutionException e) {
+ VvmLog.e(TAG, "can't get future network", e);
+ return null;
+ }
+ }
+
+ private static class FutureNetworkRequestCallback extends VvmNetworkRequestCallback {
+
+ /**
+ * {@link CompletableFuture#get()} will block until {@link CompletableFuture#
+ * complete(Object) } has been called on the other thread.
+ */
+ private final CompletableFuture<NetworkWrapper> mFuture = new CompletableFuture<>();
+
+ public FutureNetworkRequestCallback(OmtpVvmCarrierConfigHelper config,
+ PhoneAccountHandle phoneAccount) {
+ super(config, phoneAccount);
+ }
+
+ public Future<NetworkWrapper> getFuture() {
+ return mFuture;
+ }
+
+ @Override
+ public void onAvailable(Network network) {
+ super.onAvailable(network);
+ mFuture.complete(new NetworkWrapper(network, this));
+ }
+
+ @Override
+ public void onFailed(String reason) {
+ super.onFailed(reason);
+ mFuture.complete(null);
+ }
+
+ }
+}
diff --git a/src/com/android/services/telephony/DisconnectCauseUtil.java b/src/com/android/services/telephony/DisconnectCauseUtil.java
index 2965968..48fc2a4 100644
--- a/src/com/android/services/telephony/DisconnectCauseUtil.java
+++ b/src/com/android/services/telephony/DisconnectCauseUtil.java
@@ -223,9 +223,11 @@
case android.telephony.DisconnectCause.CALL_PULLED:
resourceId = R.string.callEnded_pulled;
+ break;
case android.telephony.DisconnectCause.MAXIMUM_NUMBER_OF_CALLS_REACHED:
resourceId = R.string.callFailed_maximum_reached;
+ break;
default:
break;
diff --git a/src/com/android/services/telephony/ImsConference.java b/src/com/android/services/telephony/ImsConference.java
index 5a29e17..639cc03 100644
--- a/src/com/android/services/telephony/ImsConference.java
+++ b/src/com/android/services/telephony/ImsConference.java
@@ -175,7 +175,10 @@
Log.d(this, "onConnectionCapabilitiesChanged: Connection: %s," +
" connectionCapabilities: %s", c, connectionCapabilities);
int capabilites = ImsConference.this.getConnectionCapabilities();
- setConnectionCapabilities(applyHostCapabilities(capabilites, connectionCapabilities));
+ boolean isVideoConferencingSupported = mConferenceHost == null ? false :
+ mConferenceHost.isCarrierVideoConferencingSupported();
+ setConnectionCapabilities(applyHostCapabilities(capabilites, connectionCapabilities,
+ isVideoConferencingSupported));
}
@Override
@@ -277,7 +280,8 @@
int capabilities = Connection.CAPABILITY_SUPPORT_HOLD | Connection.CAPABILITY_HOLD |
Connection.CAPABILITY_MUTE | Connection.CAPABILITY_CONFERENCE_HAS_NO_CHILDREN;
capabilities = applyHostCapabilities(capabilities,
- mConferenceHost.getConnectionCapabilities());
+ mConferenceHost.getConnectionCapabilities(),
+ mConferenceHost.isCarrierVideoConferencingSupported());
setConnectionCapabilities(capabilities);
}
@@ -287,24 +291,36 @@
*
* @param conferenceCapabilities The current conference capabilities.
* @param capabilities The new conference host capabilities.
+ * @param isVideoConferencingSupported Whether video conferencing is supported.
* @return The merged capabilities to be applied to the conference.
*/
- private int applyHostCapabilities(int conferenceCapabilities, int capabilities) {
+ private int applyHostCapabilities(int conferenceCapabilities, int capabilities,
+ boolean isVideoConferencingSupported) {
+
conferenceCapabilities = changeBitmask(conferenceCapabilities,
Connection.CAPABILITY_SUPPORTS_VT_LOCAL_BIDIRECTIONAL,
can(capabilities, Connection.CAPABILITY_SUPPORTS_VT_LOCAL_BIDIRECTIONAL));
- conferenceCapabilities = changeBitmask(conferenceCapabilities,
+ if (isVideoConferencingSupported) {
+ conferenceCapabilities = changeBitmask(conferenceCapabilities,
Connection.CAPABILITY_SUPPORTS_VT_REMOTE_BIDIRECTIONAL,
can(capabilities, Connection.CAPABILITY_SUPPORTS_VT_REMOTE_BIDIRECTIONAL));
-
- conferenceCapabilities = changeBitmask(conferenceCapabilities,
- Connection.CAPABILITY_CANNOT_DOWNGRADE_VIDEO_TO_AUDIO,
- can(capabilities, Connection.CAPABILITY_CANNOT_DOWNGRADE_VIDEO_TO_AUDIO));
-
- conferenceCapabilities = changeBitmask(conferenceCapabilities,
+ conferenceCapabilities = changeBitmask(conferenceCapabilities,
Connection.CAPABILITY_CAN_UPGRADE_TO_VIDEO,
can(capabilities, Connection.CAPABILITY_CAN_UPGRADE_TO_VIDEO));
+ } else {
+ // If video conferencing is not supported, explicitly turn off the remote video
+ // capability and the ability to upgrade to video.
+ Log.v(this, "applyHostCapabilities : video conferencing not supported");
+ conferenceCapabilities = changeBitmask(conferenceCapabilities,
+ Connection.CAPABILITY_SUPPORTS_VT_REMOTE_BIDIRECTIONAL, false);
+ conferenceCapabilities = changeBitmask(conferenceCapabilities,
+ Connection.CAPABILITY_CAN_UPGRADE_TO_VIDEO, false);
+ }
+
+ conferenceCapabilities = changeBitmask(conferenceCapabilities,
+ Connection.CAPABILITY_CANNOT_DOWNGRADE_VIDEO_TO_AUDIO,
+ can(capabilities, Connection.CAPABILITY_CANNOT_DOWNGRADE_VIDEO_TO_AUDIO));
return conferenceCapabilities;
}
@@ -572,7 +588,8 @@
mConferenceHost.addConnectionListener(mConferenceHostListener);
mConferenceHost.addTelephonyConnectionListener(mTelephonyConnectionListener);
setConnectionCapabilities(applyHostCapabilities(getConnectionCapabilities(),
- mConferenceHost.getConnectionCapabilities()));
+ mConferenceHost.getConnectionCapabilities(),
+ mConferenceHost.isCarrierVideoConferencingSupported()));
setConnectionProperties(applyHostProperties(getConnectionProperties(),
mConferenceHost.getConnectionProperties()));
@@ -831,6 +848,9 @@
GsmConnection c = new GsmConnection(originalConnection, getTelecomCallId());
// This is a newly created conference connection as a result of SRVCC
c.setConferenceSupported(true);
+ c.addCapability(Connection.CAPABILITY_CONFERENCE_HAS_NO_CHILDREN);
+ c.setConnectionProperties(
+ c.getConnectionProperties() | Connection.PROPERTY_IS_DOWNGRADED_CONFERENCE);
c.updateState();
// Copy the connect time from the conferenceHost
c.setConnectTimeMillis(mConferenceHost.getConnectTimeMillis());
diff --git a/src/com/android/services/telephony/TelephonyConnection.java b/src/com/android/services/telephony/TelephonyConnection.java
index c14208f..d931f32 100644
--- a/src/com/android/services/telephony/TelephonyConnection.java
+++ b/src/com/android/services/telephony/TelephonyConnection.java
@@ -46,6 +46,7 @@
import com.android.internal.telephony.Phone;
import com.android.internal.telephony.imsphone.ImsPhone;
import com.android.internal.telephony.imsphone.ImsPhoneCallTracker;
+import com.android.phone.ImsUtil;
import com.android.phone.PhoneUtils;
import com.android.phone.R;
@@ -234,6 +235,13 @@
};
/**
+ * @return {@code true} if carrier video conferencing is supported, {@code false} otherwise.
+ */
+ public boolean isCarrierVideoConferencingSupported() {
+ return mIsCarrierVideoConferencingSupported;
+ }
+
+ /**
* A listener/callback mechanism that is specific communication from TelephonyConnections
* to TelephonyConnectionService (for now). It is more specific that Connection.Listener
* because it is only exposed in Telephony.
@@ -411,6 +419,13 @@
private boolean mIsConferenceSupported;
/**
+ * Indicates whether the carrier supports video conferencing; captures the current state of the
+ * carrier config
+ * {@link android.telephony.CarrierConfigManager#KEY_SUPPORT_VIDEO_CONFERENCE_CALL_BOOL}.
+ */
+ private boolean mIsCarrierVideoConferencingSupported;
+
+ /**
* Indicates whether or not this connection has CDMA Enhanced Voice Privacy enabled.
*/
private boolean mIsCdmaVoicePrivacyEnabled;
@@ -830,7 +845,6 @@
}
boolean isCurrentVideoCall = false;
boolean wasVideoCall = false;
- boolean isWifiCall = false;
boolean isVowifiEnabled = false;
if (phone instanceof ImsPhone) {
ImsPhone imsPhone = (ImsPhone) phone;
@@ -839,15 +853,14 @@
ImsCall call = imsPhone.getForegroundCall().getImsCall();
isCurrentVideoCall = call.isVideoCall();
wasVideoCall = call.wasVideoCall();
- isWifiCall = call.isWifiCall();
}
- isVowifiEnabled = ((ImsPhoneCallTracker) imsPhone.getCallTracker()).isVowifiEnabled();
+ isVowifiEnabled = ImsUtil.isWfcEnabled(phone.getContext());
}
if (isCurrentVideoCall) {
return true;
- } else if (wasVideoCall && isWifiCall && !isVowifiEnabled) {
+ } else if (wasVideoCall && mIsWifi && !isVowifiEnabled) {
return true;
}
return false;
@@ -1322,6 +1335,7 @@
mIsWifi = isWifi;
updateConnectionProperties();
updateStatusHints();
+ refreshDisableAddCall();
}
/**
@@ -1515,15 +1529,15 @@
.getInstance(getPhone().getContext());
boolean isConferencingSupported = telecomAccountRegistry
.isMergeCallSupported(phoneAccountHandle);
- boolean isVideoConferencingSupported = telecomAccountRegistry
+ mIsCarrierVideoConferencingSupported = telecomAccountRegistry
.isVideoConferencingSupported(phoneAccountHandle);
boolean isMergeOfWifiCallsAllowedWhenVoWifiOff = telecomAccountRegistry
.isMergeOfWifiCallsAllowedWhenVoWifiOff(phoneAccountHandle);
Log.v(this, "refreshConferenceSupported : isConfSupp=%b, isVidConfSupp=%b, " +
"isMergeOfWifiAllowed=%b, isWifi=%b, isVoWifiEnabled=%b", isConferencingSupported,
- isVideoConferencingSupported, isMergeOfWifiCallsAllowedWhenVoWifiOff, isWifi(),
- isVoWifiEnabled);
+ mIsCarrierVideoConferencingSupported, isMergeOfWifiCallsAllowedWhenVoWifiOff,
+ isWifi(), isVoWifiEnabled);
boolean isConferenceSupported = true;
if (mTreatAsEmergencyCall) {
isConferenceSupported = false;
@@ -1531,7 +1545,7 @@
} else if (!isConferencingSupported) {
isConferenceSupported = false;
Log.d(this, "refreshConferenceSupported = false; carrier doesn't support conf.");
- } else if (isVideoCall && !isVideoConferencingSupported) {
+ } else if (isVideoCall && !mIsCarrierVideoConferencingSupported) {
isConferenceSupported = false;
Log.d(this, "refreshConferenceSupported = false; video conf not supported.");
} else if (!isMergeOfWifiCallsAllowedWhenVoWifiOff && isWifi() && !isVoWifiEnabled) {
diff --git a/tests/Android.mk b/tests/Android.mk
index e1b564f..59cba42 100644
--- a/tests/Android.mk
+++ b/tests/Android.mk
@@ -25,7 +25,7 @@
LOCAL_MODULE_TAGS := tests
-LOCAL_JAVA_LIBRARIES := telephony-common
+LOCAL_JAVA_LIBRARIES := telephony-common android-support-test
LOCAL_INSTRUMENTATION_FOR := TeleService
diff --git a/tests/src/com/android/phone/vvm/omtp/OmtpVvmCarrierConfigHelperTest.java b/tests/src/com/android/phone/vvm/omtp/OmtpVvmCarrierConfigHelperTest.java
index 63c7f60..bc0192c 100644
--- a/tests/src/com/android/phone/vvm/omtp/OmtpVvmCarrierConfigHelperTest.java
+++ b/tests/src/com/android/phone/vvm/omtp/OmtpVvmCarrierConfigHelperTest.java
@@ -28,14 +28,13 @@
import static com.android.phone.vvm.omtp.OmtpVvmCarrierConfigHelper.KEY_VVM_TYPE_STRING;
import android.os.PersistableBundle;
-
-import junit.framework.TestCase;
+import android.test.AndroidTestCase;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
-public class OmtpVvmCarrierConfigHelperTest extends TestCase {
+public class OmtpVvmCarrierConfigHelperTest extends AndroidTestCase {
private static final String CARRIER_TYPE = "omtp.carrier";
private static final String CARRIER_PACKAGE_NAME = "omtp.carrier.package";
@@ -58,19 +57,20 @@
private OmtpVvmCarrierConfigHelper mHelper;
public void testCarrierConfig() {
- mHelper = new OmtpVvmCarrierConfigHelper(createCarrierConfig(), null);
+ mHelper = new OmtpVvmCarrierConfigHelper(getContext(), createCarrierConfig(), null);
verifyCarrierConfig();
verifyDefaultExtraConfig();
}
public void testTelephonyConfig() {
- mHelper = new OmtpVvmCarrierConfigHelper(null, createTelephonyConfig());
+ mHelper = new OmtpVvmCarrierConfigHelper(getContext(), null, createTelephonyConfig());
verifyTelephonyConfig();
verifyTelephonyExtraConfig();
}
public void testMixedConfig() {
- mHelper = new OmtpVvmCarrierConfigHelper(createCarrierConfig(), createTelephonyConfig());
+ mHelper = new OmtpVvmCarrierConfigHelper(getContext(), createCarrierConfig(),
+ createTelephonyConfig());
verifyCarrierConfig();
verifyTelephonyExtraConfig();
}
diff --git a/tests/src/com/android/phone/vvm/omtp/StatusMessageTest.java b/tests/src/com/android/phone/vvm/omtp/StatusMessageTest.java
index fd3aa2c..707463a 100644
--- a/tests/src/com/android/phone/vvm/omtp/StatusMessageTest.java
+++ b/tests/src/com/android/phone/vvm/omtp/StatusMessageTest.java
@@ -40,6 +40,7 @@
bundle.putString(OmtpConstants.SMTP_PORT, "s1234");
bundle.putString(OmtpConstants.SMTP_USER_NAME, "susername");
bundle.putString(OmtpConstants.SMTP_PASSWORD, "spassword");
+ bundle.putString(OmtpConstants.TUI_PASSWORD_LENGTH, "4-7");
StatusMessage message = new StatusMessage(bundle);
assertEquals("status", message.getProvisioningStatus());
@@ -54,6 +55,7 @@
assertEquals("s1234", message.getSmtpPort());
assertEquals("susername", message.getSmtpUserName());
assertEquals("spassword", message.getSmtpPassword());
+ assertEquals("4-7", message.getTuiPasswordLength());
}
public void testSyncMessage_EmptyBundle() {
@@ -70,5 +72,6 @@
assertEquals("", message.getSmtpPort());
assertEquals("", message.getSmtpUserName());
assertEquals("", message.getSmtpPassword());
+ assertEquals("", message.getTuiPasswordLength());
}
}
diff --git a/tests/src/com/android/phone/vvm/omtp/VisualVoicemailPreferencesTest.java b/tests/src/com/android/phone/vvm/omtp/VisualVoicemailPreferencesTest.java
new file mode 100644
index 0000000..1ae7899
--- /dev/null
+++ b/tests/src/com/android/phone/vvm/omtp/VisualVoicemailPreferencesTest.java
@@ -0,0 +1,81 @@
+package com.android.phone.vvm.omtp;
+
+import android.content.ComponentName;
+import android.telecom.PhoneAccountHandle;
+import android.test.AndroidTestCase;
+import android.util.ArraySet;
+
+import java.util.Arrays;
+
+public class VisualVoicemailPreferencesTest extends AndroidTestCase {
+
+ public void testWriteRead() {
+ VisualVoicemailPreferences preferences = new VisualVoicemailPreferences(getContext(),
+ createFakeHandle("testWriteRead"));
+ preferences.edit()
+ .putBoolean("boolean", true)
+ .putFloat("float", 0.5f)
+ .putInt("int", 123)
+ .putLong("long", 456)
+ .putString("string", "foo")
+ .putStringSet("stringset", new ArraySet<>(Arrays.asList("bar", "baz")))
+ .apply();
+
+ assertTrue(preferences.contains("boolean"));
+ assertTrue(preferences.contains("float"));
+ assertTrue(preferences.contains("int"));
+ assertTrue(preferences.contains("long"));
+ assertTrue(preferences.contains("string"));
+ assertTrue(preferences.contains("stringset"));
+
+ assertEquals(true, preferences.getBoolean("boolean", false));
+ assertEquals(0.5f, preferences.getFloat("float", 0));
+ assertEquals(123, preferences.getInt("int", 0));
+ assertEquals(456, preferences.getLong("long", 0));
+ assertEquals("foo", preferences.getString("string", null));
+ assertEquals(new ArraySet<>(Arrays.asList("bar", "baz")),
+ preferences.getStringSet("stringset", null));
+ }
+
+ public void testReadDefault() {
+ VisualVoicemailPreferences preferences = new VisualVoicemailPreferences(getContext(),
+ createFakeHandle("testReadDefault"));
+
+ assertFalse(preferences.contains("boolean"));
+ assertFalse(preferences.contains("float"));
+ assertFalse(preferences.contains("int"));
+ assertFalse(preferences.contains("long"));
+ assertFalse(preferences.contains("string"));
+ assertFalse(preferences.contains("stringset"));
+
+ assertEquals(true, preferences.getBoolean("boolean", true));
+ assertEquals(2.5f, preferences.getFloat("float", 2.5f));
+ assertEquals(321, preferences.getInt("int", 321));
+ assertEquals(654, preferences.getLong("long", 654));
+ assertEquals("foo2", preferences.getString("string", "foo2"));
+ assertEquals(new ArraySet<>(Arrays.asList("bar2", "baz2")),
+ preferences.getStringSet(
+ "stringset", new ArraySet<>(Arrays.asList("bar2", "baz2"))));
+ }
+
+ public void testReadDefaultNull() {
+ VisualVoicemailPreferences preferences = new VisualVoicemailPreferences(getContext(),
+ createFakeHandle("testReadDefaultNull"));
+ assertNull(preferences.getString("string", null));
+ assertNull(preferences.getStringSet("stringset", null));
+ }
+
+ public void testDifferentHandle() {
+ VisualVoicemailPreferences preferences1 = new VisualVoicemailPreferences(getContext(),
+ createFakeHandle("testDifferentHandle1"));
+ VisualVoicemailPreferences preferences2 = new VisualVoicemailPreferences(getContext(),
+ createFakeHandle("testDifferentHandle1"));
+
+ preferences1.edit().putString("string", "foo");
+ assertFalse(preferences2.contains("string"));
+ }
+
+ private PhoneAccountHandle createFakeHandle(String id) {
+ return new PhoneAccountHandle(new ComponentName(getContext(), this.getClass()), id);
+ }
+}
diff --git a/tests/src/com/android/phone/vvm/omtp/scheduling/BaseTaskTest.java b/tests/src/com/android/phone/vvm/omtp/scheduling/BaseTaskTest.java
new file mode 100644
index 0000000..27dd87e
--- /dev/null
+++ b/tests/src/com/android/phone/vvm/omtp/scheduling/BaseTaskTest.java
@@ -0,0 +1,130 @@
+/*
+ * Copyright (C) 2016 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.vvm.omtp.scheduling;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+
+import android.support.test.runner.AndroidJUnit4;
+
+import com.android.phone.vvm.omtp.scheduling.Task.TaskId;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(AndroidJUnit4.class)
+public class BaseTaskTest extends BaseTaskTestBase {
+
+
+ @Test
+ public void testBaseTask() {
+ DummyBaseTask task = (DummyBaseTask) submitTask(
+ BaseTask.createIntent(mTestContext, DummyBaseTask.class, 123));
+ assertTrue(task.getId().equals(new TaskId(1, 123)));
+ assertTrue(!task.hasStarted());
+ assertTrue(!task.hasRun);
+ mService.runNextTask();
+ assertTrue(task.hasStarted());
+ assertTrue(task.hasRun);
+ verify(task.policy).onBeforeExecute();
+ verify(task.policy).onCompleted();
+ }
+
+ @Test
+ public void testFail() {
+ FailingBaseTask task = (FailingBaseTask) submitTask(
+ BaseTask.createIntent(mTestContext, FailingBaseTask.class, 0));
+ mService.runNextTask();
+ verify(task.policy).onFail();
+ }
+
+ @Test
+ public void testDuplicated() {
+ DummyBaseTask task1 = (DummyBaseTask) submitTask(
+ BaseTask.createIntent(mTestContext, DummyBaseTask.class, 123));
+ verify(task1.policy, never()).onDuplicatedTaskAdded();
+
+ DummyBaseTask task2 = (DummyBaseTask) submitTask(
+ BaseTask.createIntent(mTestContext, DummyBaseTask.class, 123));
+ verify(task1.policy).onDuplicatedTaskAdded();
+
+ mService.runNextTask();
+ assertTrue(task1.hasRun);
+ assertTrue(!task2.hasRun);
+ }
+
+ @Test
+ public void testDuplicated_DifferentSubId() {
+ DummyBaseTask task1 = (DummyBaseTask) submitTask(
+ BaseTask.createIntent(mTestContext, DummyBaseTask.class, 123));
+ verify(task1.policy, never()).onDuplicatedTaskAdded();
+
+ DummyBaseTask task2 = (DummyBaseTask) submitTask(
+ BaseTask.createIntent(mTestContext, DummyBaseTask.class, 456));
+ verify(task1.policy, never()).onDuplicatedTaskAdded();
+ mService.runNextTask();
+ assertTrue(task1.hasRun);
+ assertTrue(!task2.hasRun);
+
+ mService.runNextTask();
+ assertTrue(task2.hasRun);
+ }
+
+ @Test
+ public void testReadyTime() {
+ BaseTask task = spy(new DummyBaseTask());
+ assertTrue(task.getReadyInMilliSeconds() == 0);
+ mTime = 500;
+ assertTrue(task.getReadyInMilliSeconds() == -500);
+ task.setExecutionTime(1000);
+ assertTrue(task.getReadyInMilliSeconds() == 500);
+ }
+
+ public static class DummyBaseTask extends BaseTask {
+
+ public Policy policy;
+ public boolean hasRun = false;
+
+ public DummyBaseTask() {
+ super(1);
+ policy = mock(Policy.class);
+ addPolicy(policy);
+ }
+
+ @Override
+ public void onExecuteInBackgroundThread() {
+ hasRun = true;
+ }
+ }
+
+ public static class FailingBaseTask extends BaseTask {
+
+ public Policy policy;
+ public FailingBaseTask() {
+ super(1);
+ policy = mock(Policy.class);
+ addPolicy(policy);
+ }
+
+ @Override
+ public void onExecuteInBackgroundThread() {
+ fail();
+ }
+ }
+}
diff --git a/tests/src/com/android/phone/vvm/omtp/scheduling/BaseTaskTestBase.java b/tests/src/com/android/phone/vvm/omtp/scheduling/BaseTaskTestBase.java
new file mode 100644
index 0000000..1ffd3c4
--- /dev/null
+++ b/tests/src/com/android/phone/vvm/omtp/scheduling/BaseTaskTestBase.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2016 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.vvm.omtp.scheduling;
+
+import com.android.phone.vvm.omtp.scheduling.BaseTask.Clock;
+
+import org.junit.After;
+import org.junit.Before;
+
+public class BaseTaskTestBase extends TaskSchedulerServiceTestBase {
+
+ /**
+ * "current time" of the deterministic clock.
+ */
+ public long mTime;
+
+ @Before
+ public void setUpBaseTaskTest() {
+ mTime = 0;
+ BaseTask.setClockForTesting(new TestClock());
+ }
+
+ @After
+ public void tearDownBaseTaskTest() {
+ BaseTask.setClockForTesting(new Clock());
+ }
+
+
+ private class TestClock extends Clock {
+
+ @Override
+ public long getTimeMillis() {
+ return mTime;
+ }
+ }
+}
diff --git a/tests/src/com/android/phone/vvm/omtp/scheduling/PolicyTest.java b/tests/src/com/android/phone/vvm/omtp/scheduling/PolicyTest.java
new file mode 100644
index 0000000..9761d01
--- /dev/null
+++ b/tests/src/com/android/phone/vvm/omtp/scheduling/PolicyTest.java
@@ -0,0 +1,145 @@
+/*
+ * Copyright (C) 2016 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.vvm.omtp.scheduling;
+
+import android.support.test.runner.AndroidJUnit4;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(AndroidJUnit4.class)
+public class PolicyTest extends BaseTaskTestBase {
+
+ private static int sExecuteCounter;
+
+ @Before
+ public void setUpPolicyTest() {
+ sExecuteCounter = 0;
+ }
+
+ @Test
+ public void testPostponePolicy() {
+ Task task = submitTask(BaseTask.createIntent(mTestContext, PostponeTask.class, 0));
+ mService.runNextTask();
+ assertTrue(task.getReadyInMilliSeconds() == 1000);
+ submitTask(BaseTask.createIntent(mTestContext, PostponeTask.class, 0));
+ assertTrue(task.getReadyInMilliSeconds() == 1000);
+ mTime = 500;
+ submitTask(BaseTask.createIntent(mTestContext, PostponeTask.class, 0));
+ assertTrue(task.getReadyInMilliSeconds() == 1000);
+ mTime = 2500;
+ mService.runNextTask();
+ assertTrue(sExecuteCounter == 1);
+ }
+
+ @Test
+ public void testRetryPolicy() {
+ Task task = submitTask(BaseTask.createIntent(mTestContext, FailingRetryTask.class, 0));
+ mService.runNextTask();
+ // Should queue retry at 1000
+ assertTrue(sExecuteCounter == 1);
+ mService.runNextTask();
+ assertTrue(sExecuteCounter == 1);
+ mTime = 1500;
+ mService.runNextTask();
+ // Should queue retry at 2500
+ assertTrue(sExecuteCounter == 2);
+ mService.runNextTask();
+ assertTrue(sExecuteCounter == 2);
+ mTime = 2000;
+ mService.runNextTask();
+ assertTrue(sExecuteCounter == 2);
+ mTime = 3000;
+ mService.runNextTask();
+ // No more retries are queued.
+ assertTrue(sExecuteCounter == 3);
+ mService.runNextTask();
+ assertTrue(sExecuteCounter == 3);
+ mTime = 4500;
+ mService.runNextTask();
+ assertTrue(sExecuteCounter == 3);
+ }
+
+ @Test
+ public void testMinimalIntervalPolicy() {
+ MinimalIntervalPolicyTask task1 = (MinimalIntervalPolicyTask) submitTask(
+ BaseTask.createIntent(mTestContext, MinimalIntervalPolicyTask.class, 0));
+ mService.runNextTask();
+ assertTrue(task1.hasRan);
+ MinimalIntervalPolicyTask task2 = (MinimalIntervalPolicyTask) submitTask(
+ BaseTask.createIntent(mTestContext, MinimalIntervalPolicyTask.class, 0));
+ mService.runNextTask();
+ assertTrue(!task2.hasRan);
+
+ mTime = 1500;
+ mService.runNextTask();
+
+ MinimalIntervalPolicyTask task3 = (MinimalIntervalPolicyTask) submitTask(
+ BaseTask.createIntent(mTestContext, MinimalIntervalPolicyTask.class, 0));
+ mService.runNextTask();
+ assertTrue(task3.hasRan);
+ }
+
+ public abstract static class PolicyTestTask extends BaseTask {
+
+ public PolicyTestTask() {
+ super(1);
+ }
+
+ @Override
+ public void onExecuteInBackgroundThread() {
+ sExecuteCounter++;
+ }
+ }
+
+ public static class PostponeTask extends PolicyTestTask {
+
+ PostponeTask() {
+ addPolicy(new PostponePolicy(1000));
+ }
+ }
+
+ public static class FailingRetryTask extends PolicyTestTask {
+
+ public FailingRetryTask() {
+ addPolicy(new RetryPolicy(2, 1000));
+ }
+
+ @Override
+ public void onExecuteInBackgroundThread() {
+ super.onExecuteInBackgroundThread();
+ fail();
+ }
+ }
+
+ public static class MinimalIntervalPolicyTask extends PolicyTestTask {
+
+ boolean hasRan;
+
+ MinimalIntervalPolicyTask() {
+ addPolicy(new MinimalIntervalPolicy(1000));
+ }
+
+ @Override
+ public void onExecuteInBackgroundThread() {
+ super.onExecuteInBackgroundThread();
+ hasRan = true;
+ }
+ }
+
+}
diff --git a/tests/src/com/android/phone/vvm/omtp/scheduling/TaskSchedulerServiceTest.java b/tests/src/com/android/phone/vvm/omtp/scheduling/TaskSchedulerServiceTest.java
new file mode 100644
index 0000000..2dd4ecf
--- /dev/null
+++ b/tests/src/com/android/phone/vvm/omtp/scheduling/TaskSchedulerServiceTest.java
@@ -0,0 +1,142 @@
+/*
+ * Copyright (C) 2016 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.vvm.omtp.scheduling;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import android.support.test.runner.AndroidJUnit4;
+
+import com.android.phone.vvm.omtp.scheduling.Task.TaskId;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.concurrent.TimeoutException;
+
+@RunWith(AndroidJUnit4.class)
+public class TaskSchedulerServiceTest extends TaskSchedulerServiceTestBase {
+
+ @Test
+ public void testTaskIdComparison() {
+ TaskId id1 = new TaskId(1, 1);
+ TaskId id2 = new TaskId(1, 1);
+ TaskId id3 = new TaskId(1, 2);
+ assertTrue(id1.equals(id2));
+ assertTrue(id1.equals(id1));
+ assertTrue(!id1.equals(id3));
+ }
+
+ @Test
+ public void testAddDuplicatedTask() throws TimeoutException {
+ TestTask task1 = (TestTask) submitTask(
+ TaskSchedulerService.createIntent(mTestContext, TestTask.class));
+ TestTask task2 = (TestTask) submitTask(
+ TaskSchedulerService.createIntent(mTestContext, TestTask.class));
+ assertTrue(task1.onDuplicatedTaskAddedCounter.invokedOnce());
+ mService.runNextTask();
+ verifyRanOnce(task1);
+ verifyNotRan(task2);
+ mService.runNextTask();
+ verifyRanOnce(task1);
+ verifyNotRan(task2);
+ }
+
+ @Test
+ public void testAddDuplicatedTaskAfterFirstCompleted() throws TimeoutException {
+ TestTask task1 = (TestTask) submitTask(
+ TaskSchedulerService.createIntent(mTestContext, TestTask.class));
+ mService.runNextTask();
+ verifyRanOnce(task1);
+ TestTask task2 = (TestTask) submitTask(
+ TaskSchedulerService.createIntent(mTestContext, TestTask.class));
+ assertTrue(task1.onDuplicatedTaskAddedCounter.neverInvoked());
+ mService.runNextTask();
+ verifyRanOnce(task2);
+ }
+
+ @Test
+ public void testAddMultipleTask() {
+ TestTask task1 = (TestTask) submitTask(
+ putTaskId(TaskSchedulerService.createIntent(mTestContext, TestTask.class),
+ new TaskId(1, 0)));
+ TestTask task2 = (TestTask) submitTask(
+ putTaskId(TaskSchedulerService.createIntent(mTestContext, TestTask.class),
+ new TaskId(2, 0)));
+ TestTask task3 = (TestTask) submitTask(
+ putTaskId(TaskSchedulerService.createIntent(mTestContext, TestTask.class),
+ new TaskId(1, 1)));
+ assertTrue(task1.onDuplicatedTaskAddedCounter.neverInvoked());
+ mService.runNextTask();
+ verifyRanOnce(task1);
+ verifyNotRan(task2);
+ verifyNotRan(task3);
+ mService.runNextTask();
+ verifyRanOnce(task1);
+ verifyRanOnce(task2);
+ verifyNotRan(task3);
+ mService.runNextTask();
+ verifyRanOnce(task1);
+ verifyRanOnce(task2);
+ verifyRanOnce(task3);
+ }
+
+ @Test
+ public void testNotReady() {
+ TestTask task1 = (TestTask) submitTask(
+ putTaskId(TaskSchedulerService.createIntent(mTestContext, TestTask.class),
+ new TaskId(1, 0)));
+ task1.readyInMilliseconds = 1000;
+ mService.runNextTask();
+ verifyNotRan(task1);
+ TestTask task2 = (TestTask) submitTask(
+ putTaskId(TaskSchedulerService.createIntent(mTestContext, TestTask.class),
+ new TaskId(2, 0)));
+ mService.runNextTask();
+ verifyNotRan(task1);
+ verifyRanOnce(task2);
+ task1.readyInMilliseconds = 50;
+ mService.runNextTask();
+ verifyRanOnce(task1);
+ verifyRanOnce(task2);
+ }
+
+ @Test
+ public void testInvalidTaskId() {
+ Task task = mock(Task.class);
+ when(task.getId()).thenReturn(new TaskId(Task.TASK_INVALID, 0));
+ thrown.expect(AssertionError.class);
+ mService.addTask(task);
+ }
+
+ @Test
+ public void testDuplicatesAllowedTaskId() {
+ TestTask task1 = (TestTask) submitTask(
+ putTaskId(TaskSchedulerService.createIntent(mTestContext, TestTask.class),
+ new TaskId(Task.TASK_ALLOW_DUPLICATES, 0)));
+ TestTask task2 = (TestTask) submitTask(
+ putTaskId(TaskSchedulerService.createIntent(mTestContext, TestTask.class),
+ new TaskId(Task.TASK_ALLOW_DUPLICATES, 0)));
+ assertTrue(task1.onDuplicatedTaskAddedCounter.neverInvoked());
+ mService.runNextTask();
+ verifyRanOnce(task1);
+ verifyNotRan(task2);
+ mService.runNextTask();
+ verifyRanOnce(task1);
+ verifyRanOnce(task2);
+ }
+}
diff --git a/tests/src/com/android/phone/vvm/omtp/scheduling/TaskSchedulerServiceTestBase.java b/tests/src/com/android/phone/vvm/omtp/scheduling/TaskSchedulerServiceTestBase.java
new file mode 100644
index 0000000..63f5c2f
--- /dev/null
+++ b/tests/src/com/android/phone/vvm/omtp/scheduling/TaskSchedulerServiceTestBase.java
@@ -0,0 +1,230 @@
+/*
+ * Copyright (C) 2016 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.vvm.omtp.scheduling;
+
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.os.IBinder;
+import android.os.Message;
+import android.support.test.InstrumentationRegistry;
+import android.support.test.rule.ServiceTestRule;
+import android.support.test.runner.AndroidJUnit4;
+
+import com.android.phone.Assert;
+import com.android.phone.vvm.omtp.scheduling.Task.TaskId;
+import com.android.phone.vvm.omtp.scheduling.TaskSchedulerService.MainThreadHandler;
+import com.android.phone.vvm.omtp.scheduling.TaskSchedulerService.WorkerThreadHandler;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.rules.ExpectedException;
+import org.junit.runner.RunWith;
+
+import java.util.concurrent.TimeoutException;
+
+@RunWith(AndroidJUnit4.class)
+public class TaskSchedulerServiceTestBase {
+
+ private static final String EXTRA_ID = "test_extra_id";
+ private static final String EXTRA_SUB_ID = "test_extra_sub_id";
+
+ public TaskSchedulerService mService;
+
+ @Rule
+ public final ExpectedException thrown = ExpectedException.none();
+
+ @Rule
+ public final ServiceTestRule mServiceRule = new ServiceTestRule();
+
+ public Context mTargetContext;
+ public Context mTestContext;
+
+ private static boolean sIsMainThread = true;
+
+ private final TestMessageSender mMessageSender = new TestMessageSender();
+
+ public static Intent putTaskId(Intent intent, TaskId taskId) {
+ intent.putExtra(EXTRA_ID, taskId.id);
+ intent.putExtra(EXTRA_SUB_ID, taskId.subId);
+ return intent;
+ }
+
+ public static TaskId getTaskId(Intent intent) {
+ return new TaskId(intent.getIntExtra(EXTRA_ID, 0), intent.getIntExtra(EXTRA_SUB_ID, 0));
+ }
+
+ @Before
+ public void setUp() throws TimeoutException {
+ Assert.setIsMainThreadForTesting(true);
+ mTargetContext = InstrumentationRegistry.getTargetContext();
+ IBinder binder = null;
+ // bindService() might returns null on 2nd invocation because the service is not unbinded
+ // yet. See https://code.google.com/p/android/issues/detail?id=180396
+ while (binder == null) {
+ binder = mServiceRule
+ .bindService(new Intent(mTargetContext, TaskSchedulerService.class));
+ }
+ mService = ((TaskSchedulerService.LocalBinder) binder).getService();
+ mTestContext = createTestContext(mTargetContext, mService);
+ mService.setMessageSenderForTest(mMessageSender);
+ mService.setTaskAutoRunDisabledForTest(true);
+ mService.setContextForTest(mTestContext);
+ }
+
+ @After
+ public void tearDown() {
+ Assert.setIsMainThreadForTesting(null);
+ mService.setTaskAutoRunDisabledForTest(false);
+ mService.clearTasksForTest();
+ mService.stopSelf();
+ }
+
+ public Task submitTask(Intent intent) {
+ Task task = mService.createTask(intent, 0, 0);
+ mService.addTask(task);
+ return task;
+ }
+
+ public static void verifyRanOnce(TestTask task) {
+ assertTrue(task.onBeforeExecuteCounter.invokedOnce());
+ assertTrue(task.executeCounter.invokedOnce());
+ assertTrue(task.onCompletedCounter.invokedOnce());
+ }
+
+ public static void verifyNotRan(TestTask task) {
+ assertTrue(task.onBeforeExecuteCounter.neverInvoked());
+ assertTrue(task.executeCounter.neverInvoked());
+ assertTrue(task.onCompletedCounter.neverInvoked());
+ }
+
+ public static class TestTask implements Task {
+
+ public int readyInMilliseconds;
+
+ private TaskId mId;
+
+ public final InvocationCounter onCreateCounter = new InvocationCounter();
+ public final InvocationCounter onBeforeExecuteCounter = new InvocationCounter();
+ public final InvocationCounter executeCounter = new InvocationCounter();
+ public final InvocationCounter onCompletedCounter = new InvocationCounter();
+ public final InvocationCounter onDuplicatedTaskAddedCounter = new InvocationCounter();
+
+ @Override
+ public void onCreate(Context context, Intent intent, int flags, int startId) {
+ onCreateCounter.invoke();
+ mId = getTaskId(intent);
+ }
+
+ @Override
+ public TaskId getId() {
+ return mId;
+ }
+
+ @Override
+ public long getReadyInMilliSeconds() {
+ Assert.isMainThread();
+ return readyInMilliseconds;
+ }
+
+ @Override
+ public void onBeforeExecute() {
+ Assert.isMainThread();
+ onBeforeExecuteCounter.invoke();
+ }
+
+ @Override
+ public void onExecuteInBackgroundThread() {
+ Assert.isNotMainThread();
+ executeCounter.invoke();
+ }
+
+ @Override
+ public void onCompleted() {
+ Assert.isMainThread();
+ onCompletedCounter.invoke();
+ }
+
+ @Override
+ public void onDuplicatedTaskAdded(Task task) {
+ Assert.isMainThread();
+ onDuplicatedTaskAddedCounter.invoke();
+ }
+ }
+
+ public static class InvocationCounter {
+
+ private int mCounter;
+
+ public void invoke() {
+ mCounter++;
+ }
+
+ public boolean invokedOnce() {
+ return mCounter == 1;
+ }
+
+ public boolean neverInvoked() {
+ return mCounter == 0;
+ }
+ }
+
+ private class TestMessageSender extends TaskSchedulerService.MessageSender {
+
+ @Override
+ public void send(Message message) {
+ if (message.getTarget() instanceof MainThreadHandler) {
+ Assert.setIsMainThreadForTesting(true);
+ } else if (message.getTarget() instanceof WorkerThreadHandler) {
+ Assert.setIsMainThreadForTesting(false);
+ } else {
+ throw new AssertionError("unexpected Handler " + message.getTarget());
+ }
+ message.getTarget().handleMessage(message);
+ }
+ }
+
+ public static void assertTrue(boolean condition) {
+ if (!condition) {
+ throw new AssertionError();
+ }
+ }
+
+ private static Context createTestContext(Context targetContext, TaskSchedulerService service) {
+ TestContext context = mock(TestContext.class);
+ when(context.getService()).thenReturn(service);
+ when(context.startService(any())).thenCallRealMethod();
+ when(context.getPackageName()).thenReturn(targetContext.getPackageName());
+ return context;
+ }
+
+ public abstract class TestContext extends Context {
+
+ @Override
+ public ComponentName startService(Intent service) {
+ getService().onStartCommand(service, 0, 0);
+ return null;
+ }
+
+ public abstract TaskSchedulerService getService();
+ }
+}