Merge "Fix truncated unread voicemail count in landscape multi-window mode." into nyc-dev
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index cbe4e1b..06f5795 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -158,6 +158,11 @@
android:exported="false">
</activity>
+ <activity android:name="com.android.dialer.voicemail.VoicemailArchiveActivity"
+ android:label="@string/voicemail_archive_activity_title"
+ android:theme="@style/DialtactsThemeWithoutActionBarOverlay">
+ </activity>
+
<activity android:name="com.android.dialer.calllog.CallLogActivity"
android:label="@string/call_log_activity_title"
android:theme="@style/DialtactsThemeWithoutActionBarOverlay"
@@ -314,6 +319,7 @@
<!-- BroadcastReceiver for receiving Intents from Notification mechanism. -->
<receiver android:name="com.android.incallui.NotificationBroadcastReceiver"
+ android:encryptionAware="true"
android:exported="false" />
<service android:name="com.android.incallui.InCallServiceImpl"
diff --git a/InCallUI/res/layout/call_button_fragment.xml b/InCallUI/res/layout/call_button_fragment.xml
index db75764..6dbfbf7 100644
--- a/InCallUI/res/layout/call_button_fragment.xml
+++ b/InCallUI/res/layout/call_button_fragment.xml
@@ -75,7 +75,7 @@
<ToggleButton android:id="@+id/muteButton"
style="@style/InCallCompoundButton"
android:background="@drawable/btn_compound_mute"
- android:contentDescription="@string/onscreenMuteText" />
+ android:contentDescription="@string/onscreenMuteText_unselected" />
<!-- CENTER SLOT ======================================================================= -->
@@ -83,7 +83,7 @@
<ToggleButton android:id="@+id/dialpadButton"
style="@style/InCallCompoundButton"
android:background="@drawable/btn_compound_dialpad"
- android:contentDescription="@string/onscreenShowDialpadText" />
+ android:contentDescription="@string/onscreenShowDialpadText_unselected" />
<!-- MIDDLE RIGHT SLOT ================================================================= -->
diff --git a/InCallUI/res/values-af/strings.xml b/InCallUI/res/values-af/strings.xml
index 5a6c078..30c8428 100644
--- a/InCallUI/res/values-af/strings.xml
+++ b/InCallUI/res/values-af/strings.xml
@@ -106,8 +106,10 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"Hou oproep"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"Hervat oproep"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"Beëindig oproep"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"Belblad"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"Demp"</string>
+ <string name="onscreenShowDialpadText_unselected" msgid="8253784035944284938">"Wys belblad"</string>
+ <string name="onscreenShowDialpadText_selected" msgid="7368390784890311449">"Versteek belblad"</string>
+ <string name="onscreenMuteText_unselected" msgid="4130269060091842798">"Demp"</string>
+ <string name="onscreenMuteText_selected" msgid="7074763815284369548">"Ontdemp"</string>
<string name="onscreenAddCallText" msgid="5577548650466595598">"Voeg oproep by"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"Smelt oproepe saam"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"Ruil"</string>
diff --git a/InCallUI/res/values-am/strings.xml b/InCallUI/res/values-am/strings.xml
index ddb65af..5306c9c 100644
--- a/InCallUI/res/values-am/strings.xml
+++ b/InCallUI/res/values-am/strings.xml
@@ -106,8 +106,10 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"ጥሪ አቆይ"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"ጥሪ ቀጥል"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"ጥሪ ጨርስ"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"መደወያ ሰሌዳ"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"ድምፅ-ከል አድርግ"</string>
+ <string name="onscreenShowDialpadText_unselected" msgid="8253784035944284938">"የመደወያ ሰሌዳ አሳይ"</string>
+ <string name="onscreenShowDialpadText_selected" msgid="7368390784890311449">"የመደወያ ሰሌዳ ደብቅ"</string>
+ <string name="onscreenMuteText_unselected" msgid="4130269060091842798">"ድምፅ-ከል አድርግ"</string>
+ <string name="onscreenMuteText_selected" msgid="7074763815284369548">"ድምፅ አታጥፋ"</string>
<string name="onscreenAddCallText" msgid="5577548650466595598">"ጥሪ ያክሉ"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"ጥሪዎችን አዋህድ"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"በውዝ"</string>
diff --git a/InCallUI/res/values-ar/strings.xml b/InCallUI/res/values-ar/strings.xml
index 7994a64..ca24a04 100644
--- a/InCallUI/res/values-ar/strings.xml
+++ b/InCallUI/res/values-ar/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"تعليق المكالمة"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"استئناف المكالمة"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"إنهاء المكالمة"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"لوحة الاتصال"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"تجاهل"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"إضافة مكالمة"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"دمج المكالمات"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"تبديل"</string>
diff --git a/InCallUI/res/values-az-rAZ/strings.xml b/InCallUI/res/values-az-rAZ/strings.xml
index 935dfc8..3498d2c 100644
--- a/InCallUI/res/values-az-rAZ/strings.xml
+++ b/InCallUI/res/values-az-rAZ/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"Zəngi gözlədin"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"Zəngə davam edin"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"Zəngi bitirin"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"Yığım paneli"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"Susdurun"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"Zəng əlavə edin"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"Zəngləri birləşdirin"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"Dəyişdirin"</string>
diff --git a/InCallUI/res/values-b+sr+Latn/strings.xml b/InCallUI/res/values-b+sr+Latn/strings.xml
index 5b8e440..50562e7 100644
--- a/InCallUI/res/values-b+sr+Latn/strings.xml
+++ b/InCallUI/res/values-b+sr+Latn/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"Stavi poziv na čekanje"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"Nastavi poziv"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"Završi poziv"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"Numerička tastatura"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"Ignoriši"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"Dodaj poziv"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"Objedini pozive"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"Zameni"</string>
diff --git a/InCallUI/res/values-bg/strings.xml b/InCallUI/res/values-bg/strings.xml
index f1ece1f..9380e54 100644
--- a/InCallUI/res/values-bg/strings.xml
+++ b/InCallUI/res/values-bg/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"Задържане на обаждането"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"Възобновяване на обаждането"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"Край на обаждането"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"Клавиатура за набиране"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"Спиране на звука"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"Добавяне на обаждане"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"Обединяване на обаждания"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"Размяна"</string>
diff --git a/InCallUI/res/values-bn-rBD/strings.xml b/InCallUI/res/values-bn-rBD/strings.xml
index 13448f4..19f229f 100644
--- a/InCallUI/res/values-bn-rBD/strings.xml
+++ b/InCallUI/res/values-bn-rBD/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"কল হোল্ডে রাখুন"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"কল পুনরায় শুরু করুন"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"কল শেষ করুন"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"ডায়ালপ্যাড"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"নিঃশব্দ করুন"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"কল যোগ করুন"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"কলগুলি মার্জ করুন"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"সোয়াপ করুন"</string>
diff --git a/InCallUI/res/values-ca/strings.xml b/InCallUI/res/values-ca/strings.xml
index fda3783..14cae1f 100644
--- a/InCallUI/res/values-ca/strings.xml
+++ b/InCallUI/res/values-ca/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"Posa la trucada en espera"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"Reprèn la trucada"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"Finalitza la trucada"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"Teclat de marcatge"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"Silencia"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"Afegeix una trucada"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"Combina les trucades"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"Canvia"</string>
diff --git a/InCallUI/res/values-cs/strings.xml b/InCallUI/res/values-cs/strings.xml
index 1b1b55b..c7434e3 100644
--- a/InCallUI/res/values-cs/strings.xml
+++ b/InCallUI/res/values-cs/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"Podržet hovor"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"Obnovit hovor"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"Ukončit hovor"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"Číselník"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"Ignorovat"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"Přidat hovor"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"Spojit hovory"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"Zaměnit"</string>
diff --git a/InCallUI/res/values-da/strings.xml b/InCallUI/res/values-da/strings.xml
index b2b8a25..2dee8f2 100644
--- a/InCallUI/res/values-da/strings.xml
+++ b/InCallUI/res/values-da/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"Sæt opkald i venteposition"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"Genoptag opkald"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"Afslut opkald"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"Tastatur"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"Slå lyden fra"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"Tilføj opkald"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"Slå opkald sammen"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"Skift"</string>
diff --git a/InCallUI/res/values-de/strings.xml b/InCallUI/res/values-de/strings.xml
index 9357fde..dd9f9b8 100644
--- a/InCallUI/res/values-de/strings.xml
+++ b/InCallUI/res/values-de/strings.xml
@@ -106,8 +106,10 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"Anruf halten"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"Anruf fortsetzen"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"Anruf beenden"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"Wähltasten"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"Stummschalten"</string>
+ <string name="onscreenShowDialpadText_unselected" msgid="8253784035944284938">"Wähltasten einblenden"</string>
+ <string name="onscreenShowDialpadText_selected" msgid="7368390784890311449">"Wähltasten ausblenden"</string>
+ <string name="onscreenMuteText_unselected" msgid="4130269060091842798">"Stummschalten"</string>
+ <string name="onscreenMuteText_selected" msgid="7074763815284369548">"Stummschaltung aufheben"</string>
<string name="onscreenAddCallText" msgid="5577548650466595598">"Anruf hinzufügen"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"Anrufe verbinden"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"Wechseln"</string>
diff --git a/InCallUI/res/values-el/strings.xml b/InCallUI/res/values-el/strings.xml
index 8dfa3bd..bdec7d0 100644
--- a/InCallUI/res/values-el/strings.xml
+++ b/InCallUI/res/values-el/strings.xml
@@ -106,8 +106,10 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"Αναμονή κλήσης"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"Συνέχιση κλήσης"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"Τερματισμός κλήσης"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"Πληκτρολόγιο κλήσης"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"Σίγαση"</string>
+ <string name="onscreenShowDialpadText_unselected" msgid="8253784035944284938">"Εμφάνιση πληκτρολογίου κλήσης"</string>
+ <string name="onscreenShowDialpadText_selected" msgid="7368390784890311449">"Απόκρυψη πληκτρολογίου κλήσης"</string>
+ <string name="onscreenMuteText_unselected" msgid="4130269060091842798">"Σίγαση"</string>
+ <string name="onscreenMuteText_selected" msgid="7074763815284369548">"Κατάργηση σίγασης"</string>
<string name="onscreenAddCallText" msgid="5577548650466595598">"Προσθήκη κλήσης"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"Συγχώνευση κλήσεων"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"Ανταλλαγή"</string>
diff --git a/InCallUI/res/values-en-rAU/strings.xml b/InCallUI/res/values-en-rAU/strings.xml
index 11bb6e8..7221686 100644
--- a/InCallUI/res/values-en-rAU/strings.xml
+++ b/InCallUI/res/values-en-rAU/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"Hold Call"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"Resume Call"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"End Call"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"Dial pad"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"Mute"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"Add call"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"Merge calls"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"Swap"</string>
diff --git a/InCallUI/res/values-en-rGB/strings.xml b/InCallUI/res/values-en-rGB/strings.xml
index 11bb6e8..7221686 100644
--- a/InCallUI/res/values-en-rGB/strings.xml
+++ b/InCallUI/res/values-en-rGB/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"Hold Call"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"Resume Call"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"End Call"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"Dial pad"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"Mute"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"Add call"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"Merge calls"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"Swap"</string>
diff --git a/InCallUI/res/values-en-rIN/strings.xml b/InCallUI/res/values-en-rIN/strings.xml
index 11bb6e8..7221686 100644
--- a/InCallUI/res/values-en-rIN/strings.xml
+++ b/InCallUI/res/values-en-rIN/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"Hold Call"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"Resume Call"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"End Call"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"Dial pad"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"Mute"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"Add call"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"Merge calls"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"Swap"</string>
diff --git a/InCallUI/res/values-es-rUS/strings.xml b/InCallUI/res/values-es-rUS/strings.xml
index 8532751..a86c60c 100644
--- a/InCallUI/res/values-es-rUS/strings.xml
+++ b/InCallUI/res/values-es-rUS/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"Retener llamada"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"Reanudar llamada"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"Finalizar llamada"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"Teclado"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"Silenciar"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"Agregar llamada"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"Combinar llamadas"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"Cambiar"</string>
diff --git a/InCallUI/res/values-es/strings.xml b/InCallUI/res/values-es/strings.xml
index d44cae7..218b80b 100644
--- a/InCallUI/res/values-es/strings.xml
+++ b/InCallUI/res/values-es/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"Retener llamada"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"Seguir con la llamada"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"Finalizar llamada"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"Teclado"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"Silenciar"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"Añadir llamada"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"Llamada a tres"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"Cambiar"</string>
diff --git a/InCallUI/res/values-et-rEE/strings.xml b/InCallUI/res/values-et-rEE/strings.xml
index 305cc9b..438a9dd 100644
--- a/InCallUI/res/values-et-rEE/strings.xml
+++ b/InCallUI/res/values-et-rEE/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"Kõne ootele"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"Jätka kõnet"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"Lõpeta kõne"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"Valimisklahvistik"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"Vaigista"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"Lisa kõne"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"Ühenda kõned"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"Vaheta"</string>
diff --git a/InCallUI/res/values-eu-rES/strings.xml b/InCallUI/res/values-eu-rES/strings.xml
index b782742..49b2513 100644
--- a/InCallUI/res/values-eu-rES/strings.xml
+++ b/InCallUI/res/values-eu-rES/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"Utzi deia zain"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"Berrekin deiari"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"Amaitu deia"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"Markagailua"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"Desaktibatu audioa"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"Gehitu deia"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"Bateratu deiak"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"Aldatu"</string>
diff --git a/InCallUI/res/values-fa/strings.xml b/InCallUI/res/values-fa/strings.xml
index a164352..27e9606 100644
--- a/InCallUI/res/values-fa/strings.xml
+++ b/InCallUI/res/values-fa/strings.xml
@@ -106,8 +106,10 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"در انتظار گذاشتن تماس"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"ازسرگیری تماس"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"پایان تماس"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"صفحه شمارهگیری"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"بیصدا کردن"</string>
+ <string name="onscreenShowDialpadText_unselected" msgid="8253784035944284938">"نمایش صفحه شمارهگیری"</string>
+ <string name="onscreenShowDialpadText_selected" msgid="7368390784890311449">"پنهان کردن صفحه شمارهگیری"</string>
+ <string name="onscreenMuteText_unselected" msgid="4130269060091842798">"بیصدا کردن"</string>
+ <string name="onscreenMuteText_selected" msgid="7074763815284369548">"لغو نادیده گرفتن"</string>
<string name="onscreenAddCallText" msgid="5577548650466595598">"افزودن تماس"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"ادغام تماسها"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"تعویض"</string>
diff --git a/InCallUI/res/values-fi/strings.xml b/InCallUI/res/values-fi/strings.xml
index be74c47..d0cc37d 100644
--- a/InCallUI/res/values-fi/strings.xml
+++ b/InCallUI/res/values-fi/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"Aseta puhelu pitoon"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"Jatka puhelua"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"Lopeta puhelu"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"Näppäimistö"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"Mykistä"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"Lisää puhelu"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"Yhdistä puhelut"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"Vaihda"</string>
diff --git a/InCallUI/res/values-fr-rCA/strings.xml b/InCallUI/res/values-fr-rCA/strings.xml
index 392b022..ee9293f 100644
--- a/InCallUI/res/values-fr-rCA/strings.xml
+++ b/InCallUI/res/values-fr-rCA/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"Mettre l\'appel en attente"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"Reprendre l\'appel"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"Mettre fin à l\'appel"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"Clavier numérique"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"Désactiver le son"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"Ajouter un appel"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"Fusionner les appels"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"Permuter"</string>
diff --git a/InCallUI/res/values-fr/strings.xml b/InCallUI/res/values-fr/strings.xml
index 05e0fd4..346db57 100644
--- a/InCallUI/res/values-fr/strings.xml
+++ b/InCallUI/res/values-fr/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"Mettre l\'appel en attente"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"Reprendre l\'appel"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"Mettre fin à l\'appel"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"Clavier"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"Couper le son"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"Ajouter un appel"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"Fusionner les appels"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"Permuter"</string>
diff --git a/InCallUI/res/values-gl-rES/strings.xml b/InCallUI/res/values-gl-rES/strings.xml
index 18bc72b..9e3e393 100644
--- a/InCallUI/res/values-gl-rES/strings.xml
+++ b/InCallUI/res/values-gl-rES/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"Poñer a chamada en espera"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"Retomar chamada"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"Finalizar chamada"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"Teclado de marcación"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"Silenciar"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"Engadir chamada"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"Combinar chamadas"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"Cambiar"</string>
diff --git a/InCallUI/res/values-gu-rIN/strings.xml b/InCallUI/res/values-gu-rIN/strings.xml
index 8f5aa1a..487206a 100644
--- a/InCallUI/res/values-gu-rIN/strings.xml
+++ b/InCallUI/res/values-gu-rIN/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"કૉલ હોલ્ડ કરો"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"કૉલ ફરી શરૂ કરો"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"કૉલ સમાપ્ત કરો"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"ડાયલપેડ"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"મ્યૂટ કરો"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"કૉલ ઉમેરો"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"કૉલ્સ મર્જ કરો"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"સ્વેપ કરો"</string>
diff --git a/InCallUI/res/values-hi/strings.xml b/InCallUI/res/values-hi/strings.xml
index 1e2a53d..2926d42 100644
--- a/InCallUI/res/values-hi/strings.xml
+++ b/InCallUI/res/values-hi/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"कॉल होल्ड करें"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"कॉल फिर से शुरू करें"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"कॉल समाप्त करें"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"डायलपैड"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"म्यूट करें"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"कॉल जोड़ें"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"कॉल मर्ज करें"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"स्वैप करें"</string>
diff --git a/InCallUI/res/values-hr/strings.xml b/InCallUI/res/values-hr/strings.xml
index 8928321..3c2d595 100644
--- a/InCallUI/res/values-hr/strings.xml
+++ b/InCallUI/res/values-hr/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"Stavi poziv na čekanje"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"Nastavi poziv"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"Završi poziv"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"Površina za biranje brojeva"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"Zanemari"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"Dodaj poziv"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"Spoji pozive"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"Zamijeni"</string>
diff --git a/InCallUI/res/values-hu/strings.xml b/InCallUI/res/values-hu/strings.xml
index 950dc34..9cac188 100644
--- a/InCallUI/res/values-hu/strings.xml
+++ b/InCallUI/res/values-hu/strings.xml
@@ -106,8 +106,10 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"Hívás tartása"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"Hívás folytatása"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"Hívás befejezése"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"Tárcsázó"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"Némítás"</string>
+ <string name="onscreenShowDialpadText_unselected" msgid="8253784035944284938">"Tárcsázó megjelenítése"</string>
+ <string name="onscreenShowDialpadText_selected" msgid="7368390784890311449">"Tárcsázó elrejtése"</string>
+ <string name="onscreenMuteText_unselected" msgid="4130269060091842798">"Némítás"</string>
+ <string name="onscreenMuteText_selected" msgid="7074763815284369548">"Némítás feloldása"</string>
<string name="onscreenAddCallText" msgid="5577548650466595598">"Hívás hozzáadása"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"Hívások egyesítése"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"Csere"</string>
diff --git a/InCallUI/res/values-hy-rAM/strings.xml b/InCallUI/res/values-hy-rAM/strings.xml
index 2026a10..9ab1ef9 100644
--- a/InCallUI/res/values-hy-rAM/strings.xml
+++ b/InCallUI/res/values-hy-rAM/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"Հետաձգել զանգը"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"Վերսկսել զանգը"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"Ավարտել զանգը"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"Թվաշար"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"Անջատել ձայնը"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"Ավելացնել զանգ"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"Միացնել զանգերը"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"Փոխանակել"</string>
diff --git a/InCallUI/res/values-in/strings.xml b/InCallUI/res/values-in/strings.xml
index 020789d..b15700f 100644
--- a/InCallUI/res/values-in/strings.xml
+++ b/InCallUI/res/values-in/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"Tahan Panggilan"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"Mulai Kembali Panggilan"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"Akhiri Panggilan"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"Papan tombol"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"Bisukan"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"Tambahkan panggilan"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"Gabungkan panggilan"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"Tukar"</string>
diff --git a/InCallUI/res/values-is-rIS/strings.xml b/InCallUI/res/values-is-rIS/strings.xml
index 362250a..8b92fd2 100644
--- a/InCallUI/res/values-is-rIS/strings.xml
+++ b/InCallUI/res/values-is-rIS/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"Setja símtal í bið"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"Halda símtali áfram"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"Leggja á"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"Símatakkaborð"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"Þagga"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"Bæta við símtali"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"Sameina símtöl"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"Skipta milli"</string>
diff --git a/InCallUI/res/values-it/strings.xml b/InCallUI/res/values-it/strings.xml
index 498f952..966b43c 100644
--- a/InCallUI/res/values-it/strings.xml
+++ b/InCallUI/res/values-it/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"Metti in attesa la chiamata"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"Riprendi chiamata"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"Termina chiamata"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"Tastierino"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"Disattiva audio"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"Aggiungi chiamata"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"Unisci chiamate"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"Scambia"</string>
diff --git a/InCallUI/res/values-iw/strings.xml b/InCallUI/res/values-iw/strings.xml
index 02c9434..7fdc1c2 100644
--- a/InCallUI/res/values-iw/strings.xml
+++ b/InCallUI/res/values-iw/strings.xml
@@ -106,8 +106,10 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"החזק שיחה"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"המשך בשיחה"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"סיים שיחה"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"לוח חיוג"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"השתק"</string>
+ <string name="onscreenShowDialpadText_unselected" msgid="8253784035944284938">"הצגת לוח החיוג"</string>
+ <string name="onscreenShowDialpadText_selected" msgid="7368390784890311449">"הסתרת לוח החיוג"</string>
+ <string name="onscreenMuteText_unselected" msgid="4130269060091842798">"השתקה"</string>
+ <string name="onscreenMuteText_selected" msgid="7074763815284369548">"ביטול ההשתקה"</string>
<string name="onscreenAddCallText" msgid="5577548650466595598">"הוסף שיחה"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"מזג שיחות"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"החלף"</string>
diff --git a/InCallUI/res/values-ja/strings.xml b/InCallUI/res/values-ja/strings.xml
index 233d244..48b8644 100644
--- a/InCallUI/res/values-ja/strings.xml
+++ b/InCallUI/res/values-ja/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"通話を保留"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"通話を再開"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"通話を終了"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"ダイヤルパッド"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"ミュート"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"通話を追加"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"グループ通話"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"切り替え"</string>
diff --git a/InCallUI/res/values-ka-rGE/strings.xml b/InCallUI/res/values-ka-rGE/strings.xml
index 93c0201..b217a1e 100644
--- a/InCallUI/res/values-ka-rGE/strings.xml
+++ b/InCallUI/res/values-ka-rGE/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"მოცდის რეჟიმზე გადაყვანა"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"ზარის განახლება"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"ზარის დასრულება"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"ციფერბლატი"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"დადუმება"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"ზარის დამატება"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"ზარების გაერთიანება"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"ჩანაცვლება"</string>
diff --git a/InCallUI/res/values-kk-rKZ/strings.xml b/InCallUI/res/values-kk-rKZ/strings.xml
index 4fd24d6..c6f2089 100644
--- a/InCallUI/res/values-kk-rKZ/strings.xml
+++ b/InCallUI/res/values-kk-rKZ/strings.xml
@@ -106,8 +106,10 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"Қоңырауды ұстап тұру"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"Қоңырауды жалғастыру"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"Қоңырауды аяқтау"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"Теру тақтасы"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"Дыбысты өшіру"</string>
+ <string name="onscreenShowDialpadText_unselected" msgid="8253784035944284938">"Теру тақтасын көрсету"</string>
+ <string name="onscreenShowDialpadText_selected" msgid="7368390784890311449">"Теру тақтасын жасыру"</string>
+ <string name="onscreenMuteText_unselected" msgid="4130269060091842798">"Дыбысты өшіру"</string>
+ <string name="onscreenMuteText_selected" msgid="7074763815284369548">"Дыбысын қосу"</string>
<string name="onscreenAddCallText" msgid="5577548650466595598">"Қоңырау қосу"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"Қоңырауларды біріктіру"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"Алмастыру"</string>
diff --git a/InCallUI/res/values-km-rKH/strings.xml b/InCallUI/res/values-km-rKH/strings.xml
index e074a06..68707cd 100644
--- a/InCallUI/res/values-km-rKH/strings.xml
+++ b/InCallUI/res/values-km-rKH/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"រង់ចាំការហៅ"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"បន្តការហៅ"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"បញ្ចប់ការហៅ"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"បន្ទះលេខ"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"បិទ"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"បន្ថែមការហៅ"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"បញ្ចូលការហៅចូលគ្នា"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"ប្ដូរ"</string>
diff --git a/InCallUI/res/values-kn-rIN/strings.xml b/InCallUI/res/values-kn-rIN/strings.xml
index 668f3e3..b7af8ba 100644
--- a/InCallUI/res/values-kn-rIN/strings.xml
+++ b/InCallUI/res/values-kn-rIN/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"ಕರೆಯನ್ನು ಹೋಲ್ಡ್ ಮಾಡು"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"ಕರೆಯನ್ನು ಮುಂದುವರಿಸಿ"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"ಕರೆ ಅಂತ್ಯಗೊಳಿಸಿ"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"ಡಯಲ್ಪ್ಯಾಡ್"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"ಮ್ಯೂಟ್"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"ಕರೆಯನ್ನು ಸೇರಿಸು"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"ಕರೆಗಳನ್ನು ವಿಲೀನಗೊಳಿಸು"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"ಸ್ವ್ಯಾಪ್ ಮಾಡು"</string>
diff --git a/InCallUI/res/values-ko/strings.xml b/InCallUI/res/values-ko/strings.xml
index 9cccc0f..1a491f7 100644
--- a/InCallUI/res/values-ko/strings.xml
+++ b/InCallUI/res/values-ko/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"통화 대기"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"통화 재개"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"통화 종료"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"다이얼패드"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"숨기기"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"통화 추가"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"통화 병합"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"전환"</string>
diff --git a/InCallUI/res/values-ky-rKG/strings.xml b/InCallUI/res/values-ky-rKG/strings.xml
index d2175ff..42abf45 100644
--- a/InCallUI/res/values-ky-rKG/strings.xml
+++ b/InCallUI/res/values-ky-rKG/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"Чалууну кармап туруу"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"Чалууну улантуу"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"Чалууну бүтүрүү"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"Тергич"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"Үнсүз"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"Чалуу кошуу"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"Чалууларды бириктирүү"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"Алмаштыруу"</string>
diff --git a/InCallUI/res/values-lo-rLA/strings.xml b/InCallUI/res/values-lo-rLA/strings.xml
index 8407a39..afdd104 100644
--- a/InCallUI/res/values-lo-rLA/strings.xml
+++ b/InCallUI/res/values-lo-rLA/strings.xml
@@ -106,8 +106,10 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"ຖືສາຍ"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"ສືບຕໍ່ສາຍ"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"ວາງສາຍ"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"ແປ້ນກົດ"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"ປິດສຽງ"</string>
+ <string name="onscreenShowDialpadText_unselected" msgid="8253784035944284938">"ສະແດງປຸ່ມກົດ"</string>
+ <string name="onscreenShowDialpadText_selected" msgid="7368390784890311449">"ເຊື່ອງປຸ່ມກົດ"</string>
+ <string name="onscreenMuteText_unselected" msgid="4130269060091842798">"ປິດສຽງ"</string>
+ <string name="onscreenMuteText_selected" msgid="7074763815284369548">"ເຊົາປິດສຽງ"</string>
<string name="onscreenAddCallText" msgid="5577548650466595598">"ເພີ່ມການໂທ"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"ລວມສາຍ"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"ສະຫຼັບ"</string>
diff --git a/InCallUI/res/values-lt/strings.xml b/InCallUI/res/values-lt/strings.xml
index b073acc..b9d4dbe 100644
--- a/InCallUI/res/values-lt/strings.xml
+++ b/InCallUI/res/values-lt/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"Sulaikyti skambutį"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"Tęsti skambutį"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"Baigti skambutį"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"Numerio rinkimo klaviatūra"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"Paslėpti"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"Pridėti skambutį"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"Sujungti skambučius"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"Apkeisti"</string>
diff --git a/InCallUI/res/values-lv/strings.xml b/InCallUI/res/values-lv/strings.xml
index 742420b..82c9228 100644
--- a/InCallUI/res/values-lv/strings.xml
+++ b/InCallUI/res/values-lv/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"Aizturēt zvanu"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"Atsākt zvanu"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"Beigt zvanu"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"Numura sastādīšanas tastatūra"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"Izslēgt skaņu"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"Pievienot zvanu"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"Apvienot zvanus"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"Mainīt"</string>
diff --git a/InCallUI/res/values-mk-rMK/strings.xml b/InCallUI/res/values-mk-rMK/strings.xml
index 2385520..166e7ea 100644
--- a/InCallUI/res/values-mk-rMK/strings.xml
+++ b/InCallUI/res/values-mk-rMK/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"Стави на чекање"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"Продолжи го повикот"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"Заврши го повикот"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"Тастатура за бирање"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"Исклучи звук"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"Додај повик"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"Спои повици"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"Замени"</string>
diff --git a/InCallUI/res/values-ml-rIN/strings.xml b/InCallUI/res/values-ml-rIN/strings.xml
index f951f76..7010c3b 100644
--- a/InCallUI/res/values-ml-rIN/strings.xml
+++ b/InCallUI/res/values-ml-rIN/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"കോൾ ഹോൾഡുചെയ്യുക"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"കോൾ പുനരാരംഭിക്കുക"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"കോൾ അവസാനിപ്പിക്കുക"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"ഡയൽപാഡ്"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"മ്യൂട്ടുചെയ്യുക"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"കോൾ ചേർക്കുക"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"കോളുകൾ ലയിപ്പിക്കുക"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"സ്വാപ്പുചെയ്യുക"</string>
diff --git a/InCallUI/res/values-mn-rMN/strings.xml b/InCallUI/res/values-mn-rMN/strings.xml
index 84c3c4c..ff63c8f 100644
--- a/InCallUI/res/values-mn-rMN/strings.xml
+++ b/InCallUI/res/values-mn-rMN/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"Дуудлага хүлээлгэх"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"Дуудлагыг үргэлжлүүлэх"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"Дуудлагыг дуусгах"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"Залгах товчлуур"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"Дуу хаах"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"Дуудлага нэмэх"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"Дуудлага нэгтгэх"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"Солих"</string>
diff --git a/InCallUI/res/values-mr-rIN/strings.xml b/InCallUI/res/values-mr-rIN/strings.xml
index 5fdb488..c7b0675 100644
--- a/InCallUI/res/values-mr-rIN/strings.xml
+++ b/InCallUI/res/values-mr-rIN/strings.xml
@@ -106,8 +106,10 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"कॉल होल्ड करा"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"कॉल पुनः सुरु करा"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"कॉल समाप्त करा"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"डायलपॅड"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"नि:शब्द करा"</string>
+ <string name="onscreenShowDialpadText_unselected" msgid="8253784035944284938">"डायलपॅड दर्शवा"</string>
+ <string name="onscreenShowDialpadText_selected" msgid="7368390784890311449">"डायलपॅड लपवा"</string>
+ <string name="onscreenMuteText_unselected" msgid="4130269060091842798">"नि:शब्द करा"</string>
+ <string name="onscreenMuteText_selected" msgid="7074763815284369548">"सशब्द करा"</string>
<string name="onscreenAddCallText" msgid="5577548650466595598">"कॉल जोडा"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"कॉल विलीन करा"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"अदलाबदल करा"</string>
diff --git a/InCallUI/res/values-ms-rMY/strings.xml b/InCallUI/res/values-ms-rMY/strings.xml
index 5138369..0733c19 100644
--- a/InCallUI/res/values-ms-rMY/strings.xml
+++ b/InCallUI/res/values-ms-rMY/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"Tahan Panggilan"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"Sambung Semula Panggilan"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"Tamatkan Panggilan"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"Pad Pendail"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"Redam"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"Tambah panggilan"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"Gabung panggilan"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"Silih"</string>
diff --git a/InCallUI/res/values-my-rMM/strings.xml b/InCallUI/res/values-my-rMM/strings.xml
index 2839c54..b44a65b 100644
--- a/InCallUI/res/values-my-rMM/strings.xml
+++ b/InCallUI/res/values-my-rMM/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"ခေါ်ဆိုမှု ခေတ္တရပ်ထားပါ"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"ခေါ်ဆိုမှုကို ဆက်လုပ်ပါ"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"ခေါ်ဆိုမှု အပြီးသတ်ပါ"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"နံပါတ်ကွက်"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"အသံပိတ်ပါ"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"ခေါ်ဆိုမှုထည့်ပါ"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"ခေါ်ဆိုမှုများကို ပေါင်းစည်းပါ"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"ဖလှယ်ပါ"</string>
diff --git a/InCallUI/res/values-nb/strings.xml b/InCallUI/res/values-nb/strings.xml
index af0704c..75a6bdb 100644
--- a/InCallUI/res/values-nb/strings.xml
+++ b/InCallUI/res/values-nb/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"Sett anropet på vent"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"Gjenoppta anropet"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"Avslutt anropet"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"Talltastatur"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"Kutt lyden"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"Legg til anrop"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"Slå sammen anrop"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"Bytt"</string>
diff --git a/InCallUI/res/values-ne-rNP/strings.xml b/InCallUI/res/values-ne-rNP/strings.xml
index eaf2bf5..b0aab98 100644
--- a/InCallUI/res/values-ne-rNP/strings.xml
+++ b/InCallUI/res/values-ne-rNP/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"कललाई होल्ड गर्नुहोस्"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"कललाई पुन: निरन्तरता दिनुहोस्"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"कल अन्त्य गर्नुहोस्"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"डायल प्याड"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"म्यूट गर्नुहोस्"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"कल थप्नुहोस्"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"कलहरू मर्ज गर्नुहोस्"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"स्वाप"</string>
diff --git a/InCallUI/res/values-nl/strings.xml b/InCallUI/res/values-nl/strings.xml
index da02b39..ce72fcd 100644
--- a/InCallUI/res/values-nl/strings.xml
+++ b/InCallUI/res/values-nl/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"Oproep in de wacht zetten"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"Oproep hervatten"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"Oproep beëindigen"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"Toetsenblok"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"Dempen"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"Oproep toevoegen"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"Samenvoegen"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"Wisselen"</string>
diff --git a/InCallUI/res/values-pa-rIN/strings.xml b/InCallUI/res/values-pa-rIN/strings.xml
index a19a0c7..8bcaa84 100644
--- a/InCallUI/res/values-pa-rIN/strings.xml
+++ b/InCallUI/res/values-pa-rIN/strings.xml
@@ -106,8 +106,10 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"ਕਾਲ ਰੋਕੋ"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"ਕਾਲ ਮੁੜ-ਸ਼ੁਰੂ ਕਰੋ"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"ਕਾਲ ਸਮਾਪਤ ਕਰੋ"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"ਡਾਇਲਪੈਡ"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"ਮਿਊਟ ਕਰੋ"</string>
+ <string name="onscreenShowDialpadText_unselected" msgid="8253784035944284938">"ਡਾਇਲਪੈਡ ਵਿਖਾਓ"</string>
+ <string name="onscreenShowDialpadText_selected" msgid="7368390784890311449">"ਡਾਇਲਪੈਡ ਲੁਕਾਓ"</string>
+ <string name="onscreenMuteText_unselected" msgid="4130269060091842798">"ਮਿਊਟ ਕਰੋ"</string>
+ <string name="onscreenMuteText_selected" msgid="7074763815284369548">"ਅਣਮਿਊਟ ਕਰੋ"</string>
<string name="onscreenAddCallText" msgid="5577548650466595598">"ਕਾਲ ਸ਼ਾਮਲ ਕਰੋ"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"ਕਾਲਾਂ ਸ਼ਾਮਲ ਕਰੋ"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"ਅਦਲਾ-ਬਦਲੀ ਕਰੋ"</string>
diff --git a/InCallUI/res/values-pl/strings.xml b/InCallUI/res/values-pl/strings.xml
index 2c2a1b9..0b78c33 100644
--- a/InCallUI/res/values-pl/strings.xml
+++ b/InCallUI/res/values-pl/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"Wstrzymaj połączenie"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"Wznów połączenie"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"Zakończ połączenie"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"Klawiatura"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"Wycisz"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"Dodaj połączenie"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"Scal połączenia"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"Przełącz"</string>
diff --git a/InCallUI/res/values-pt-rBR/strings.xml b/InCallUI/res/values-pt-rBR/strings.xml
index 35ef3b8..65c66dc 100644
--- a/InCallUI/res/values-pt-rBR/strings.xml
+++ b/InCallUI/res/values-pt-rBR/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"Colocar chamada em espera"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"Retomar chamada"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"Encerrar chamada"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"Teclado"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"Desativar som"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"Adicionar chamada"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"Mesclar chamadas"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"Trocar"</string>
diff --git a/InCallUI/res/values-pt-rPT/strings.xml b/InCallUI/res/values-pt-rPT/strings.xml
index 81374ea..781fb61 100644
--- a/InCallUI/res/values-pt-rPT/strings.xml
+++ b/InCallUI/res/values-pt-rPT/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"Colocar chamada em espera"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"Retomar chamada"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"Terminar chamada"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"Teclado"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"Desativar som"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"Adicionar chamada"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"Intercalar chamadas"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"Trocar"</string>
diff --git a/InCallUI/res/values-pt/strings.xml b/InCallUI/res/values-pt/strings.xml
index 35ef3b8..65c66dc 100644
--- a/InCallUI/res/values-pt/strings.xml
+++ b/InCallUI/res/values-pt/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"Colocar chamada em espera"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"Retomar chamada"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"Encerrar chamada"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"Teclado"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"Desativar som"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"Adicionar chamada"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"Mesclar chamadas"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"Trocar"</string>
diff --git a/InCallUI/res/values-ro/strings.xml b/InCallUI/res/values-ro/strings.xml
index de2aadb..fbb4240 100644
--- a/InCallUI/res/values-ro/strings.xml
+++ b/InCallUI/res/values-ro/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"Puneți apelul în așteptare"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"Reluați apelul"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"Încheiați apelul"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"Tastatură numerică"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"Dezactivați sunetul"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"Adăugați un apel"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"Îmbinați apelurile"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"Schimbați"</string>
diff --git a/InCallUI/res/values-ru/strings.xml b/InCallUI/res/values-ru/strings.xml
index b9031c2..059f046 100644
--- a/InCallUI/res/values-ru/strings.xml
+++ b/InCallUI/res/values-ru/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"Удерживать вызов"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"Возобновить вызов"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"Завершить вызов"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"Кнопки"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"Отключить звук"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"Добавить вызов"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"Объединить вызовы"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"Перевести звонок"</string>
diff --git a/InCallUI/res/values-si-rLK/strings.xml b/InCallUI/res/values-si-rLK/strings.xml
index 557222f..9728fde 100644
--- a/InCallUI/res/values-si-rLK/strings.xml
+++ b/InCallUI/res/values-si-rLK/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"ඇමතුම රඳවා ගන්න"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"ඇමතුම නැවත පටන් ගන්න"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"ඇමතුම අවසන් කරන්න"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"ඩයල් පෑඩය"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"නිහඬ කරන්න"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"ඇමතුමක් එක් කරන්න"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"ඇමතුම් ඒකාබද්ධ කරන්න"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"මාරු කරන්න"</string>
diff --git a/InCallUI/res/values-sk/strings.xml b/InCallUI/res/values-sk/strings.xml
index c6004ec..0af7053 100644
--- a/InCallUI/res/values-sk/strings.xml
+++ b/InCallUI/res/values-sk/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"Podržať hovor"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"Obnoviť hovor"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"Ukončiť hovor"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"Číselná klávesnica"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"Ignorovať"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"Pridať hovor"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"Zlúčiť hovory"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"Zameniť"</string>
diff --git a/InCallUI/res/values-sl/strings.xml b/InCallUI/res/values-sl/strings.xml
index d467248..931deb1 100644
--- a/InCallUI/res/values-sl/strings.xml
+++ b/InCallUI/res/values-sl/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"Zadrži klic"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"Nadaljuj klic"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"Končaj klic"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"Tipkovnica"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"Izklopi zvok"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"Dodaj klic"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"Združi klice"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"Zamenjaj"</string>
diff --git a/InCallUI/res/values-sq-rAL/strings.xml b/InCallUI/res/values-sq-rAL/strings.xml
index 791f5f0..5388bfc 100644
--- a/InCallUI/res/values-sq-rAL/strings.xml
+++ b/InCallUI/res/values-sq-rAL/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"Vendose në pritje telefonatën"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"Rifillo telefonatën"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"Mbylle telefonatën"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"Blloku i formimit të numrit"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"Çaktivizo audion"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"Shto telefonatë"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"Shkri telefonatat"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"Shkëmbe"</string>
diff --git a/InCallUI/res/values-sr/strings.xml b/InCallUI/res/values-sr/strings.xml
index 13809fc..5ce6a0e 100644
--- a/InCallUI/res/values-sr/strings.xml
+++ b/InCallUI/res/values-sr/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"Стави позив на чекање"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"Настави позив"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"Заврши позив"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"Нумеричка тастатура"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"Игнориши"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"Додај позив"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"Обједини позиве"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"Замени"</string>
diff --git a/InCallUI/res/values-sv/strings.xml b/InCallUI/res/values-sv/strings.xml
index b82fe74..eb0fda2 100644
--- a/InCallUI/res/values-sv/strings.xml
+++ b/InCallUI/res/values-sv/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"Parkera samtal"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"Återuppta samtal"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"Avsluta samtal"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"Knappsats"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"Ljud av"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"Lägg till samtal"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"Koppla ihop samtal"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"Byt"</string>
diff --git a/InCallUI/res/values-sw/strings.xml b/InCallUI/res/values-sw/strings.xml
index ea72dab..b706fca 100644
--- a/InCallUI/res/values-sw/strings.xml
+++ b/InCallUI/res/values-sw/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"Shikilia Simu"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"Endelea na Simu"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"Kata Simu"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"Vitufe vya kupiga simu"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"Komesha"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"Ongeza simu"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"Unganisha simu"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"Badili"</string>
diff --git a/InCallUI/res/values-ta-rIN/strings.xml b/InCallUI/res/values-ta-rIN/strings.xml
index ffdd6f9..5f51390 100644
--- a/InCallUI/res/values-ta-rIN/strings.xml
+++ b/InCallUI/res/values-ta-rIN/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"அழைப்பை ஹோல்டில் வை"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"அழைப்பை மீண்டும் தொடங்கு"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"அழைப்பை முடி"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"டயல்பேடு"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"ஒலியடக்கு"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"அழைப்பைச் சேர்"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"அழைப்புகளை இணை"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"மாற்று"</string>
diff --git a/InCallUI/res/values-te-rIN/strings.xml b/InCallUI/res/values-te-rIN/strings.xml
index 89c6509..26df3bc 100644
--- a/InCallUI/res/values-te-rIN/strings.xml
+++ b/InCallUI/res/values-te-rIN/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"కాల్ను హోల్డ్లో ఉంచు"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"కాల్ను పునఃప్రారంభించు"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"కాల్ని ముగించు"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"డయిల్ప్యాడ్"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"మ్యూట్ చేయి"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"కాల్ను జోడించు"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"కాల్లను విలీనం చేయి"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"స్వాప్ చేయి"</string>
diff --git a/InCallUI/res/values-th/strings.xml b/InCallUI/res/values-th/strings.xml
index a2d9d4a..db9b341 100644
--- a/InCallUI/res/values-th/strings.xml
+++ b/InCallUI/res/values-th/strings.xml
@@ -106,8 +106,10 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"พักสาย"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"โทรต่อ"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"วางสาย"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"แป้นหมายเลข"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"ปิด"</string>
+ <string name="onscreenShowDialpadText_unselected" msgid="8253784035944284938">"แสดงแป้นหมายเลข"</string>
+ <string name="onscreenShowDialpadText_selected" msgid="7368390784890311449">"ซ่อนแป้นหมายเลข"</string>
+ <string name="onscreenMuteText_unselected" msgid="4130269060091842798">"ปิดเสียง"</string>
+ <string name="onscreenMuteText_selected" msgid="7074763815284369548">"เปิดเสียง"</string>
<string name="onscreenAddCallText" msgid="5577548650466595598">"เพิ่มการโทร"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"รวมสาย"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"สลับ"</string>
diff --git a/InCallUI/res/values-tl/strings.xml b/InCallUI/res/values-tl/strings.xml
index ac125c9..5bce6d1 100644
--- a/InCallUI/res/values-tl/strings.xml
+++ b/InCallUI/res/values-tl/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"I-hold ang Tawag"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"Ituloy ang Tawag"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"Ibaba ang Tawag"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"Dialpad"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"I-mute"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"Magdagdag ng tawag"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"Pagsamahin ang mga tawag"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"Pagpalitin"</string>
diff --git a/InCallUI/res/values-tr/strings.xml b/InCallUI/res/values-tr/strings.xml
index 9f563c1..6aad71d 100644
--- a/InCallUI/res/values-tr/strings.xml
+++ b/InCallUI/res/values-tr/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"Çağrıyı Beklet"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"Çağrıyı Devam Ettir"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"Çağrıyı Sonlandır"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"Tuş takımı"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"Yok say"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"Çağrı ekle"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"Çağrıları birleştir"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"Değiştir"</string>
diff --git a/InCallUI/res/values-uk/strings.xml b/InCallUI/res/values-uk/strings.xml
index 3947a7d..cab5b79 100644
--- a/InCallUI/res/values-uk/strings.xml
+++ b/InCallUI/res/values-uk/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"Призупинити виклик"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"Відновити виклик"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"Завершити виклик"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"Цифрова клавіатура"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"Вимкнути звук"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"Додати виклик"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"Об’єднати виклики"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"Поміняти виклики"</string>
diff --git a/InCallUI/res/values-ur-rPK/strings.xml b/InCallUI/res/values-ur-rPK/strings.xml
index efaa3de..8619bd2 100644
--- a/InCallUI/res/values-ur-rPK/strings.xml
+++ b/InCallUI/res/values-ur-rPK/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"کال کو ہولڈ کریں"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"کال کو دوبارہ شروع کریں"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"کال ختم کریں"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"ڈائل پیڈ"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"خاموش کریں"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"کال شامل کریں"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"کالز کو ضم کریں"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"تبادلہ کریں"</string>
diff --git a/InCallUI/res/values-uz-rUZ/strings.xml b/InCallUI/res/values-uz-rUZ/strings.xml
index ef39cc6..2208084 100644
--- a/InCallUI/res/values-uz-rUZ/strings.xml
+++ b/InCallUI/res/values-uz-rUZ/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"Qo‘ng‘iroqni ushlab turish"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"Qo‘ng‘iroqni davom ettirish"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"Qo‘ng‘iroqni tugatish"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"Tugmachalar"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"Ovozni o‘chirish"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"Qo‘ng‘iroq qo‘shish"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"Qo‘ng‘iroqlarni birlashtirish"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"Almashtirish"</string>
diff --git a/InCallUI/res/values-vi/strings.xml b/InCallUI/res/values-vi/strings.xml
index 35fbc42..9780439 100644
--- a/InCallUI/res/values-vi/strings.xml
+++ b/InCallUI/res/values-vi/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"Giữ cuộc gọi"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"Tiếp tục cuộc gọi"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"Kết thúc cuộc gọi"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"Bàn phím số"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"Bỏ qua"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"Thêm cuộc gọi"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"Hợp nhất cuộc gọi"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"Hoán đổi"</string>
diff --git a/InCallUI/res/values-zh-rCN/strings.xml b/InCallUI/res/values-zh-rCN/strings.xml
index 168bb53..48cf0c6 100644
--- a/InCallUI/res/values-zh-rCN/strings.xml
+++ b/InCallUI/res/values-zh-rCN/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"保持通话"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"恢复通话"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"结束通话"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"拨号键盘"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"静音"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"添加通话"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"合并通话"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"切换"</string>
diff --git a/InCallUI/res/values-zh-rHK/strings.xml b/InCallUI/res/values-zh-rHK/strings.xml
index 80be3a2..d0eeb19 100644
--- a/InCallUI/res/values-zh-rHK/strings.xml
+++ b/InCallUI/res/values-zh-rHK/strings.xml
@@ -106,8 +106,10 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"保留通話"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"恢復通話"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"結束通話"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"撥號鍵盤"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"靜音"</string>
+ <string name="onscreenShowDialpadText_unselected" msgid="8253784035944284938">"顯示撥號鍵盤"</string>
+ <string name="onscreenShowDialpadText_selected" msgid="7368390784890311449">"隱藏撥號鍵盤"</string>
+ <string name="onscreenMuteText_unselected" msgid="4130269060091842798">"略過"</string>
+ <string name="onscreenMuteText_selected" msgid="7074763815284369548">"取消略過"</string>
<string name="onscreenAddCallText" msgid="5577548650466595598">"新增通話"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"合併通話"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"切換"</string>
diff --git a/InCallUI/res/values-zh-rTW/strings.xml b/InCallUI/res/values-zh-rTW/strings.xml
index c20e468..7bb89cd 100644
--- a/InCallUI/res/values-zh-rTW/strings.xml
+++ b/InCallUI/res/values-zh-rTW/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"保留通話"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"恢復通話"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"結束通話"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"撥號鍵盤"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"靜音"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"新增通話"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"合併通話"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"切換"</string>
diff --git a/InCallUI/res/values-zu/strings.xml b/InCallUI/res/values-zu/strings.xml
index 53badc5..4f0667c 100644
--- a/InCallUI/res/values-zu/strings.xml
+++ b/InCallUI/res/values-zu/strings.xml
@@ -106,8 +106,14 @@
<string name="onscreenHoldText_unselected" msgid="4509232821220492533">"Bamba ikholi"</string>
<string name="onscreenHoldText_selected" msgid="2988100347384733032">"Qalisa kabusha ikholi"</string>
<string name="onscreenEndCallText" msgid="1416981593311001074">"Qeda ikholi"</string>
- <string name="onscreenShowDialpadText" msgid="8798170898298132499">"Iphedi yokudayela"</string>
- <string name="onscreenMuteText" msgid="5303380507675232140">"Thulisa"</string>
+ <!-- no translation found for onscreenShowDialpadText_unselected (8253784035944284938) -->
+ <skip />
+ <!-- no translation found for onscreenShowDialpadText_selected (7368390784890311449) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_unselected (4130269060091842798) -->
+ <skip />
+ <!-- no translation found for onscreenMuteText_selected (7074763815284369548) -->
+ <skip />
<string name="onscreenAddCallText" msgid="5577548650466595598">"Engeza ikholi"</string>
<string name="onscreenMergeCallsText" msgid="4946687067221459357">"Hlanganisa amakholi"</string>
<string name="onscreenSwapCallsText" msgid="8272036175646846198">"Shintsha"</string>
diff --git a/InCallUI/res/values/strings.xml b/InCallUI/res/values/strings.xml
index 2f3d16b..57a1b53 100644
--- a/InCallUI/res/values/strings.xml
+++ b/InCallUI/res/values/strings.xml
@@ -275,10 +275,18 @@
<string name="onscreenHoldText_selected">Resume Call</string>
<!-- Text for the onscreen "End call" button -->
<string name="onscreenEndCallText">End Call</string>
- <!-- Text for the onscreen "Show Dialpad" button -->
- <string name="onscreenShowDialpadText">Dialpad</string>
- <!-- Text for the onscreen "Mute" button -->
- <string name="onscreenMuteText">Mute</string>
+ <!-- Text for the onscreen "Show Dialpad" button when it is not selected. Pressing it will
+ show the dialpad. -->
+ <string name="onscreenShowDialpadText_unselected">Show Dialpad</string>
+ <!-- Text for the onscreen "Show Dialpad" button when it is selected. Pressing it will
+ hide the dialpad. -->
+ <string name="onscreenShowDialpadText_selected">Hide Dialpad</string>
+ <!-- Text for the onscreen "Mute" button when it is not selected. Pressing it will mute
+ the call. -->
+ <string name="onscreenMuteText_unselected">Mute</string>
+ <!-- Text for the onscreen "Mute" button when it is selected. Pressing it will unmute
+ the call. -->
+ <string name="onscreenMuteText_selected">Unmute</string>
<!-- Text for the onscreen "Add call" button -->
<string name="onscreenAddCallText">Add call</string>
<!-- Text for the onscreen "Merge calls" button -->
diff --git a/InCallUI/src/com/android/incallui/CallButtonFragment.java b/InCallUI/src/com/android/incallui/CallButtonFragment.java
index 9859f4e..5a25b6a 100644
--- a/InCallUI/src/com/android/incallui/CallButtonFragment.java
+++ b/InCallUI/src/com/android/incallui/CallButtonFragment.java
@@ -433,6 +433,9 @@
public void setMute(boolean value) {
if (mMuteButton.isSelected() != value) {
mMuteButton.setSelected(value);
+ mMuteButton.setContentDescription(getContext().getString(
+ value ? R.string.onscreenMuteText_selected
+ : R.string.onscreenMuteText_unselected));
}
}
@@ -789,6 +792,9 @@
boolean changed = ((InCallActivity) getActivity()).showDialpadFragment(value, animate);
if (changed) {
mShowDialpadButton.setSelected(value);
+ mShowDialpadButton.setContentDescription(getContext().getString(
+ value /* show */ ? R.string.onscreenShowDialpadText_unselected
+ : R.string.onscreenShowDialpadText_selected));
}
}
}
diff --git a/InCallUI/src/com/android/incallui/StatusBarNotifier.java b/InCallUI/src/com/android/incallui/StatusBarNotifier.java
index 315c0d0..946e0eb 100644
--- a/InCallUI/src/com/android/incallui/StatusBarNotifier.java
+++ b/InCallUI/src/com/android/incallui/StatusBarNotifier.java
@@ -51,7 +51,6 @@
import com.android.contacts.common.util.BitmapUtil;
import com.android.contacts.common.util.ContactDisplayUtils;
import com.android.dialer.R;
-import com.android.incallui.Call.State;
import com.android.incallui.ContactInfoCache.ContactCacheEntry;
import com.android.incallui.ContactInfoCache.ContactInfoCacheCallback;
import com.android.incallui.InCallPresenter.InCallState;
@@ -268,9 +267,23 @@
}
/*
- * Nothing more to check...build and send it.
+ * This builder is used for the notification shown when the device is locked and the user
+ * has set their notification settings to 'hide sensitive content'
+ * {@see Notification.Builder#setPublicVersion}.
+ */
+ Notification.Builder publicBuilder = new Notification.Builder(mContext);
+ publicBuilder.setSmallIcon(iconResId)
+ .setColor(mContext.getResources().getColor(R.color.dialer_theme_color))
+ // Hide work call state for the lock screen notification
+ .setContentTitle(getContentString(call, ContactsUtils.USER_TYPE_CURRENT));
+ setNotificationWhen(call, callState, publicBuilder);
+
+ /*
+ * Builder for the notification shown when the device is unlocked or the user has set their
+ * notification settings to 'show all notification content'.
*/
final Notification.Builder builder = getNotificationBuilder();
+ builder.setPublicVersion(publicBuilder.build());
// Set up the main intent to send the user to the in-call screen
final PendingIntent inCallPendingIntent = createLaunchPendingIntent();
@@ -335,12 +348,7 @@
private void createIncomingCallNotification(
Call call, int state, Notification.Builder builder) {
- if (state == Call.State.ACTIVE) {
- builder.setUsesChronometer(true);
- builder.setWhen(call.getConnectTimeMillis());
- } else {
- builder.setUsesChronometer(false);
- }
+ setNotificationWhen(call, state, builder);
// Add hang up option for any active calls (active | onhold), outgoing calls (dialing).
if (state == Call.State.ACTIVE ||
@@ -358,6 +366,20 @@
}
}
+ /*
+ * Sets the notification's when section as needed. For active calls, this is explicitly set as
+ * the duration of the call. For all other states, the notification will automatically show the
+ * time at which the notification was created.
+ */
+ private void setNotificationWhen(Call call, int state, Notification.Builder builder) {
+ if (state == Call.State.ACTIVE) {
+ builder.setUsesChronometer(true);
+ builder.setWhen(call.getConnectTimeMillis());
+ } else {
+ builder.setUsesChronometer(false);
+ }
+ }
+
/**
* Checks the new notification data and compares it against any notification that we
* are already displaying. If the data is exactly the same, we return false so that
diff --git a/res/drawable/ic_voicemail_seek_handle_disabled.xml b/res/drawable/ic_voicemail_seek_handle_disabled.xml
index 1262808..2be52ad 100644
--- a/res/drawable/ic_voicemail_seek_handle_disabled.xml
+++ b/res/drawable/ic_voicemail_seek_handle_disabled.xml
@@ -16,6 +16,5 @@
-->
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/ic_handle"
- android:autoMirrored="true"
android:tint="@color/voicemail_icon_disabled_tint" >
</bitmap>
\ No newline at end of file
diff --git a/res/layout/voicemail_playback_layout.xml b/res/layout/voicemail_playback_layout.xml
index 64a68bd..4d5f74f 100644
--- a/res/layout/voicemail_playback_layout.xml
+++ b/res/layout/voicemail_playback_layout.xml
@@ -34,91 +34,89 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
- android:gravity="top">
+ android:gravity="center_vertical"
+ android:paddingTop="@dimen/voicemail_playback_top_padding">
<TextView
android:id="@+id/playback_position_text"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:textSize="14sp"
- android:paddingTop="@dimen/voicemail_playback_top_padding"
android:importantForAccessibility="no" />
- <LinearLayout
+ <SeekBar
+ android:id="@+id/playback_seek"
android:layout_width="0dp"
- android:layout_height="wrap_content"
android:layout_weight="1"
- android:orientation="vertical"
- android:layout_marginTop="4dp">
+ android:layout_height="wrap_content"
+ android:progressDrawable="@drawable/seekbar_drawable"
+ android:thumb="@drawable/ic_voicemail_seek_handle"
+ android:progress="0"
+ android:max="0"
+ android:contentDescription="@string/description_playback_seek" />
- <SeekBar
- android:id="@+id/playback_seek"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:paddingBottom="8dp"
- android:paddingTop="@dimen/voicemail_playback_top_padding"
- android:progressDrawable="@drawable/seekbar_drawable"
- android:thumb="@drawable/ic_voicemail_seek_handle"
- android:progress="0"
- android:max="0"
- android:contentDescription="@string/description_playback_seek" />
+ <TextView
+ android:id="@+id/total_duration_text"
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ android:textSize="14sp"
+ android:importantForAccessibility="no" />
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="horizontal"
- android:gravity="center"
- android:padding="8dp">
+ </LinearLayout>
- <ImageButton android:id="@+id/playback_speakerphone"
- style="@style/VoicemailPlaybackLayoutButtonStyle"
- android:src="@drawable/ic_volume_down_24dp"
- android:tint="@color/voicemail_icon_tint"
- android:contentDescription="@string/description_playback_speakerphone" />
-
- <Space
- android:layout_width="0dp"
- android:layout_height="0dp"
- android:layout_weight="1" />
-
- <ImageButton android:id="@+id/playback_start_stop"
- style="@style/VoicemailPlaybackLayoutButtonStyle"
- android:src="@drawable/ic_play_arrow"
- android:contentDescription="@string/voicemail_play_start_pause" />
-
- <Space
- android:layout_width="0dp"
- android:layout_height="0dp"
- android:layout_weight="1" />
-
- <ImageButton android:id="@+id/delete_voicemail"
- style="@style/VoicemailPlaybackLayoutButtonStyle"
- android:src="@drawable/ic_delete_24dp"
- android:tint="@color/voicemail_icon_tint"
- android:contentDescription="@string/call_log_trash_voicemail" />
-
- <Space
- android:layout_width="0dp"
- android:layout_height="0dp"
- android:layout_weight="1" />
-
- <ImageButton android:id="@+id/archive_voicemail"
- style="@style/VoicemailPlaybackLayoutButtonStyle"
- android:src="@drawable/ic_archive_white_24dp"
- android:tint="@color/voicemail_icon_tint"
- android:contentDescription="@string/call_log_archive_voicemail" />
-
- </LinearLayout>
-
- </LinearLayout>
-
- <TextView
- android:id="@+id/total_duration_text"
+ <LinearLayout
+ android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:textSize="14sp"
- android:paddingTop="@dimen/voicemail_playback_top_padding"
- android:importantForAccessibility="no" />
+ android:orientation="horizontal"
+ android:gravity="center">
+
+ <Space
+ android:layout_width="0dp"
+ android:layout_height="match_parent"
+ android:layout_weight="1"/>
+
+ <ImageButton android:id="@+id/playback_speakerphone"
+ style="@style/VoicemailPlaybackLayoutButtonStyle"
+ android:src="@drawable/ic_volume_down_24dp"
+ android:tint="@color/voicemail_icon_tint"
+ android:contentDescription="@string/description_playback_speakerphone" />
+
+ <Space
+ android:layout_width="0dp"
+ android:layout_height="match_parent"
+ android:layout_weight="1"/>
+
+ <ImageButton android:id="@+id/playback_start_stop"
+ style="@style/VoicemailPlaybackLayoutButtonStyle"
+ android:src="@drawable/ic_play_arrow"
+ android:contentDescription="@string/voicemail_play_start_pause" />
+
+ <Space
+ android:layout_width="0dp"
+ android:layout_height="match_parent"
+ android:layout_weight="1"/>
+
+ <ImageButton android:id="@+id/delete_voicemail"
+ style="@style/VoicemailPlaybackLayoutButtonStyle"
+ android:src="@drawable/ic_delete_24dp"
+ android:tint="@color/voicemail_icon_tint"
+ android:contentDescription="@string/call_log_trash_voicemail" />
+
+ <Space
+ android:layout_width="0dp"
+ android:layout_height="match_parent"
+ android:layout_weight="1"/>
+
+ <ImageButton android:id="@+id/archive_voicemail"
+ style="@style/VoicemailPlaybackLayoutButtonStyle"
+ android:src="@drawable/ic_archive_white_24dp"
+ android:tint="@color/voicemail_icon_tint"
+ android:contentDescription="@string/call_log_archive_voicemail" />
+
+ <Space
+ android:layout_width="0dp"
+ android:layout_height="match_parent"
+ android:layout_weight="1"/>
</LinearLayout>
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index c2cc6b7..c2975df 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -262,4 +262,5 @@
<string name="permission_place_call" msgid="2101287782615887547">"Skakel die foontoestemming aan om \'n oproep te maak."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Foonprogram het nie toestemming om stelselinstellings te stel nie."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"Geblokkeer"</string>
+ <string name="accessibility_call_is_active" msgid="2297282583928508760">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> is aktief"</string>
</resources>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index 80cfe33..2f0d644 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -262,4 +262,5 @@
<string name="permission_place_call" msgid="2101287782615887547">"ስልክ ለመደወል የስልክ ፍቃዱን ያብሩ።"</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"የስልክ መተግበሪያ ወደ የስርዓት ቅንብሮች የመጻፍ ፍቃድ የለውም።"</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"የታገዱ"</string>
+ <string name="accessibility_call_is_active" msgid="2297282583928508760">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> ነቅቷል"</string>
</resources>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 92b14c4..5820b3f 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -270,4 +270,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"لإجراء مكالمة، شغِّل إذن الهاتف."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"ليس لدى تطبيق الهاتف إذن لتعديل إعدادات النظام."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"تم الحظر"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-az-rAZ/strings.xml b/res/values-az-rAZ/strings.xml
index c32ded6..9e9cdd6 100644
--- a/res/values-az-rAZ/strings.xml
+++ b/res/values-az-rAZ/strings.xml
@@ -262,4 +262,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"Zəng etmək üçün, Telefon icazəsini aktivləşdirin."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Telefon tətbiqinin sistem ayarlarına yazmaq icazəsi yoxdur."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"Bloklanıb"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml
index 57b8b79..1751ff4 100644
--- a/res/values-b+sr+Latn/strings.xml
+++ b/res/values-b+sr+Latn/strings.xml
@@ -264,4 +264,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"Da biste uputili poziv, uključite dozvolu za Telefon."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Aplikacija Telefon nema dozvolu za upisivanje u sistemska podešavanja."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"Blokiran"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index 2dbee88..16900cc 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -262,4 +262,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"За да извършите обаждане, включете разрешението за Телефон."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Приложението Телефон няма разрешение да записва в системните настройки."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"Блокирано"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-bn-rBD/strings.xml b/res/values-bn-rBD/strings.xml
index 50096b1..281532c 100644
--- a/res/values-bn-rBD/strings.xml
+++ b/res/values-bn-rBD/strings.xml
@@ -262,4 +262,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"একটি কল করতে, ফোনের অনুমতি চালু করুন।"</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"ফোনের অ্যাপ্লিকেশানকে সিস্টেম সেটিংসে লেখার অনুমতি দেওয়া হয়নি।"</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"অবরুদ্ধ"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-bs-rBA/strings.xml b/res/values-bs-rBA/strings.xml
index 730a43c..0a21f45 100644
--- a/res/values-bs-rBA/strings.xml
+++ b/res/values-bs-rBA/strings.xml
@@ -51,16 +51,13 @@
<skip />
<!-- no translation found for call_log_trash_voicemail (1283948488625129019) -->
<skip />
- <!-- no translation found for call_log_archive_voicemail (9072936797223284265) -->
- <skip />
+ <string name="call_log_archive_voicemail" msgid="9072936797223284265">"Arhiviraj govornu poštu"</string>
<!-- no translation found for snackbar_voicemail_deleted (5098542835986188582) -->
<skip />
- <!-- no translation found for snackbar_voicemail_archived (7442340403660554373) -->
- <skip />
+ <string name="snackbar_voicemail_archived" msgid="7442340403660554373">"Govorna pošta arhivirana"</string>
<!-- no translation found for snackbar_voicemail_deleted_undo (3741811385891289167) -->
<skip />
- <!-- no translation found for snackbar_voicemail_archived_goto (9186182602955185448) -->
- <skip />
+ <string name="snackbar_voicemail_archived_goto" msgid="9186182602955185448">"IDI U ARH."</string>
<!-- no translation found for clearCallLogConfirmation_title (801753155679372984) -->
<skip />
<!-- no translation found for clearCallLogConfirmation (7899552396101432827) -->
@@ -86,8 +83,7 @@
<skip />
<!-- no translation found for voicemail_fetching_content (1287895365599580842) -->
<skip />
- <!-- no translation found for voicemail_archiving_content (722322091690281157) -->
- <skip />
+ <string name="voicemail_archiving_content" msgid="722322091690281157">"Arhiviranje govorne pošte..."</string>
<!-- no translation found for voicemail_fetching_timout (3959428065511972176) -->
<skip />
<!-- no translation found for call_log_voicemail_header (3945407886667089173) -->
@@ -274,14 +270,12 @@
<skip />
<!-- no translation found for call_log_voicemail_empty (8383585074222277550) -->
<skip />
- <!-- no translation found for voicemail_archive_empty (1087408796679056787) -->
- <skip />
+ <string name="voicemail_archive_empty" msgid="1087408796679056787">"Vaša arhiva govorne pošte je prazna."</string>
<!-- no translation found for show_favorites_only (5520072531022614595) -->
<skip />
<!-- no translation found for call_log_activity_title (7949633151371183580) -->
<skip />
- <!-- no translation found for voicemail_archive_activity_title (2638669189424535229) -->
- <skip />
+ <string name="voicemail_archive_activity_title" msgid="2638669189424535229">"Arhiva govorne pošte"</string>
<!-- no translation found for call_log_all_title (3566738938889333307) -->
<skip />
<!-- no translation found for call_log_missed_title (4541142293870638971) -->
@@ -439,8 +433,7 @@
<skip />
<!-- no translation found for send_to_voicemail_import_failed (5547202002133560069) -->
<skip />
- <!-- no translation found for voicemail_archive_failed (6263467962738772223) -->
- <skip />
+ <string name="voicemail_archive_failed" msgid="6263467962738772223">"Arhiviranje govorne pošte nije uspjelo."</string>
<!-- no translation found for description_blocked_number_list_delete (3240093199107796792) -->
<skip />
<!-- no translation found for addBlockedNumber (6064812257482886526) -->
@@ -481,4 +474,6 @@
<skip />
<!-- no translation found for blocked_number_call_log_label (8912042441473014712) -->
<skip />
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index 461d3e1..6954b37 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -262,4 +262,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"Activa el permís Telèfon per fer una trucada."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"L\'aplicació Telèfon no té permís per escriure a la configuració del sistema."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"Bloquejat"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 877903d..255586a 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -266,4 +266,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"Chcete-li uskutečnit hovor, aktivujte oprávnění Telefon."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Aplikace Telefon nemá oprávnění provádět zápis do nastavení systému."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"Blokováno"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 0bf7f16..4c6c831 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -262,4 +262,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"Slå tilladelsen Telefon til for at foretage et opkald."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Opkaldsappen har ikke tilladelse til at ændre systemindstillinger."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"Blokeret"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 6f02fad..34ecb90 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -262,4 +262,5 @@
<string name="permission_place_call" msgid="2101287782615887547">"Aktiviere die Berechtigung \"Telefon\", um einen Anruf zu tätigen."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Die App \"Telefon\" ist nicht berechtigt, die Systemeinstellungen zu überschreiben."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"Blockiert"</string>
+ <string name="accessibility_call_is_active" msgid="2297282583928508760">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> ist aktiv"</string>
</resources>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index d42fa6f..1c401c6 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -262,4 +262,5 @@
<string name="permission_place_call" msgid="2101287782615887547">"Για να πραγματοποιήσετε μια κλήση, ενεργοποιήστε την άδεια τηλεφώνου."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Η εφαρμογή \"Τηλέφωνο\" δεν έχει άδεια εγγραφής στις ρυθμίσεις συστήματος."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"Αποκλεισμένος"</string>
+ <string name="accessibility_call_is_active" msgid="2297282583928508760">"Ο χρήστης <xliff:g id="NAMEORNUMBER">^1</xliff:g> είναι ενεργός"</string>
</resources>
diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
index f4bd35a..0574f0f 100644
--- a/res/values-en-rAU/strings.xml
+++ b/res/values-en-rAU/strings.xml
@@ -262,4 +262,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"To place a call, turn on the Phone permission."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Phone app does not have permission to write to system settings."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"Blocked"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index f4bd35a..0574f0f 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -262,4 +262,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"To place a call, turn on the Phone permission."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Phone app does not have permission to write to system settings."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"Blocked"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index f4bd35a..0574f0f 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -262,4 +262,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"To place a call, turn on the Phone permission."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Phone app does not have permission to write to system settings."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"Blocked"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 90bbce1..f4d7ab0 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -38,7 +38,7 @@
<string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Buzón de voz borrado"</string>
<string name="snackbar_voicemail_archived" msgid="7442340403660554373">"Se archivó el mensaje de voz"</string>
<string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"DESHACER"</string>
- <string name="snackbar_voicemail_archived_goto" msgid="9186182602955185448">"IR ARCHIVO"</string>
+ <string name="snackbar_voicemail_archived_goto" msgid="9186182602955185448">"IR A ARCHIVO"</string>
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"¿Eliminar el historial de llamadas?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"Se eliminarán todas las llamadas del historial."</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"Eliminando historial de llamadas…"</string>
@@ -262,4 +262,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"Para realizar una llamada, activa el permiso Teléfono."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"La aplicación de teléfono no tiene permiso para modificar la configuración del sistema."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"Bloqueado"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 0f91f38..4114513 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -262,4 +262,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"Para hacer una llamada, activa el permiso de la aplicación Teléfono."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"La aplicación Teléfono no tiene permiso para editar los ajustes del sistema."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"Bloqueado"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-et-rEE/strings.xml b/res/values-et-rEE/strings.xml
index 908d403..40eb8dd 100644
--- a/res/values-et-rEE/strings.xml
+++ b/res/values-et-rEE/strings.xml
@@ -262,4 +262,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"Helistamiseks lülitage sisse telefoniluba."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Telefonirakendusel pole luba süsteemiseadetesse kirjutada."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"Blokeeritud"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-eu-rES/strings.xml b/res/values-eu-rES/strings.xml
index 67ebec4..123ad6e 100644
--- a/res/values-eu-rES/strings.xml
+++ b/res/values-eu-rES/strings.xml
@@ -34,9 +34,9 @@
<string name="action_edit_number_before_call" msgid="3100221149873436485">"Editatu zenbakia deitu aurretik"</string>
<string name="call_log_delete_all" msgid="4677609108288680411">"Garbitu deien historia"</string>
<string name="call_log_trash_voicemail" msgid="1283948488625129019">"Ezabatu ahots-mezua"</string>
- <string name="call_log_archive_voicemail" msgid="9072936797223284265">"Artxibatu erantzungailua"</string>
+ <string name="call_log_archive_voicemail" msgid="9072936797223284265">"Artxibatu ahots-mezua"</string>
<string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Ahots-mezua ezabatzea"</string>
- <string name="snackbar_voicemail_archived" msgid="7442340403660554373">"Artxibatu da erantzungailua"</string>
+ <string name="snackbar_voicemail_archived" msgid="7442340403660554373">"Artxibatu da ahots-mezua"</string>
<string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"DESEGIN"</string>
<string name="snackbar_voicemail_archived_goto" msgid="9186182602955185448">"JOAN ARTXIBORA"</string>
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Deien historia garbitu nahi duzu?"</string>
@@ -58,7 +58,7 @@
<string name="notification_new_voicemail_ticker" msgid="895342132049452081">"<xliff:g id="CALLER">%1$s</xliff:g> deitzailearen ahots-mezu berria"</string>
<string name="voicemail_playback_error" msgid="3356071912353297599">"Ezin izan dira erreproduzitu ahots-mezuak"</string>
<string name="voicemail_fetching_content" msgid="1287895365599580842">"Erantzungailua kargatzen…"</string>
- <string name="voicemail_archiving_content" msgid="722322091690281157">"Erantzungailua artxibatzen…"</string>
+ <string name="voicemail_archiving_content" msgid="722322091690281157">"Ahots-mezua artxibatzen…"</string>
<string name="voicemail_fetching_timout" msgid="3959428065511972176">"Ezin izan da kargatu erantzungailua"</string>
<string name="call_log_voicemail_header" msgid="3945407886667089173">"Erantzungailuko deiak soilik"</string>
<string name="call_log_incoming_header" msgid="2787722299753674684">"Sarrerako deiak soilik"</string>
@@ -152,10 +152,10 @@
<string name="call_log_all_empty_action" msgid="9093210119068366147">"Deitu"</string>
<string name="call_log_missed_empty" msgid="3927274175205520135">"Ez duzu galdutako deirik."</string>
<string name="call_log_voicemail_empty" msgid="8383585074222277550">"Hutsik dago erantzungailuaren sarrerako ontzia."</string>
- <string name="voicemail_archive_empty" msgid="1087408796679056787">"Erantzungailuen artxiboa hutsik dago."</string>
+ <string name="voicemail_archive_empty" msgid="1087408796679056787">"Ahots-mezuen artxiboa hutsik dago."</string>
<string name="show_favorites_only" msgid="5520072531022614595">"Erakutsi gogokoak soilik"</string>
<string name="call_log_activity_title" msgid="7949633151371183580">"Deien historia"</string>
- <string name="voicemail_archive_activity_title" msgid="2638669189424535229">"Erantzungailuen artxiboa"</string>
+ <string name="voicemail_archive_activity_title" msgid="2638669189424535229">"Ahots-mezuen artxiboa"</string>
<string name="call_log_all_title" msgid="3566738938889333307">"Guztiak"</string>
<string name="call_log_missed_title" msgid="4541142293870638971">"Galduak"</string>
<string name="call_log_voicemail_title" msgid="940422274047025948">"Erantzungailuko deiak"</string>
@@ -241,7 +241,7 @@
<string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"Ikusi zenbakiak"</string>
<string name="blocked_call_settings_import_button" msgid="178821255125295473">"Inportatu"</string>
<string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"Ezin izan da inportatu"</string>
- <string name="voicemail_archive_failed" msgid="6263467962738772223">"Ezin izan da artxibatu erantzungailua."</string>
+ <string name="voicemail_archive_failed" msgid="6263467962738772223">"Ezin izan da artxibatu ahots-mezua."</string>
<string name="description_blocked_number_list_delete" msgid="3240093199107796792">"Desblokeatu zenbakia"</string>
<string name="addBlockedNumber" msgid="6064812257482886526">"Gehitu zenbakia"</string>
<string name="block_number_footer_message_vvm" msgid="5387302253765439712">"Zenbaki hauetatik jasotzen diren deiak blokeatu egingo dira, eta mezuak automatikoki ezabatuko dira erantzungailutik."</string>
@@ -262,4 +262,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"Deiak egiteko, aktibatu Telefonoa erabiltzeko baimena."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Telefonoaren aplikazioak ez du baimenik sistemaren ezarpenetan ezer idazteko."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"Blokeatuta"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index 4f376ec..6e83947 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -262,4 +262,5 @@
<string name="permission_place_call" msgid="2101287782615887547">"برای برقراری تماس، مجوز «تلفن» را روشن کنید."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"برنامه تلفن اجازه نوشتن در تنظیمات سیستم را ندارد."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"مسدودشده"</string>
+ <string name="accessibility_call_is_active" msgid="2297282583928508760">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> فعال است"</string>
</resources>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index c8a0346..5b0927c 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -262,4 +262,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"Jos haluat soittaa puheluja, ota Puhelin-käyttöoikeus käyttöön."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Puhelinsovelluksella ei ole oikeutta muokata järjestelmän asetuksia."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"Estetyt"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index 1ce1f94..d4aba47 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -262,4 +262,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"Pour faire un appel, activez l\'autorisation Téléphone."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"L\'application Téléphone n\'est pas autorisée à modifier les paramètres du système."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"Bloqué"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 101ff01..13ce4b1 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -262,4 +262,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"Pour passer un appel, activez l\'autorisation Téléphone."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"L\'application Téléphone n\'est pas autorisée à modifier les paramètres du système."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"Bloqué"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-gl-rES/strings.xml b/res/values-gl-rES/strings.xml
index f8e5eb6..25bb5e3 100644
--- a/res/values-gl-rES/strings.xml
+++ b/res/values-gl-rES/strings.xml
@@ -262,4 +262,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"Para facer unha chamada, activa o permiso de Teléfono."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"A aplicación Teléfono non ten permiso para modificar a configuración do sistema."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"Bloqueado"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-gu-rIN/strings.xml b/res/values-gu-rIN/strings.xml
index 716ab48..b2efd5e 100644
--- a/res/values-gu-rIN/strings.xml
+++ b/res/values-gu-rIN/strings.xml
@@ -262,4 +262,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"કૉલ કરવા માટે, ફોન પરવાનગી ચાલુ કરો."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"ફોન એપ્લિકેશનને સિસ્ટમ સેટિંગ્સ પર લખવાની પરવાનગી નથી."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"અવરોધિત"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index 296d4ba..2a99cab 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -262,4 +262,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"कॉल करने के लिए, फ़ोन अनुमति चालू करें."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"फ़ोन ऐप को सिस्टम सेटिंग में लिखने की अनुमति नहीं है."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"अवरोधित"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index 7069bcd..c20a466 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -36,7 +36,7 @@
<string name="call_log_trash_voicemail" msgid="1283948488625129019">"Izbriši govornu poštu"</string>
<string name="call_log_archive_voicemail" msgid="9072936797223284265">"Arhiviranje govorne pošte"</string>
<string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Gov. pošta izbrisana"</string>
- <string name="snackbar_voicemail_archived" msgid="7442340403660554373">"Govorna pošta je arhivirana"</string>
+ <string name="snackbar_voicemail_archived" msgid="7442340403660554373">"Govorna je pošta arhivirana"</string>
<string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"PONIŠTI"</string>
<string name="snackbar_voicemail_archived_goto" msgid="9186182602955185448">"IDI NA ARHIVIRANO"</string>
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Želite li izbrisati povijest poziva?"</string>
@@ -264,4 +264,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"Da biste nazvali nekog, uključite dopuštenje za telefon."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Aplikacija Telefon nema dopuštenje za pisanje u postavke sustava."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"Blokirano"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index 3fdf6ba..c952bdb 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -262,4 +262,5 @@
<string name="permission_place_call" msgid="2101287782615887547">"Hívásindításhoz kapcsolja be a Telefon engedélyt."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"A Telefon alkalmazásnak nincs engedélye szerkeszteni a rendszerbeállításokat."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"Letiltva"</string>
+ <string name="accessibility_call_is_active" msgid="2297282583928508760">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> aktív"</string>
</resources>
diff --git a/res/values-hy-rAM/strings.xml b/res/values-hy-rAM/strings.xml
index eba9ae9..bdd3f74 100644
--- a/res/values-hy-rAM/strings.xml
+++ b/res/values-hy-rAM/strings.xml
@@ -262,4 +262,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"Զանգ կատարելու համար միացրեք Հեռախոսի թույլտվությունը:"</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Հեռախոս հավելվածը համակարգի կարգավորումները գրելու թույլտվություն չունի:"</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"Արգելափակված"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index 20ea762..fb3f56a 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -262,4 +262,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"Untuk melakukan panggilan, aktifkan izin Telepon."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Aplikasi telepon tidak memiliki izin untuk menulis ke setelan sistem."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"Diblokir"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-is-rIS/strings.xml b/res/values-is-rIS/strings.xml
index 2fb9311..c63549f 100644
--- a/res/values-is-rIS/strings.xml
+++ b/res/values-is-rIS/strings.xml
@@ -262,4 +262,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"Kveiktu á heimild símaforritsins til að hringja símtal."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Símaforritið hefur ekki heimild til að breyta kerfisstillingum."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"Á bannlista"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index ba549a5..e0086f0 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -36,9 +36,9 @@
<string name="call_log_trash_voicemail" msgid="1283948488625129019">"Elimina messaggi della segreteria"</string>
<string name="call_log_archive_voicemail" msgid="9072936797223284265">"Archivia messaggio vocale"</string>
<string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Mes vocali eliminati"</string>
- <string name="snackbar_voicemail_archived" msgid="7442340403660554373">"Messaggio vocale archivato"</string>
+ <string name="snackbar_voicemail_archived" msgid="7442340403660554373">"Messaggio vocale archiviato"</string>
<string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"ANNULLA"</string>
- <string name="snackbar_voicemail_archived_goto" msgid="9186182602955185448">"VAI AL\'ARCHIVIO"</string>
+ <string name="snackbar_voicemail_archived_goto" msgid="9186182602955185448">"VAI AD ARCHIVIO"</string>
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Cancellare la cronologia chiamate?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"Verranno eliminate tutte le chiamate dalla cronologia"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"Cancellazione cronologia chiamate…"</string>
@@ -262,4 +262,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"Per fare una chiamata, attiva l\'autorizzazione sul telefono."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"L\'app Telefono non dispone dell\'autorizzazione per modificare le impostazioni di sistema."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"Bloccato"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 3abfdd2..f2ea48e 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -266,4 +266,5 @@
<string name="permission_place_call" msgid="2101287782615887547">"כדי להתקשר, הפעל את ההרשאה \'טלפון\'."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"לאפליקציית הטלפון אין הרשאה לכתוב בהגדרות המערכת."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"חסום"</string>
+ <string name="accessibility_call_is_active" msgid="2297282583928508760">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> זמין/ה"</string>
</resources>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index d012e43..e3f94d6 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -262,4 +262,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"電話をかけるには、電話権限をONにしてください。"</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"電話アプリにはシステム設定への書き込み権限がありません。"</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"ブロック済み"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-ka-rGE/strings.xml b/res/values-ka-rGE/strings.xml
index 7dc4201..965cdb0 100644
--- a/res/values-ka-rGE/strings.xml
+++ b/res/values-ka-rGE/strings.xml
@@ -262,4 +262,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"ზარის განსახორციელებლად, ჩართეთ ტელეფონის ნებართვა."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"ტელეფონის აპს სისტემის პარამეტრებში ჩაწერის ნებართვა არ აქვს."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"დაბლოკილი"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-kk-rKZ/strings.xml b/res/values-kk-rKZ/strings.xml
index 94cfaa8..bfeeb96 100644
--- a/res/values-kk-rKZ/strings.xml
+++ b/res/values-kk-rKZ/strings.xml
@@ -262,4 +262,5 @@
<string name="permission_place_call" msgid="2101287782615887547">"Қоңырауды шалу үшін \"Телефон\" рұқсатын қосыңыз."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Телефон қолданбасында жүйелік параметрлерге жазуға рұқсат жоқ."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"Бөгелген"</string>
+ <string name="accessibility_call_is_active" msgid="2297282583928508760">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> белсенді"</string>
</resources>
diff --git a/res/values-km-rKH/strings.xml b/res/values-km-rKH/strings.xml
index 5aaa0d4..8d48582 100644
--- a/res/values-km-rKH/strings.xml
+++ b/res/values-km-rKH/strings.xml
@@ -262,4 +262,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"ដើម្បីធ្វើការហៅទូរស័ព្ទ សូមបើកសិទ្ធិអនុញ្ញាតកម្មវិធីហៅទូរស័ព្ទ។"</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"កម្មវិធីទូរស័ព្ទមិនមានសិទ្ធិអនុញ្ញាតដើម្បីសរសេរការកំណត់ប្រព័ន្ធទេ។"</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"បានរារាំង"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-kn-rIN/strings.xml b/res/values-kn-rIN/strings.xml
index a9342ca..4fb0acd 100644
--- a/res/values-kn-rIN/strings.xml
+++ b/res/values-kn-rIN/strings.xml
@@ -263,4 +263,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"ಕರೆ ಮಾಡಲು, ಫೋನ್ ಅನುಮತಿಯನ್ನು ಆನ್ ಮಾಡಿ."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"ಸಿಸ್ಟಂ ಸೆಟ್ಟಿಂಗ್ಗಳಿಗೆ ಬರೆಯಲು ಫೋನ್ ಅಪ್ಲಿಕೇಶನ್ ಅನುಮತಿಯನ್ನು ಹೊಂದಿಲ್ಲ."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 005b912..f57b337 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -262,4 +262,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"전화를 걸려면 전화 권한을 사용하도록 설정하세요."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"전화 앱은 시스템 설정에 쓸 수 있는 권한이 없습니다."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"차단됨"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-ky-rKG/strings.xml b/res/values-ky-rKG/strings.xml
index 6e35759..4b251b6 100644
--- a/res/values-ky-rKG/strings.xml
+++ b/res/values-ky-rKG/strings.xml
@@ -39,7 +39,7 @@
<string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Үн почтасы жок кылнд"</string>
<string name="snackbar_voicemail_archived" msgid="7442340403660554373">"Үн каттары архивделди"</string>
<string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"КАЙТАРУУ"</string>
- <string name="snackbar_voicemail_archived_goto" msgid="9186182602955185448">"АРХИВГЕ БАР"</string>
+ <string name="snackbar_voicemail_archived_goto" msgid="9186182602955185448">"АРХВГЕ ӨТ"</string>
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Чалуулар таржымалы тазалансынбы?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"Ушуну менен бул таржымалдагы бардык чалуулар жок болот"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"Чалуулар таржымалы тазаланууда…"</string>
@@ -59,7 +59,7 @@
<string name="notification_new_voicemail_ticker" msgid="895342132049452081">"<xliff:g id="CALLER">%1$s</xliff:g> жаңы үнкат калтырды"</string>
<string name="voicemail_playback_error" msgid="3356071912353297599">"Үн почтасы ойнолгон жок"</string>
<string name="voicemail_fetching_content" msgid="1287895365599580842">"Үн почтасы жүктөлүүдө…"</string>
- <string name="voicemail_archiving_content" msgid="722322091690281157">"Үн каттарын архивдөө…"</string>
+ <string name="voicemail_archiving_content" msgid="722322091690281157">"Үн каттары архивделүүдө…"</string>
<string name="voicemail_fetching_timout" msgid="3959428065511972176">"Үн почтасы жүктөлгөн жок"</string>
<string name="call_log_voicemail_header" msgid="3945407886667089173">"Үнкат чалуулары"</string>
<string name="call_log_incoming_header" msgid="2787722299753674684">"Кириш чалуулар"</string>
@@ -176,7 +176,7 @@
<string name="call_log_all_empty_action" msgid="9093210119068366147">"Чалуу"</string>
<string name="call_log_missed_empty" msgid="3927274175205520135">"Алынбай калган чалуулар жок."</string>
<string name="call_log_voicemail_empty" msgid="8383585074222277550">"Үн почтаңыздын келген билдирүүлөр куржуну бош."</string>
- <string name="voicemail_archive_empty" msgid="1087408796679056787">"Үн каттар архивиңиз ээн."</string>
+ <string name="voicemail_archive_empty" msgid="1087408796679056787">"Үн каттар архивиңиз бош."</string>
<string name="show_favorites_only" msgid="5520072531022614595">"Тандамалдарды гана көрсөтүү"</string>
<string name="call_log_activity_title" msgid="7949633151371183580">"Чалуулар таржымалы"</string>
<string name="voicemail_archive_activity_title" msgid="2638669189424535229">"Үн каттар архиви"</string>
@@ -286,4 +286,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"Чалуу үчүн, \"Телефон\" колдонмосуна уруксат бериңиз."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Телефон колдонмосунун Тутум жөндөөлөрүнө жазууга уруксаты жок."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"Бөгөттөлгөн"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-lo-rLA/strings.xml b/res/values-lo-rLA/strings.xml
index d01d650..ea15c84 100644
--- a/res/values-lo-rLA/strings.xml
+++ b/res/values-lo-rLA/strings.xml
@@ -262,4 +262,5 @@
<string name="permission_place_call" msgid="2101287782615887547">"ເພື່ອເຮັດການໂທ, ເປີດການອະນຸຍາດໂທລະສັບ."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"ແອັບໂທລະສັບບໍ່ມີການອະນຸຍາດໃຫ້ຂຽນໃສ່ການຕັ້ງຄ່າລະບົບ."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"ບລັອກໄວ້ແລ້ວ"</string>
+ <string name="accessibility_call_is_active" msgid="2297282583928508760">"ຢູ່ໃນສາຍ <xliff:g id="NAMEORNUMBER">^1</xliff:g> ຢູ່"</string>
</resources>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index c60016d..06c03f5 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -266,4 +266,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"Jei norite paskambinti, įjunkite Telefono programos leidimą."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Telefono programa neturi leidimo keisti sistemos nustatymų."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"Užblokuota"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index d8bb100..1fdc860 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -264,4 +264,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"Lai veiktu zvanu, ieslēdziet atļauju Tālrunis."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Tālruņa lietotnei nav atļaujas rakstīt sistēmas iestatījumos."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"Bloķēts"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-mk-rMK/strings.xml b/res/values-mk-rMK/strings.xml
index 8f2f7e7..fbc985f 100644
--- a/res/values-mk-rMK/strings.xml
+++ b/res/values-mk-rMK/strings.xml
@@ -241,7 +241,7 @@
<string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"Прикажи броеви"</string>
<string name="blocked_call_settings_import_button" msgid="178821255125295473">"Увези"</string>
<string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"Увоз не успеа"</string>
- <string name="voicemail_archive_failed" msgid="6263467962738772223">"Говорната пошта не успеа да се архивира."</string>
+ <string name="voicemail_archive_failed" msgid="6263467962738772223">"Говорната пошта не се архивираше."</string>
<string name="description_blocked_number_list_delete" msgid="3240093199107796792">"Деблокирај го бројот"</string>
<string name="addBlockedNumber" msgid="6064812257482886526">"Додај број"</string>
<string name="block_number_footer_message_vvm" msgid="5387302253765439712">"Повиците од овие броеви ќе се блокираат, а говорната пошта автоматски ќе се брише."</string>
@@ -262,4 +262,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"За да воспоставите повик, вклучете ја дозволата за телефон."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Апликацијата на телефонот нема дозвола да пишува во поставките на системот."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"Блокиран"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-ml-rIN/strings.xml b/res/values-ml-rIN/strings.xml
index 8659e7e..ef934b9 100644
--- a/res/values-ml-rIN/strings.xml
+++ b/res/values-ml-rIN/strings.xml
@@ -262,4 +262,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"കോൾ വിളിക്കുന്നതിന്, \'ഫോൺ\' അനുമതി ഓണാക്കുക."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"സിസ്റ്റം ക്രമീകരണത്തിലേക്ക് എഴുതാൻ ഫോൺ ആപ്പിന് അനുമതിയില്ല."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"ബ്ലോക്കുചെയ്തു"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-mn-rMN/strings.xml b/res/values-mn-rMN/strings.xml
index a721b4f..3e11d2d 100644
--- a/res/values-mn-rMN/strings.xml
+++ b/res/values-mn-rMN/strings.xml
@@ -262,4 +262,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"Залгахын тулд Утасны зөвшөөрлийг идэвхжүүлнэ үү."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Гар утасны апп-д системийн тохиргоо бичих зөвшөөрөл алга."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"Блоклосон"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-mr-rIN/strings.xml b/res/values-mr-rIN/strings.xml
index 7edab27..65fde08 100644
--- a/res/values-mr-rIN/strings.xml
+++ b/res/values-mr-rIN/strings.xml
@@ -262,4 +262,5 @@
<string name="permission_place_call" msgid="2101287782615887547">"कॉल करण्यासाठी, फोन परवानगी चालू करा."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"फोन अॅपला सिस्टीम सेटिंग्जमध्ये लिहिण्याची परवानगी नाही."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"अवरोधित केले"</string>
+ <string name="accessibility_call_is_active" msgid="2297282583928508760">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> सक्रिय आहे"</string>
</resources>
diff --git a/res/values-ms-rMY/strings.xml b/res/values-ms-rMY/strings.xml
index 941d77e..da11826 100644
--- a/res/values-ms-rMY/strings.xml
+++ b/res/values-ms-rMY/strings.xml
@@ -262,4 +262,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"Untuk membuat panggilan, hidupkan kebenaran Telefon."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Apl telefon tiada kebenaran untuk menulis ke tetapan sistem."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"Disekat"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-my-rMM/strings.xml b/res/values-my-rMM/strings.xml
index b820f11..81dd485 100644
--- a/res/values-my-rMM/strings.xml
+++ b/res/values-my-rMM/strings.xml
@@ -262,4 +262,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"ဖုန်းခေါ်ဆိုရန်၊ ဖုန်းခွင့်ပြုချက်ကိုဖွင့်ပါ။"</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"ဖုန်း အက်ပ်ဆီတွင် စနစ် ဆက်တင်များသို့ ရေးသားခွင့် မရှိပါ။"</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"ပိတ်ဆို့ထားသည်"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 526fd17..ee3ebd5 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -262,4 +262,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"For å ringe, slå på Telefon-tillatelsen."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Telefonappen har ikke tillatelse til å skrive til systeminnstillinger."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"Blokkert"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-ne-rNP/strings.xml b/res/values-ne-rNP/strings.xml
index ff20963..87b3c02 100644
--- a/res/values-ne-rNP/strings.xml
+++ b/res/values-ne-rNP/strings.xml
@@ -262,4 +262,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"कल गर्न फोन अनुमति सक्रिय गर्नुहोस्।"</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"प्रणाली सेटिङहरूमा लेख्न फोन अनुप्रयोगसँग अनुमति छैन।"</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"रोकियो"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 6b4923e..daeb8a6 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -262,4 +262,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"Als je iemand wilt bellen, schakel je de machtiging voor Telefoon in."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Telefoon-app heeft geen toestemming om systeeminstellingen te schrijven."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"Geblokkeerd"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-pa-rIN/strings.xml b/res/values-pa-rIN/strings.xml
index 1e0d849..ae381c5 100644
--- a/res/values-pa-rIN/strings.xml
+++ b/res/values-pa-rIN/strings.xml
@@ -262,4 +262,5 @@
<string name="permission_place_call" msgid="2101287782615887547">"ਕਾਲ ਕਰਨ ਲਈ, ਫ਼ੋਨ ਅਨੁਮਤੀ ਚਾਲੂ ਕਰੋ।"</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"ਫ਼ੋਨ ਐਪ ਦੇ ਕੋਲ ਸਿਸਟਮ ਸੈਟਿੰਗਜ਼ ਵਿੱਚ ਲਿੱਖਣ ਦੀ ਅਨੁਮਤੀ ਨਹੀਂ ਹੁੰਦੀ ਹੈ।"</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"ਬਲੌਕ ਕੀਤਾ ਗਿਆ"</string>
+ <string name="accessibility_call_is_active" msgid="2297282583928508760">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> ਕਿਰਿਆਸ਼ੀਲ ਹੈ"</string>
</resources>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index 040995c..0bb3092 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -266,4 +266,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"Aby nawiązać połączenie, włącz uprawnienie Telefon."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Aplikacja Telefon nie ma uprawnień do zapisu w ustawieniach systemowych."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"Zablokowany"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-pt-rBR/strings.xml b/res/values-pt-rBR/strings.xml
index 0795806..fdaa5ef 100644
--- a/res/values-pt-rBR/strings.xml
+++ b/res/values-pt-rBR/strings.xml
@@ -262,4 +262,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"Para fazer uma chamada, ative a permissão para o app Telefone."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"O app Telefone não tem permissão para gravar nas configurações do sistema."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"Bloqueado"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index c9d29c7..23ebc99 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -262,4 +262,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"Para efetuar uma chamada, ative a autorização Telemóvel."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"A aplicação Telefone não tem autorização para gravar nas definições do sistema."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"Bloqueado"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 0795806..fdaa5ef 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -262,4 +262,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"Para fazer uma chamada, ative a permissão para o app Telefone."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"O app Telefone não tem permissão para gravar nas configurações do sistema."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"Bloqueado"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index ed26aee..adb0127 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -264,4 +264,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"Pentru a apela, activați permisiunea Telefon."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Aplicația Telefon nu are permisiunea să modifice setările de sistem."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"Blocat"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 3b7c87c..1cc3641 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -266,4 +266,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"Чтобы позвонить, предоставьте приложению разрешение \"Телефон\"."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"У приложения \"Телефон\" нет разрешения на изменение системных настроек."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"Заблокирован"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-si-rLK/strings.xml b/res/values-si-rLK/strings.xml
index 8bddf08..0d70d5b 100644
--- a/res/values-si-rLK/strings.xml
+++ b/res/values-si-rLK/strings.xml
@@ -262,4 +262,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"ඇමතුමක් ලබා ගැනීමට, දුරකථන අවසරය ක්රියාත්මක කරන්න."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"දුරකථන යෙදුමට පද්ධති සැකසීම් වෙත ලිවීමට අවසර නැත."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"අවහිර කරන ලදි"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index 1c2f067..7331b24 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -266,4 +266,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"Ak chcete volať, zapnite povolenie Telefón."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Telefónna aplikácia nemá povolenie na zápis do nastavení systému."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"Zablokované"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index f8df75f..34e1e5e 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -60,7 +60,7 @@
<string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Nova glasovna pošta od <xliff:g id="CALLER">%1$s</xliff:g>"</string>
<string name="voicemail_playback_error" msgid="3356071912353297599">"Sporočil v odzivniku ni mogoče predv."</string>
<string name="voicemail_fetching_content" msgid="1287895365599580842">"Nalaganje sporočil v odzivniku …"</string>
- <string name="voicemail_archiving_content" msgid="722322091690281157">"Arhiviranje sporočila …"</string>
+ <string name="voicemail_archiving_content" msgid="722322091690281157">"Arhiviranje sporočila v odzivniku …"</string>
<string name="voicemail_fetching_timout" msgid="3959428065511972176">"Sporočil v odzivniku ni mogoče naložiti"</string>
<string name="call_log_voicemail_header" msgid="3945407886667089173">"Samo klici z odzivnikom"</string>
<string name="call_log_incoming_header" msgid="2787722299753674684">"Samo dohodni klici"</string>
@@ -266,4 +266,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"Če želite klicati, vklopite dovoljenje za telefon."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Aplikacija Telefon nima dovoljenja za pisanje v sistemske nastavitve."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"Blokirano"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-sq-rAL/strings.xml b/res/values-sq-rAL/strings.xml
index 8abe304..1eac0ab 100644
--- a/res/values-sq-rAL/strings.xml
+++ b/res/values-sq-rAL/strings.xml
@@ -262,4 +262,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"Për të kryer një telefonatë, aktivizo lejen e Telefonit."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Aplikacionet e telefonit nuk kanë leje të shkruajnë në cilësimet e sistemit."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"I bllokuar"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index 91c7eeb..0f26936 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -264,4 +264,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"Да бисте упутили позив, укључите дозволу за Телефон."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Апликација Телефон нема дозволу за уписивање у системска подешавања."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"Блокиран"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 56628d9..b8c3cb4 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -262,4 +262,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"Du måste aktivera behörigheten Telefon för att kunna ringa."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Telefonappen har inte skrivbehörighet i systeminställningarna."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"Blockerad"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index d8c9883..1f01b37 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -262,4 +262,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"Ili upige simu, washa ruhusa ya Simu."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Programu ya simu haina ruhusa ya kuandika kwenye mipangilio ya mfumo."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"Imezuiwa"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-ta-rIN/strings.xml b/res/values-ta-rIN/strings.xml
index b3b5118..17f4fd8 100644
--- a/res/values-ta-rIN/strings.xml
+++ b/res/values-ta-rIN/strings.xml
@@ -262,4 +262,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"அழைக்க, ஃபோன் அனுமதியை இயக்கவும்."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"முறைமை அமைப்புகளில் எழுதுவதற்கான அனுமதி ஃபோன் பயன்பாட்டுக்கு இல்லை."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"தடுக்கப்பட்டது"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-te-rIN/strings.xml b/res/values-te-rIN/strings.xml
index ec6bb2a..7e17ba3 100644
--- a/res/values-te-rIN/strings.xml
+++ b/res/values-te-rIN/strings.xml
@@ -262,4 +262,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"కాల్ చేయడానికి, ఫోన్ అనుమతిని ఆన్ చేయండి."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"సిస్టమ్ సెట్టింగ్లకు వ్రాయడం కోసం ఫోన్ అనువర్తనానికి అనుమతి లేదు."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"బ్లాక్ అయ్యారు"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index 5281b26..a062dca 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -58,7 +58,7 @@
<string name="notification_new_voicemail_ticker" msgid="895342132049452081">"ข้อความเสียงใหม่จาก <xliff:g id="CALLER">%1$s</xliff:g>"</string>
<string name="voicemail_playback_error" msgid="3356071912353297599">"ไม่สามารถเล่นข้อความเสียงได้"</string>
<string name="voicemail_fetching_content" msgid="1287895365599580842">"กำลังโหลดข้อความเสียง…"</string>
- <string name="voicemail_archiving_content" msgid="722322091690281157">"กำลังเก็บข้อความเสียง..."</string>
+ <string name="voicemail_archiving_content" msgid="722322091690281157">"กำลังเก็บข้อความเสียง…"</string>
<string name="voicemail_fetching_timout" msgid="3959428065511972176">"ไม่สามารถโหลดข้อความเสียงได้"</string>
<string name="call_log_voicemail_header" msgid="3945407886667089173">"เฉพาะสายที่มีข้อความเสียง"</string>
<string name="call_log_incoming_header" msgid="2787722299753674684">"เฉพาะสายเรียกเข้า"</string>
@@ -262,4 +262,5 @@
<string name="permission_place_call" msgid="2101287782615887547">"หากต้องการโทรออก ให้เปิดสิทธิ์เข้าถึงโทรศัพท์"</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"แอปโทรศัพท์ไม่ได้รับอนุญาตให้เขียนไปยังการตั้งค่าระบบ"</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"ถูกบล็อก"</string>
+ <string name="accessibility_call_is_active" msgid="2297282583928508760">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> ต่อสายอยู่"</string>
</resources>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index 04d9bf9..6770e88 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -262,4 +262,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"Upang tumawag, i-on ang pahintulot ng Telepono."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Walang pahintulot ang app ng Telepono na mag-write sa mga setting ng system."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"Naka-block"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index b083bf9..a123784 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -262,4 +262,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"Telefon etmek için Telefon iznini açın."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Telefon uygulamasının sistem ayarlarına yazma izni yok."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"Engellendi"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index f49d266..c60e6d4 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -36,7 +36,7 @@
<string name="call_log_trash_voicemail" msgid="1283948488625129019">"Видалити голосову пошту"</string>
<string name="call_log_archive_voicemail" msgid="9072936797223284265">"Архівувати голосову пошту"</string>
<string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Видалено"</string>
- <string name="snackbar_voicemail_archived" msgid="7442340403660554373">"Голосу пошту заархівовано"</string>
+ <string name="snackbar_voicemail_archived" msgid="7442340403660554373">"Голосову пошту заархівовано"</string>
<string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"ВІДМІНИТИ"</string>
<string name="snackbar_voicemail_archived_goto" msgid="9186182602955185448">"ДО АРХІВУ"</string>
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Очистити історію дзвінків?"</string>
@@ -266,4 +266,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"Щоб зателефонувати, увімкніть дозвіл \"Телефон\"."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Додаток Телефон не має дозволу змінювати системні налаштування."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"Заблоковано"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-ur-rPK/strings.xml b/res/values-ur-rPK/strings.xml
index ec6116b..62c42cf 100644
--- a/res/values-ur-rPK/strings.xml
+++ b/res/values-ur-rPK/strings.xml
@@ -262,4 +262,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"کال کرنے کیلئے فون کی اجازت آن کریں۔"</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"فون ایپ کے پاس سسٹم ترتیبات کو لکھنے کی اجازت نہیں ہے۔"</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"مسدود کردہ"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-uz-rUZ/strings.xml b/res/values-uz-rUZ/strings.xml
index 7ac5fc9..69b128f 100644
--- a/res/values-uz-rUZ/strings.xml
+++ b/res/values-uz-rUZ/strings.xml
@@ -31,7 +31,7 @@
<string name="snackbar_number_unblocked" msgid="4854738171099045912">"<xliff:g id="NUMBER">%1$s</xliff:g> raqami blokdan chiqarildi"</string>
<string name="block_number_undo" msgid="591338370336724156">"QAYTARISH"</string>
<string name="call_details_delete" msgid="1833359621896346955">"O‘chirish"</string>
- <string name="action_edit_number_before_call" msgid="3100221149873436485">"Raqamni o‘zgartirish va telefon qilish"</string>
+ <string name="action_edit_number_before_call" msgid="3100221149873436485">"O‘zgartirish va telefon qilish"</string>
<string name="call_log_delete_all" msgid="4677609108288680411">"Qo‘ng‘iroqlar tarixini tozalash"</string>
<string name="call_log_trash_voicemail" msgid="1283948488625129019">"Ovozli xabarni o‘chirish"</string>
<string name="call_log_archive_voicemail" msgid="9072936797223284265">"Ovozli pochtani arxivlash"</string>
@@ -262,4 +262,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"Qo‘ng‘iroq qilish uchun “Telefon” ruxsatnomasini yoqing."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Telefon ilovasida tizim sozlamalarini o‘zgartirish uchun ruxsat yo‘q."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"Bloklangan"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index 0f46091..505886f 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -262,4 +262,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"Để thực hiện cuộc gọi, bật quyền đối với Điện thoại."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Ứng dụng Điện thoại không có quyền ghi vào cài đặt hệ thống."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"Bị chặn"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 3fd99c4..8c61293 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -262,4 +262,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"要拨打电话,请开启“电话”权限。"</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"电话应用不具备写入系统设置的权限。"</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"已屏蔽"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index 5a4bdbc..275a847 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -38,7 +38,7 @@
<string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"已刪除留言信箱"</string>
<string name="snackbar_voicemail_archived" msgid="7442340403660554373">"已封存留言"</string>
<string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"復原"</string>
- <string name="snackbar_voicemail_archived_goto" msgid="9186182602955185448">"前往封存"</string>
+ <string name="snackbar_voicemail_archived_goto" msgid="9186182602955185448">"前往封存庫"</string>
<string name="clearCallLogConfirmation_title" msgid="801753155679372984">"要清除通話記錄嗎?"</string>
<string name="clearCallLogConfirmation" msgid="7899552396101432827">"這會刪除所有通話記錄"</string>
<string name="clearCallLogProgress_title" msgid="3372471156216306132">"正在清除通話記錄…"</string>
@@ -262,4 +262,5 @@
<string name="permission_place_call" msgid="2101287782615887547">"如要撥打電話,請開放「手機」權限。"</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"手機應用程式沒有系統設定的寫入權限。"</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"已封鎖"</string>
+ <string name="accessibility_call_is_active" msgid="2297282583928508760">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>正在進行通話"</string>
</resources>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index ef468ec..e988d84 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -262,4 +262,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"如要撥打電話,請開啟「電話」存取權限。"</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"電話應用程式的權限不足,無法寫入系統設定。"</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"已封鎖"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index b9ceed7..31847db 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -262,4 +262,6 @@
<string name="permission_place_call" msgid="2101287782615887547">"Ukuze ubeke ikholi, vula imvume yefoni."</string>
<string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Uhlelo lokusebenza lefoni alinayo imvume yokubhalela kuzilungiselelo zesistimu."</string>
<string name="blocked_number_call_log_label" msgid="8912042441473014712">"Kuvinjelwe"</string>
+ <!-- no translation found for accessibility_call_is_active (2297282583928508760) -->
+ <skip />
</resources>
diff --git a/src-N/com/android/dialer/compat/BlockedNumbersSdkCompat.java b/src-N/com/android/dialer/compat/BlockedNumbersSdkCompat.java
new file mode 100644
index 0000000..6c16253
--- /dev/null
+++ b/src-N/com/android/dialer/compat/BlockedNumbersSdkCompat.java
@@ -0,0 +1,32 @@
+/*
+ * 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.dialer.compat;
+
+import android.net.Uri;
+import android.provider.BlockedNumberContract.BlockedNumbers;
+
+public class BlockedNumbersSdkCompat {
+
+ public static final Uri CONTENT_URI = BlockedNumbers.CONTENT_URI;
+
+ public static final String _ID = BlockedNumbers.COLUMN_ID;
+
+ public static final String COLUMN_ORIGINAL_NUMBER = BlockedNumbers.COLUMN_ORIGINAL_NUMBER;
+
+ public static final String E164_NUMBER = BlockedNumbers.COLUMN_E164_NUMBER;
+
+}
diff --git a/src-pre-N/com/android/dialer/compat/BlockedNumbersSdkCompat.java b/src-pre-N/com/android/dialer/compat/BlockedNumbersSdkCompat.java
new file mode 100644
index 0000000..cbdc595
--- /dev/null
+++ b/src-pre-N/com/android/dialer/compat/BlockedNumbersSdkCompat.java
@@ -0,0 +1,30 @@
+/*
+ * 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.dialer.compat;
+
+import android.net.Uri;
+
+public class BlockedNumbersSdkCompat {
+
+ public static final Uri CONTENT_URI = null;
+
+ public static final String _ID = null;
+
+ public static final String COLUMN_ORIGINAL_NUMBER = null;
+
+ public static final String E164_NUMBER = null;
+}
diff --git a/src/com/android/dialer/DialtactsActivity.java b/src/com/android/dialer/DialtactsActivity.java
index d12cf24..e775b0a 100644
--- a/src/com/android/dialer/DialtactsActivity.java
+++ b/src/com/android/dialer/DialtactsActivity.java
@@ -16,6 +16,7 @@
package com.android.dialer;
+import com.android.dialer.voicemail.VoicemailArchiveActivity;
import com.google.common.annotations.VisibleForTesting;
import android.app.Fragment;
@@ -690,6 +691,10 @@
handleMenuSettings();
Logger.logScreenView(ScreenEvent.SETTINGS, this);
return true;
+ } else if (resId == R.id.menu_archive) {
+ final Intent intent = new Intent(this, VoicemailArchiveActivity.class);
+ startActivity(intent);
+ return true;
}
return false;
}
diff --git a/src/com/android/dialer/calllog/CallLogAdapter.java b/src/com/android/dialer/calllog/CallLogAdapter.java
index 6f96ee5..e97f8e2 100644
--- a/src/com/android/dialer/calllog/CallLogAdapter.java
+++ b/src/com/android/dialer/calllog/CallLogAdapter.java
@@ -16,7 +16,10 @@
package com.android.dialer.calllog;
+import com.android.contacts.common.util.PermissionsUtil;
+
import com.android.dialer.DialtactsActivity;
+import com.android.dialer.database.VoicemailArchiveContract;
import com.google.common.annotations.VisibleForTesting;
import android.content.Context;
@@ -72,6 +75,11 @@
VoicemailPlaybackPresenter.OnVoicemailDeletedListener,
ExtendedBlockingButtonRenderer.Listener {
+ // Types of activities the call log adapter is used for
+ public static final int ACTIVITY_TYPE_CALL_LOG = 1;
+ public static final int ACTIVITY_TYPE_ARCHIVE = 2;
+ public static final int ACTIVITY_TYPE_DIALTACTS = 3;
+
/** Interface used to initiate a refresh of the content. */
public interface CallFetcher {
public void fetchCalls();
@@ -102,7 +110,7 @@
protected ContactInfoCache mContactInfoCache;
- private boolean mIsCallLogActivity;
+ private final int mActivityType;
private static final String KEY_EXPANDED_POSITION = "expanded_position";
private static final String KEY_EXPANDED_ROW_ID = "expanded_row_id";
@@ -172,7 +180,7 @@
} else {
if (viewHolder.callType == CallLog.Calls.MISSED_TYPE) {
CallLogAsyncTaskUtil.markCallAsRead(mContext, viewHolder.callIds);
- if (!mIsCallLogActivity) {
+ if (mActivityType == ACTIVITY_TYPE_DIALTACTS) {
((DialtactsActivity) v.getContext()).updateTabUnreadCounts();
}
}
@@ -255,7 +263,7 @@
CallFetcher callFetcher,
ContactInfoHelper contactInfoHelper,
VoicemailPlaybackPresenter voicemailPlaybackPresenter,
- boolean isCallLogActivity) {
+ int activityType) {
super(context);
mContext = context;
@@ -265,7 +273,8 @@
if (mVoicemailPlaybackPresenter != null) {
mVoicemailPlaybackPresenter.setOnVoicemailDeletedListener(this);
}
- mIsCallLogActivity = isCallLogActivity;
+
+ mActivityType = activityType;
mContactInfoCache = new ContactInfoCache(
mContactInfoHelper, mOnContactInfoChangedListener);
@@ -375,6 +384,11 @@
}
@Override
+ public void addVoicemailGroups(Cursor cursor) {
+ mCallLogGroupBuilder.addVoicemailGroups(cursor);
+ }
+
+ @Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if (viewType == VIEW_TYPE_VOICEMAIL_PROMO_CARD) {
return createVoicemailPromoCardViewHolder(parent);
@@ -415,7 +429,7 @@
@Override
public void onChangeFilteredNumberUndo() {}
- });
+ }, mActivityType == ACTIVITY_TYPE_ARCHIVE);
viewHolder.callLogEntryView.setTag(viewHolder);
viewHolder.callLogEntryView.setAccessibilityDelegate(mAccessibilityDelegate);
@@ -479,7 +493,8 @@
final String number = c.getString(CallLogQuery.NUMBER);
final String postDialDigits = PhoneNumberDisplayUtil.canShowPostDial()
- ? c.getString(CallLogQuery.POST_DIAL_DIGITS) : "";
+ && mActivityType != ACTIVITY_TYPE_ARCHIVE ?
+ c.getString(CallLogQuery.POST_DIAL_DIGITS) : "";
final int numberPresentation = c.getInt(CallLogQuery.NUMBER_PRESENTATION);
final PhoneAccountHandle accountHandle = PhoneAccountUtils.getAccount(
@@ -506,17 +521,13 @@
mContext, number, numberPresentation, formattedNumber,
postDialDigits, isVoicemailNumber);
details.accountHandle = accountHandle;
- details.callTypes = getCallTypes(c, count);
details.countryIso = countryIso;
details.date = c.getLong(CallLogQuery.DATE);
details.duration = c.getLong(CallLogQuery.DURATION);
details.features = getCallFeatures(c, count);
details.geocode = c.getString(CallLogQuery.GEOCODED_LOCATION);
details.transcription = c.getString(CallLogQuery.TRANSCRIPTION);
- if (details.callTypes[0] == CallLog.Calls.VOICEMAIL_TYPE ||
- details.callTypes[0] == CallLog.Calls.MISSED_TYPE) {
- details.isRead = c.getInt(CallLogQuery.IS_READ) == 1;
- }
+ details.callTypes = getCallTypes(c, count);
if (!c.isNull(CallLogQuery.DATA_USAGE)) {
details.dataUsage = c.getLong(CallLogQuery.DATA_USAGE);
@@ -543,9 +554,8 @@
views.postDialDigits = details.postDialDigits;
views.displayNumber = details.displayNumber;
views.numberPresentation = numberPresentation;
- views.callType = c.getInt(CallLogQuery.CALL_TYPE);
+
views.accountHandle = accountHandle;
- views.voicemailUri = c.getString(CallLogQuery.VOICEMAIL_URI);
// Stash away the Ids of the calls so that we can support deleting a row in the call log.
views.callIds = getCallIds(c, count);
views.isBusiness = mContactInfoHelper.isBusiness(info.sourceType);
@@ -566,6 +576,21 @@
views.dayGroupHeader.setVisibility(View.GONE);
}
+ if (mActivityType == ACTIVITY_TYPE_ARCHIVE) {
+ views.callType = CallLog.Calls.VOICEMAIL_TYPE;
+ views.voicemailUri = VoicemailArchiveContract.VoicemailArchive.buildWithId(c.getInt(
+ c.getColumnIndex(VoicemailArchiveContract.VoicemailArchive._ID)))
+ .toString();
+
+ } else {
+ if (details.callTypes[0] == CallLog.Calls.VOICEMAIL_TYPE ||
+ details.callTypes[0] == CallLog.Calls.MISSED_TYPE) {
+ details.isRead = c.getInt(CallLogQuery.IS_READ) == 1;
+ }
+ views.callType = c.getInt(CallLogQuery.CALL_TYPE);
+ views.voicemailUri = c.getString(CallLogQuery.VOICEMAIL_URI);
+ }
+
mCallLogListItemHelper.setPhoneCallDetails(views, details);
if (mCurrentlyExpandedRowId == views.rowId) {
@@ -613,7 +638,7 @@
public Object getItem(int position) {
return super.getItem(position - (mShowVoicemailPromoCard ? 1 : 0)
+ ((mHiddenPosition != RecyclerView.NO_POSITION && position >= mHiddenPosition)
- ? 1 : 0));
+ ? 1 : 0));
}
@Override
@@ -622,7 +647,7 @@
}
protected boolean isCallLogActivity() {
- return mIsCallLogActivity;
+ return mActivityType == ACTIVITY_TYPE_CALL_LOG;
}
/**
@@ -740,6 +765,9 @@
* It position in the cursor is unchanged by this function.
*/
private int[] getCallTypes(Cursor cursor, int count) {
+ if (mActivityType == ACTIVITY_TYPE_ARCHIVE) {
+ return new int[] {CallLog.Calls.VOICEMAIL_TYPE};
+ }
int position = cursor.getPosition();
int[] callTypes = new int[count];
for (int index = 0; index < count; ++index) {
@@ -851,7 +879,8 @@
private void maybeShowVoicemailPromoCard() {
boolean showPromoCard = mPrefs.getBoolean(SHOW_VOICEMAIL_PROMO_CARD,
SHOW_VOICEMAIL_PROMO_CARD_DEFAULT);
- mShowVoicemailPromoCard = (mVoicemailPlaybackPresenter != null) && showPromoCard;
+ mShowVoicemailPromoCard = mActivityType != ACTIVITY_TYPE_ARCHIVE &&
+ (mVoicemailPlaybackPresenter != null) && showPromoCard;
}
/**
diff --git a/src/com/android/dialer/calllog/CallLogAsyncTaskUtil.java b/src/com/android/dialer/calllog/CallLogAsyncTaskUtil.java
index 9825918..13de077 100644
--- a/src/com/android/dialer/calllog/CallLogAsyncTaskUtil.java
+++ b/src/com/android/dialer/calllog/CallLogAsyncTaskUtil.java
@@ -16,6 +16,7 @@
package com.android.dialer.calllog;
+import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
@@ -32,6 +33,7 @@
import com.android.contacts.common.util.PermissionsUtil;
import com.android.dialer.DialtactsActivity;
import com.android.dialer.PhoneCallDetails;
+import com.android.dialer.database.VoicemailArchiveContract;
import com.android.dialer.util.AppCompatConstants;
import com.android.dialer.util.AsyncTaskExecutor;
import com.android.dialer.util.AsyncTaskExecutors;
@@ -413,16 +415,16 @@
}
/**
- * Updates the duration of a voicemail call log entry.
+ * Updates the duration of a voicemail call log entry if the duration given is greater than 0,
+ * and if if the duration currently in the database is less than or equal to 0 (non-existent).
*/
public static void updateVoicemailDuration(
final Context context,
final Uri voicemailUri,
- final int duration) {
- if (!PermissionsUtil.hasPhonePermissions(context)) {
+ final long duration) {
+ if (duration <= 0 || !PermissionsUtil.hasPhonePermissions(context)) {
return;
}
-
if (sAsyncTaskExecutor == null) {
initTaskExecutor();
}
@@ -430,9 +432,18 @@
sAsyncTaskExecutor.submit(Tasks.UPDATE_DURATION, new AsyncTask<Void, Void, Void>() {
@Override
public Void doInBackground(Void... params) {
- ContentValues values = new ContentValues(1);
- values.put(CallLog.Calls.DURATION, duration);
- context.getContentResolver().update(voicemailUri, values, null, null);
+ ContentResolver contentResolver = context.getContentResolver();
+ Cursor cursor = contentResolver.query(
+ voicemailUri,
+ new String[] { VoicemailArchiveContract.VoicemailArchive.DURATION },
+ null, null, null);
+ if (cursor != null && cursor.moveToFirst() && cursor.getInt(
+ cursor.getColumnIndex(
+ VoicemailArchiveContract.VoicemailArchive.DURATION)) <= 0) {
+ ContentValues values = new ContentValues(1);
+ values.put(CallLog.Calls.DURATION, duration);
+ context.getContentResolver().update(voicemailUri, values, null, null);
+ }
return null;
}
});
diff --git a/src/com/android/dialer/calllog/CallLogFragment.java b/src/com/android/dialer/calllog/CallLogFragment.java
index 9cd1359..07299a2 100644
--- a/src/com/android/dialer/calllog/CallLogFragment.java
+++ b/src/com/android/dialer/calllog/CallLogFragment.java
@@ -300,13 +300,15 @@
mEmptyListView.setImage(R.drawable.empty_call_log);
mEmptyListView.setActionClickedListener(this);
+ int activityType = mIsCallLogActivity ? CallLogAdapter.ACTIVITY_TYPE_CALL_LOG :
+ CallLogAdapter.ACTIVITY_TYPE_DIALTACTS;
String currentCountryIso = GeoUtil.getCurrentCountryIso(getActivity());
mAdapter = ObjectFactory.newCallLogAdapter(
- getActivity(),
- this,
- new ContactInfoHelper(getActivity(), currentCountryIso),
- voicemailPlaybackPresenter,
- mIsCallLogActivity);
+ getActivity(),
+ this,
+ new ContactInfoHelper(getActivity(), currentCountryIso),
+ voicemailPlaybackPresenter,
+ activityType);
mRecyclerView.setAdapter(mAdapter);
fetchCalls();
}
diff --git a/src/com/android/dialer/calllog/CallLogGroupBuilder.java b/src/com/android/dialer/calllog/CallLogGroupBuilder.java
index 194231b..950f634 100644
--- a/src/com/android/dialer/calllog/CallLogGroupBuilder.java
+++ b/src/com/android/dialer/calllog/CallLogGroupBuilder.java
@@ -187,6 +187,33 @@
mGroupCreator.addGroup(count - groupSize, groupSize);
}
+ /**
+ * Group cursor entries by date, with only one entry per group. This is used for listing
+ * voicemails in the archive tab.
+ */
+ public void addVoicemailGroups(Cursor cursor) {
+ if (cursor.getCount() == 0) {
+ return;
+ }
+
+ // Clear any previous day grouping information.
+ mGroupCreator.clearDayGroups();
+
+ // Get current system time, used for calculating which day group calls belong to.
+ long currentTime = System.currentTimeMillis();
+
+ // Reset cursor to start before the first row
+ cursor.moveToPosition(-1);
+
+ // Create an individual group for each voicemail
+ while (cursor.moveToNext()) {
+ mGroupCreator.addGroup(cursor.getPosition(), 1);
+ mGroupCreator.setDayGroup(cursor.getLong(CallLogQuery.ID),
+ getDayGroup(cursor.getLong(CallLogQuery.DATE), currentTime));
+
+ }
+ }
+
@VisibleForTesting
boolean equalNumbers(String number1, String number2) {
if (PhoneNumberHelper.isUriNumber(number1) || PhoneNumberHelper.isUriNumber(number2)) {
diff --git a/src/com/android/dialer/calllog/CallLogListItemViewHolder.java b/src/com/android/dialer/calllog/CallLogListItemViewHolder.java
index 1c27440..392672f 100644
--- a/src/com/android/dialer/calllog/CallLogListItemViewHolder.java
+++ b/src/com/android/dialer/calllog/CallLogListItemViewHolder.java
@@ -27,15 +27,14 @@
import android.support.v7.widget.CardView;
import android.support.v7.widget.RecyclerView;
import android.telecom.PhoneAccountHandle;
-import android.telephony.PhoneNumberUtils;
import android.text.BidiFormatter;
import android.text.TextDirectionHeuristics;
import android.text.TextUtils;
-import android.util.Log;
import android.view.ContextMenu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewStub;
+import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.QuickContactBadge;
import android.widget.TextView;
@@ -66,8 +65,6 @@
import com.google.common.collect.Lists;
import java.util.List;
-import java.util.Map;
-import java.util.Set;
/**
* This is an object containing references to views contained by the call log list item. This
@@ -204,6 +201,11 @@
*/
public boolean isBlocked;
+ /**
+ * Whether this is the archive tab or not.
+ */
+ public final boolean isArchiveTab;
+
private final Context mContext;
private final CallLogCache mCallLogCache;
private final CallLogListItemHelper mCallLogListItemHelper;
@@ -234,7 +236,8 @@
PhoneCallDetailsViews phoneCallDetailsViews,
CardView callLogEntryView,
TextView dayGroupHeader,
- ImageView primaryActionButtonView) {
+ ImageView primaryActionButtonView,
+ boolean isArchiveTab) {
super(rootView);
mContext = context;
@@ -253,6 +256,7 @@
this.dayGroupHeader = dayGroupHeader;
this.primaryActionButtonView = primaryActionButtonView;
this.workIconView = (ImageView) rootView.findViewById(R.id.work_profile_icon);
+ this.isArchiveTab = isArchiveTab;
Resources resources = mContext.getResources();
mPhotoSize = mContext.getResources().getDimensionPixelSize(R.dimen.contact_photo_size);
@@ -280,7 +284,9 @@
CallLogListItemHelper callLogListItemHelper,
VoicemailPlaybackPresenter voicemailPlaybackPresenter,
FilteredNumberAsyncQueryHandler filteredNumberAsyncQueryHandler,
- BlockNumberDialogFragment.Callback filteredNumberDialogCallback) {
+ BlockNumberDialogFragment.Callback filteredNumberDialogCallback,
+ boolean isArchiveTab) {
+
return new CallLogListItemViewHolder(
context,
eventListener,
@@ -296,7 +302,8 @@
PhoneCallDetailsViews.fromView(view),
(CardView) view.findViewById(R.id.call_log_row),
(TextView) view.findViewById(R.id.call_log_day_group_label),
- (ImageView) view.findViewById(R.id.primary_action_button));
+ (ImageView) view.findViewById(R.id.primary_action_button),
+ isArchiveTab);
}
@Override
@@ -401,6 +408,10 @@
voicemailPlaybackView = (VoicemailPlaybackLayout) actionsView
.findViewById(R.id.voicemail_playback_layout);
+ if (isArchiveTab) {
+ voicemailPlaybackView.hideArchiveButton();
+ }
+
callButtonView = actionsView.findViewById(R.id.call_action);
callButtonView.setOnClickListener(this);
@@ -513,8 +524,10 @@
mVoicemailPlaybackPresenter.setPlaybackView(
voicemailPlaybackView, uri, mVoicemailPrimaryActionButtonClicked);
mVoicemailPrimaryActionButtonClicked = false;
-
- CallLogAsyncTaskUtil.markVoicemailAsRead(mContext, uri);
+ // Only mark voicemail as read when not in archive tab
+ if (!isArchiveTab) {
+ CallLogAsyncTaskUtil.markVoicemailAsRead(mContext, uri);
+ }
} else {
voicemailPlaybackView.setVisibility(View.GONE);
}
@@ -625,13 +638,6 @@
public void updatePhoto() {
quickContactView.assignContactUri(info.lookupUri);
- if (isBlocked && !TextUtils.isEmpty(number) /* maybe a private number ? */) {
- quickContactView.setImageDrawable(mContext.getDrawable(R.drawable.blocked_contact));
- phoneCallDetailsViews.callLocationAndDate.setText(
- mContext.getString(R.string.blocked_number_call_log_label));
- return;
- }
-
final boolean isVoicemail = mCallLogCache.isVoicemailNumber(accountHandle, number);
int contactType = ContactPhotoManager.TYPE_DEFAULT;
if (isVoicemail) {
@@ -653,6 +659,14 @@
ContactPhotoManager.getInstance(mContext).loadThumbnail(quickContactView, info.photoId,
false /* darkTheme */, true /* isCircular */, request);
}
+
+ if (mExtendedBlockingButtonRenderer != null) {
+ mExtendedBlockingButtonRenderer.updatePhotoAndLabelIfNecessary(
+ number,
+ countryIso,
+ quickContactView,
+ phoneCallDetailsViews.callLocationAndDate);
+ }
}
@Override
@@ -708,11 +722,12 @@
PhoneCallDetailsViews.createForTest(context),
new CardView(context),
new TextView(context),
- new ImageView(context));
+ new ImageView(context),
+ false);
viewHolder.detailsButtonView = new TextView(context);
viewHolder.actionsView = new View(context);
viewHolder.voicemailPlaybackView = new VoicemailPlaybackLayout(context);
-
+ viewHolder.workIconView = new ImageButton(context);
return viewHolder;
}
}
\ No newline at end of file
diff --git a/src/com/android/dialer/calllog/CallLogQueryHandler.java b/src/com/android/dialer/calllog/CallLogQueryHandler.java
index 9ff74cf..d1591e1 100644
--- a/src/com/android/dialer/calllog/CallLogQueryHandler.java
+++ b/src/com/android/dialer/calllog/CallLogQueryHandler.java
@@ -38,6 +38,7 @@
import com.android.contacts.common.compat.SdkVersionOverride;
import com.android.contacts.common.database.NoNullCursorAsyncQueryHandler;
import com.android.contacts.common.util.PermissionsUtil;
+import com.android.dialer.database.VoicemailArchiveContract;
import com.android.dialer.util.AppCompatConstants;
import com.android.dialer.util.TelecomUtil;
import com.android.dialer.voicemail.VoicemailStatusHelperImpl;
@@ -64,6 +65,8 @@
private static final int QUERY_VOICEMAIL_UNREAD_COUNT_TOKEN = 58;
/** The token for the query to fetch the number of missed calls. */
private static final int QUERY_MISSED_CALLS_UNREAD_COUNT_TOKEN = 59;
+ /** The oken for the query to fetch the archived voicemails. */
+ private static final int QUERY_VOICEMAIL_ARCHIVE = 60;
private final int mLogLimit;
@@ -127,6 +130,17 @@
}
/**
+ * Fetch all the voicemails in the voicemail archive.
+ */
+ public void fetchVoicemailArchive() {
+ startQuery(QUERY_VOICEMAIL_ARCHIVE, null,
+ VoicemailArchiveContract.VoicemailArchive.CONTENT_URI,
+ null, VoicemailArchiveContract.VoicemailArchive.ARCHIVED + " = 1", null,
+ VoicemailArchiveContract.VoicemailArchive.DATE + " DESC");
+ }
+
+
+ /**
* Fetches the list of calls from the call log for a given type.
* This call ignores the new or old state.
* <p>
@@ -253,7 +267,7 @@
return;
}
try {
- if (token == QUERY_CALLLOG_TOKEN) {
+ if (token == QUERY_CALLLOG_TOKEN || token == QUERY_VOICEMAIL_ARCHIVE) {
if (updateAdapterData(cursor)) {
cursor = null;
}
@@ -291,7 +305,7 @@
*/
private String getUnreadMissedCallsQuery() {
StringBuilder where = new StringBuilder();
- where.append(Calls.IS_READ).append(" = 0");
+ where.append(Calls.IS_READ).append(" = 0 OR ").append(Calls.IS_READ).append(" IS NULL");
where.append(" AND ");
where.append(Calls.TYPE).append(" = ").append(Calls.MISSED_TYPE);
return where.toString();
diff --git a/src/com/android/dialer/calllog/GroupingListAdapter.java b/src/com/android/dialer/calllog/GroupingListAdapter.java
index 70190df..0d06298 100644
--- a/src/com/android/dialer/calllog/GroupingListAdapter.java
+++ b/src/com/android/dialer/calllog/GroupingListAdapter.java
@@ -73,9 +73,19 @@
*/
protected abstract void addGroups(Cursor cursor);
+ protected abstract void addVoicemailGroups(Cursor cursor);
+
protected abstract void onContentChanged();
public void changeCursor(Cursor cursor) {
+ changeCursor(cursor, false);
+ }
+
+ public void changeCursorVoicemail(Cursor cursor) {
+ changeCursor(cursor, true);
+ }
+
+ public void changeCursor(Cursor cursor, boolean voicemail) {
if (cursor == mCursor) {
return;
}
@@ -91,7 +101,11 @@
mCursor = cursor;
if (cursor != null) {
- addGroups(mCursor);
+ if (voicemail) {
+ addVoicemailGroups(mCursor);
+ } else {
+ addGroups(mCursor);
+ }
// Calculate the item count by subtracting group child counts from the cursor count.
mItemCount = mGroupMetadata.size();
diff --git a/src/com/android/dialer/compat/FilteredNumberCompat.java b/src/com/android/dialer/compat/FilteredNumberCompat.java
new file mode 100644
index 0000000..c70df71
--- /dev/null
+++ b/src/com/android/dialer/compat/FilteredNumberCompat.java
@@ -0,0 +1,189 @@
+/*
+ * 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.dialer.compat;
+
+import com.google.common.base.Preconditions;
+
+import android.content.ContentUris;
+import android.content.ContentValues;
+import android.net.Uri;
+import android.support.annotation.Nullable;
+import android.telephony.PhoneNumberUtils;
+
+import com.android.contacts.common.compat.CompatUtils;
+import com.android.contacts.common.testing.NeededForTesting;
+import com.android.dialer.database.FilteredNumberContract.FilteredNumber;
+import com.android.dialer.database.FilteredNumberContract.FilteredNumberColumns;
+import com.android.dialer.database.FilteredNumberContract.FilteredNumberSources;
+import com.android.dialer.database.FilteredNumberContract.FilteredNumberTypes;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Compatibility class to encapsulate logic to switch between call blocking using
+ * {@link com.android.dialer.database.FilteredNumberContract} and using
+ * {@link android.provider.BlockedNumberContract}. This class should be used rather than explicitly
+ * referencing columns from either contract class in situations where both blocking solutions may be
+ * used.
+ */
+public class FilteredNumberCompat {
+
+ // Flag to enable feature.
+ // TODO(maxwelb) remove when ready to enable new filtering.
+ private static final boolean isNewFilteringEnabled = false;
+ private static Boolean isEnabledForTest;
+
+ /**
+ * @return The column name for ID in the filtered number database.
+ */
+ public static String getIdColumnName() {
+ return useNewFiltering() ? BlockedNumbersSdkCompat._ID : FilteredNumberColumns._ID;
+ }
+
+ /**
+ * @return The column name for type in the filtered number database. Will be {@code null} for
+ * the framework blocking implementation.
+ */
+ @Nullable
+ public static String getTypeColumnName() {
+ return useNewFiltering() ? null : FilteredNumberColumns.TYPE;
+ }
+
+ /**
+ * @return The column name for source in the filtered number database. Will be {@code null} for
+ * the framework blocking implementation
+ */
+ @Nullable
+ public static String getSourceColumnName() {
+ return useNewFiltering() ? null : FilteredNumberColumns.SOURCE;
+ }
+
+ /**
+ * @return The column name for the original number in the filtered number database.
+ */
+ public static String getOriginalNumberColumnName() {
+ return useNewFiltering() ? BlockedNumbersSdkCompat.COLUMN_ORIGINAL_NUMBER
+ : FilteredNumberColumns.NUMBER;
+ }
+
+ /**
+ * @return The column name for country iso in the filtered number database. Will be {@code null}
+ * the framework blocking implementation
+ */
+ @Nullable
+ public static String getCountryIsoColumnName() {
+ return useNewFiltering() ? null : FilteredNumberColumns.COUNTRY_ISO;
+ }
+
+ /**
+ * @return The column name for the e164 formatted number in the filtered number database.
+ */
+ public static String getE164NumberColumnName() {
+ return useNewFiltering() ? BlockedNumbersSdkCompat.E164_NUMBER
+ : FilteredNumberColumns.NORMALIZED_NUMBER;
+ }
+
+ /**
+ * @return {@code true} if the new filtering is enabled, {@code false} otherwise.
+ */
+ public static boolean useNewFiltering() {
+ if (isEnabledForTest != null) {
+ return CompatUtils.isNCompatible() && isEnabledForTest;
+ }
+ return CompatUtils.isNCompatible() && isNewFilteringEnabled;
+ }
+
+ @NeededForTesting
+ public static void setIsEnabledForTest(Boolean isEnabled) {
+ isEnabledForTest = isEnabled;
+ }
+
+ /**
+ * Gets the content {@link Uri} for number filtering.
+ *
+ * @param id The optional id to append with the base content uri.
+ * @return The Uri for number filtering.
+ */
+ public static Uri getContentUri(@Nullable Integer id) {
+ if (id == null) {
+ return getBaseUri();
+ }
+ return ContentUris.withAppendedId(getBaseUri(), id);
+ }
+
+
+ private static Uri getBaseUri() {
+ return useNewFiltering() ? BlockedNumbersSdkCompat.CONTENT_URI : FilteredNumber.CONTENT_URI;
+ }
+
+ /**
+ * Removes any null column names from the given projection array. This method is intended to be
+ * used to strip out any column names that aren't available in every version of number blocking.
+ * Example:
+ * {@literal
+ * getContext().getContentResolver().query(
+ * someUri,
+ * // Filtering ensures that no non-existant columns are queried
+ * FilteredNumberCompat.filter(new String[] {FilteredNumberCompat.getIdColumnName(),
+ * FilteredNumberCompat.getTypeColumnName()},
+ * FilteredNumberCompat.getE164NumberColumnName() + " = ?",
+ * new String[] {e164Number});
+ * }
+ *
+ * @param projection The projection array.
+ * @return The filtered projection array.
+ */
+ @Nullable
+ public static String[] filter(@Nullable String[] projection) {
+ if (projection == null) {
+ return null;
+ }
+ List<String> filtered = new ArrayList<>();
+ for (String column : projection) {
+ if (column != null) {
+ filtered.add(column);
+ }
+ }
+ return filtered.toArray(new String[filtered.size()]);
+ }
+
+ /**
+ * Creates a new {@link ContentValues} suitable for inserting in the filtered number table.
+ *
+ * @param number The unformatted number to insert.
+ * @param e164Number (optional) The number to insert formatted to E164 standard.
+ * @param countryIso (optional) The country iso to use to format the number.
+ * @return The ContentValues to insert.
+ * @throws NullPointerException If number is null.
+ */
+ public static ContentValues newBlockNumberContentValues(String number,
+ @Nullable String e164Number, @Nullable String countryIso) {
+ ContentValues contentValues = new ContentValues();
+ contentValues.put(getOriginalNumberColumnName(), Preconditions.checkNotNull(number));
+ if (!useNewFiltering()) {
+ if (e164Number == null) {
+ e164Number = PhoneNumberUtils.formatNumberToE164(number, countryIso);
+ }
+ contentValues.put(getE164NumberColumnName(), e164Number);
+ contentValues.put(getCountryIsoColumnName(), countryIso);
+ contentValues.put(getTypeColumnName(), FilteredNumberTypes.BLOCKED_NUMBER);
+ contentValues.put(getSourceColumnName(), FilteredNumberSources.USER);
+ }
+ return contentValues;
+ }
+}
diff --git a/src/com/android/dialer/database/FilteredNumberAsyncQueryHandler.java b/src/com/android/dialer/database/FilteredNumberAsyncQueryHandler.java
index 6e64c60..7af1a13 100644
--- a/src/com/android/dialer/database/FilteredNumberAsyncQueryHandler.java
+++ b/src/com/android/dialer/database/FilteredNumberAsyncQueryHandler.java
@@ -24,12 +24,13 @@
import android.database.DatabaseUtils;
import android.database.sqlite.SQLiteDatabaseCorruptException;
import android.net.Uri;
+import android.support.annotation.Nullable;
import android.telephony.PhoneNumberUtils;
import android.text.TextUtils;
+import com.android.dialer.compat.FilteredNumberCompat;
import com.android.dialer.database.FilteredNumberContract.FilteredNumber;
import com.android.dialer.database.FilteredNumberContract.FilteredNumberColumns;
-import com.android.dialer.database.FilteredNumberContract.FilteredNumberSources;
import com.android.dialer.database.FilteredNumberContract.FilteredNumberTypes;
public class FilteredNumberAsyncQueryHandler extends AsyncQueryHandler {
@@ -58,7 +59,7 @@
* Invoked after querying if a number is blocked.
* @param id The ID of the row if blocked, null otherwise.
*/
- public void onCheckComplete(Integer id);
+ void onCheckComplete(Integer id);
}
public interface OnBlockNumberListener {
@@ -66,7 +67,7 @@
* Invoked after inserting a blocked number.
* @param uri The uri of the newly created row.
*/
- public void onBlockComplete(Uri uri);
+ void onBlockComplete(Uri uri);
}
public interface OnUnblockNumberListener {
@@ -75,7 +76,7 @@
* @param rows The number of rows affected (expected value 1).
* @param values The deleted data (used for restoration).
*/
- public void onUnblockComplete(int rows, ContentValues values);
+ void onUnblockComplete(int rows, ContentValues values);
}
public interface OnHasBlockedNumbersListener {
@@ -83,7 +84,7 @@
* @param hasBlockedNumbers {@code true} if any blocked numbers are stored.
* {@code false} otherwise.
*/
- public void onHasBlockedNumbers(boolean hasBlockedNumbers);
+ void onHasBlockedNumbers(boolean hasBlockedNumbers);
}
@Override
@@ -114,15 +115,11 @@
}
}
- private static Uri getContentUri(Integer id) {
- Uri uri = FilteredNumber.CONTENT_URI;
- if (id != null) {
- uri = ContentUris.withAppendedId(uri, id);
- }
- return uri;
- }
-
public final void incrementFilteredCount(Integer id) {
+ // No concept of counts with new filtering
+ if (FilteredNumberCompat.useNewFiltering()) {
+ return;
+ }
startUpdate(NO_TOKEN, null,
ContentUris.withAppendedId(FilteredNumber.CONTENT_URI_INCREMENT_FILTERED_COUNT, id),
null, null, null);
@@ -136,9 +133,10 @@
listener.onHasBlockedNumbers(cursor != null && cursor.getCount() > 0);
}
},
- getContentUri(null),
- new String[]{ FilteredNumberColumns._ID },
- FilteredNumberColumns.TYPE + "=" + FilteredNumberTypes.BLOCKED_NUMBER,
+ FilteredNumberCompat.getContentUri(null),
+ new String[]{ FilteredNumberCompat.getIdColumnName() },
+ FilteredNumberCompat.useNewFiltering() ? null : FilteredNumberColumns.TYPE
+ + "=" + FilteredNumberTypes.BLOCKED_NUMBER,
null,
null);
}
@@ -151,8 +149,8 @@
*/
public boolean isBlockedNumber(
final OnCheckBlockedListener listener, String number, String countryIso) {
- final String normalizedNumber = PhoneNumberUtils.formatNumberToE164(number, countryIso);
- if (TextUtils.isEmpty(normalizedNumber)) {
+ final String e164Number = PhoneNumberUtils.formatNumberToE164(number, countryIso);
+ if (TextUtils.isEmpty(e164Number)) {
return false;
}
@@ -165,7 +163,9 @@
return;
}
cursor.moveToFirst();
- if (cursor.getInt(cursor.getColumnIndex(FilteredNumberColumns.TYPE))
+ // New filtering doesn't have a concept of type
+ if (!FilteredNumberCompat.useNewFiltering()
+ && cursor.getInt(cursor.getColumnIndex(FilteredNumberColumns.TYPE))
!= FilteredNumberTypes.BLOCKED_NUMBER) {
listener.onCheckComplete(null);
return;
@@ -174,17 +174,18 @@
cursor.getInt(cursor.getColumnIndex(FilteredNumberColumns._ID)));
}
},
- getContentUri(null),
- new String[]{ FilteredNumberColumns._ID, FilteredNumberColumns.TYPE },
- FilteredNumberColumns.NORMALIZED_NUMBER + " = ?",
- new String[]{ normalizedNumber },
+ FilteredNumberCompat.getContentUri(null),
+ FilteredNumberCompat.filter(new String[]{FilteredNumberCompat.getIdColumnName(),
+ FilteredNumberCompat.getTypeColumnName()}),
+ FilteredNumberCompat.getE164NumberColumnName() + " = ?",
+ new String[]{e164Number},
null);
return true;
}
public void blockNumber(
- final OnBlockNumberListener listener, String number, String countryIso) {
+ final OnBlockNumberListener listener, String number, @Nullable String countryIso) {
blockNumber(listener, null, number, countryIso);
}
@@ -193,19 +194,11 @@
*/
public void blockNumber(
final OnBlockNumberListener listener,
- String normalizedNumber,
+ @Nullable String normalizedNumber,
String number,
- String countryIso) {
- if (normalizedNumber == null) {
- normalizedNumber = PhoneNumberUtils.formatNumberToE164(number, countryIso);
- }
- ContentValues v = new ContentValues();
- v.put(FilteredNumberColumns.NORMALIZED_NUMBER, normalizedNumber);
- v.put(FilteredNumberColumns.NUMBER, number);
- v.put(FilteredNumberColumns.COUNTRY_ISO, countryIso);
- v.put(FilteredNumberColumns.TYPE, FilteredNumberTypes.BLOCKED_NUMBER);
- v.put(FilteredNumberColumns.SOURCE, FilteredNumberSources.USER);
- blockNumber(listener, v);
+ @Nullable String countryIso) {
+ blockNumber(listener, FilteredNumberCompat.newBlockNumberContentValues(number,
+ normalizedNumber, countryIso));
}
/**
@@ -221,27 +214,31 @@
listener.onBlockComplete(uri);
}
}
- }, getContentUri(null), values);
+ }, FilteredNumberCompat.getContentUri(null), values);
}
/**
- * Removes row from database.
- * Caller should call {@link FilteredNumberAsyncQueryHandler#startBlockedQuery} first.
- * @param id The ID of row to remove, from {@link FilteredNumberAsyncQueryHandler#startBlockedQuery}.
+ * Unblocks the number with the given id.
+ *
+ * @param listener (optional) The {@link OnUnblockNumberListener} called after the number is
+ * unblocked.
+ * @param id The id of the number to unblock.
*/
- public void unblock(final OnUnblockNumberListener listener, Integer id) {
+ public void unblock(@Nullable final OnUnblockNumberListener listener, Integer id) {
if (id == null) {
throw new IllegalArgumentException("Null id passed into unblock");
}
- unblock(listener, getContentUri(id));
+ unblock(listener, FilteredNumberCompat.getContentUri(id));
}
/**
* Removes row from database.
+ * @param listener (optional) The {@link OnUnblockNumberListener} called after the number is
+ * unblocked.
* @param uri The uri of row to remove, from
- * {@link FilteredNumberAsyncQueryHandler#blockNumber}.
+ * {@link FilteredNumberAsyncQueryHandler#blockNumber}.
*/
- public void unblock(final OnUnblockNumberListener listener, final Uri uri) {
+ public void unblock(@Nullable final OnUnblockNumberListener listener, final Uri uri) {
startQuery(NO_TOKEN, new Listener() {
@Override
public void onQueryComplete(int token, Object cookie, Cursor cursor) {
@@ -254,7 +251,7 @@
cursor.moveToFirst();
final ContentValues values = new ContentValues();
DatabaseUtils.cursorRowToContentValues(cursor, values);
- values.remove(FilteredNumberColumns._ID);
+ values.remove(FilteredNumberCompat.getIdColumnName());
startDelete(NO_TOKEN, new Listener() {
@Override
diff --git a/src/com/android/dialer/database/VoicemailArchiveProvider.java b/src/com/android/dialer/database/VoicemailArchiveProvider.java
index ae73670..79b7a76 100644
--- a/src/com/android/dialer/database/VoicemailArchiveProvider.java
+++ b/src/com/android/dialer/database/VoicemailArchiveProvider.java
@@ -115,11 +115,13 @@
// Create the directory for archived voicemails if it doesn't already exist
File directory = new File(getFilesDir(), VOICEMAIL_FOLDER);
directory.mkdirs();
-
- // Update the row's _data column with a file path in the voicemails folder
Uri newUri = ContentUris.withAppendedId(uri, id);
- File voicemailFile = new File(directory, Long.toString(id));
- values.put(VoicemailArchiveContract.VoicemailArchive._DATA, voicemailFile.getPath());
+
+ // Create new file only if path is not provided to one
+ if (!values.containsKey(VoicemailArchiveContract.VoicemailArchive._DATA)) {
+ File voicemailFile = new File(directory, Long.toString(id));
+ values.put(VoicemailArchiveContract.VoicemailArchive._DATA, voicemailFile.getPath());
+ }
update(newUri, values, null, null);
return newUri;
}
diff --git a/src/com/android/dialer/list/ListsFragment.java b/src/com/android/dialer/list/ListsFragment.java
index 5b7c950..52bf3cb 100644
--- a/src/com/android/dialer/list/ListsFragment.java
+++ b/src/com/android/dialer/list/ListsFragment.java
@@ -48,6 +48,7 @@
import com.android.dialer.widget.ActionBarController;
import java.util.ArrayList;
+import java.util.List;
/**
* Fragment that is used as the main screen of the Dialer.
@@ -106,8 +107,13 @@
private CallLogQueryHandler mCallLogQueryHandler;
public class ViewPagerAdapter extends FragmentPagerAdapter {
+ private final List<Fragment> mFragments = new ArrayList<>();
+
public ViewPagerAdapter(FragmentManager fm) {
super(fm);
+ for (int i = 0; i < TAB_COUNT_WITH_VOICEMAIL; i++) {
+ mFragments.add(null);
+ }
}
@Override
@@ -135,7 +141,7 @@
}
@Override
- public Object instantiateItem(ViewGroup container, int position) {
+ public Fragment instantiateItem(ViewGroup container, int position) {
// On rotation the FragmentManager handles rotation. Therefore getItem() isn't called.
// Copy the fragments that the FragmentManager finds so that we can store them in
// instance variables for later.
@@ -150,9 +156,25 @@
} else if (fragment instanceof CallLogFragment && position == TAB_INDEX_VOICEMAIL) {
mVoicemailFragment = (CallLogFragment) fragment;
}
+ mFragments.set(position, fragment);
return fragment;
}
+ /**
+ * When {@link android.support.v4.view.PagerAdapter#notifyDataSetChanged} is called,
+ * this method is called on all pages to determine whether they need to be recreated.
+ * When the voicemail tab is removed, the view needs to be recreated by returning
+ * POSITION_NONE. If notifyDataSetChanged is called for some other reason, the voicemail
+ * tab is recreated only if it is active. All other tabs do not need to be recreated
+ * and POSITION_UNCHANGED is returned.
+ */
+ @Override
+ public int getItemPosition(Object object) {
+ return !mHasActiveVoicemailProvider &&
+ mFragments.indexOf(object) == TAB_INDEX_VOICEMAIL ? POSITION_NONE :
+ POSITION_UNCHANGED;
+ }
+
@Override
public int getCount() {
return mHasActiveVoicemailProvider ? TAB_COUNT_WITH_VOICEMAIL : TAB_COUNT_DEFAULT;
@@ -313,6 +335,7 @@
mViewPagerTabs.updateTab(TAB_INDEX_VOICEMAIL);
} else {
mViewPagerTabs.removeTab(TAB_INDEX_VOICEMAIL);
+ removeVoicemailFragment();
}
mPrefs.edit()
@@ -453,4 +476,12 @@
}
Logger.logScreenView(screenType, getActivity());
}
+
+ private void removeVoicemailFragment() {
+ if (mVoicemailFragment != null) {
+ getChildFragmentManager().beginTransaction().remove(mVoicemailFragment)
+ .commitAllowingStateLoss();
+ mVoicemailFragment = null;
+ }
+ }
}
diff --git a/src/com/android/dialer/service/ExtendedBlockingButtonRenderer.java b/src/com/android/dialer/service/ExtendedBlockingButtonRenderer.java
index 5ff3732..f8d5ea0 100644
--- a/src/com/android/dialer/service/ExtendedBlockingButtonRenderer.java
+++ b/src/com/android/dialer/service/ExtendedBlockingButtonRenderer.java
@@ -19,6 +19,8 @@
import android.support.annotation.Nullable;
import android.view.View;
import android.view.ViewStub;
+import android.widget.QuickContactBadge;
+import android.widget.TextView;
import java.util.List;
@@ -70,4 +72,15 @@
void render(ViewStub viewStub);
void setViewHolderInfo(ViewHolderInfo info);
+
+ /**
+ * Updates the photo and label for the given phone number and country iso.
+ *
+ * @param number Phone number for which the rendering occurs.
+ * @param countryIso Two-letter country code.
+ * @param badge {@link QuickContactBadge} in which the photo should be rendered.
+ * @param view Textview that will hold the new label.
+ */
+ void updatePhotoAndLabelIfNecessary(
+ String number, String countryIso, QuickContactBadge badge, TextView view);
}
diff --git a/src/com/android/dialer/voicemail/VoicemailArchiveActivity.java b/src/com/android/dialer/voicemail/VoicemailArchiveActivity.java
new file mode 100644
index 0000000..16b947c
--- /dev/null
+++ b/src/com/android/dialer/voicemail/VoicemailArchiveActivity.java
@@ -0,0 +1,160 @@
+/*
+ * 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.dialer.voicemail;
+
+import android.content.Intent;
+import android.database.Cursor;
+import android.os.Bundle;
+import android.support.v7.app.ActionBar;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.view.MenuItem;
+import android.view.View;
+
+import com.android.contacts.common.GeoUtil;
+import com.android.dialer.DialtactsActivity;
+import com.android.dialer.R;
+import com.android.dialer.TransactionSafeActivity;
+import com.android.dialer.calllog.CallLogAdapter;
+import com.android.dialer.calllog.CallLogQueryHandler;
+import com.android.dialer.calllog.ContactInfoHelper;
+import com.android.dialer.widget.EmptyContentView;
+import com.android.dialerbind.ObjectFactory;
+
+/**
+ * This activity manages all the voicemails archived by the user.
+ */
+public class VoicemailArchiveActivity extends TransactionSafeActivity
+ implements CallLogAdapter.CallFetcher, CallLogQueryHandler.Listener {
+ private RecyclerView mRecyclerView;
+ private LinearLayoutManager mLayoutManager;
+ private EmptyContentView mEmptyListView;
+ private CallLogAdapter mAdapter;
+ private VoicemailPlaybackPresenter mVoicemailPlaybackPresenter;
+ private CallLogQueryHandler mCallLogQueryHandler;
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ if (!isSafeToCommitTransactions()) {
+ return true;
+ }
+
+ switch (item.getItemId()) {
+ case android.R.id.home:
+ Intent intent = new Intent(this, DialtactsActivity.class);
+ // Clears any activities between VoicemailArchiveActivity and DialtactsActivity
+ // on the activity stack and reuses the existing instance of DialtactsActivity
+ intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
+ startActivity(intent);
+ return true;
+ }
+ return super.onOptionsItemSelected(item);
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ setContentView(R.layout.call_log_fragment);
+
+ // Make window opaque to reduce overdraw
+ getWindow().setBackgroundDrawable(null);
+
+ ActionBar actionBar = getSupportActionBar();
+ actionBar.setDisplayShowHomeEnabled(true);
+ actionBar.setDisplayHomeAsUpEnabled(true);
+ actionBar.setDisplayShowTitleEnabled(true);
+ actionBar.setElevation(0);
+
+ mCallLogQueryHandler = new CallLogQueryHandler(this, getContentResolver(), this);
+ mVoicemailPlaybackPresenter = VoicemailArchivePlaybackPresenter
+ .getInstance(this, savedInstanceState);
+
+ mRecyclerView = (RecyclerView) findViewById(R.id.recycler_view);
+ mRecyclerView.setHasFixedSize(true);
+ mLayoutManager = new LinearLayoutManager(this);
+ mRecyclerView.setLayoutManager(mLayoutManager);
+ mEmptyListView = (EmptyContentView) findViewById(R.id.empty_list_view);
+ mEmptyListView.setDescription(R.string.voicemail_archive_empty);
+ mEmptyListView.setImage(R.drawable.empty_call_log);
+
+ mAdapter = ObjectFactory.newCallLogAdapter(
+ this,
+ this,
+ new ContactInfoHelper(this, GeoUtil.getCurrentCountryIso(this)),
+ mVoicemailPlaybackPresenter,
+ CallLogAdapter.ACTIVITY_TYPE_ARCHIVE);
+ mRecyclerView.setAdapter(mAdapter);
+ fetchCalls();
+ }
+
+ @Override
+ protected void onPause() {
+ mVoicemailPlaybackPresenter.onPause();
+ mAdapter.onPause();
+ super.onPause();
+ }
+
+ @Override
+ public void onResume() {
+ super.onResume();
+ mAdapter.onResume();
+ mVoicemailPlaybackPresenter.onResume();
+ }
+
+ @Override
+ public void onDestroy() {
+ mVoicemailPlaybackPresenter.onDestroy();
+ mAdapter.changeCursor(null);
+ super.onDestroy();
+ }
+
+ @Override
+ public void onSaveInstanceState(Bundle outState) {
+ super.onSaveInstanceState(outState);
+ mVoicemailPlaybackPresenter.onSaveInstanceState(outState);
+ }
+
+ @Override
+ public void fetchCalls() {
+ mCallLogQueryHandler.fetchVoicemailArchive();
+ }
+
+ @Override
+ public void onVoicemailStatusFetched(Cursor statusCursor) {
+ // Do nothing
+ }
+
+ @Override
+ public void onVoicemailUnreadCountFetched(Cursor cursor) {
+ // Do nothing
+ }
+
+ @Override
+ public void onMissedCallsUnreadCountFetched(Cursor cursor) {
+ // Do nothing
+ }
+
+ @Override
+ public boolean onCallsFetched(Cursor cursor) {
+ mAdapter.changeCursorVoicemail(cursor);
+ boolean showListView = cursor != null && cursor.getCount() > 0;
+ mRecyclerView.setVisibility(showListView ? View.VISIBLE : View.GONE);
+ mEmptyListView.setVisibility(!showListView ? View.VISIBLE : View.GONE);
+ return true;
+ }
+}
diff --git a/src/com/android/dialer/voicemail/VoicemailArchivePlaybackPresenter.java b/src/com/android/dialer/voicemail/VoicemailArchivePlaybackPresenter.java
new file mode 100644
index 0000000..050b8ac
--- /dev/null
+++ b/src/com/android/dialer/voicemail/VoicemailArchivePlaybackPresenter.java
@@ -0,0 +1,85 @@
+/*
+ * 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.dialer.voicemail;
+
+import android.app.Activity;
+import android.database.Cursor;
+import android.net.Uri;
+import android.os.AsyncTask;
+import android.os.Bundle;
+import android.util.Log;
+import com.android.dialer.calllog.CallLogAsyncTaskUtil;
+import com.android.dialer.database.VoicemailArchiveContract;
+import java.io.FileNotFoundException;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Similar to the {@link VoicemailPlaybackPresenter}, but for the archive voicemail tab. It checks
+ * whether the voicemail file exists locally before preparing it.
+ */
+public class VoicemailArchivePlaybackPresenter extends VoicemailPlaybackPresenter {
+ private static final String TAG = "VMPlaybackPresenter";
+ private static VoicemailPlaybackPresenter sInstance;
+
+ public VoicemailArchivePlaybackPresenter(Activity activity) {
+ super(activity);
+ }
+
+ public static VoicemailPlaybackPresenter getInstance(
+ Activity activity, Bundle savedInstanceState) {
+ if (sInstance == null) {
+ sInstance = new VoicemailArchivePlaybackPresenter(activity);
+ }
+
+ sInstance.init(activity, savedInstanceState);
+ return sInstance;
+ }
+
+ @Override
+ protected void checkForContent(final OnContentCheckedListener callback) {
+ mAsyncTaskExecutor.submit(Tasks.CHECK_FOR_CONTENT, new AsyncTask<Void, Void, Boolean>() {
+ @Override
+ public Boolean doInBackground(Void... params) {
+ try {
+ // Check if the _data column of the archived voicemail is valid
+ if (mVoicemailUri != null) {
+ mContext.getContentResolver().openInputStream(mVoicemailUri);
+ return true;
+ }
+ } catch (FileNotFoundException e) {
+ Log.d(TAG, "Voicemail file not found for " + mVoicemailUri);
+ handleError(e);
+ }
+ return false;
+ }
+
+ @Override
+ public void onPostExecute(Boolean hasContent) {
+ callback.onContentChecked(hasContent);
+ }
+ });
+ }
+
+ @Override
+ protected boolean requestContent(int code) {
+ if (mContext == null || mVoicemailUri == null) {
+ return false;
+ }
+ prepareContent();
+ return true;
+ }
+}
diff --git a/src/com/android/dialer/voicemail/VoicemailPlaybackLayout.java b/src/com/android/dialer/voicemail/VoicemailPlaybackLayout.java
index 7d72028..436fc79 100644
--- a/src/com/android/dialer/voicemail/VoicemailPlaybackLayout.java
+++ b/src/com/android/dialer/voicemail/VoicemailPlaybackLayout.java
@@ -16,40 +16,44 @@
package com.android.dialer.voicemail;
-import android.app.Activity;
-import android.app.Fragment;
+import android.content.ContentUris;
import android.content.Context;
+import android.content.Intent;
+import android.database.Cursor;
import android.graphics.drawable.Drawable;
-import android.media.MediaPlayer;
import android.net.Uri;
-import android.os.Bundle;
+import android.os.AsyncTask;
import android.os.Handler;
-import android.os.PowerManager;
-import android.provider.VoicemailContract;
import android.util.AttributeSet;
-import android.util.Log;
import android.support.design.widget.Snackbar;
import android.view.LayoutInflater;
import android.view.View;
-import android.view.ViewGroup;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;
+import android.widget.Toast;
import com.android.common.io.MoreCloseables;
import com.android.dialer.PhoneCallDetails;
import com.android.dialer.R;
import com.android.dialer.calllog.CallLogAsyncTaskUtil;
+import com.android.dialer.database.VoicemailArchiveContract;
+import com.android.dialer.database.VoicemailArchiveContract.VoicemailArchive;
+import com.android.dialer.util.AsyncTaskExecutor;
+import com.android.dialer.util.AsyncTaskExecutors;
import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Preconditions;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Objects;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.ScheduledExecutorService;
+import javax.annotation.Nullable;
import javax.annotation.concurrent.GuardedBy;
import javax.annotation.concurrent.NotThreadSafe;
import javax.annotation.concurrent.ThreadSafe;
@@ -67,6 +71,12 @@
CallLogAsyncTaskUtil.CallLogAsyncTaskListener {
private static final String TAG = VoicemailPlaybackLayout.class.getSimpleName();
private static final int VOICEMAIL_DELETE_DELAY_MS = 3000;
+ private static final int VOICEMAIL_ARCHIVE_DELAY_MS = 3000;
+
+ /** The enumeration of {@link AsyncTask} objects we use in this class. */
+ public enum Tasks {
+ QUERY_ARCHIVED_STATUS
+ }
/**
* Controls the animation of the playback slider.
@@ -151,6 +161,11 @@
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
setClipPosition(progress, seekBar.getMax());
+ // Update the seek position if user manually changed it. This makes sure position gets
+ // updated when user use volume button to seek playback in talkback mode.
+ if (fromUser) {
+ mPresenter.seek(progress);
+ }
}
};
@@ -197,7 +212,7 @@
final Runnable deleteCallback = new Runnable() {
@Override
public void run() {
- if (mVoicemailUri == deleteUri) {
+ if (Objects.equals(deleteUri, mVoicemailUri)) {
CallLogAsyncTaskUtil.deleteVoicemail(mContext, deleteUri,
VoicemailPlaybackLayout.this);
}
@@ -209,8 +224,6 @@
// window.
handler.postDelayed(deleteCallback, VOICEMAIL_DELETE_DELAY_MS + 50);
- final int actionTextColor =
- mContext.getResources().getColor(R.color.dialer_snackbar_action_text_color);
Snackbar.make(VoicemailPlaybackLayout.this, R.string.snackbar_voicemail_deleted,
Snackbar.LENGTH_LONG)
.setDuration(VOICEMAIL_DELETE_DELAY_MS)
@@ -222,21 +235,44 @@
handler.removeCallbacks(deleteCallback);
}
})
- .setActionTextColor(actionTextColor)
+ .setActionTextColor(
+ mContext.getResources().getColor(
+ R.color.dialer_snackbar_action_text_color))
.show();
}
};
+ private final View.OnClickListener mArchiveButtonListener = new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ if (mPresenter == null || isArchiving(mVoicemailUri)) {
+ return;
+ }
+ mIsArchiving.add(mVoicemailUri);
+ mPresenter.pausePlayback();
+ updateArchiveUI(mVoicemailUri);
+ disableUiElements();
+ mPresenter.archiveContent(mVoicemailUri, true);
+ }
+ };
+
private Context mContext;
private VoicemailPlaybackPresenter mPresenter;
private Uri mVoicemailUri;
-
+ private final AsyncTaskExecutor mAsyncTaskExecutor =
+ AsyncTaskExecutors.createAsyncTaskExecutor();
private boolean mIsPlaying = false;
+ /**
+ * Keeps track of which voicemails are currently being archived in order to update the voicemail
+ * card UI every time a user opens a new card.
+ */
+ private static final ArrayList<Uri> mIsArchiving = new ArrayList<>();
private SeekBar mPlaybackSeek;
private ImageButton mStartStopButton;
private ImageButton mPlaybackSpeakerphone;
private ImageButton mDeleteButton;
+ private ImageButton mArchiveButton;
private TextView mStateText;
private TextView mPositionText;
private TextView mTotalDurationText;
@@ -251,7 +287,6 @@
public VoicemailPlaybackLayout(Context context, AttributeSet attrs) {
super(context, attrs);
-
mContext = context;
LayoutInflater inflater =
(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
@@ -262,6 +297,8 @@
public void setPresenter(VoicemailPlaybackPresenter presenter, Uri voicemailUri) {
mPresenter = presenter;
mVoicemailUri = voicemailUri;
+ updateArchiveUI(mVoicemailUri);
+ updateArchiveButton(mVoicemailUri);
}
@Override
@@ -272,6 +309,7 @@
mStartStopButton = (ImageButton) findViewById(R.id.playback_start_stop);
mPlaybackSpeakerphone = (ImageButton) findViewById(R.id.playback_speakerphone);
mDeleteButton = (ImageButton) findViewById(R.id.delete_voicemail);
+ mArchiveButton =(ImageButton) findViewById(R.id.archive_voicemail);
mStateText = (TextView) findViewById(R.id.playback_state_text);
mPositionText = (TextView) findViewById(R.id.playback_position_text);
mTotalDurationText = (TextView) findViewById(R.id.total_duration_text);
@@ -280,6 +318,7 @@
mStartStopButton.setOnClickListener(mStartStopButtonListener);
mPlaybackSpeakerphone.setOnClickListener(mSpeakerphoneListener);
mDeleteButton.setOnClickListener(mDeleteButtonListener);
+ mArchiveButton.setOnClickListener(mArchiveButtonListener);
mPositionText.setText(formatAsMinutesAndSeconds(0));
mTotalDurationText.setText(formatAsMinutesAndSeconds(0));
@@ -353,7 +392,6 @@
mPositionText.setText(formatAsMinutesAndSeconds(seekBarPositionMs));
mTotalDurationText.setText(formatAsMinutesAndSeconds(durationMs));
- mStateText.setText(null);
}
@Override
@@ -381,6 +419,7 @@
@Override
public void enableUiElements() {
+ mDeleteButton.setEnabled(true);
mStartStopButton.setEnabled(true);
mPlaybackSeek.setEnabled(true);
mPlaybackSeek.setThumb(mVoicemailSeekHandleEnabled);
@@ -424,6 +463,134 @@
return String.format("%02d:%02d", minutes, seconds);
}
+ /**
+ * Called when a voicemail archive succeeded. If the expanded voicemail was being
+ * archived, update the card UI. Either way, display a snackbar linking user to archive.
+ */
+ @Override
+ public void onVoicemailArchiveSucceded(Uri voicemailUri) {
+ if (isArchiving(voicemailUri)) {
+ mIsArchiving.remove(voicemailUri);
+ if (Objects.equals(voicemailUri, mVoicemailUri)) {
+ onVoicemailArchiveResult();
+ hideArchiveButton();
+ }
+ }
+
+ Snackbar.make(this, R.string.snackbar_voicemail_archived,
+ Snackbar.LENGTH_LONG)
+ .setDuration(VOICEMAIL_ARCHIVE_DELAY_MS)
+ .setAction(R.string.snackbar_voicemail_archived_goto,
+ new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ Intent intent = new Intent(mContext,
+ VoicemailArchiveActivity.class);
+ mContext.startActivity(intent);
+ }
+ })
+ .setActionTextColor(
+ mContext.getResources().getColor(R.color.dialer_snackbar_action_text_color))
+ .show();
+ }
+
+ /**
+ * If a voicemail archive failed, and the expanded card was being archived, update the card UI.
+ * Either way, display a toast saying the voicemail archive failed.
+ */
+ @Override
+ public void onVoicemailArchiveFailed(Uri voicemailUri) {
+ if (isArchiving(voicemailUri)) {
+ mIsArchiving.remove(voicemailUri);
+ if (Objects.equals(voicemailUri, mVoicemailUri)) {
+ onVoicemailArchiveResult();
+ }
+ }
+ String toastStr = mContext.getString(R.string.voicemail_archive_failed);
+ Toast.makeText(mContext, toastStr, Toast.LENGTH_SHORT).show();
+ }
+
+ public void hideArchiveButton() {
+ mArchiveButton.setVisibility(View.GONE);
+ mArchiveButton.setClickable(false);
+ mArchiveButton.setEnabled(false);
+ }
+
+ /**
+ * Whenever a voicemail archive succeeds or fails, clear the text displayed in the voicemail
+ * card.
+ */
+ private void onVoicemailArchiveResult() {
+ enableUiElements();
+ mStateText.setText(null);
+ mArchiveButton.setColorFilter(null);
+ }
+
+ /**
+ * Whether or not the voicemail with the given uri is being archived.
+ */
+ private boolean isArchiving(@Nullable Uri uri) {
+ return uri != null && mIsArchiving.contains(uri);
+ }
+
+ /**
+ * Show the proper text and hide the archive button if the voicemail is still being archived.
+ */
+ private void updateArchiveUI(@Nullable Uri voicemailUri) {
+ if (!Objects.equals(voicemailUri, mVoicemailUri)) {
+ return;
+ }
+ if (isArchiving(voicemailUri)) {
+ // If expanded card was in the middle of archiving, disable buttons and display message
+ disableUiElements();
+ mDeleteButton.setEnabled(false);
+ mArchiveButton.setColorFilter(getResources().getColor(R.color.setting_disabled_color));
+ mStateText.setText(getString(R.string.voicemail_archiving_content));
+ } else {
+ onVoicemailArchiveResult();
+ }
+ }
+
+ /**
+ * Hides the archive button if the voicemail has already been archived, shows otherwise.
+ * @param voicemailUri the URI of the voicemail for which the archive button needs to be updated
+ */
+ private void updateArchiveButton(@Nullable final Uri voicemailUri) {
+ if (voicemailUri == null ||
+ !Objects.equals(voicemailUri, mVoicemailUri) || isArchiving(voicemailUri) ||
+ Objects.equals(voicemailUri.getAuthority(),VoicemailArchiveContract.AUTHORITY)) {
+ return;
+ }
+ mAsyncTaskExecutor.submit(Tasks.QUERY_ARCHIVED_STATUS,
+ new AsyncTask<Void, Void, Boolean>() {
+ @Override
+ public Boolean doInBackground(Void... params) {
+ Cursor cursor = mContext.getContentResolver().query(VoicemailArchive.CONTENT_URI,
+ null, VoicemailArchive.SERVER_ID + "=" + ContentUris.parseId(mVoicemailUri)
+ + " AND " + VoicemailArchive.ARCHIVED + "= 1", null, null);
+ boolean archived = cursor != null && cursor.getCount() > 0;
+ cursor.close();
+ return archived;
+ }
+
+ @Override
+ public void onPostExecute(Boolean archived) {
+ if (!Objects.equals(voicemailUri, mVoicemailUri)) {
+ return;
+ }
+
+ if (archived) {
+ hideArchiveButton();
+ } else {
+ mArchiveButton.setVisibility(View.VISIBLE);
+ mArchiveButton.setClickable(true);
+ mArchiveButton.setEnabled(true);
+ }
+
+ }
+ });
+ }
+
@VisibleForTesting
public String getStateText() {
return mStateText.getText().toString();
diff --git a/src/com/android/dialer/voicemail/VoicemailPlaybackPresenter.java b/src/com/android/dialer/voicemail/VoicemailPlaybackPresenter.java
index 2bb4de9..3151a5e 100644
--- a/src/com/android/dialer/voicemail/VoicemailPlaybackPresenter.java
+++ b/src/com/android/dialer/voicemail/VoicemailPlaybackPresenter.java
@@ -16,38 +16,47 @@
package com.android.dialer.voicemail;
+import com.google.common.annotations.VisibleForTesting;
+
import android.app.Activity;
+import android.content.ContentUris;
+import android.content.ContentValues;
import android.content.Context;
import android.content.ContentResolver;
+import android.content.Context;
import android.content.Intent;
import android.database.ContentObserver;
import android.database.Cursor;
-import android.media.AudioManager;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.os.PowerManager;
+import android.provider.CallLog;
import android.provider.VoicemailContract;
+import android.support.annotation.Nullable;
import android.util.Log;
-import android.view.View;
import android.view.WindowManager.LayoutParams;
-import android.widget.SeekBar;
-import com.android.dialer.R;
import com.android.dialer.calllog.CallLogAsyncTaskUtil;
+import com.android.dialer.calllog.CallLogQuery;
+import com.android.dialer.database.VoicemailArchiveContract;
import com.android.dialer.util.AsyncTaskExecutor;
import com.android.dialer.util.AsyncTaskExecutors;
import com.android.common.io.MoreCloseables;
+import com.android.dialer.util.TelecomUtil;
import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Preconditions;
-
+import com.google.common.io.ByteStreams;
import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.List;
import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.RejectedExecutionException;
-import java.util.concurrent.ScheduledFuture;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
@@ -71,7 +80,7 @@
public class VoicemailPlaybackPresenter implements MediaPlayer.OnPreparedListener,
MediaPlayer.OnCompletionListener, MediaPlayer.OnErrorListener {
- private static final String TAG = VoicemailPlaybackPresenter.class.getSimpleName();
+ private static final String TAG = "VmPlaybackPresenter";
/** Contract describing the behaviour we need from the ui we are controlling. */
public interface PlaybackView {
@@ -85,6 +94,8 @@
void setClipPosition(int clipPositionInMillis, int clipLengthInMillis);
void setFetchContentTimeout();
void setIsFetchingContent();
+ void onVoicemailArchiveSucceded(Uri voicemailUri);
+ void onVoicemailArchiveFailed(Uri voicemailUri);
void setPresenter(VoicemailPlaybackPresenter presenter, Uri voicemailUri);
void resetSeekBar();
}
@@ -99,6 +110,11 @@
public enum Tasks {
CHECK_FOR_CONTENT,
CHECK_CONTENT_AFTER_CHANGE,
+ ARCHIVE_VOICEMAIL
+ }
+
+ protected interface OnContentCheckedListener {
+ void onContentChecked(boolean hasContent);
}
private static final String[] HAS_CONTENT_PROJECTION = new String[] {
@@ -122,6 +138,8 @@
VoicemailPlaybackPresenter.class.getName() + ".CLIP_POSITION_KEY";
private static final String IS_SPEAKERPHONE_ON_KEY =
VoicemailPlaybackPresenter.class.getName() + ".IS_SPEAKER_PHONE_ON";
+ public static final int PLAYBACK_REQUEST = 0;
+ public static final int ARCHIVE_REQUEST = 1;
/**
* The most recently cached duration. We cache this since we don't want to keep requesting it
@@ -133,11 +151,11 @@
private static VoicemailPlaybackPresenter sInstance;
private Activity mActivity;
- private Context mContext;
+ protected Context mContext;
private PlaybackView mView;
- private Uri mVoicemailUri;
+ protected Uri mVoicemailUri;
- private MediaPlayer mMediaPlayer;
+ protected MediaPlayer mMediaPlayer;
private int mPosition;
private boolean mIsPlaying;
// MediaPlayer crashes on some method calls if not prepared but does not have a method which
@@ -149,7 +167,7 @@
private int mInitialOrientation;
// Used to run async tasks that need to interact with the UI.
- private AsyncTaskExecutor mAsyncTaskExecutor;
+ protected AsyncTaskExecutor mAsyncTaskExecutor;
private static ScheduledExecutorService mScheduledExecutorService;
/**
* Used to handle the result of a successful or time-out fetch result.
@@ -157,6 +175,7 @@
* This variable is thread-contained, accessed only on the ui thread.
*/
private FetchResultHandler mFetchResultHandler;
+ private final List<FetchResultHandler> mArchiveResultHandlers = new ArrayList<>();
private Handler mHandler = new Handler();
private PowerManager.WakeLock mProximityWakeLock;
private VoicemailAudioManager mVoicemailAudioManager;
@@ -185,11 +204,10 @@
/**
* Initialize variables which are activity-independent and state-independent.
*/
- private VoicemailPlaybackPresenter(Activity activity) {
+ protected VoicemailPlaybackPresenter(Activity activity) {
Context context = activity.getApplicationContext();
mAsyncTaskExecutor = AsyncTaskExecutors.createAsyncTaskExecutor();
mVoicemailAudioManager = new VoicemailAudioManager(context, this);
-
PowerManager powerManager =
(PowerManager) context.getSystemService(Context.POWER_SERVICE);
if (powerManager.isWakeLockLevelSupported(PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK)) {
@@ -201,7 +219,7 @@
/**
* Update variables which are activity-dependent or state-dependent.
*/
- private void init(Activity activity, Bundle savedInstanceState) {
+ protected void init(Activity activity, Bundle savedInstanceState) {
mActivity = activity;
mContext = activity;
@@ -263,8 +281,22 @@
// Update the view to the current speakerphone state.
mView.onSpeakerphoneOn(mIsSpeakerphoneOn);
}
-
- checkForContent();
+ /*
+ * Check to see if the content field in the DB is set. If set, we proceed to
+ * prepareContent() method. We get the duration of the voicemail from the query and set
+ * it if the content is not available.
+ */
+ checkForContent(new OnContentCheckedListener() {
+ @Override
+ public void onContentChecked(boolean hasContent) {
+ if (hasContent) {
+ prepareContent();
+ } else if (mView != null) {
+ mView.resetSeekBar();
+ mView.setClipPosition(0, mDuration.get());
+ }
+ }
+ });
if (startPlayingImmediately) {
// Since setPlaybackView can get called during the view binding process, we don't
@@ -360,6 +392,13 @@
mScheduledExecutorService = null;
}
+ if (!mArchiveResultHandlers.isEmpty()) {
+ for (FetchResultHandler fetchResultHandler : mArchiveResultHandlers) {
+ fetchResultHandler.destroy();
+ }
+ mArchiveResultHandlers.clear();
+ }
+
if (mFetchResultHandler != null) {
mFetchResultHandler.destroy();
mFetchResultHandler = null;
@@ -368,15 +407,8 @@
/**
* Checks to see if we have content available for this voicemail.
- * <p>
- * This method will be called once, after the fragment has been created, before we know if the
- * voicemail we've been asked to play has any content available.
- * <p>
- * Notify the user that we are fetching the content, then check to see if the content field in
- * the DB is set. If set, we proceed to {@link #prepareContent()} method. We get the duration of
- * the voicemail from the query and set it if the content is not available.
*/
- private void checkForContent() {
+ protected void checkForContent(final OnContentCheckedListener callback) {
mAsyncTaskExecutor.submit(Tasks.CHECK_FOR_CONTENT, new AsyncTask<Void, Void, Boolean>() {
@Override
public Boolean doInBackground(Void... params) {
@@ -385,12 +417,7 @@
@Override
public void onPostExecute(Boolean hasContent) {
- if (hasContent) {
- prepareContent();
- } else if (mView != null) {
- mView.resetSeekBar();
- mView.setClipPosition(0, mDuration.get());
- }
+ callback.onContentChecked(hasContent);
}
});
}
@@ -433,19 +460,27 @@
*
* @return whether issued request to fetch content
*/
- private boolean requestContent() {
+ protected boolean requestContent(int code) {
if (mContext == null || mVoicemailUri == null) {
return false;
}
- if (mFetchResultHandler != null) {
- mFetchResultHandler.destroy();
+ FetchResultHandler tempFetchResultHandler =
+ new FetchResultHandler(new Handler(), mVoicemailUri, code);
+
+ switch (code) {
+ case ARCHIVE_REQUEST:
+ mArchiveResultHandlers.add(tempFetchResultHandler);
+ break;
+ default:
+ if (mFetchResultHandler != null) {
+ mFetchResultHandler.destroy();
+ }
+ mView.setIsFetchingContent();
+ mFetchResultHandler = tempFetchResultHandler;
+ break;
}
- mFetchResultHandler = new FetchResultHandler(new Handler(), mVoicemailUri);
-
- mView.setIsFetchingContent();
-
// Send voicemail fetch request.
Intent intent = new Intent(VoicemailContract.ACTION_FETCH_VOICEMAIL, mVoicemailUri);
mContext.sendBroadcast(intent);
@@ -456,14 +491,18 @@
private class FetchResultHandler extends ContentObserver implements Runnable {
private AtomicBoolean mIsWaitingForResult = new AtomicBoolean(true);
private final Handler mFetchResultHandler;
+ private final Uri mVoicemailUri;
+ private final int mRequestCode;
+ private Uri mArchivedVoicemailUri;
- public FetchResultHandler(Handler handler, Uri voicemailUri) {
+ public FetchResultHandler(Handler handler, Uri uri, int code) {
super(handler);
mFetchResultHandler = handler;
-
+ mRequestCode = code;
+ mVoicemailUri = uri;
if (mContext != null) {
mContext.getContentResolver().registerContentObserver(
- voicemailUri, false, this);
+ mVoicemailUri, false, this);
mFetchResultHandler.postDelayed(this, FETCH_CONTENT_TIMEOUT_MS);
}
}
@@ -476,7 +515,11 @@
if (mIsWaitingForResult.getAndSet(false) && mContext != null) {
mContext.getContentResolver().unregisterContentObserver(this);
if (mView != null) {
- mView.setFetchContentTimeout();
+ if (mRequestCode == ARCHIVE_REQUEST) {
+ notifyUiOfArchiveResult(mVoicemailUri, false);
+ } else {
+ mView.setFetchContentTimeout();
+ }
}
}
}
@@ -492,9 +535,16 @@
public void onChange(boolean selfChange) {
mAsyncTaskExecutor.submit(Tasks.CHECK_CONTENT_AFTER_CHANGE,
new AsyncTask<Void, Void, Boolean>() {
+
@Override
public Boolean doInBackground(Void... params) {
- return queryHasContent(mVoicemailUri);
+ boolean hasContent = queryHasContent(mVoicemailUri);
+ if (hasContent && mRequestCode == ARCHIVE_REQUEST) {
+ mArchivedVoicemailUri =
+ performArchiveVoicemailOnBackgroundThread(mVoicemailUri, true);
+ return mArchivedVoicemailUri != null;
+ }
+ return hasContent;
}
@Override
@@ -502,7 +552,12 @@
if (hasContent && mContext != null && mIsWaitingForResult.getAndSet(false)) {
mContext.getContentResolver().unregisterContentObserver(
FetchResultHandler.this);
- prepareContent();
+ switch (mRequestCode) {
+ case ARCHIVE_REQUEST:
+ notifyUiOfArchiveResult(mVoicemailUri, true);
+ default:
+ prepareContent();
+ }
}
}
});
@@ -517,7 +572,7 @@
* media player. If preparation is successful, the media player will {@link #onPrepared()},
* and it will call {@link #onError()} otherwise.
*/
- private void prepareContent() {
+ protected void prepareContent() {
if (mView == null) {
return;
}
@@ -559,10 +614,8 @@
mIsPrepared = true;
// Update the duration in the database if it was not previously retrieved
- if (mDuration.get() == 0) {
- CallLogAsyncTaskUtil.updateVoicemailDuration(mContext, mVoicemailUri,
- mMediaPlayer.getDuration() / 1000);
- }
+ CallLogAsyncTaskUtil.updateVoicemailDuration(mContext, mVoicemailUri,
+ TimeUnit.MILLISECONDS.toSeconds(mMediaPlayer.getDuration()));
mDuration.set(mMediaPlayer.getDuration());
@@ -588,7 +641,7 @@
return true;
}
- private void handleError(Exception e) {
+ protected void handleError(Exception e) {
Log.d(TAG, "handleError: Could not play voicemail " + e);
if (mIsPrepared) {
@@ -648,8 +701,25 @@
}
if (!mIsPrepared) {
- // If we haven't downloaded the voicemail yet, attempt to download it.
- mIsPlaying = requestContent();
+ /*
+ * Check content before requesting content to avoid duplicated requests. It is possible
+ * that the UI doesn't know content has arrived if the fetch took too long causing a
+ * timeout, but succeeded.
+ */
+ checkForContent(new OnContentCheckedListener() {
+ @Override
+ public void onContentChecked(boolean hasContent) {
+ if (!hasContent) {
+ // No local content, download from server. Queue playing if the request was
+ // issued,
+ mIsPlaying = requestContent(PLAYBACK_REQUEST);
+ } else {
+ // Queue playing once the media play loaded the content.
+ mIsPlaying = true;
+ prepareContent();
+ }
+ }
+ });
return;
}
@@ -725,6 +795,15 @@
}
}
+ /**
+ * Seek to position. This is called when user manually seek the playback. It could be either
+ * by touch or volume button while in talkback mode.
+ * @param position
+ */
+ public void seek(int position) {
+ mPosition = position;
+ }
+
private void enableProximitySensor() {
if (mProximityWakeLock == null || mIsSpeakerphoneOn || !mIsPrepared
|| mMediaPlayer == null || !mMediaPlayer.isPlaying()) {
@@ -800,6 +879,17 @@
return mIsPrepared && mMediaPlayer != null ? mMediaPlayer.getCurrentPosition() : 0;
}
+ public void notifyUiOfArchiveResult(Uri voicemailUri, boolean archived) {
+ if (mView == null) {
+ return;
+ }
+ if (archived) {
+ mView.onVoicemailArchiveSucceded(voicemailUri);
+ } else {
+ mView.onVoicemailArchiveFailed(voicemailUri);
+ }
+ }
+
/* package */ void onVoicemailDeleted() {
// Trampoline the event notification to the interested listener.
if (mOnVoicemailDeletedListener != null) {
@@ -828,6 +918,154 @@
return mScheduledExecutorService;
}
+ /**
+ * If voicemail has already been downloaded, go straight to archiving. Otherwise, request
+ * the voicemail content first.
+ */
+ public void archiveContent(Uri voicemailUri, boolean archivedByUser) {
+ if (!mIsPrepared) {
+ requestContent(ARCHIVE_REQUEST);
+ } else {
+ startArchiveVoicemailTask(voicemailUri, archivedByUser);
+ }
+ }
+
+ /**
+ * Asynchronous task used to archive a voicemail given its uri.
+ */
+ private void startArchiveVoicemailTask(final Uri voicemailUri, final boolean archivedByUser) {
+ mAsyncTaskExecutor.submit(Tasks.ARCHIVE_VOICEMAIL, new AsyncTask<Void, Void, Uri>() {
+ @Override
+ public Uri doInBackground(Void... params) {
+ return performArchiveVoicemailOnBackgroundThread(voicemailUri, archivedByUser);
+ }
+
+ @Override
+ public void onPostExecute(Uri archivedVoicemailUri) {
+ notifyUiOfArchiveResult(voicemailUri, archivedVoicemailUri != null);
+ }
+ });
+ }
+
+ /**
+ * Copy the voicemail information to the local dialer database, and copy
+ * the voicemail content to a local file in the dialer application's
+ * internal storage (voicemails directory).
+ *
+ * @param voicemailUri the uri of the voicemail to archive
+ * @return If archive was successful, archived voicemail URI, otherwise null.
+ */
+ private Uri performArchiveVoicemailOnBackgroundThread(Uri voicemailUri,
+ boolean archivedByUser) {
+ Cursor callLogInfo = mContext.getContentResolver().query(
+ ContentUris.withAppendedId(CallLog.Calls.CONTENT_URI_WITH_VOICEMAIL,
+ ContentUris.parseId(mVoicemailUri)),
+ CallLogQuery._PROJECTION, null, null, null);
+ Cursor contentInfo = mContext.getContentResolver().query(
+ voicemailUri, null, null, null, null);
+
+ if (callLogInfo == null || contentInfo == null) {
+ return null;
+ }
+
+ callLogInfo.moveToFirst();
+ contentInfo.moveToFirst();
+
+ // Create values to insert into database
+ ContentValues values = new ContentValues();
+ values.put(VoicemailArchiveContract.VoicemailArchive.NUMBER,
+ contentInfo.getString(contentInfo.getColumnIndex(
+ VoicemailContract.Voicemails.NUMBER)));
+
+ values.put(VoicemailArchiveContract.VoicemailArchive.DATE,
+ contentInfo.getLong(contentInfo.getColumnIndex(
+ VoicemailContract.Voicemails.DATE)));
+
+ values.put(VoicemailArchiveContract.VoicemailArchive.DURATION,
+ contentInfo.getLong(contentInfo.getColumnIndex(
+ VoicemailContract.Voicemails.DURATION)));
+
+ values.put(VoicemailArchiveContract.VoicemailArchive.MIME_TYPE,
+ contentInfo.getString(contentInfo.getColumnIndex(
+ VoicemailContract.Voicemails.MIME_TYPE)));
+
+ values.put(VoicemailArchiveContract.VoicemailArchive.COUNTRY_ISO,
+ callLogInfo.getString(CallLogQuery.COUNTRY_ISO));
+
+ values.put(VoicemailArchiveContract.VoicemailArchive.GEOCODED_LOCATION,
+ callLogInfo.getString(CallLogQuery.GEOCODED_LOCATION));
+
+ values.put(VoicemailArchiveContract.VoicemailArchive.CACHED_NAME,
+ callLogInfo.getString(CallLogQuery.CACHED_NAME));
+
+ values.put(VoicemailArchiveContract.VoicemailArchive.CACHED_NUMBER_TYPE,
+ callLogInfo.getInt(CallLogQuery.CACHED_NUMBER_TYPE));
+
+ values.put(VoicemailArchiveContract.VoicemailArchive.CACHED_NUMBER_LABEL,
+ callLogInfo.getString(CallLogQuery.CACHED_NUMBER_LABEL));
+
+ values.put(VoicemailArchiveContract.VoicemailArchive.CACHED_LOOKUP_URI,
+ callLogInfo.getString(CallLogQuery.CACHED_LOOKUP_URI));
+
+ values.put(VoicemailArchiveContract.VoicemailArchive.CACHED_MATCHED_NUMBER,
+ callLogInfo.getString(CallLogQuery.CACHED_MATCHED_NUMBER));
+
+ values.put(VoicemailArchiveContract.VoicemailArchive.CACHED_NORMALIZED_NUMBER,
+ callLogInfo.getString(CallLogQuery.CACHED_NORMALIZED_NUMBER));
+
+ values.put(VoicemailArchiveContract.VoicemailArchive.CACHED_FORMATTED_NUMBER,
+ callLogInfo.getString(CallLogQuery.CACHED_FORMATTED_NUMBER));
+
+ values.put(VoicemailArchiveContract.VoicemailArchive.ARCHIVED, archivedByUser);
+
+ values.put(VoicemailArchiveContract.VoicemailArchive.NUMBER_PRESENTATION,
+ callLogInfo.getInt(CallLogQuery.NUMBER_PRESENTATION));
+
+ values.put(VoicemailArchiveContract.VoicemailArchive.ACCOUNT_COMPONENT_NAME,
+ callLogInfo.getString(CallLogQuery.ACCOUNT_COMPONENT_NAME));
+
+ values.put(VoicemailArchiveContract.VoicemailArchive.ACCOUNT_ID,
+ callLogInfo.getString(CallLogQuery.ACCOUNT_ID));
+
+ values.put(VoicemailArchiveContract.VoicemailArchive.FEATURES,
+ callLogInfo.getInt(CallLogQuery.FEATURES));
+
+ values.put(VoicemailArchiveContract.VoicemailArchive.SERVER_ID,
+ contentInfo.getInt(contentInfo.getColumnIndex(
+ VoicemailContract.Voicemails._ID)));
+
+ values.put(VoicemailArchiveContract.VoicemailArchive.TRANSCRIPTION,
+ contentInfo.getString(contentInfo.getColumnIndex(
+ VoicemailContract.Voicemails.TRANSCRIPTION)));
+
+ values.put(VoicemailArchiveContract.VoicemailArchive.CACHED_PHOTO_URI,
+ callLogInfo.getLong(CallLogQuery.CACHED_PHOTO_URI));
+
+ callLogInfo.close();
+ contentInfo.close();
+
+ // Insert info into dialer database
+ Uri archivedVoicemailUri = mContext.getContentResolver().insert(
+ VoicemailArchiveContract.VoicemailArchive.CONTENT_URI, values);
+ try {
+ // Copy voicemail content to a local file
+ InputStream inputStream = mContext.getContentResolver()
+ .openInputStream(voicemailUri);
+ OutputStream outputStream = mContext.getContentResolver()
+ .openOutputStream(archivedVoicemailUri);
+
+ ByteStreams.copy(inputStream, outputStream);
+ inputStream.close();
+ outputStream.close();
+ } catch (IOException e) {
+ // Roll back insert if new file creation failed
+ mContext.getContentResolver().delete(archivedVoicemailUri, null, null);
+ Log.w(TAG, "Failed to copy voicemail content to temporary file");
+ return null;
+ }
+ return archivedVoicemailUri;
+ }
+
@VisibleForTesting
public boolean isPlaying() {
return mIsPlaying;
diff --git a/src/com/android/dialerbind/ObjectFactory.java b/src/com/android/dialerbind/ObjectFactory.java
index 31255a2..4568c1b 100644
--- a/src/com/android/dialerbind/ObjectFactory.java
+++ b/src/com/android/dialerbind/ObjectFactory.java
@@ -62,13 +62,13 @@
CallFetcher callFetcher,
ContactInfoHelper contactInfoHelper,
VoicemailPlaybackPresenter voicemailPlaybackPresenter,
- boolean isCallLogActivity) {
+ int activityType) {
return new CallLogAdapter(
context,
callFetcher,
contactInfoHelper,
voicemailPlaybackPresenter,
- isCallLogActivity);
+ activityType);
}
public static Logger getLoggerInstance() {
diff --git a/tests/src/com/android/dialer/calllog/CallLogAdapterTest.java b/tests/src/com/android/dialer/calllog/CallLogAdapterTest.java
index 80dfe35..e801311 100644
--- a/tests/src/com/android/dialer/calllog/CallLogAdapterTest.java
+++ b/tests/src/com/android/dialer/calllog/CallLogAdapterTest.java
@@ -31,6 +31,7 @@
import com.android.contacts.common.preference.ContactsPreferences;
import com.android.dialer.contactinfo.ContactInfoCache;
+import com.android.dialer.database.VoicemailArchiveContract;
import com.android.dialer.util.AppCompatConstants;
import com.android.dialer.util.TestConstants;
import com.google.common.collect.Lists;
@@ -49,6 +50,7 @@
public class CallLogAdapterTest extends AndroidTestCase {
private static final String EMPTY_STRING = "";
private static final int NO_VALUE_SET = -1;
+ private static final int ARCHIVE_TYPE = -2;
private static final String TEST_CACHED_NAME_PRIMARY = "Cached Name";
private static final String TEST_CACHED_NAME_ALTERNATIVE = "Name Cached";
@@ -74,12 +76,11 @@
private View mView;
private CallLogListItemViewHolder mViewHolder;
- private Random mRandom;
+ private final Random mRandom = new Random();
@Override
protected void setUp() throws Exception {
super.setUp();
- mRandom = new Random();
// Use a call fetcher that does not do anything.
CallLogAdapter.CallFetcher fakeCallFetcher = new CallLogAdapter.CallFetcher() {
@@ -98,7 +99,8 @@
}
};
- mAdapter = new TestCallLogAdapter(getContext(), fakeCallFetcher, fakeContactInfoHelper);
+ mAdapter = new TestCallLogAdapter(getContext(), fakeCallFetcher, fakeContactInfoHelper,
+ CallLogAdapter.ACTIVITY_TYPE_DIALTACTS);
// The cursor used in the tests to store the entries to display.
mCursor = new MatrixCursor(CallLogQuery._PROJECTION);
@@ -108,13 +110,6 @@
mViewHolder = CallLogListItemViewHolder.createForTest(getContext());
}
- @Override
- protected void tearDown() throws Exception {
- mAdapter = null;
- mCursor = null;
- super.tearDown();
- }
-
@MediumTest
public void testBindView_NumberOnlyNoCache() {
createCallLogEntry();
@@ -547,6 +542,19 @@
assertEquals(TEST_NUMBER_3, mViewHolder.number);
}
+ public void testVoicemailArchive() {
+ setUpArchiveAdapter();
+ createVoicemailArchiveCallLogEntry();
+
+ mAdapter.changeCursorVoicemail(mCursor);
+ mAdapter.onBindViewHolder(mViewHolder, 0);
+
+ assertEquals(Uri.parse(mViewHolder.voicemailUri),
+ ContentUris.withAppendedId(
+ VoicemailArchiveContract.VoicemailArchive.CONTENT_URI, 0));
+ assertNull(mViewHolder.primaryActionButtonView.getTag());
+ }
+
private void createCallLogEntry() {
createCallLogEntry(TEST_NUMBER);
}
@@ -575,6 +583,10 @@
createCallLogEntry(TEST_NUMBER, EMPTY_STRING, NO_VALUE_SET, Calls.VOICEMAIL_TYPE);
}
+ private void createVoicemailArchiveCallLogEntry() {
+ createCallLogEntry(TEST_NUMBER, EMPTY_STRING, NO_VALUE_SET, ARCHIVE_TYPE);
+ }
+
private void createCallLogEntry(String number, String postDialDigits, int presentation, int type) {
Object[] values = getValues(number, postDialDigits, presentation, type);
mCursor.addRow(values);
@@ -674,6 +686,10 @@
values[CallLogQuery.VOICEMAIL_URI] = ContentUris.withAppendedId(
VoicemailContract.Voicemails.CONTENT_URI, mCursor.getCount());
}
+ if (type == ARCHIVE_TYPE) {
+ values[CallLogQuery.VOICEMAIL_URI] = ContentUris.withAppendedId(
+ VoicemailArchiveContract.VoicemailArchive.CONTENT_URI, mCursor.getCount());
+ }
return values;
}
@@ -739,11 +755,34 @@
return Phone.getTypeLabel(getContext().getResources(), phoneType, "");
}
+ private void setUpArchiveAdapter() {
+ // Use a call fetcher that does not do anything.
+ CallLogAdapter.CallFetcher fakeCallFetcher = new CallLogAdapter.CallFetcher() {
+ @Override
+ public void fetchCalls() {}
+ };
+
+ ContactInfoHelper fakeContactInfoHelper =
+ new ContactInfoHelper(getContext(), TEST_COUNTRY_ISO) {
+ @Override
+ public ContactInfo lookupNumber(String number, String countryIso) {
+ ContactInfo info = new ContactInfo();
+ info.number = number;
+ info.formattedNumber = number;
+ return info;
+ }
+ };
+
+ mAdapter = new TestCallLogAdapter(getContext(), fakeCallFetcher, fakeContactInfoHelper,
+ CallLogAdapter.ACTIVITY_TYPE_ARCHIVE);
+ }
+
/// Subclass of {@link CallLogAdapter} used in tests to intercept certain calls.
private static final class TestCallLogAdapter extends CallLogAdapter {
public TestCallLogAdapter(Context context, CallFetcher callFetcher,
- ContactInfoHelper contactInfoHelper) {
- super(context, callFetcher, contactInfoHelper, null, false);
+ ContactInfoHelper contactInfoHelper, int mActivity) {
+ super(context, callFetcher, contactInfoHelper, null,
+ mActivity);
mContactInfoCache = new TestContactInfoCache(
contactInfoHelper, mOnContactInfoChangedListener);
}
diff --git a/tests/src/com/android/dialer/calllog/CallLogGroupBuilderTest.java b/tests/src/com/android/dialer/calllog/CallLogGroupBuilderTest.java
index 04463c2..c31c38e 100644
--- a/tests/src/com/android/dialer/calllog/CallLogGroupBuilderTest.java
+++ b/tests/src/com/android/dialer/calllog/CallLogGroupBuilderTest.java
@@ -129,6 +129,18 @@
AppCompatConstants.CALLS_VOICEMAIL_TYPE, AppCompatConstants.CALLS_OUTGOING_TYPE);
}
+ public void testGrouping_VoicemailArchive() {
+ // Does not group with other types of calls, include voicemail themselves.
+ assertVoicemailsAreNotGrouped(
+ AppCompatConstants.CALLS_VOICEMAIL_TYPE, AppCompatConstants.CALLS_MISSED_TYPE);
+ assertVoicemailsAreNotGrouped(
+ AppCompatConstants.CALLS_VOICEMAIL_TYPE, AppCompatConstants.CALLS_VOICEMAIL_TYPE);
+ assertVoicemailsAreNotGrouped(
+ AppCompatConstants.CALLS_VOICEMAIL_TYPE, AppCompatConstants.CALLS_INCOMING_TYPE);
+ assertVoicemailsAreNotGrouped(
+ AppCompatConstants.CALLS_VOICEMAIL_TYPE, AppCompatConstants.CALLS_OUTGOING_TYPE);
+ }
+
public void testGrouping_Missed() {
// Groups with one or more missed calls.
assertCallsAreGrouped(
@@ -198,6 +210,21 @@
}
+ public void testAddGroups_Separate() {
+ addMultipleCallLogEntries(TEST_NUMBER1,
+ AppCompatConstants.CALLS_VOICEMAIL_TYPE, // Group 1: 0
+ AppCompatConstants.CALLS_INCOMING_TYPE, // Group 2: 1
+ AppCompatConstants.CALLS_OUTGOING_TYPE, // Group 3: 2
+ AppCompatConstants.CALLS_MISSED_TYPE); // Group 4: 3
+ mBuilder.addVoicemailGroups(mCursor);
+
+ assertEquals(4, mFakeGroupCreator.groups.size());
+ assertGroupIs(0, 1, mFakeGroupCreator.groups.get(0));
+ assertGroupIs(1, 1, mFakeGroupCreator.groups.get(1));
+ assertGroupIs(2, 1, mFakeGroupCreator.groups.get(2));
+ assertGroupIs(3, 1, mFakeGroupCreator.groups.get(3));
+ }
+
public void testAddGroups_Mixed() {
addMultipleCallLogEntries(TEST_NUMBER1,
AppCompatConstants.CALLS_VOICEMAIL_TYPE, // Group 1: 0
@@ -326,6 +353,15 @@
assertEquals(types.length, mFakeGroupCreator.groups.size());
}
+ /** Asserts that voicemails are not grouped together with other types at all. */
+ private void assertVoicemailsAreNotGrouped(int... types) {
+ createCursor();
+ clearFakeGroupCreator();
+ addMultipleCallLogEntries(TEST_NUMBER1, types);
+ mBuilder.addVoicemailGroups(mCursor);
+ assertEquals(types.length, mFakeGroupCreator.groups.size());
+ }
+
/** Adds a set of calls with the given types, all from the same number, in the old section. */
private void addMultipleCallLogEntries(String number, int... types) {
for (int type : types) {
diff --git a/tests/src/com/android/dialer/calllog/GroupingListAdapterTests.java b/tests/src/com/android/dialer/calllog/GroupingListAdapterTests.java
index 4d51f72..4d8cb9c 100644
--- a/tests/src/com/android/dialer/calllog/GroupingListAdapterTests.java
+++ b/tests/src/com/android/dialer/calllog/GroupingListAdapterTests.java
@@ -70,6 +70,11 @@
}
@Override
+ protected void addVoicemailGroups(Cursor c) {
+ // Do nothing.
+ }
+
+ @Override
public void onContentChanged() {
// Do nothing.
}
diff --git a/tests/src/com/android/dialer/compat/FilteredNumberCompatTest.java b/tests/src/com/android/dialer/compat/FilteredNumberCompatTest.java
new file mode 100644
index 0000000..b9eb214
--- /dev/null
+++ b/tests/src/com/android/dialer/compat/FilteredNumberCompatTest.java
@@ -0,0 +1,149 @@
+/*
+ * 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.dialer.compat;
+
+import android.content.ContentUris;
+import android.content.ContentValues;
+import android.net.Uri;
+import android.provider.BlockedNumberContract.BlockedNumbers;
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.contacts.common.compat.CompatUtils;
+import com.android.dialer.database.FilteredNumberContract.FilteredNumber;
+import com.android.dialer.database.FilteredNumberContract.FilteredNumberColumns;
+import com.android.dialer.database.FilteredNumberContract.FilteredNumberSources;
+import com.android.dialer.database.FilteredNumberContract.FilteredNumberTypes;
+
+import java.util.Arrays;
+
+@SmallTest
+public class FilteredNumberCompatTest extends AndroidTestCase {
+
+ private static final String E164_NUMBER = "+16502530000";
+ private static final String NON_E164_NUMBER = "6502530000";
+ private static final String COUNTRY_ISO = "US";
+
+ private static final Uri EXPECTED_BASE_URI = CompatUtils.isNCompatible()
+ ? BlockedNumbers.CONTENT_URI : FilteredNumber.CONTENT_URI;
+
+ @Override
+ public void setUp() throws Exception {
+ super.setUp();
+ FilteredNumberCompat.setIsEnabledForTest(true);
+ }
+
+ public void testIsNewFilteringEnabled_TestValueFalse() {
+ FilteredNumberCompat.setIsEnabledForTest(false);
+ assertFalse(FilteredNumberCompat.useNewFiltering());
+ }
+
+ public void testIsNewFilteringEnabled_TestValueTrue() {
+ FilteredNumberCompat.setIsEnabledForTest(true);
+ assertEquals(CompatUtils.isNCompatible(), FilteredNumberCompat.useNewFiltering());
+ }
+
+ public void testGetContentUri_NullId() {
+ assertEquals(EXPECTED_BASE_URI, FilteredNumberCompat.getContentUri(null));
+ }
+
+ public void testGetContentUri() {
+ assertEquals(ContentUris.withAppendedId(EXPECTED_BASE_URI, 1),
+ FilteredNumberCompat.getContentUri(1));
+ }
+
+ public void testFilter_NullProjection() {
+ assertNull(FilteredNumberCompat.filter(null));
+ }
+
+ public void testFilter_NoNulls() {
+ assertArrayEquals(new String[] {"a", "b", "c"},
+ FilteredNumberCompat.filter(new String[] {"a", "b", "c"}));
+ }
+
+ public void testFilter_WithNulls() {
+ assertArrayEquals(new String[] {"a", "b"},
+ FilteredNumberCompat.filter(new String[] {"a", null, "b"}));
+ }
+
+ public void testNewBlockNumberContentValues_NullNumber() {
+ try {
+ FilteredNumberCompat.newBlockNumberContentValues(null, null, null);
+ fail();
+ } catch (NullPointerException e) {}
+ }
+
+ public void testNewBlockNumberContentValues_N() {
+ if (!CompatUtils.isNCompatible()) {
+ return;
+ }
+ ContentValues contentValues = new ContentValues();
+ contentValues.put(BlockedNumbers.COLUMN_ORIGINAL_NUMBER, NON_E164_NUMBER);
+ assertEquals(contentValues, FilteredNumberCompat.newBlockNumberContentValues(
+ NON_E164_NUMBER,
+ null, null));
+ }
+
+ public void testNewBlockNumberContentValues_N_Disabled() {
+ if (!CompatUtils.isNCompatible()) {
+ return;
+ }
+ FilteredNumberCompat.setIsEnabledForTest(false);
+ assertEquals(newExpectedContentValuesM(NON_E164_NUMBER, E164_NUMBER, COUNTRY_ISO),
+ FilteredNumberCompat.newBlockNumberContentValues(NON_E164_NUMBER, E164_NUMBER, COUNTRY_ISO));
+ }
+
+ public void testNewBlockNumberContentValues_M_NullE164() {
+ if (CompatUtils.isNCompatible()) {
+ return;
+ }
+ assertEquals(newExpectedContentValuesM(NON_E164_NUMBER, E164_NUMBER, COUNTRY_ISO),
+ FilteredNumberCompat.newBlockNumberContentValues(NON_E164_NUMBER, null, COUNTRY_ISO));
+ }
+
+ public void testNewBlockNumberContentValues_M_NullCountryIso() {
+ if (CompatUtils.isNCompatible()) {
+ return;
+ }
+ assertEquals(newExpectedContentValuesM(NON_E164_NUMBER, E164_NUMBER, null),
+ FilteredNumberCompat.newBlockNumberContentValues(NON_E164_NUMBER, E164_NUMBER, null));
+ }
+
+ public void testNewBlockNumberContentValues_M_NullE164AndCountryIso() {
+ if (CompatUtils.isNCompatible()) {
+ return;
+ }
+ // Number can't be formatted properly without country code
+ assertEquals(newExpectedContentValuesM(NON_E164_NUMBER, null, null),
+ FilteredNumberCompat.newBlockNumberContentValues(NON_E164_NUMBER, null, null));
+ }
+
+ private ContentValues newExpectedContentValuesM(String number, String e164Number,
+ String countryIso) {
+ ContentValues contentValues = new ContentValues();
+ contentValues.put(FilteredNumberColumns.NUMBER, number);
+ contentValues.put(FilteredNumberColumns.NORMALIZED_NUMBER, e164Number);
+ contentValues.put(FilteredNumberColumns.COUNTRY_ISO, countryIso);
+ contentValues.put(FilteredNumberColumns.TYPE, FilteredNumberTypes.BLOCKED_NUMBER);
+ contentValues.put(FilteredNumberColumns.SOURCE, FilteredNumberSources.USER);
+ return contentValues;
+ }
+
+ private void assertArrayEquals(String[] expected, String[] actual) {
+ assertEquals(Arrays.toString(expected), Arrays.toString(actual));
+ }
+}
diff --git a/tests/src/com/android/dialer/database/FilteredNumberAsyncQueryHandlerTest.java b/tests/src/com/android/dialer/database/FilteredNumberAsyncQueryHandlerTest.java
index 6bb478e..28fdda0 100644
--- a/tests/src/com/android/dialer/database/FilteredNumberAsyncQueryHandlerTest.java
+++ b/tests/src/com/android/dialer/database/FilteredNumberAsyncQueryHandlerTest.java
@@ -16,16 +16,23 @@
package com.android.dialer.database;
+import android.content.ContentUris;
import android.content.ContentValues;
import android.net.Uri;
+import android.provider.BlockedNumberContract;
+import android.provider.BlockedNumberContract.BlockedNumbers;
import android.test.InstrumentationTestCase;
import android.test.mock.MockContentResolver;
+import android.test.suitebuilder.annotation.SmallTest;
+import com.android.contacts.common.compat.CompatUtils;
import com.android.contacts.common.test.mocks.MockContentProvider;
import com.android.contacts.common.test.mocks.MockContentProvider.Query;
+import com.android.dialer.compat.FilteredNumberCompat;
import com.android.dialer.database.FilteredNumberAsyncQueryHandler.OnBlockNumberListener;
import com.android.dialer.database.FilteredNumberAsyncQueryHandler.OnCheckBlockedListener;
import com.android.dialer.database.FilteredNumberAsyncQueryHandler.OnHasBlockedNumbersListener;
+import com.android.dialer.database.FilteredNumberAsyncQueryHandler.OnUnblockNumberListener;
import com.android.dialer.database.FilteredNumberContract.FilteredNumberColumns;
import com.android.dialer.database.FilteredNumberContract.FilteredNumberSources;
import com.android.dialer.database.FilteredNumberContract.FilteredNumberTypes;
@@ -33,14 +40,21 @@
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
+@SmallTest
public class FilteredNumberAsyncQueryHandlerTest extends InstrumentationTestCase {
private static final String E164_NUMBER = "+16502530000";
private static final String NUMBER = "6502530000";
private static final String COUNTRY_ISO = "US";
private static final Integer ID = 1;
- private static final Uri BLOCKED_NUMBER_URI =
+ private static final Uri BLOCKED_NUMBER_URI_N = CompatUtils.isNCompatible() ?
+ Uri.withAppendedPath(BlockedNumberContract.AUTHORITY_URI, "blocked") : null;
+ private static final Uri BLOCKED_NUMBER_URI_M =
Uri.withAppendedPath(FilteredNumberContract.AUTHORITY_URI, "filtered_numbers_table");
+ private static final Uri BLOCKED_NUMBER_URI = CompatUtils.isNCompatible() ? BLOCKED_NUMBER_URI_N
+ : BLOCKED_NUMBER_URI_M;
+ private static final Uri BLOCKED_NUMBER_URI_WITH_ID =
+ ContentUris.withAppendedId(BLOCKED_NUMBER_URI, ID);
private static final Uri EXPECTED_URI = Uri.fromParts("android", "google", "dialer");
private final MockContentResolver mContentResolver = new MockContentResolver();
@@ -49,11 +63,89 @@
@Override
public void setUp() throws Exception {
super.setUp();
- mContentResolver.addProvider(FilteredNumberContract.AUTHORITY, mContentProvider);
+ FilteredNumberCompat.setIsEnabledForTest(true);
+ if (CompatUtils.isNCompatible()) {
+ mContentResolver.addProvider(BlockedNumberContract.AUTHORITY, mContentProvider);
+ } else {
+ mContentResolver.addProvider(FilteredNumberContract.AUTHORITY, mContentProvider);
+ }
+ }
+
+ public void testHasBlockedNumbers_Disabled() throws Throwable {
+ if (!CompatUtils.isNCompatible()) {
+ return;
+ }
+ FilteredNumberCompat.setIsEnabledForTest(false);
+ final MockContentResolver resolver = new MockContentResolver();
+ MockContentProvider disabledProvider = new MockContentProvider();
+ resolver.addProvider(FilteredNumberContract.AUTHORITY, disabledProvider);
+
+ disabledProvider.expectQuery(BLOCKED_NUMBER_URI_M).withProjection(FilteredNumberColumns._ID)
+ .withSelection(FilteredNumberColumns.TYPE + "="
+ + FilteredNumberTypes.BLOCKED_NUMBER, null).returnRow(ID);
+ final HasBlockedNumbersListener listener = new HasBlockedNumbersListener();
+ runTestOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ new FilteredNumberAsyncQueryHandler(resolver).hasBlockedNumbers(listener);
+ }
+ });
+ assertTrue(listener.waitForCallback());
+ disabledProvider.verify();
+ }
+
+ public void testHasBlockedNumbers_NoResults() throws Throwable {
+ newHasBlockedNumbersExpectedQuery().returnEmptyCursor();
+ final HasBlockedNumbersListener listener = new HasBlockedNumbersListener();
+ runTestOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ new FilteredNumberAsyncQueryHandler(mContentResolver).hasBlockedNumbers(listener);
+ }
+ });
+ assertFalse(listener.waitForCallback());
+ mContentProvider.verify();
+ }
+
+ public void testHasBlockedNumbers() throws Throwable {
+ newHasBlockedNumbersExpectedQuery().returnRow(ID);
+ final HasBlockedNumbersListener listener = new HasBlockedNumbersListener();
+ runTestOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ new FilteredNumberAsyncQueryHandler(mContentResolver).hasBlockedNumbers(listener);
+ }
+ });
+ assertTrue(listener.waitForCallback());
+ mContentProvider.verify();
+ }
+
+ public void testIsBlockedNumber_Disabled() throws Throwable {
+ if (!CompatUtils.isNCompatible()) {
+ return;
+ }
+ FilteredNumberCompat.setIsEnabledForTest(false);
+ final MockContentResolver resolver = new MockContentResolver();
+ MockContentProvider disabledProvider = new MockContentProvider();
+ resolver.addProvider(FilteredNumberContract.AUTHORITY, disabledProvider);
+ disabledProvider.expectQuery(BLOCKED_NUMBER_URI_M)
+ .withProjection(FilteredNumberColumns._ID, FilteredNumberColumns.TYPE)
+ .withSelection(FilteredNumberColumns.NORMALIZED_NUMBER + " = ?", E164_NUMBER)
+ .returnRow(ID, FilteredNumberTypes.BLOCKED_NUMBER);
+ final CheckBlockedListener listener = new CheckBlockedListener();
+ runTestOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ new FilteredNumberAsyncQueryHandler(resolver)
+ .isBlockedNumber(listener, NUMBER, COUNTRY_ISO);
+ }
+ });
+ assertEquals(ID, listener.waitForCallback());
+ mContentProvider.verify();
}
public void testIsBlockedNumber_NoResults() throws Throwable {
- newIsBlockedNumberExpectedQueryM().returnEmptyCursor();
+ newIsBlockedNumberExpectedQuery().returnEmptyCursor();
final CheckBlockedListener listener = new CheckBlockedListener();
runTestOnUiThread(new Runnable() {
@@ -68,7 +160,11 @@
}
public void testIsBlockedNumber() throws Throwable {
- newIsBlockedNumberExpectedQueryM().returnRow(ID, FilteredNumberTypes.BLOCKED_NUMBER);
+ if (CompatUtils.isNCompatible()) {
+ newIsBlockedNumberExpectedQuery().returnRow(ID);
+ } else {
+ newIsBlockedNumberExpectedQuery().returnRow(ID, FilteredNumberTypes.BLOCKED_NUMBER);
+ }
final CheckBlockedListener listener = new CheckBlockedListener();
runTestOnUiThread(new Runnable() {
@Override
@@ -81,38 +177,145 @@
mContentProvider.verify();
}
- public void testHasBlockedNumbers_NoResults() throws Throwable {
- newHasBlockedNumbersExpectedQueryM().returnEmptyCursor();
- final HasBlockedNumbersListener listener = new HasBlockedNumbersListener();
+ public void testBlockNumber_Disabled() throws Throwable {
+ if (!CompatUtils.isNCompatible()) {
+ return;
+ }
+ FilteredNumberCompat.setIsEnabledForTest(false);
+ final MockContentResolver resolver = new MockContentResolver();
+ MockContentProvider disabledProvider = new MockContentProvider();
+ resolver.addProvider(FilteredNumberContract.AUTHORITY, disabledProvider);
+
+ disabledProvider.expectInsert(BLOCKED_NUMBER_URI_M, newBlockNumberContentValuesM(),
+ EXPECTED_URI);
+ final BlockNumberListener listener = new BlockNumberListener();
runTestOnUiThread(new Runnable() {
@Override
public void run() {
- new FilteredNumberAsyncQueryHandler(mContentResolver).hasBlockedNumbers(listener);
+ new FilteredNumberAsyncQueryHandler(resolver).blockNumber(listener, E164_NUMBER,
+ NUMBER, COUNTRY_ISO);
}
});
- assertFalse(listener.waitForCallback());
+ assertSame(EXPECTED_URI, listener.waitForCallback());
+ disabledProvider.verify();
+ }
+
+ public void testBlockNumber() throws Throwable {
+ mContentProvider.expectInsert(BLOCKED_NUMBER_URI, newBlockNumberContentValues(),
+ EXPECTED_URI);
+ final BlockNumberListener listener = new BlockNumberListener();
+ runTestOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ new FilteredNumberAsyncQueryHandler(mContentResolver).blockNumber(listener,
+ E164_NUMBER, NUMBER, COUNTRY_ISO);
+ }
+ });
+ assertSame(EXPECTED_URI, listener.waitForCallback());
mContentProvider.verify();
}
- public void testHasBlockedNumbers() throws Throwable {
- newHasBlockedNumbersExpectedQueryM().returnRow(ID);
- final HasBlockedNumbersListener listener = new HasBlockedNumbersListener();
+ public void testBlockNumber_NullNormalizedNumber() throws Throwable {
+ mContentProvider.expectInsert(BLOCKED_NUMBER_URI, newBlockNumberContentValues(),
+ EXPECTED_URI);
+ final BlockNumberListener listener = new BlockNumberListener();
runTestOnUiThread(new Runnable() {
@Override
public void run() {
- new FilteredNumberAsyncQueryHandler(mContentResolver).hasBlockedNumbers(listener);
+ new FilteredNumberAsyncQueryHandler(mContentResolver).blockNumber(listener,
+ NUMBER, COUNTRY_ISO);
}
});
- assertTrue(listener.waitForCallback());
+ assertSame(EXPECTED_URI, listener.waitForCallback());
mContentProvider.verify();
}
+ public void testUnblockNumber_Disabled() throws Throwable {
+ if (!CompatUtils.isNCompatible()) {
+ return;
+ }
+ FilteredNumberCompat.setIsEnabledForTest(false);
+ final MockContentResolver resolver = new MockContentResolver();
+ MockContentProvider disabledProvider = new MockContentProvider();
+ resolver.addProvider(FilteredNumberContract.AUTHORITY, disabledProvider);
+
+ Uri uriWithId = ContentUris.withAppendedId(BLOCKED_NUMBER_URI_M, ID);
+ disabledProvider.expectQuery(uriWithId)
+ .withProjection(null)
+ .withDefaultProjection(FilteredNumberCompat.getIdColumnName())
+ .withSelection(null, null)
+ .withSortOrder(null)
+ .returnRow(ID);
+ disabledProvider.expectDelete(uriWithId).returnRowsAffected(1);
+ final UnblockNumberListener listener = new UnblockNumberListener();
+ runTestOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ new FilteredNumberAsyncQueryHandler(resolver).unblock(listener, ID);
+ }
+ });
+ assertNotNull(listener.waitForCallback());
+ disabledProvider.verify();
+ }
+
+ public void testUnblockNumber_NullId() {
+ try {
+ new FilteredNumberAsyncQueryHandler(mContentResolver).unblock(null, (Integer) null);
+ fail();
+ } catch (IllegalArgumentException e) {}
+ }
+
+ public void testUnblockNumber() throws Throwable {
+ mContentProvider.expectQuery(BLOCKED_NUMBER_URI_WITH_ID)
+ .withProjection(null)
+ .withDefaultProjection(FilteredNumberCompat.getIdColumnName())
+ .withSelection(null, null)
+ .withSortOrder(null)
+ .returnRow(ID);
+ mContentProvider.expectDelete(BLOCKED_NUMBER_URI_WITH_ID).returnRowsAffected(1);
+ final UnblockNumberListener listener = new UnblockNumberListener();
+ runTestOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ new FilteredNumberAsyncQueryHandler(mContentResolver).unblock(listener, ID);
+ }
+ });
+ assertNotNull(listener.waitForCallback());
+ mContentProvider.verify();
+ }
+
+ private Query newIsBlockedNumberExpectedQuery() {
+ if (CompatUtils.isNCompatible()) {
+ return newIsBlockedNumberExpectedQueryN();
+ }
+ return newIsBlockedNumberExpectedQueryM();
+ }
+
+ private Query newIsBlockedNumberExpectedQueryN() {
+ return mContentProvider.expectQuery(BLOCKED_NUMBER_URI)
+ .withProjection(BlockedNumbers.COLUMN_ID)
+ .withSelection(BlockedNumbers.COLUMN_E164_NUMBER + " = ?", E164_NUMBER);
+ }
+
private Query newIsBlockedNumberExpectedQueryM() {
return mContentProvider.expectQuery(BLOCKED_NUMBER_URI)
.withProjection(FilteredNumberColumns._ID, FilteredNumberColumns.TYPE)
.withSelection(FilteredNumberColumns.NORMALIZED_NUMBER + " = ?", E164_NUMBER);
}
+ private Query newHasBlockedNumbersExpectedQuery() {
+ if (CompatUtils.isNCompatible()) {
+ return newHasBlockedNumbersExpectedQueryN();
+ }
+ return newHasBlockedNumbersExpectedQueryM();
+ }
+
+ private Query newHasBlockedNumbersExpectedQueryN() {
+ return mContentProvider.expectQuery(BLOCKED_NUMBER_URI)
+ .withProjection(BlockedNumbers.COLUMN_ID)
+ .withSelection(null, null);
+ }
+
private Query newHasBlockedNumbersExpectedQueryM() {
return mContentProvider.expectQuery(BLOCKED_NUMBER_URI).withProjection(
FilteredNumberColumns._ID)
@@ -120,41 +323,20 @@
+ FilteredNumberTypes.BLOCKED_NUMBER, null);
}
- public void testBlockNumber() throws Throwable {
- mContentProvider.expectInsert(BLOCKED_NUMBER_URI, newBlockNumberContentValues(),
- EXPECTED_URI);
- final BlockingArgumentCaptorOnBlockNumberListener listener =
- new BlockingArgumentCaptorOnBlockNumberListener();
- runTestOnUiThread(new Runnable() {
- @Override
- public void run() {
- new FilteredNumberAsyncQueryHandler(mContentResolver).blockNumber(listener,
- E164_NUMBER, NUMBER, COUNTRY_ISO);
- }
- });
- assertTrue(listener.onBlockCompleteCalled.await(5000, TimeUnit.MILLISECONDS));
- assertSame(EXPECTED_URI, listener.uri);
- mContentProvider.verify();
- }
-
- public void testBlockNumber_NullNormalizedNumber() throws Throwable {
- mContentProvider.expectInsert(BLOCKED_NUMBER_URI, newBlockNumberContentValues(),
- EXPECTED_URI);
- final BlockingArgumentCaptorOnBlockNumberListener listener =
- new BlockingArgumentCaptorOnBlockNumberListener();
- runTestOnUiThread(new Runnable() {
- @Override
- public void run() {
- new FilteredNumberAsyncQueryHandler(mContentResolver).blockNumber(listener,
- NUMBER, COUNTRY_ISO);
- }
- });
- assertTrue(listener.onBlockCompleteCalled.await(5000, TimeUnit.MILLISECONDS));
- assertSame(EXPECTED_URI, listener.uri);
- mContentProvider.verify();
- }
-
private ContentValues newBlockNumberContentValues() {
+ if (CompatUtils.isNCompatible()) {
+ return newBlockNumberContentValuesN();
+ }
+ return newBlockNumberContentValuesM();
+ }
+
+ private ContentValues newBlockNumberContentValuesN() {
+ ContentValues contentValues = new ContentValues();
+ contentValues.put(BlockedNumbers.COLUMN_ORIGINAL_NUMBER, NUMBER);
+ return contentValues;
+ }
+
+ private ContentValues newBlockNumberContentValuesM() {
ContentValues contentValues = new ContentValues();
contentValues.put(FilteredNumberColumns.NORMALIZED_NUMBER, E164_NUMBER);
contentValues.put(FilteredNumberColumns.NUMBER, NUMBER);
@@ -208,11 +390,11 @@
}
}
- private class BlockingArgumentCaptorOnBlockNumberListener implements OnBlockNumberListener {
+ private class BlockNumberListener implements OnBlockNumberListener {
public final CountDownLatch onBlockCompleteCalled;
public Uri uri;
- public BlockingArgumentCaptorOnBlockNumberListener() {
+ public BlockNumberListener() {
onBlockCompleteCalled = new CountDownLatch(1);
}
@@ -221,5 +403,34 @@
this.uri = uri;
onBlockCompleteCalled.countDown();
}
+
+ public Uri waitForCallback() throws InterruptedException {
+ if (!onBlockCompleteCalled.await(5000, TimeUnit.MILLISECONDS)) {
+ throw new IllegalStateException("Waiting on callback timed out.");
+ }
+ return uri;
+ }
+ }
+
+ private class UnblockNumberListener implements OnUnblockNumberListener {
+ public final CountDownLatch onUnblockCompleteCalled;
+ public Integer result;
+
+ public UnblockNumberListener() {
+ onUnblockCompleteCalled = new CountDownLatch(1);
+ }
+
+ @Override
+ public void onUnblockComplete(int rows, ContentValues values) {
+ result = rows;
+ onUnblockCompleteCalled.countDown();
+ }
+
+ public Integer waitForCallback() throws InterruptedException {
+ if (!onUnblockCompleteCalled.await(5000, TimeUnit.MILLISECONDS)) {
+ throw new IllegalStateException("Waiting on callback timed out.");
+ }
+ return result;
+ }
}
}
diff --git a/tests/src/com/android/dialer/voicemail/VoicemailActivityInstrumentationTestCase2.java b/tests/src/com/android/dialer/voicemail/VoicemailActivityInstrumentationTestCase2.java
new file mode 100644
index 0000000..a992e8b
--- /dev/null
+++ b/tests/src/com/android/dialer/voicemail/VoicemailActivityInstrumentationTestCase2.java
@@ -0,0 +1,212 @@
+package com.android.dialer.voicemail;
+
+import android.app.Activity;
+import android.content.ContentResolver;
+import android.content.ContentUris;
+import android.content.ContentValues;
+import android.content.res.AssetManager;
+import android.net.Uri;
+import android.provider.VoicemailContract;
+import android.test.ActivityInstrumentationTestCase2;
+import android.test.suitebuilder.annotation.Suppress;
+import android.view.View;
+
+import com.android.dialer.R;
+import com.android.dialer.util.AsyncTaskExecutors;
+import com.android.dialer.util.FakeAsyncTaskExecutor;
+import com.android.dialer.util.LocaleTestUtils;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.Locale;
+
+import static com.android.dialer.voicemail.VoicemailPlaybackPresenter.Tasks.CHECK_FOR_CONTENT;
+
+
+/**
+ * Common methods and attributes between {@link VoicemailArchiveTest} and
+ * {@link VoicemailPlaybackTest}.
+ */
+public class VoicemailActivityInstrumentationTestCase2<T extends Activity>
+ extends ActivityInstrumentationTestCase2<T> {
+ protected static final String TEST_ASSET_NAME = "quick_test_recording.mp3";
+ protected static final String MIME_TYPE = "audio/mp3";
+ protected static final String CONTACT_NUMBER = "+1412555555";
+ protected static final String VOICEMAIL_FILE_LOCATION = "/sdcard/sadlfj893w4j23o9sfu.mp3";
+
+ private T mActivity;
+ protected VoicemailPlaybackPresenter mPresenter;
+ private VoicemailPlaybackLayout mLayout;
+
+ protected Uri mVoicemailUri;
+ private LocaleTestUtils mLocaleTestUtils;
+ protected FakeAsyncTaskExecutor mFakeAsyncTaskExecutor;
+
+ public VoicemailActivityInstrumentationTestCase2(Class<T> activityClass) {
+ super(activityClass);
+ }
+
+ @Override
+ public void setUp() throws Exception {
+ super.setUp();
+
+ mFakeAsyncTaskExecutor = new FakeAsyncTaskExecutor(getInstrumentation());
+ AsyncTaskExecutors.setFactoryForTest(mFakeAsyncTaskExecutor.getFactory());
+
+ // Some of the tests rely on the text - safest to force a specific locale.
+ mLocaleTestUtils = new LocaleTestUtils(getInstrumentation().getTargetContext());
+ mLocaleTestUtils.setLocale(Locale.US);
+
+ mActivity = getActivity();
+ mLayout = new VoicemailPlaybackLayout(mActivity);
+ mLayout.onFinishInflate();
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ cleanUpVoicemailUri();
+
+ mLocaleTestUtils.restoreLocale();
+ mLocaleTestUtils = null;
+
+ mPresenter.clearInstance();
+ AsyncTaskExecutors.setFactoryForTest(null);
+
+ mActivity = null;
+ mPresenter = null;
+ mLayout = null;
+
+ super.tearDown();
+ }
+
+ @Suppress
+ public void testFetchingVoicemail() throws Throwable {
+ setUriForUnfetchedVoicemailEntry();
+ setPlaybackViewForPresenter();
+
+ getInstrumentation().runOnMainSync(new Runnable() {
+ @Override
+ public void run() {
+ mPresenter.resumePlayback();
+ assertStateTextContains("Loading voicemail");
+ }
+ });
+ }
+
+ @Suppress
+ public void testInvalidVoicemailShowsErrorMessage() throws Throwable {
+ setUriForInvalidVoicemailEntry();
+ setPlaybackViewForPresenter();
+
+ getInstrumentation().runOnMainSync(new Runnable() {
+ @Override
+ public void run() {
+ mPresenter.resumePlayback();
+ }
+ });
+ mFakeAsyncTaskExecutor.runTask(CHECK_FOR_CONTENT);
+ getInstrumentation().waitForIdleSync();
+
+ // The media player will have thrown an IOException since the file doesn't exist.
+ // This should have put a failed to play message on screen, buffering is gone.
+ assertStateTextContains("Couldn't play voicemail");
+ assertStateTextNotContains("Buffering");
+ }
+
+ public void testClickingSpeakerphoneButton() throws Throwable {
+ setUriForRealFileVoicemailEntry();
+ setPlaybackViewForPresenter();
+
+ // Check that the speakerphone is false to start.
+ assertFalse(mPresenter.isSpeakerphoneOn());
+
+ View speakerphoneButton = mLayout.findViewById(R.id.playback_speakerphone);
+ speakerphoneButton.performClick();
+ assertTrue(mPresenter.isSpeakerphoneOn());
+ }
+
+ protected void cleanUpVoicemailUri() {
+ if (mVoicemailUri != null) {
+ getContentResolver().delete(VoicemailContract.Voicemails.CONTENT_URI,
+ "_ID = ?", new String[] { String.valueOf(ContentUris.parseId(mVoicemailUri)) });
+ mVoicemailUri = null;
+ }
+ }
+
+ protected void setUriForRealFileVoicemailEntry() throws IOException {
+ assertNull(mVoicemailUri);
+ ContentValues values = new ContentValues();
+ values.put(VoicemailContract.Voicemails.DATE, String.valueOf(System.currentTimeMillis()));
+ values.put(VoicemailContract.Voicemails.NUMBER, CONTACT_NUMBER);
+ values.put(VoicemailContract.Voicemails.MIME_TYPE, MIME_TYPE);
+ values.put(VoicemailContract.Voicemails.HAS_CONTENT, 1);
+ String packageName = getInstrumentation().getTargetContext().getPackageName();
+ mVoicemailUri = getContentResolver().insert(
+ VoicemailContract.Voicemails.buildSourceUri(packageName), values);
+ AssetManager assets = getAssets();
+ try (InputStream inputStream = assets.open(TEST_ASSET_NAME);
+ OutputStream outputStream = getContentResolver().openOutputStream(mVoicemailUri)) {
+ copyBetweenStreams(inputStream, outputStream);
+ }
+ }
+
+ protected void setUriForUnfetchedVoicemailEntry() {
+ assertNull(mVoicemailUri);
+ ContentValues values = new ContentValues();
+ values.put(VoicemailContract.Voicemails.DATE, String.valueOf(System.currentTimeMillis()));
+ values.put(VoicemailContract.Voicemails.NUMBER, CONTACT_NUMBER);
+ values.put(VoicemailContract.Voicemails.MIME_TYPE, MIME_TYPE);
+ values.put(VoicemailContract.Voicemails.HAS_CONTENT, 0);
+ String packageName = getInstrumentation().getTargetContext().getPackageName();
+ mVoicemailUri = getContentResolver().insert(
+ VoicemailContract.Voicemails.buildSourceUri(packageName), values);
+ }
+
+ protected void setUriForInvalidVoicemailEntry() {
+ assertNull(mVoicemailUri);
+ ContentResolver contentResolver = getContentResolver();
+ ContentValues values = new ContentValues();
+ values.put(VoicemailContract.Voicemails.NUMBER, CONTACT_NUMBER);
+ values.put(VoicemailContract.Voicemails.HAS_CONTENT, 1);
+ // VoicemailContract.Voicemails._DATA
+ values.put("_data", VOICEMAIL_FILE_LOCATION);
+ mVoicemailUri = contentResolver.insert(VoicemailContract.Voicemails.CONTENT_URI, values);
+ }
+
+ protected void setPlaybackViewForPresenter() {
+ getInstrumentation().runOnMainSync(new Runnable() {
+ @Override
+ public void run() {
+ mPresenter.setPlaybackView(mLayout, mVoicemailUri, false);
+ }
+ });
+ }
+
+ protected void copyBetweenStreams(InputStream in, OutputStream out) throws IOException {
+ byte[] buffer = new byte[1024];
+ int bytesRead;
+ while ((bytesRead = in.read(buffer)) > 0) {
+ out.write(buffer, 0, bytesRead);
+ }
+ }
+
+ protected void assertStateTextContains(String text) {
+ assertNotNull(mLayout);
+ assertTrue(mLayout.getStateText().contains(text));
+ }
+
+ protected void assertStateTextNotContains(String text) {
+ assertNotNull(mLayout);
+ assertFalse(mLayout.getStateText().contains(text));
+ }
+
+ protected ContentResolver getContentResolver() {
+ return getInstrumentation().getTargetContext().getContentResolver();
+ }
+
+ protected AssetManager getAssets() {
+ return getInstrumentation().getContext().getAssets();
+ }
+
+}
diff --git a/tests/src/com/android/dialer/voicemail/VoicemailArchiveTest.java b/tests/src/com/android/dialer/voicemail/VoicemailArchiveTest.java
new file mode 100644
index 0000000..8cbd344
--- /dev/null
+++ b/tests/src/com/android/dialer/voicemail/VoicemailArchiveTest.java
@@ -0,0 +1,118 @@
+/*
+ * 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.dialer.voicemail;
+import android.content.ContentUris;
+import android.content.ContentValues;
+
+import com.android.dialer.R;
+import com.android.dialer.database.VoicemailArchiveContract.VoicemailArchive;
+
+import android.content.res.AssetManager;
+import android.test.suitebuilder.annotation.Suppress;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+
+/**
+ * Unit tests for {@link VoicemailArchiveActivity} and {@link VoicemailArchivePlaybackPresenter}.
+ */
+public class VoicemailArchiveTest
+ extends VoicemailActivityInstrumentationTestCase2<VoicemailArchiveActivity> {
+
+ public VoicemailArchiveTest() {
+ super(VoicemailArchiveActivity.class);
+ }
+
+ @Override
+ public void setUp() throws Exception {
+ super.setUp();
+ mPresenter = VoicemailArchivePlaybackPresenter.getInstance(getActivity(), null);
+ }
+
+ @Override
+ public void testFetchingVoicemail() throws Throwable {
+ setUriForRealFileVoicemailEntry();
+ setPlaybackViewForPresenter();
+ getInstrumentation().runOnMainSync(new Runnable() {
+ @Override
+ public void run() {
+ mPresenter.checkForContent(
+ new VoicemailPlaybackPresenter.OnContentCheckedListener() {
+ @Override
+ public void onContentChecked(boolean hasContent) {
+ mPresenter.resumePlayback();
+ assertEquals(true, mPresenter.isPlaying());
+ }
+ });
+ }
+ });
+ }
+
+ @Override
+ public void testInvalidVoicemailShowsErrorMessage() throws Throwable {
+ setUriForInvalidVoicemailEntry();
+ getInstrumentation().runOnMainSync(new Runnable() {
+ @Override
+ public void run() {
+ mPresenter.checkForContent(
+ new VoicemailPlaybackPresenter.OnContentCheckedListener() {
+ @Override
+ public void onContentChecked(boolean hasContent) {
+ assertStateTextContains("Couldn't play voicemail");
+ }
+ });
+ }
+ });
+ }
+
+ @Override
+ protected void setUriForInvalidVoicemailEntry() {
+ assertNull(mVoicemailUri);
+ ContentValues values = new ContentValues();
+ values.put(VoicemailArchive.NUMBER, CONTACT_NUMBER);
+ values.put(VoicemailArchive.DATE, String.valueOf(System.currentTimeMillis()));
+ values.put(VoicemailArchive.MIME_TYPE, MIME_TYPE);
+ values.put(VoicemailArchive._DATA, VOICEMAIL_FILE_LOCATION);
+ mVoicemailUri = getContentResolver().insert(VoicemailArchive.CONTENT_URI, values);
+ }
+
+ @Override
+ protected void setUriForRealFileVoicemailEntry() throws IOException {
+ assertNull(mVoicemailUri);
+ ContentValues values = new ContentValues();
+ values.put(VoicemailArchive.DATE, String.valueOf(System.currentTimeMillis()));
+ values.put(VoicemailArchive.NUMBER, CONTACT_NUMBER);
+ values.put(VoicemailArchive.MIME_TYPE, MIME_TYPE);
+ values.put(VoicemailArchive.DURATION, 0);
+ mVoicemailUri = getContentResolver().insert(VoicemailArchive.CONTENT_URI, values);
+ AssetManager assets = getAssets();
+ try (InputStream inputStream = assets.open(TEST_ASSET_NAME);
+ OutputStream outputStream = getContentResolver().openOutputStream(mVoicemailUri)) {
+ copyBetweenStreams(inputStream, outputStream);
+ }
+ }
+
+ @Override
+ protected void cleanUpVoicemailUri() {
+ if (mVoicemailUri != null) {
+ getContentResolver().delete(VoicemailArchive.CONTENT_URI,
+ "_ID = ?", new String[] { String.valueOf(ContentUris.parseId(mVoicemailUri)) });
+ mVoicemailUri = null;
+ }
+ }
+}
diff --git a/tests/src/com/android/dialer/voicemail/VoicemailPlaybackTest.java b/tests/src/com/android/dialer/voicemail/VoicemailPlaybackTest.java
index 630789c..abd582b 100644
--- a/tests/src/com/android/dialer/voicemail/VoicemailPlaybackTest.java
+++ b/tests/src/com/android/dialer/voicemail/VoicemailPlaybackTest.java
@@ -16,54 +16,17 @@
package com.android.dialer.voicemail;
-import static com.android.dialer.voicemail.VoicemailPlaybackPresenter.Tasks.CHECK_FOR_CONTENT;
-import static com.android.dialer.voicemail.VoicemailPlaybackPresenter.Tasks.CHECK_CONTENT_AFTER_CHANGE;
-
-import android.app.Activity;
-import android.content.ContentResolver;
-import android.content.ContentUris;
-import android.content.ContentValues;
-import android.content.Context;
-import android.content.res.AssetManager;
-import android.net.Uri;
-import android.provider.VoicemailContract;
-import android.test.ActivityInstrumentationTestCase2;
-import android.test.suitebuilder.annotation.LargeTest;
import android.test.suitebuilder.annotation.Suppress;
-import android.view.View;
-import android.widget.TextView;
-import com.android.dialer.R;
import com.android.dialer.calllog.CallLogActivity;
-import com.android.dialer.util.AsyncTaskExecutors;
-import com.android.dialer.util.FakeAsyncTaskExecutor;
-import com.android.dialer.util.LocaleTestUtils;
-import com.android.dialer.voicemail.VoicemailPlaybackLayout;
-import com.android.dialer.voicemail.VoicemailPlaybackPresenter;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.util.List;
-import java.util.Locale;
+import static com.android.dialer.voicemail.VoicemailPlaybackPresenter.Tasks.CHECK_FOR_CONTENT;
/**
- * Unit tests for the {@link VoicemailPlaybackPresenter} and {@link VoicemailPlaybackLayout}.
+ * Unit tests for {@link VoicemailPlaybackPresenter} and {@link VoicemailPlaybackLayout}.
*/
-@LargeTest
-public class VoicemailPlaybackTest extends ActivityInstrumentationTestCase2<CallLogActivity> {
- private static final String TEST_ASSET_NAME = "quick_test_recording.mp3";
- private static final String MIME_TYPE = "audio/mp3";
- private static final String CONTACT_NUMBER = "+1412555555";
- private static final String VOICEMAIL_FILE_LOCATION = "/sdcard/sadlfj893w4j23o9sfu.mp3";
-
- private Activity mActivity;
- private VoicemailPlaybackPresenter mPresenter;
- private VoicemailPlaybackLayout mLayout;
-
- private Uri mVoicemailUri;
- private LocaleTestUtils mLocaleTestUtils;
- private FakeAsyncTaskExecutor mFakeAsyncTaskExecutor;
+public class VoicemailPlaybackTest
+ extends VoicemailActivityInstrumentationTestCase2<CallLogActivity> {
public VoicemailPlaybackTest() {
super(CallLogActivity.class);
@@ -72,49 +35,7 @@
@Override
public void setUp() throws Exception {
super.setUp();
-
- mFakeAsyncTaskExecutor = new FakeAsyncTaskExecutor(getInstrumentation());
- AsyncTaskExecutors.setFactoryForTest(mFakeAsyncTaskExecutor.getFactory());
-
- // Some of the tests rely on the text - safest to force a specific locale.
- mLocaleTestUtils = new LocaleTestUtils(getInstrumentation().getTargetContext());
- mLocaleTestUtils.setLocale(Locale.US);
-
- mActivity = getActivity();
- mLayout = new VoicemailPlaybackLayout(mActivity);
- mLayout.onFinishInflate();
-
- mPresenter = VoicemailPlaybackPresenter.getInstance(mActivity, null);
- }
-
- @Override
- protected void tearDown() throws Exception {
- cleanUpVoicemailUri();
-
- mLocaleTestUtils.restoreLocale();
- mLocaleTestUtils = null;
-
- mPresenter.clearInstance();
- AsyncTaskExecutors.setFactoryForTest(null);
-
- mActivity = null;
- mPresenter = null;
- mLayout = null;
-
- super.tearDown();
- }
-
- public void testFetchingVoicemail() throws Throwable {
- setUriForUnfetchedVoicemailEntry();
- setPlaybackViewForPresenter();
-
- getInstrumentation().runOnMainSync(new Runnable() {
- @Override
- public void run() {
- mPresenter.resumePlayback();
- assertStateTextContains("Loading voicemail");
- }
- });
+ mPresenter = VoicemailPlaybackPresenter.getInstance(getActivity(), null);
}
@Suppress
@@ -133,119 +54,4 @@
assertStateTextContains("Loading voicemail");
}
-
- @Suppress
- public void testInvalidVoicemailShowsErrorMessage() throws Throwable {
- setUriForInvalidVoicemailEntry();
- setPlaybackViewForPresenter();
-
- getInstrumentation().runOnMainSync(new Runnable() {
- @Override
- public void run() {
- mPresenter.resumePlayback();
- }
- });
- mFakeAsyncTaskExecutor.runTask(CHECK_FOR_CONTENT);
- getInstrumentation().waitForIdleSync();
-
- // The media player will have thrown an IOException since the file doesn't exist.
- // This should have put a failed to play message on screen, buffering is gone.
- assertStateTextContains("Couldn't play voicemail");
- assertStateTextNotContains("Buffering");
- }
-
- public void testClickingSpeakerphoneButton() throws Throwable {
- setUriForRealFileVoicemailEntry();
- setPlaybackViewForPresenter();
-
- // Check that the speakerphone is false to start.
- assertFalse(mPresenter.isSpeakerphoneOn());
-
- View speakerphoneButton = mLayout.findViewById(R.id.playback_speakerphone);
- speakerphoneButton.performClick();
- assertTrue(mPresenter.isSpeakerphoneOn());
- }
-
- private void cleanUpVoicemailUri() {
- if (mVoicemailUri != null) {
- getContentResolver().delete(VoicemailContract.Voicemails.CONTENT_URI,
- "_ID = ?", new String[] { String.valueOf(ContentUris.parseId(mVoicemailUri)) });
- mVoicemailUri = null;
- }
- }
-
- private void setUriForRealFileVoicemailEntry() throws IOException {
- assertNull(mVoicemailUri);
- ContentValues values = new ContentValues();
- values.put(VoicemailContract.Voicemails.DATE, String.valueOf(System.currentTimeMillis()));
- values.put(VoicemailContract.Voicemails.NUMBER, CONTACT_NUMBER);
- values.put(VoicemailContract.Voicemails.MIME_TYPE, MIME_TYPE);
- values.put(VoicemailContract.Voicemails.HAS_CONTENT, 1);
- String packageName = getInstrumentation().getTargetContext().getPackageName();
- mVoicemailUri = getContentResolver().insert(
- VoicemailContract.Voicemails.buildSourceUri(packageName), values);
- AssetManager assets = getAssets();
- try (InputStream inputStream = assets.open(TEST_ASSET_NAME);
- OutputStream outputStream = getContentResolver().openOutputStream(mVoicemailUri)) {
- copyBetweenStreams(inputStream, outputStream);
- }
- }
-
- private void setUriForUnfetchedVoicemailEntry() {
- assertNull(mVoicemailUri);
- ContentValues values = new ContentValues();
- values.put(VoicemailContract.Voicemails.DATE, String.valueOf(System.currentTimeMillis()));
- values.put(VoicemailContract.Voicemails.NUMBER, CONTACT_NUMBER);
- values.put(VoicemailContract.Voicemails.MIME_TYPE, MIME_TYPE);
- values.put(VoicemailContract.Voicemails.HAS_CONTENT, 0);
- String packageName = getInstrumentation().getTargetContext().getPackageName();
- mVoicemailUri = getContentResolver().insert(
- VoicemailContract.Voicemails.buildSourceUri(packageName), values);
- }
-
- private void setUriForInvalidVoicemailEntry() {
- assertNull(mVoicemailUri);
- ContentResolver contentResolver = getContentResolver();
- ContentValues values = new ContentValues();
- values.put(VoicemailContract.Voicemails.NUMBER, CONTACT_NUMBER);
- values.put(VoicemailContract.Voicemails.HAS_CONTENT, 1);
- // VoicemailContract.Voicemails._DATA
- values.put("_data", VOICEMAIL_FILE_LOCATION);
- mVoicemailUri = contentResolver.insert(VoicemailContract.Voicemails.CONTENT_URI, values);
- }
-
- private void setPlaybackViewForPresenter() {
- getInstrumentation().runOnMainSync(new Runnable() {
- @Override
- public void run() {
- mPresenter.setPlaybackView(mLayout, mVoicemailUri, false);
- }
- });
- }
-
- public void copyBetweenStreams(InputStream in, OutputStream out) throws IOException {
- byte[] buffer = new byte[1024];
- int bytesRead;
- while ((bytesRead = in.read(buffer)) > 0) {
- out.write(buffer, 0, bytesRead);
- }
- }
-
- private void assertStateTextContains(String text) {
- assertNotNull(mLayout);
- assertTrue(mLayout.getStateText().contains(text));
- }
-
- private void assertStateTextNotContains(String text) {
- assertNotNull(mLayout);
- assertFalse(mLayout.getStateText().contains(text));
- }
-
- private ContentResolver getContentResolver() {
- return getInstrumentation().getTargetContext().getContentResolver();
- }
-
- private AssetManager getAssets() {
- return getInstrumentation().getContext().getAssets();
- }
-}
+}
\ No newline at end of file