diff --git a/InCallUI/res/values-bs-rBA/strings.xml b/InCallUI/res/values-bs-rBA/strings.xml
index 21f4360..b64df21 100644
--- a/InCallUI/res/values-bs-rBA/strings.xml
+++ b/InCallUI/res/values-bs-rBA/strings.xml
@@ -299,7 +299,9 @@
     <skip />
     <!-- no translation found for default_notification_description (4950807644546509965) -->
     <skip />
-    <string name="ringtone_title" msgid="835582004693335905">"Melodija zvona telefona"</string>
+    <!-- no translation found for ringtone_title (835582004693335905) -->
+    <!-- no translation found for ringtone_title (5379026328015343686) -->
+    <skip />
     <!-- no translation found for vibrate_on_ring_title (5019791043398986665) -->
     <skip />
     <!-- no translation found for preference_category_ringtone (6246687516643676729) -->
diff --git a/res/layout/lists_fragment.xml b/res/layout/lists_fragment.xml
index 1942a96..bff729c 100644
--- a/res/layout/lists_fragment.xml
+++ b/res/layout/lists_fragment.xml
@@ -58,7 +58,9 @@
         android:layout_width="match_parent"
         android:layout_height="@dimen/tab_height"
         android:layout_marginTop="@dimen/action_bar_height_large"
-        android:layout_alignParentTop="true" >
+        android:layout_alignParentTop="true"
+        android:contentDescription="@string/remove_contact"
+        android:visibility="gone" >
 
         <LinearLayout
             android:id="@+id/remove_view_content"
@@ -66,8 +68,7 @@
             android:layout_width="match_parent"
             android:background="@color/actionbar_background_color"
             android:gravity="center"
-            android:orientation="horizontal"
-            android:visibility="gone" >
+            android:orientation="horizontal">
 
             <ImageView
                 android:layout_width="wrap_content"
@@ -76,7 +77,6 @@
                 android:layout_marginBottom="8dp"
                 android:id="@+id/remove_view_icon"
                 android:src="@drawable/ic_remove"
-                android:contentDescription="@string/remove_contact"
                 android:tint="@color/remove_text_color" />
 
             <TextView
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index c2975df..eeac1fe 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -35,6 +35,8 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"Vee oproepgeskiedenis uit"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Vee stemboodskap uit"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"Argiveer stemboodskap"</string>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Stemboodskap is uitgevee"</string>
     <string name="snackbar_voicemail_archived" msgid="7442340403660554373">"Stemboodskap is geargiveer"</string>
     <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"ONTDOEN"</string>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index 2f0d644..2e0a092 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -35,6 +35,8 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"የጥሪ ታሪክን አጽዳ"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"የድምፅ መልዕክት ሰርዝ"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"የድምፅ መልዕክት በማህደር አስቀምጥ"</string>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <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>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index e523c75..a32ccab 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -35,6 +35,8 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"محو سجل المكالمات"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"حذف رسالة البريد الصوتي"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"البريد الصوتي للأرشيف"</string>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <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>
diff --git a/res/values-az-rAZ/strings.xml b/res/values-az-rAZ/strings.xml
index 3b0c293..2d68eb2 100644
--- a/res/values-az-rAZ/strings.xml
+++ b/res/values-az-rAZ/strings.xml
@@ -35,6 +35,7 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"Zəng tarixçəsini təmizləyin"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Səsli məktubu silin"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"Səsli poçtu arxivləşdirin"</string>
+    <string name="call_log_share_voicemail" msgid="7272635349055945546">"Səsli məktubu paylaşın"</string>
     <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Səsli məktub silindi"</string>
     <string name="snackbar_voicemail_archived" msgid="7442340403660554373">"Səsli poçt arxivləşdirildi"</string>
     <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"GERİ ALIN"</string>
diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml
index 4f11f61..8d0bb47 100644
--- a/res/values-b+sr+Latn/strings.xml
+++ b/res/values-b+sr+Latn/strings.xml
@@ -35,6 +35,8 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"Obriši istoriju poziva"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Izbriši govornu poruku"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"Arhiviraj govornu poštu"</string>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Gov. pošta je izbrisana"</string>
     <string name="snackbar_voicemail_archived" msgid="7442340403660554373">"Govorna pošta je arhivirana"</string>
     <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"OPOZOVI"</string>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index 44a115b..721c7ab 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -35,6 +35,8 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"Изчистване на историята на обажданията"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Изтриване на гласова поща"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"Архивиране на гласовата поща"</string>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <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>
diff --git a/res/values-bn-rBD/strings.xml b/res/values-bn-rBD/strings.xml
index 33587a1..965e175 100644
--- a/res/values-bn-rBD/strings.xml
+++ b/res/values-bn-rBD/strings.xml
@@ -35,6 +35,8 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"পুরোনো কলের তালিকা সাফ করুন"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"ভয়েসমেল মুছুন"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"ভয়েসমেল সংরক্ষণাগারভুক্ত করুন"</string>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <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>
diff --git a/res/values-bs-rBA/strings.xml b/res/values-bs-rBA/strings.xml
index bc05f12..d748b43 100644
--- a/res/values-bs-rBA/strings.xml
+++ b/res/values-bs-rBA/strings.xml
@@ -52,6 +52,8 @@
     <!-- no translation found for call_log_trash_voicemail (1283948488625129019) -->
     <skip />
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"Arhiviraj govornu poštu"</string>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <!-- no translation found for snackbar_voicemail_deleted (5098542835986188582) -->
     <skip />
     <string name="snackbar_voicemail_archived" msgid="7442340403660554373">"Govorna pošta arhivirana"</string>
@@ -138,7 +140,9 @@
     <skip />
     <!-- no translation found for action_menu_call_history_description (9018442816219748968) -->
     <skip />
-    <string name="action_menu_overflow_description" msgid="2303272250613084574">"Više opcija"</string>
+    <!-- no translation found for action_menu_overflow_description (2303272250613084574) -->
+    <!-- no translation found for action_menu_overflow_description (2295659037509008453) -->
+    <skip />
     <!-- no translation found for action_menu_dialpad_button (1425910318049008136) -->
     <skip />
     <!-- no translation found for menu_show_outgoing_only (1965570298133301970) -->
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index 60ce71c..6f5c52e 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -35,6 +35,8 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"Esborra l\'historial de trucades"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Suprimeix la bústia de veu"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"Arxiva el missatge de veu"</string>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Correu de veu suprimit"</string>
     <string name="snackbar_voicemail_archived" msgid="7442340403660554373">"Missatge de veu arxivat"</string>
     <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"DESFÉS"</string>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index da23df9..0183dd6 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -35,6 +35,8 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"Vymazat historii volání"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Smazat hlasovou zprávu"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"Archivovat hlasovou zprávu"</string>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Hlas. zpráva smazána"</string>
     <string name="snackbar_voicemail_archived" msgid="7442340403660554373">"Hlasová zpráva archivována"</string>
     <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"VRÁTIT"</string>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 6da57dd..d11664e 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -35,6 +35,8 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"Ryd opkaldshistorik"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Slet talemeddelelsen"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"Arkivér talebesked"</string>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Talebeskeden blev slettet"</string>
     <string name="snackbar_voicemail_archived" msgid="7442340403660554373">"Talebeskeden blev arkiveret"</string>
     <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"FORTRYD"</string>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 34ecb90..9988a96 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -35,6 +35,8 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"Anrufliste löschen"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Mailbox-Nachricht löschen"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"Mailbox-Nachricht archivieren"</string>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Mailbox gelöscht"</string>
     <string name="snackbar_voicemail_archived" msgid="7442340403660554373">"Mailbox-Nachricht archiviert"</string>
     <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"Rückgängig"</string>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index 1c401c6..462fda4 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -35,6 +35,7 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"Εκκαθάριση ιστορικού κλήσεων"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Διαγραφή αυτόματου τηλεφωνητή"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"Αρχειοθ. μην. αυτόμ. τηλεφων."</string>
+    <string name="call_log_share_voicemail" msgid="7272635349055945546">"Κοινή χρήση αυτόμ. τηλεφωνητή"</string>
     <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>
diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
index 5ebd6c3..8e065cf 100644
--- a/res/values-en-rAU/strings.xml
+++ b/res/values-en-rAU/strings.xml
@@ -35,6 +35,8 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"Clear call history"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Delete voicemail"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"Archive voicemail"</string>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Voicemail deleted"</string>
     <string name="snackbar_voicemail_archived" msgid="7442340403660554373">"Voicemail archived"</string>
     <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"UNDO"</string>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index 5ebd6c3..8e065cf 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -35,6 +35,8 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"Clear call history"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Delete voicemail"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"Archive voicemail"</string>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Voicemail deleted"</string>
     <string name="snackbar_voicemail_archived" msgid="7442340403660554373">"Voicemail archived"</string>
     <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"UNDO"</string>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index 5ebd6c3..8e065cf 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -35,6 +35,8 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"Clear call history"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Delete voicemail"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"Archive voicemail"</string>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Voicemail deleted"</string>
     <string name="snackbar_voicemail_archived" msgid="7442340403660554373">"Voicemail archived"</string>
     <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"UNDO"</string>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 190aeb7..f9d499a 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -35,6 +35,8 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"Eliminar el historial de llamadas"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Borrar buzón de voz"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"Archivar un mensaje de voz"</string>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <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>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index d5c0e0f..16e91df 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -35,6 +35,8 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"Borrar historial de llamadas"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Eliminar mensaje de voz"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"Archivar mensaje de voz"</string>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Buzón voz eliminado"</string>
     <string name="snackbar_voicemail_archived" msgid="7442340403660554373">"Mensaje de voz archivado"</string>
     <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"DESHACER"</string>
diff --git a/res/values-et-rEE/strings.xml b/res/values-et-rEE/strings.xml
index fd742f3..402bb68 100644
--- a/res/values-et-rEE/strings.xml
+++ b/res/values-et-rEE/strings.xml
@@ -35,6 +35,8 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"Kustuta kõneajalugu"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Kustuta kõnepost"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"Kõnepostisõnumi arhiivimine"</string>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Kõnepost kustutati"</string>
     <string name="snackbar_voicemail_archived" msgid="7442340403660554373">"Kõnepostisõnum arhiiviti"</string>
     <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"VÕTA TAGASI"</string>
diff --git a/res/values-eu-rES/strings.xml b/res/values-eu-rES/strings.xml
index c612d2d..a83e801 100644
--- a/res/values-eu-rES/strings.xml
+++ b/res/values-eu-rES/strings.xml
@@ -35,6 +35,8 @@
     <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 ahots-mezua"</string>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Ahots-mezua ezabatzea"</string>
     <string name="snackbar_voicemail_archived" msgid="7442340403660554373">"Artxibatu da ahots-mezua"</string>
     <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"DESEGIN"</string>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index 6e83947..157e6f6 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -35,6 +35,8 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"پاک کردن سابقه تماس"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"حذف پست صوتی"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"بایگانی پست صوتی"</string>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <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>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index 6ccd419..97a5e78 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -35,6 +35,8 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"Tyhjennä soittohistoria"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Poista vastaajaviesti"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"Arkistoi vastaajaviesti"</string>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Viesti poistettiin."</string>
     <string name="snackbar_voicemail_archived" msgid="7442340403660554373">"Vastaajaviesti arkistoitiin."</string>
     <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"KUMOA"</string>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index 3d36933..b74e463 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -35,6 +35,7 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"Effacer l\'historique des appels"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Supprimer le message vocal"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"Archiver les messages vocaux"</string>
+    <string name="call_log_share_voicemail" msgid="7272635349055945546">"Partager les messages vocaux"</string>
     <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Mess. vocal supprimé"</string>
     <string name="snackbar_voicemail_archived" msgid="7442340403660554373">"Messages vocaux archivés"</string>
     <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"ANNULER"</string>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 22247ef..48f00c4 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -35,6 +35,8 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"Supprimer l\'historique des appels"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Supprimer le message vocal"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"Archiver le message vocal"</string>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Mess. vocal supprimé"</string>
     <string name="snackbar_voicemail_archived" msgid="7442340403660554373">"Message vocal archivé"</string>
     <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"ANNULER"</string>
diff --git a/res/values-gl-rES/strings.xml b/res/values-gl-rES/strings.xml
index e895e2c..a48f01d 100644
--- a/res/values-gl-rES/strings.xml
+++ b/res/values-gl-rES/strings.xml
@@ -35,6 +35,8 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"Borrar historial de chamadas"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Eliminar correo de voz"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"Arquivar correo de voz"</string>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Correo voz eliminado"</string>
     <string name="snackbar_voicemail_archived" msgid="7442340403660554373">"Correo de voz arquivado"</string>
     <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"DESFACER"</string>
diff --git a/res/values-gu-rIN/strings.xml b/res/values-gu-rIN/strings.xml
index c33253c..5842fb0 100644
--- a/res/values-gu-rIN/strings.xml
+++ b/res/values-gu-rIN/strings.xml
@@ -35,6 +35,8 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"કૉલ ઇતિહાસ સાફ કરો"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"વૉઇસમેઇલ કાઢી નાખો"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"વૉઇસમેઇલને આર્કાઇવ કરો"</string>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <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>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index 78dd0a3..c9fe997 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -35,6 +35,8 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"कॉल इतिहास साफ़ करें"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"वॉइसमेल हटाएं"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"वॉइसमेल संग्रहीत करें"</string>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <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>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index b8ceb3f..60436fe 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -35,6 +35,8 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"Izbriši povijest poziva"</string>
     <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>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Gov. pošta izbrisana"</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>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index c952bdb..3c7d859 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -35,6 +35,8 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"A híváslista törlése"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Hangposta törlése"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"Hangpostaüzenet archiválása"</string>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Hangposta törölve"</string>
     <string name="snackbar_voicemail_archived" msgid="7442340403660554373">"Hangpostaüzenet archiválva"</string>
     <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"VISSZAVONÁS"</string>
diff --git a/res/values-hy-rAM/strings.xml b/res/values-hy-rAM/strings.xml
index 3a99973..b71cb3a 100644
--- a/res/values-hy-rAM/strings.xml
+++ b/res/values-hy-rAM/strings.xml
@@ -35,6 +35,7 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"Ջնջել զանգերի պատմությունը"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Ջնջել ձայնային փոստը"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"Արխիվացնել ձայնային փոստը"</string>
+    <string name="call_log_share_voicemail" msgid="7272635349055945546">"Ուղարկել ձայնային փոստը"</string>
     <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>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index 4a48b80..4736d6e 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -35,6 +35,8 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"Hapus riwayat panggilan"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Hapus pesan suara"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"Arsipkan pesan suara"</string>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Pesan suara dihapus"</string>
     <string name="snackbar_voicemail_archived" msgid="7442340403660554373">"Pesan suara diarsipkan"</string>
     <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"URUNGKAN"</string>
diff --git a/res/values-is-rIS/strings.xml b/res/values-is-rIS/strings.xml
index 69bc3ea..c0d3a0d 100644
--- a/res/values-is-rIS/strings.xml
+++ b/res/values-is-rIS/strings.xml
@@ -35,6 +35,8 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"Hreinsa símtalaferil"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Eyða talhólfsskilaboðum"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"Setja talhólfsskilaboð í geymslu"</string>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Talhólfi eytt"</string>
     <string name="snackbar_voicemail_archived" msgid="7442340403660554373">"Talhólfsskilaboð sett í geymslu"</string>
     <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"AFTURKALLA"</string>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 0fc8c70..6aa8441 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -35,6 +35,8 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"Cancella cronologia chiamate"</string>
     <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>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Mes vocali eliminati"</string>
     <string name="snackbar_voicemail_archived" msgid="7442340403660554373">"Messaggio vocale archiviato"</string>
     <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"ANNULLA"</string>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index f2ea48e..e7ba54d 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -35,6 +35,7 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"נקה את היסטוריית השיחות"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"מחק דואר קולי"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"העברת דואר קולי לארכיון"</string>
+    <string name="call_log_share_voicemail" msgid="7272635349055945546">"שיתוף של הדואר הקולי"</string>
     <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>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index b8b060e..faa1011 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -35,6 +35,7 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"通話履歴を消去"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"ボイスメールを削除"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"ボイスメールをアーカイブする"</string>
+    <string name="call_log_share_voicemail" msgid="7272635349055945546">"ボイスメールを共有"</string>
     <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>
diff --git a/res/values-ka-rGE/strings.xml b/res/values-ka-rGE/strings.xml
index 3a13036..0942333 100644
--- a/res/values-ka-rGE/strings.xml
+++ b/res/values-ka-rGE/strings.xml
@@ -35,6 +35,8 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"საუბრის ისტორიის გასუფთავება"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"ხმოვანი ფოსტის წაშლა"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"ხმოვანი ფოსტის დაარქივება"</string>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <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>
diff --git a/res/values-kk-rKZ/strings.xml b/res/values-kk-rKZ/strings.xml
index bfeeb96..8d39d66 100644
--- a/res/values-kk-rKZ/strings.xml
+++ b/res/values-kk-rKZ/strings.xml
@@ -35,6 +35,7 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"Қоңыраулар тарихын тазалау"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Дауыстық хабарды жою"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"Дауыстық поштаны мұрағаттау"</string>
+    <string name="call_log_share_voicemail" msgid="7272635349055945546">"Дауыстық хабармен бөлісу"</string>
     <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>
diff --git a/res/values-km-rKH/strings.xml b/res/values-km-rKH/strings.xml
index 785bb31..daffbce 100644
--- a/res/values-km-rKH/strings.xml
+++ b/res/values-km-rKH/strings.xml
@@ -35,6 +35,7 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"ជម្រះប្រវត្តិហៅ"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"លុប​សារ​ជា​សំឡេង"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"រក្សាទុក​សារ​ជាសំឡេង​ក្នុង​ប័ណ្ណសារ"</string>
+    <string name="call_log_share_voicemail" msgid="7272635349055945546">"ចែករំលែក​សារ​ជា​សំឡេង"</string>
     <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>
diff --git a/res/values-kn-rIN/strings.xml b/res/values-kn-rIN/strings.xml
index 8f916fe..563458e 100644
--- a/res/values-kn-rIN/strings.xml
+++ b/res/values-kn-rIN/strings.xml
@@ -35,6 +35,8 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"ಕರೆ ಇತಿಹಾಸವನ್ನು ತೆರವುಗೊಳಿಸಿ"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"ಧ್ವನಿಮೇಲ್‌ ಅಳಿಸಿ"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"ಧ್ವನಿಮೇಲ್ ಆರ್ಕೈವ್ ಮಾಡಿ"</string>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <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>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index ac1f193..b1f05e4 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -35,6 +35,7 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"통화 기록 삭제"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"음성사서함 삭제"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"음성사서함 보관처리"</string>
+    <string name="call_log_share_voicemail" msgid="7272635349055945546">"음성사서함 공유"</string>
     <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>
diff --git a/res/values-ky-rKG/strings.xml b/res/values-ky-rKG/strings.xml
index 31b4497..ffa3877 100644
--- a/res/values-ky-rKG/strings.xml
+++ b/res/values-ky-rKG/strings.xml
@@ -36,6 +36,7 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"Чалуулар таржымалын тазалоо"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Үн почтасын жок кылуу"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"Үн каттарын архивдөө"</string>
+    <string name="call_log_share_voicemail" msgid="7272635349055945546">"Үнкатты бөлүшүү"</string>
     <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>
diff --git a/res/values-lo-rLA/strings.xml b/res/values-lo-rLA/strings.xml
index ea15c84..ed7f2a0 100644
--- a/res/values-lo-rLA/strings.xml
+++ b/res/values-lo-rLA/strings.xml
@@ -35,6 +35,7 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"ລຶບ​ປະ​ຫວັດ​ການ​ໂທ​"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"ລຶບຂໍ້ຄວາມສຽງ"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"ຈັດເກັບຂໍ້ຄວາມສຽງເຂົ້າແຟ້ມ"</string>
+    <string name="call_log_share_voicemail" msgid="7272635349055945546">"ແບ່ງປັນຂໍ້ຄວາມສຽງ"</string>
     <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>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index a5b5719..6773f0e 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -35,6 +35,8 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"Išvalyti skambučių istoriją"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Ištrinti balso pašto pranešim."</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"Archyvuoti balso pašto pran."</string>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Balso pšt. ištrintas"</string>
     <string name="snackbar_voicemail_archived" msgid="7442340403660554373">"Balso pašto pran. suarchyvuoti"</string>
     <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"ANULIUOTI"</string>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index ba95ea3..bbf75fd 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -35,6 +35,8 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"Dzēst zvanu vēsturi"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Dzēst balss pasta ziņojumu"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"Arhivēt balss pasta ziņojumu"</string>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Balss pasts dzēsts"</string>
     <string name="snackbar_voicemail_archived" msgid="7442340403660554373">"Balss pasta ziņojums arhivēts"</string>
     <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"ATSAUKT"</string>
diff --git a/res/values-mk-rMK/strings.xml b/res/values-mk-rMK/strings.xml
index 5683b0e..26b25aa 100644
--- a/res/values-mk-rMK/strings.xml
+++ b/res/values-mk-rMK/strings.xml
@@ -35,6 +35,7 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"Избришете ја историјата на повици"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Избришете ја говорната пошта"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"Архивирајте говорна пошта"</string>
+    <string name="call_log_share_voicemail" msgid="7272635349055945546">"Споделете ја говорната пошта"</string>
     <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>
diff --git a/res/values-ml-rIN/strings.xml b/res/values-ml-rIN/strings.xml
index f4cdad3..af7efaf 100644
--- a/res/values-ml-rIN/strings.xml
+++ b/res/values-ml-rIN/strings.xml
@@ -35,6 +35,8 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"കോൾ ചരിത്രം മായ്‌ക്കുക"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"വോയ്‌സ്മെയിൽ ഇല്ലാതാക്കുക"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"വോയ്‌സ്‌മെയിൽ ആർക്കൈവുചെയ്യുക"</string>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <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>
diff --git a/res/values-mn-rMN/strings.xml b/res/values-mn-rMN/strings.xml
index ddcfc82..50a3d9f 100644
--- a/res/values-mn-rMN/strings.xml
+++ b/res/values-mn-rMN/strings.xml
@@ -35,6 +35,7 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"Дуудлагын түүхийг устгах уу?"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Дуут шууданг устгах"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"Дуут шууданг архивлах"</string>
+    <string name="call_log_share_voicemail" msgid="7272635349055945546">"Дуут шууданг хуваалцах"</string>
     <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>
diff --git a/res/values-mr-rIN/strings.xml b/res/values-mr-rIN/strings.xml
index 65fde08..39ed494 100644
--- a/res/values-mr-rIN/strings.xml
+++ b/res/values-mr-rIN/strings.xml
@@ -35,6 +35,8 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"कॉल इतिहास साफ करा"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"व्हॉइसमेल हटवा"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"व्हॉइसमेलचे संग्रहण करा"</string>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <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>
diff --git a/res/values-ms-rMY/strings.xml b/res/values-ms-rMY/strings.xml
index cfaee93..f1c63ce 100644
--- a/res/values-ms-rMY/strings.xml
+++ b/res/values-ms-rMY/strings.xml
@@ -35,6 +35,8 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"Kosongkan sejarah panggilan"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Padamkan mel suara"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"Arkibkan mel suara"</string>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Mel suara dipadamkan"</string>
     <string name="snackbar_voicemail_archived" msgid="7442340403660554373">"Mel suara diarkibkan"</string>
     <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"BUAT ASAL"</string>
diff --git a/res/values-my-rMM/strings.xml b/res/values-my-rMM/strings.xml
index c44b56c..7459a74 100644
--- a/res/values-my-rMM/strings.xml
+++ b/res/values-my-rMM/strings.xml
@@ -35,6 +35,7 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"ခေါ်ဆိုမှု မှတ်တမ်း ရှင်းရန်"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"အသံပို့စာ အားဖျက်ရန်"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"အသံစာကို သိုလှောင်ထားပါ"</string>
+    <string name="call_log_share_voicemail" msgid="7272635349055945546">"အသံမေးလ်ကို မျှဝေပါ"</string>
     <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>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 1de7b92..6f71046 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -35,6 +35,8 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"Slett anropsloggen"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Slett talepost"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"Arkivér taleposten"</string>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Taleposten er slettet"</string>
     <string name="snackbar_voicemail_archived" msgid="7442340403660554373">"Taleposten ble arkivert"</string>
     <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"ANGRE"</string>
diff --git a/res/values-ne-rNP/strings.xml b/res/values-ne-rNP/strings.xml
index 55644c8..528d1d1 100644
--- a/res/values-ne-rNP/strings.xml
+++ b/res/values-ne-rNP/strings.xml
@@ -35,6 +35,8 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"कल इतिहास मेटाउनुहोस्"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"भ्वाइसमेल हटाउनुहोस्"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"भ्वाइस मेलको अभिलेख राख्नुहोस्"</string>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <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>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 99b41f8..f10a444 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -35,6 +35,8 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"Oproepgeschiedenis wissen"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Voicemail verwijderen"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"Voicemail archiveren"</string>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Voicemail verwijderd"</string>
     <string name="snackbar_voicemail_archived" msgid="7442340403660554373">"Voicemail gearchiveerd"</string>
     <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"ONGED. MKN"</string>
diff --git a/res/values-pa-rIN/strings.xml b/res/values-pa-rIN/strings.xml
index ae381c5..3c0cb3d 100644
--- a/res/values-pa-rIN/strings.xml
+++ b/res/values-pa-rIN/strings.xml
@@ -35,6 +35,8 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"ਕਾਲ ਇਤਿਹਾਸ ਹਟਾਓ"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"ਵੌਇਸਮੇਲ ਮਿਟਾਓ"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"ਵੌਇਸਮੇਲ ਪੁਰਾਲੇਖਬੱਧ ਕਰੋ"</string>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <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>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index 934b211..4075980 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -35,6 +35,8 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"Wyczyść historię połączeń"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Usuń pocztę głosową"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"Archiwizuj pocztę głosową"</string>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Poczta usunięta"</string>
     <string name="snackbar_voicemail_archived" msgid="7442340403660554373">"Poczta głosowa zarchiwizowana"</string>
     <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"COFNIJ"</string>
diff --git a/res/values-pt-rBR/strings.xml b/res/values-pt-rBR/strings.xml
index 8e6d371..08d386b 100644
--- a/res/values-pt-rBR/strings.xml
+++ b/res/values-pt-rBR/strings.xml
@@ -35,6 +35,8 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"Limpar histórico de chamadas"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Excluir mensagem de voz"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"Arquivar correio de voz"</string>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Correio de voz excluído"</string>
     <string name="snackbar_voicemail_archived" msgid="7442340403660554373">"Correio de voz arquivado"</string>
     <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"DESFAZER"</string>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 6c194e5..28b946e 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -35,6 +35,8 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"Limpar histórico de chamadas"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Eliminar correio de voz"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"Arquivar msg. correio de voz"</string>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Correio de voz elim."</string>
     <string name="snackbar_voicemail_archived" msgid="7442340403660554373">"Msg. correio de voz arquivada"</string>
     <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"ANULAR"</string>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 8e6d371..08d386b 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -35,6 +35,8 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"Limpar histórico de chamadas"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Excluir mensagem de voz"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"Arquivar correio de voz"</string>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Correio de voz excluído"</string>
     <string name="snackbar_voicemail_archived" msgid="7442340403660554373">"Correio de voz arquivado"</string>
     <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"DESFAZER"</string>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index ca45521..c7b2e48 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -35,6 +35,8 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"Ștergeți istoricul apelurilor"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Ștergeți mesajul vocal"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"Arhivați mesajul vocal"</string>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Mesaj vocal șters"</string>
     <string name="snackbar_voicemail_archived" msgid="7442340403660554373">"Mesajul vocal este arhivat"</string>
     <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"ANULAȚI"</string>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 3e8757f..4cfa7f2 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -35,6 +35,8 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"Очистить журнал звонков"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Удалить голосовое сообщение"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"Архивировать голос. сообщение"</string>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <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>
diff --git a/res/values-si-rLK/strings.xml b/res/values-si-rLK/strings.xml
index 8a9f9a2..bd4ddd5 100644
--- a/res/values-si-rLK/strings.xml
+++ b/res/values-si-rLK/strings.xml
@@ -35,6 +35,8 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"ඇමතුම් ඉතිහාසය හිස් කරන්න"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"හඬ තැපෑල මකන්න"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"හඬ තැපෑල සංරක්ෂණය කරන්න"</string>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <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>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index 86e4692..7f3cd72 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -35,6 +35,8 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"Vymazať históriu hovorov?"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Odstrániť hlasovú správu"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"Archivovať hlasovú správu"</string>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Hlas. schránka odstránená"</string>
     <string name="snackbar_voicemail_archived" msgid="7442340403660554373">"Hlasová správa bola archiv."</string>
     <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"SPÄŤ"</string>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index 46b66a6..778e0df 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -35,6 +35,8 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"Izbriši zgodovino klicev"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Brisanje sporočil iz odzivnika"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"Arhiviraj sporoč. v odzivniku"</string>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Spor. v odziv. izbr."</string>
     <string name="snackbar_voicemail_archived" msgid="7442340403660554373">"Sporoč. v odzivniku arhivirano"</string>
     <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"RAZVELJAVI"</string>
diff --git a/res/values-sq-rAL/strings.xml b/res/values-sq-rAL/strings.xml
index ae34be6..7c9d0ae 100644
--- a/res/values-sq-rAL/strings.xml
+++ b/res/values-sq-rAL/strings.xml
@@ -35,6 +35,8 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"Pastro historikun e telefonatave"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Fshije postën zanore"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"Arkivo postën zanore"</string>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"U zbulua posta zanore"</string>
     <string name="snackbar_voicemail_archived" msgid="7442340403660554373">"Posta zanore u arkivua"</string>
     <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"ZHBËJ"</string>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index d98249e..7bf58ad 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -35,6 +35,8 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"Обриши историју позива"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Избриши говорну поруку"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"Архивирај говорну пошту"</string>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <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>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 63aa8ed..592a512 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -35,6 +35,8 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"Rensa samtalshistorik"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Radera röstmeddelande"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"Arkivera röstmeddelande"</string>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Röstbrevlåda raderad"</string>
     <string name="snackbar_voicemail_archived" msgid="7442340403660554373">"Röstmeddelandet har arkiverats"</string>
     <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"ÅNGRA"</string>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index eafe05c..d29edd6 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -35,6 +35,8 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"Futa rekodi ya simu zilizopigwa"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Futa ujumbe wa sauti"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"Weka kwenye kumbukumbu"</string>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Ujumbe wa sauti umefutwa"</string>
     <string name="snackbar_voicemail_archived" msgid="7442340403660554373">"Umewekwa kwenye kumbukumbu"</string>
     <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"TENDUA"</string>
diff --git a/res/values-ta-rIN/strings.xml b/res/values-ta-rIN/strings.xml
index e68169e..811ad16 100644
--- a/res/values-ta-rIN/strings.xml
+++ b/res/values-ta-rIN/strings.xml
@@ -35,6 +35,8 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"அழைப்பு வரலாற்றை அழி"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"குரலஞ்சலை நீக்கு"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"குரலஞ்சலைக் காப்பகப்படுத்து"</string>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <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>
diff --git a/res/values-te-rIN/strings.xml b/res/values-te-rIN/strings.xml
index a7838aa..8a8404d 100644
--- a/res/values-te-rIN/strings.xml
+++ b/res/values-te-rIN/strings.xml
@@ -35,6 +35,8 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"కాల్ చరిత్రను తీసివేయి"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"వాయిస్ మెయిల్‌ను తొలగించు"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"వాయిస్ మెయిల్‌ను ఆర్కైవ్ చేయి"</string>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <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>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index a062dca..54e0611 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -35,6 +35,7 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"ล้างประวัติการโทร"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"ลบข้อความเสียง"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"เก็บข้อความเสียง"</string>
+    <string name="call_log_share_voicemail" msgid="7272635349055945546">"แชร์ข้อความเสียง"</string>
     <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>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index bcb33b3..8ea4eb5 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -35,6 +35,8 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"I-clear ang history ng tawag"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"I-delete ang voicemail"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"I-archive ang voicemail"</string>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Na-delete voicemail"</string>
     <string name="snackbar_voicemail_archived" msgid="7442340403660554373">"Na-archive ang voicemail"</string>
     <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"I-UNDO"</string>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index dcd4b82..831e06d 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -35,6 +35,8 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"Çağrı geçmişini temizle"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Sesli mesajı sil"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"Sesli mesajı arşivle"</string>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Sesli mesaj silindi"</string>
     <string name="snackbar_voicemail_archived" msgid="7442340403660554373">"Sesli mesaj arşivlendi"</string>
     <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"GERİ AL"</string>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index 1b5e265..f4f21a3 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -35,6 +35,8 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"Очистити історію дзвінків"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Видалити голосову пошту"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"Архівувати голосову пошту"</string>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <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>
diff --git a/res/values-ur-rPK/strings.xml b/res/values-ur-rPK/strings.xml
index c4252d3..13ba14b 100644
--- a/res/values-ur-rPK/strings.xml
+++ b/res/values-ur-rPK/strings.xml
@@ -35,6 +35,8 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"کال کی سرگزشت صاف کریں"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"صوتی میل حذف کریں"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"صوتی میل کو آرکائیو کریں"</string>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <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>
diff --git a/res/values-uz-rUZ/strings.xml b/res/values-uz-rUZ/strings.xml
index 29f461d..318407c 100644
--- a/res/values-uz-rUZ/strings.xml
+++ b/res/values-uz-rUZ/strings.xml
@@ -35,6 +35,8 @@
     <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>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Ovozli pochta o‘chirildi"</string>
     <string name="snackbar_voicemail_archived" msgid="7442340403660554373">"Ovozli pochta arxivlandi"</string>
     <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"QAYTARISH"</string>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index cb3085d..86ae725 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -35,6 +35,8 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"Xóa nhật ký cuộc gọi"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Xóa thư thoại"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"Lưu trữ thư thoại"</string>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Đã xóa thư thoại"</string>
     <string name="snackbar_voicemail_archived" msgid="7442340403660554373">"Đã lưu trữ thư thoại"</string>
     <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"HOÀN TÁC"</string>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 5516a24..6ec5cea 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -35,6 +35,8 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"清除通话记录"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"删除语音邮件"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"归档语音邮件"</string>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <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>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index 275a847..01c6d7f 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -35,6 +35,7 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"清除通話記錄"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"刪除留言"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"封存留言"</string>
+    <string name="call_log_share_voicemail" msgid="7272635349055945546">"分享留言"</string>
     <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>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index d036bf5..9c8919e 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -35,6 +35,8 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"清除通話紀錄"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"刪除語音留言"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"封存語音留言"</string>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <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>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index 9a0bcb4..7d197e3 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -35,6 +35,8 @@
     <string name="call_log_delete_all" msgid="4677609108288680411">"Sula umlando wekholi"</string>
     <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Susa ivoyisimeyili"</string>
     <string name="call_log_archive_voicemail" msgid="9072936797223284265">"Faka kungobo yomlando ivoyisimeyili"</string>
+    <!-- no translation found for call_log_share_voicemail (7272635349055945546) -->
+    <skip />
     <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Ivoyisimeyili isusiwe"</string>
     <string name="snackbar_voicemail_archived" msgid="7442340403660554373">"Ivoyisimeyili ifakwe kungobo yomlando"</string>
     <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"HLEHLISA"</string>
diff --git a/res/xml/file_paths.xml b/res/xml/file_paths.xml
index 45caed2..365a603 100644
--- a/res/xml/file_paths.xml
+++ b/res/xml/file_paths.xml
@@ -16,5 +16,7 @@
 
 <paths xmlns:android="http://schemas.android.com/apk/res/android">
     <!-- Offer access to files under Context.getCacheDir() -->
-    <cache-path name="my_cache" />
+     <cache-path name="my_cache" />
+     <!-- Offer access to voicemail folder under Context.getFilesDir() -->
+     <files-path name="voicemails" path="voicemails/" />
 </paths>
diff --git a/src/com/android/dialer/database/VoicemailArchiveProvider.java b/src/com/android/dialer/database/VoicemailArchiveProvider.java
index 79b7a76..b3306bc 100644
--- a/src/com/android/dialer/database/VoicemailArchiveProvider.java
+++ b/src/com/android/dialer/database/VoicemailArchiveProvider.java
@@ -28,6 +28,7 @@
 import android.os.ParcelFileDescriptor;
 import android.support.annotation.Nullable;
 import android.text.TextUtils;
+import android.webkit.MimeTypeMap;
 
 import com.android.dialerbind.DatabaseHelperManager;
 import com.google.common.annotations.VisibleForTesting;
@@ -119,7 +120,11 @@
 
         // 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));
+            String fileExtension = MimeTypeMap.getSingleton().getExtensionFromMimeType(
+                    values.getAsString(VoicemailArchiveContract.VoicemailArchive.MIME_TYPE));
+            File voicemailFile = new File(directory,
+                    TextUtils.isEmpty(fileExtension) ? Long.toString(id) :
+                            id + "." + fileExtension);
             values.put(VoicemailArchiveContract.VoicemailArchive._DATA, voicemailFile.getPath());
         }
         update(newUri, values, null, null);
diff --git a/src/com/android/dialer/list/ListsFragment.java b/src/com/android/dialer/list/ListsFragment.java
index 52bf3cb..ceed612 100644
--- a/src/com/android/dialer/list/ListsFragment.java
+++ b/src/com/android/dialer/list/ListsFragment.java
@@ -81,7 +81,6 @@
     private ViewPagerTabs mViewPagerTabs;
     private ViewPagerAdapter mViewPagerAdapter;
     private RemoveView mRemoveView;
-    private View mRemoveViewContent;
 
     private SpeedDialFragment mSpeedDialFragment;
     private CallLogFragment mHistoryFragment;
@@ -252,7 +251,6 @@
         addOnPageChangeListener(mViewPagerTabs);
 
         mRemoveView = (RemoveView) parentView.findViewById(R.id.remove_view);
-        mRemoveViewContent = parentView.findViewById(R.id.remove_view_content);
 
         Trace.endSection();
         Trace.endSection();
@@ -424,7 +422,7 @@
 
 
     public void showRemoveView(boolean show) {
-        mRemoveViewContent.setVisibility(show ? View.VISIBLE : View.GONE);
+        mRemoveView.setVisibility(show ? View.VISIBLE : View.GONE);
         mRemoveView.setAlpha(show ? 0 : 1);
         mRemoveView.animate().alpha(show ? 1 : 0).start();
     }
diff --git a/src/com/android/dialer/list/RemoveView.java b/src/com/android/dialer/list/RemoveView.java
index fdb08f6..41f4175 100644
--- a/src/com/android/dialer/list/RemoveView.java
+++ b/src/com/android/dialer/list/RemoveView.java
@@ -6,6 +6,7 @@
 import android.util.AttributeSet;
 import android.util.Log;
 import android.view.DragEvent;
+import android.view.accessibility.AccessibilityEvent;
 import android.widget.FrameLayout;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
@@ -53,6 +54,9 @@
         final int action = event.getAction();
         switch (action) {
             case DragEvent.ACTION_DRAG_ENTERED:
+                // TODO: This is temporary solution and should be removed once accessibility for
+                // drag and drop is supported by framework(b/26871588).
+                sendAccessibilityEvent(AccessibilityEvent.TYPE_ANNOUNCEMENT);
                 setAppearanceHighlighted();
                 break;
             case DragEvent.ACTION_DRAG_EXITED:
@@ -65,6 +69,7 @@
                 }
                 break;
             case DragEvent.ACTION_DROP:
+                sendAccessibilityEvent(AccessibilityEvent.TYPE_ANNOUNCEMENT);
                 if (mDragDropController != null) {
                     mDragDropController.handleDragFinished((int) event.getX(), (int) event.getY(),
                             true);
diff --git a/src/com/android/dialer/voicemail/VoicemailArchivePlaybackPresenter.java b/src/com/android/dialer/voicemail/VoicemailArchivePlaybackPresenter.java
index 050b8ac..5f73d16 100644
--- a/src/com/android/dialer/voicemail/VoicemailArchivePlaybackPresenter.java
+++ b/src/com/android/dialer/voicemail/VoicemailArchivePlaybackPresenter.java
@@ -62,7 +62,6 @@
                     }
                 } catch (FileNotFoundException e) {
                     Log.d(TAG, "Voicemail file not found for " + mVoicemailUri);
-                    handleError(e);
                 }
                 return false;
             }
@@ -75,11 +74,17 @@
     }
 
     @Override
-    protected boolean requestContent(int code) {
-        if (mContext == null || mVoicemailUri == null) {
-            return false;
+    protected void startArchiveVoicemailTask(final Uri voicemailUri, final boolean archivedByUser) {
+        // If a user wants to share an archived voicemail, no need for archiving, just go straight
+        // to share intent.
+        if (!archivedByUser) {
+            sendShareIntent(voicemailUri);
         }
-        prepareContent();
-        return true;
+    }
+
+    @Override
+    protected boolean requestContent(int code) {
+        handleError(new FileNotFoundException("Voicemail archive file does not exist"));
+        return false;       // No way for archive tab to request content
     }
 }
diff --git a/src/com/android/dialer/voicemail/VoicemailAsyncTaskUtil.java b/src/com/android/dialer/voicemail/VoicemailAsyncTaskUtil.java
new file mode 100644
index 0000000..7abf9a7
--- /dev/null
+++ b/src/com/android/dialer/voicemail/VoicemailAsyncTaskUtil.java
@@ -0,0 +1,346 @@
+/*
+ * 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 com.android.contacts.common.testing.NeededForTesting;
+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.google.common.base.Preconditions;
+import com.google.common.io.ByteStreams;
+
+import android.content.ContentResolver;
+import android.content.ContentUris;
+import android.content.ContentValues;
+import android.database.Cursor;
+import android.net.Uri;
+import android.os.AsyncTask;
+import android.provider.CallLog;
+import android.provider.VoicemailContract;
+import android.util.Log;
+import com.android.common.io.MoreCloseables;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+
+import javax.annotation.Nullable;
+
+/**
+ * Class containing asynchronous tasks for voicemails.
+ */
+@NeededForTesting
+public class VoicemailAsyncTaskUtil {
+    private static final String TAG = "VoicemailAsyncTaskUtil";
+
+    /** The enumeration of {@link AsyncTask} objects we use in this class. */
+    public enum Tasks {
+        GET_VOICEMAIL_FILE_PATH,
+        SET_VOICEMAIL_ARCHIVE_STATUS,
+        ARCHIVE_VOICEMAIL_CONTENT
+    }
+
+    @NeededForTesting
+    public interface OnArchiveVoicemailListener {
+        /**
+         * Called after the voicemail has been archived.
+         *
+         * @param archivedVoicemailUri the URI of the archived voicemail
+         */
+        void onArchiveVoicemail(@Nullable Uri archivedVoicemailUri);
+    }
+
+    @NeededForTesting
+    public interface OnSetVoicemailArchiveStatusListener {
+        /**
+         * Called after the voicemail archived_by_user column is updated.
+         *
+         * @param success whether the update was successful or not
+         */
+        void onSetVoicemailArchiveStatus(boolean success);
+    }
+
+    @NeededForTesting
+    public interface OnGetArchivedVoicemailFilePathListener {
+        /**
+         * Called after the voicemail file path is obtained.
+         *
+         * @param filePath the file path of the archived voicemail
+         */
+        void onGetArchivedVoicemailFilePath(@Nullable String filePath);
+    }
+
+    private final ContentResolver mResolver;
+    private final AsyncTaskExecutor mAsyncTaskExecutor;
+
+    @NeededForTesting
+    public VoicemailAsyncTaskUtil(ContentResolver contentResolver) {
+        mResolver = Preconditions.checkNotNull(contentResolver);
+        mAsyncTaskExecutor = AsyncTaskExecutors.createThreadPoolExecutor();
+    }
+
+    /**
+     * Returns the archived voicemail file path.
+     */
+    @NeededForTesting
+    public void getVoicemailFilePath(
+            final OnGetArchivedVoicemailFilePathListener listener,
+            final Uri voicemailUri) {
+        Preconditions.checkNotNull(listener);
+        Preconditions.checkNotNull(voicemailUri);
+        mAsyncTaskExecutor.submit(Tasks.GET_VOICEMAIL_FILE_PATH,
+                new AsyncTask<Void, Void, String>() {
+                    @Nullable
+                    @Override
+                    protected String doInBackground(Void... params) {
+                        try (Cursor cursor = mResolver.query(voicemailUri,
+                                new String[]{VoicemailArchiveContract.VoicemailArchive._DATA},
+                                null, null, null)) {
+                            if (hasContent(cursor)) {
+                                return cursor.getString(cursor.getColumnIndex(
+                                        VoicemailArchiveContract.VoicemailArchive._DATA));
+                            }
+                        }
+                        return null;
+                    }
+
+                    @Override
+                    protected void onPostExecute(String filePath) {
+                        listener.onGetArchivedVoicemailFilePath(filePath);
+                    }
+                });
+    }
+
+    /**
+     * Updates the archived_by_user flag of the archived voicemail.
+     */
+    @NeededForTesting
+    public void setVoicemailArchiveStatus(
+            final OnSetVoicemailArchiveStatusListener listener,
+            final Uri voicemailUri,
+            final boolean archivedByUser) {
+        Preconditions.checkNotNull(listener);
+        Preconditions.checkNotNull(voicemailUri);
+        mAsyncTaskExecutor.submit(Tasks.SET_VOICEMAIL_ARCHIVE_STATUS,
+                new AsyncTask<Void, Void, Boolean>() {
+                    @Override
+                    protected Boolean doInBackground(Void... params) {
+                        ContentValues values = new ContentValues(1);
+                        values.put(VoicemailArchiveContract.VoicemailArchive.ARCHIVED,
+                                archivedByUser);
+                        return mResolver.update(voicemailUri, values, null, null) > 0;
+                    }
+
+                    @Override
+                    protected void onPostExecute(Boolean success) {
+                        listener.onSetVoicemailArchiveStatus(success);
+                    }
+                });
+    }
+
+    /**
+     * Checks if a voicemail has already been archived, if so, return the previously archived URI.
+     * Otherwise, copy the voicemail information to the local dialer database. If archive was
+     * successful, archived voicemail URI is returned to listener, otherwise null.
+     */
+    @NeededForTesting
+    public void archiveVoicemailContent(
+            final OnArchiveVoicemailListener listener,
+            final Uri voicemailUri) {
+        Preconditions.checkNotNull(listener);
+        Preconditions.checkNotNull(voicemailUri);
+        mAsyncTaskExecutor.submit(Tasks.ARCHIVE_VOICEMAIL_CONTENT,
+                new AsyncTask<Void, Void, Uri>() {
+                    @Nullable
+                    @Override
+                    protected Uri doInBackground(Void... params) {
+                        Uri archivedVoicemailUri = getArchivedVoicemailUri(voicemailUri);
+
+                        // If previously archived, return uri, otherwise archive everything.
+                        if (archivedVoicemailUri != null) {
+                            return archivedVoicemailUri;
+                        }
+
+                        // Combine call log and voicemail content info.
+                        ContentValues values = getVoicemailContentValues(voicemailUri);
+                        if (values == null) {
+                            return null;
+                        }
+
+                        Uri insertedVoicemailUri = mResolver.insert(
+                                VoicemailArchiveContract.VoicemailArchive.CONTENT_URI, values);
+                        if (insertedVoicemailUri == null) {
+                            return null;
+                        }
+
+                        // Copy voicemail content to a new file.
+                        boolean copiedFile = false;
+                        try (InputStream inputStream = mResolver.openInputStream(voicemailUri);
+                             OutputStream outputStream =
+                                     mResolver.openOutputStream(insertedVoicemailUri)) {
+                            if (inputStream != null && outputStream != null) {
+                                ByteStreams.copy(inputStream, outputStream);
+                                copiedFile = true;
+                                return insertedVoicemailUri;
+                            }
+                        } catch (IOException e) {
+                            Log.w(TAG, "Failed to copy voicemail content to new file: "
+                                    + e.toString());
+                        } finally {
+                            if (!copiedFile) {
+                                // Roll back insert if the voicemail content was not copied.
+                                mResolver.delete(insertedVoicemailUri, null, null);
+                            }
+                        }
+                        return null;
+                    }
+
+                    @Override
+                    protected void onPostExecute(Uri archivedVoicemailUri) {
+                        listener.onArchiveVoicemail(archivedVoicemailUri);
+                    }
+                });
+    }
+
+    /**
+     * Helper method to get the archived URI of a voicemail.
+     *
+     * @param voicemailUri a {@link android.provider.VoicemailContract.Voicemails#CONTENT_URI} URI.
+     * @return the URI of the archived voicemail or {@code null}
+     */
+    @Nullable
+    private Uri getArchivedVoicemailUri(Uri voicemailUri) {
+        try (Cursor cursor = getArchiveExistsCursor(voicemailUri)) {
+            if (hasContent(cursor)) {
+                return VoicemailArchiveContract.VoicemailArchive
+                        .buildWithId(cursor.getInt(cursor.getColumnIndex(
+                                VoicemailArchiveContract.VoicemailArchive._ID)));
+            }
+        }
+        return null;
+    }
+
+    /**
+     * Helper method to make a copy of all the values needed to display a voicemail.
+     *
+     * @param voicemailUri a {@link VoicemailContract.Voicemails#CONTENT_URI} URI.
+     * @return the combined call log and voicemail values for the given URI, or {@code null}
+     */
+    @Nullable
+    private ContentValues getVoicemailContentValues(Uri voicemailUri) {
+        try (Cursor callLogInfo = getCallLogInfoCursor(voicemailUri);
+             Cursor contentInfo = getContentInfoCursor(voicemailUri)) {
+
+            if (hasContent(callLogInfo) && hasContent(contentInfo)) {
+                // Create values to insert into database.
+                ContentValues values = new ContentValues();
+
+                // Insert voicemail call log info.
+                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.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.CACHED_PHOTO_URI,
+                        callLogInfo.getString(CallLogQuery.CACHED_PHOTO_URI));
+
+                // Insert voicemail content info.
+                values.put(VoicemailArchiveContract.VoicemailArchive.SERVER_ID,
+                        contentInfo.getInt(contentInfo.getColumnIndex(
+                                VoicemailContract.Voicemails._ID)));
+                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.TRANSCRIPTION,
+                        contentInfo.getString(contentInfo.getColumnIndex(
+                                VoicemailContract.Voicemails.TRANSCRIPTION)));
+
+                // Achived is false by default because it is updated after insertion.
+                values.put(VoicemailArchiveContract.VoicemailArchive.ARCHIVED, false);
+
+                return values;
+            }
+        }
+        return null;
+    }
+
+    private boolean hasContent(@Nullable Cursor cursor) {
+        return cursor != null && cursor.moveToFirst();
+    }
+
+    @Nullable
+    private Cursor getCallLogInfoCursor(Uri voicemailUri) {
+        return mResolver.query(
+                ContentUris.withAppendedId(CallLog.Calls.CONTENT_URI_WITH_VOICEMAIL,
+                        ContentUris.parseId(voicemailUri)),
+                CallLogQuery._PROJECTION, null, null, null);
+    }
+
+    @Nullable
+    private Cursor getContentInfoCursor(Uri voicemailUri) {
+        return mResolver.query(voicemailUri,
+                new String[] {
+                        VoicemailContract.Voicemails._ID,
+                        VoicemailContract.Voicemails.NUMBER,
+                        VoicemailContract.Voicemails.DATE,
+                        VoicemailContract.Voicemails.DURATION,
+                        VoicemailContract.Voicemails.MIME_TYPE,
+                        VoicemailContract.Voicemails.TRANSCRIPTION,
+                }, null, null, null);
+    }
+
+    @Nullable
+    private Cursor getArchiveExistsCursor(Uri voicemailUri) {
+        return mResolver.query(VoicemailArchiveContract.VoicemailArchive.CONTENT_URI,
+                new String[] {VoicemailArchiveContract.VoicemailArchive._ID},
+                VoicemailArchiveContract.VoicemailArchive.SERVER_ID + "="
+                        + ContentUris.parseId(voicemailUri),
+                null,
+                null);
+    }
+}
diff --git a/src/com/android/dialer/voicemail/VoicemailPlaybackLayout.java b/src/com/android/dialer/voicemail/VoicemailPlaybackLayout.java
index 8c869d1..e5efbec 100644
--- a/src/com/android/dialer/voicemail/VoicemailPlaybackLayout.java
+++ b/src/com/android/dialer/voicemail/VoicemailPlaybackLayout.java
@@ -258,6 +258,17 @@
         }
     };
 
+    private final View.OnClickListener mShareButtonListener = new View.OnClickListener() {
+        @Override
+        public void onClick(View v) {
+            if (mPresenter == null || isArchiving(mVoicemailUri)) {
+                return;
+            }
+            disableUiElements();
+            mPresenter.archiveContent(mVoicemailUri, false);
+        }
+    };
+
     private Context mContext;
     private VoicemailPlaybackPresenter mPresenter;
     private Uri mVoicemailUri;
@@ -339,6 +350,7 @@
         mPlaybackSpeakerphone.setOnClickListener(mSpeakerphoneListener);
         mDeleteButton.setOnClickListener(mDeleteButtonListener);
         mArchiveButton.setOnClickListener(mArchiveButtonListener);
+        mShareButton.setOnClickListener(mShareButtonListener);
 
         mPositionText.setText(formatAsMinutesAndSeconds(0));
         mTotalDurationText.setText(formatAsMinutesAndSeconds(0));
diff --git a/src/com/android/dialer/voicemail/VoicemailPlaybackPresenter.java b/src/com/android/dialer/voicemail/VoicemailPlaybackPresenter.java
index 3151a5e..5924fb4 100644
--- a/src/com/android/dialer/voicemail/VoicemailPlaybackPresenter.java
+++ b/src/com/android/dialer/voicemail/VoicemailPlaybackPresenter.java
@@ -19,11 +19,8 @@
 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;
@@ -33,24 +30,19 @@
 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.support.v4.content.FileProvider;
 import android.util.Log;
 import android.view.WindowManager.LayoutParams;
 
+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.io.ByteStreams;
+
+import java.io.File;
 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;
@@ -140,6 +132,7 @@
             VoicemailPlaybackPresenter.class.getName() + ".IS_SPEAKER_PHONE_ON";
     public static final int PLAYBACK_REQUEST = 0;
     public static final int ARCHIVE_REQUEST = 1;
+    public static final int SHARE_REQUEST = 2;
 
     /**
      * The most recently cached duration. We cache this since we don't want to keep requesting it
@@ -181,6 +174,7 @@
     private VoicemailAudioManager mVoicemailAudioManager;
 
     private OnVoicemailDeletedListener mOnVoicemailDeletedListener;
+    private final VoicemailAsyncTaskUtil mVoicemailAsyncTaskUtil;
 
     /**
      * Obtain singleton instance of this class. Use a single instance to provide a consistent
@@ -208,6 +202,7 @@
         Context context = activity.getApplicationContext();
         mAsyncTaskExecutor = AsyncTaskExecutors.createAsyncTaskExecutor();
         mVoicemailAudioManager = new VoicemailAudioManager(context, this);
+        mVoicemailAsyncTaskUtil = new VoicemailAsyncTaskUtil(context.getContentResolver());
         PowerManager powerManager =
                 (PowerManager) context.getSystemService(Context.POWER_SERVICE);
         if (powerManager.isWakeLockLevelSupported(PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK)) {
@@ -493,7 +488,6 @@
         private final Handler mFetchResultHandler;
         private final Uri mVoicemailUri;
         private final int mRequestCode;
-        private Uri mArchivedVoicemailUri;
 
         public FetchResultHandler(Handler handler, Uri uri, int code) {
             super(handler);
@@ -515,11 +509,7 @@
             if (mIsWaitingForResult.getAndSet(false) && mContext != null) {
                 mContext.getContentResolver().unregisterContentObserver(this);
                 if (mView != null) {
-                    if (mRequestCode == ARCHIVE_REQUEST) {
-                        notifyUiOfArchiveResult(mVoicemailUri, false);
-                    } else {
-                        mView.setFetchContentTimeout();
-                    }
+                    mView.setFetchContentTimeout();
                 }
             }
         }
@@ -538,13 +528,7 @@
 
                 @Override
                 public Boolean doInBackground(Void... params) {
-                    boolean hasContent = queryHasContent(mVoicemailUri);
-                    if (hasContent && mRequestCode == ARCHIVE_REQUEST) {
-                        mArchivedVoicemailUri =
-                                performArchiveVoicemailOnBackgroundThread(mVoicemailUri, true);
-                        return mArchivedVoicemailUri != null;
-                    }
-                    return hasContent;
+                    return queryHasContent(mVoicemailUri);
                 }
 
                 @Override
@@ -552,11 +536,11 @@
                     if (hasContent && mContext != null && mIsWaitingForResult.getAndSet(false)) {
                         mContext.getContentResolver().unregisterContentObserver(
                                 FetchResultHandler.this);
-                        switch (mRequestCode) {
-                            case ARCHIVE_REQUEST:
-                                notifyUiOfArchiveResult(mVoicemailUri, true);
-                            default:
-                                prepareContent();
+                        prepareContent();
+                        if (mRequestCode == ARCHIVE_REQUEST) {
+                            startArchiveVoicemailTask(mVoicemailUri, true /* archivedByUser */);
+                        } else if (mRequestCode == SHARE_REQUEST) {
+                            startArchiveVoicemailTask(mVoicemailUri, false /* archivedByUser */);
                         }
                     }
                 }
@@ -922,148 +906,89 @@
      * 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>() {
+    public void archiveContent(final Uri voicemailUri, final boolean archivedByUser) {
+        checkForContent(new OnContentCheckedListener() {
             @Override
-            public Uri doInBackground(Void... params) {
-                return performArchiveVoicemailOnBackgroundThread(voicemailUri, archivedByUser);
-            }
-
-            @Override
-            public void onPostExecute(Uri archivedVoicemailUri) {
-                notifyUiOfArchiveResult(voicemailUri, archivedVoicemailUri != null);
+            public void onContentChecked(boolean hasContent) {
+                if (!hasContent) {
+                    requestContent(archivedByUser ? ARCHIVE_REQUEST : SHARE_REQUEST);
+                } else {
+                    startArchiveVoicemailTask(voicemailUri, archivedByUser);
+                }
             }
         });
     }
 
     /**
-     * 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.
+     * Asynchronous task used to archive a voicemail given its uri.
      */
-    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);
+    protected void startArchiveVoicemailTask(final Uri voicemailUri, final boolean archivedByUser) {
+        mVoicemailAsyncTaskUtil.archiveVoicemailContent(
+                new VoicemailAsyncTaskUtil.OnArchiveVoicemailListener() {
+                    @Override
+                    public void onArchiveVoicemail(final Uri archivedVoicemailUri) {
+                        if (archivedVoicemailUri == null) {
+                            notifyUiOfArchiveResult(voicemailUri, false);
+                            return;
+                        }
 
-        if (callLogInfo == null || contentInfo == null) {
-            return null;
-        }
+                        if (archivedByUser) {
+                            setArchivedVoicemailStatusAndUpdateUI(voicemailUri,
+                                    archivedVoicemailUri, true);
+                        } else {
+                            sendShareIntent(archivedVoicemailUri);
+                        }
+                    }
+                }, voicemailUri);
+    }
 
-        callLogInfo.moveToFirst();
-        contentInfo.moveToFirst();
+    /**
+     * Sends the intent for sharing the voicemail file.
+     */
+    protected void sendShareIntent(final Uri voicemailUri) {
+        mVoicemailAsyncTaskUtil.getVoicemailFilePath(
+                new VoicemailAsyncTaskUtil.OnGetArchivedVoicemailFilePathListener() {
+                    @Override
+                    public void onGetArchivedVoicemailFilePath(String filePath) {
+                        mView.enableUiElements();
+                        if (filePath == null) {
+                            mView.setFetchContentTimeout();
+                            return;
+                        }
+                        Uri voicemailFileUri = FileProvider.getUriForFile(
+                                mContext,
+                                mContext.getString(R.string.contacts_file_provider_authority),
+                                new File(filePath));
+                        mContext.startActivity(Intent.createChooser(
+                                getShareIntent(voicemailFileUri),
+                                mContext.getResources().getText(
+                                        R.string.call_log_share_voicemail)));
+                    }
+                }, voicemailUri);
+    }
 
-        // Create values to insert into database
-        ContentValues values = new ContentValues();
-        values.put(VoicemailArchiveContract.VoicemailArchive.NUMBER,
-                contentInfo.getString(contentInfo.getColumnIndex(
-                        VoicemailContract.Voicemails.NUMBER)));
+    /** Sets archived_by_user field to the given boolean and updates the URI. */
+    private void setArchivedVoicemailStatusAndUpdateUI(
+            final Uri voicemailUri,
+            final Uri archivedVoicemailUri,
+            boolean status) {
+        mVoicemailAsyncTaskUtil.setVoicemailArchiveStatus(
+                new VoicemailAsyncTaskUtil.OnSetVoicemailArchiveStatusListener() {
+                    @Override
+                    public void onSetVoicemailArchiveStatus(boolean success) {
+                        notifyUiOfArchiveResult(voicemailUri, success);
+                    }
+                }, archivedVoicemailUri, status);
+    }
 
-        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;
+    private Intent getShareIntent(Uri voicemailFileUri) {
+        Intent shareIntent = new Intent();
+        shareIntent.setAction(Intent.ACTION_SEND);
+        shareIntent.putExtra(Intent.EXTRA_STREAM, voicemailFileUri);
+        shareIntent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
+        shareIntent.setType(mContext.getContentResolver()
+                .getType(voicemailFileUri));
+        return shareIntent;
     }
 
     @VisibleForTesting
diff --git a/tests/src/com/android/dialer/database/VoicemailArchiveProviderTest.java b/tests/src/com/android/dialer/database/VoicemailArchiveProviderTest.java
index cec7e05..abc2dc5 100644
--- a/tests/src/com/android/dialer/database/VoicemailArchiveProviderTest.java
+++ b/tests/src/com/android/dialer/database/VoicemailArchiveProviderTest.java
@@ -79,6 +79,33 @@
         assertTrue(doesFileExist());
     }
 
+    public void testQuery_createFileMimeTypeIsAMR() throws Exception {
+        insertVoicemailWithMimeType("audio/amr");
+        assertTrue(doesRowExist());
+        assertFalse(doesFileExist());
+        createFile();
+        assertTrue(doesFileExist());
+        assertEquals("amr", getFileExtension(getFilePath()));
+    }
+
+    public void testQuery_createFileMimeTypeIsMP3() throws Exception {
+        insertVoicemailWithMimeType("audio/mpeg");
+        assertTrue(doesRowExist());
+        assertFalse(doesFileExist());
+        createFile();
+        assertTrue(doesFileExist());
+        assertEquals("mp3", getFileExtension(getFilePath()));
+    }
+
+    public void testQuery_createFileMimeTypeNotExists() throws Exception {
+        insertVoicemailWithMimeType(TEST_STRING);
+        assertTrue(doesRowExist());
+        assertFalse(doesFileExist());
+        createFile();
+        assertTrue(doesFileExist());
+        assertEquals("", getFileExtension(getFilePath()));
+    }
+
     public void testQuery() {
         insertVoicemail();
         updateCursor();
@@ -179,6 +206,13 @@
         return voicemailFile.exists();
     }
 
+    private static String getFileExtension(String filePath) {
+        File file = new File(filePath);
+        String fileName = file.getName();
+        int index = fileName.lastIndexOf(".");
+        return index > 0 ? fileName.substring(index + 1) : "";
+    }
+
     private void assertCursorCount(int count) {
         assertEquals(count, mCursor.getCount());
     }
@@ -196,6 +230,12 @@
         mVoicemailUri = mResolver.insert(VoicemailArchive.CONTENT_URI, getTestValues());
     }
 
+    private void insertVoicemailWithMimeType(String mimeType) {
+        ContentValues values = getTestValues();
+        values.put(VoicemailArchive.MIME_TYPE, mimeType);
+        mVoicemailUri = mResolver.insert(VoicemailArchive.CONTENT_URI, values);
+    }
+
     private void updateCursor() {
         mCursor = mResolver.query(mVoicemailUri, null, null, null, null);
         assertEquals(true, mCursor.getCount() > 0);
@@ -226,7 +266,7 @@
         return mCursor.getString(mCursor.getColumnIndex(VoicemailArchive._DATA));
     }
 
-    private ContentValues getTestValues() {
+    private static ContentValues getTestValues() {
         ContentValues values = new ContentValues();
         values.put(VoicemailArchive.NUMBER, TEST_NUMBER);
         values.put(VoicemailArchive.MIME_TYPE, TEST_MIME_TYPE);
diff --git a/tests/src/com/android/dialer/voicemail/VoicemailActivityInstrumentationTestCase2.java b/tests/src/com/android/dialer/voicemail/VoicemailActivityInstrumentationTestCase2.java
index a992e8b..cabaf67 100644
--- a/tests/src/com/android/dialer/voicemail/VoicemailActivityInstrumentationTestCase2.java
+++ b/tests/src/com/android/dialer/voicemail/VoicemailActivityInstrumentationTestCase2.java
@@ -1,3 +1,19 @@
+/*
+ * 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;
@@ -23,7 +39,6 @@
 
 import static com.android.dialer.voicemail.VoicemailPlaybackPresenter.Tasks.CHECK_FOR_CONTENT;
 
-
 /**
  * Common methods and attributes between {@link VoicemailArchiveTest} and
  * {@link VoicemailPlaybackTest}.
diff --git a/tests/src/com/android/dialer/voicemail/VoicemailArchiveTest.java b/tests/src/com/android/dialer/voicemail/VoicemailArchiveTest.java
index 8cbd344..bbd5edc 100644
--- a/tests/src/com/android/dialer/voicemail/VoicemailArchiveTest.java
+++ b/tests/src/com/android/dialer/voicemail/VoicemailArchiveTest.java
@@ -15,14 +15,12 @@
  */
 
 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 com.android.dialer.database.VoicemailArchiveContract.VoicemailArchive;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/tests/src/com/android/dialer/voicemail/VoicemailAsyncTaskUtilTest.java b/tests/src/com/android/dialer/voicemail/VoicemailAsyncTaskUtilTest.java
new file mode 100644
index 0000000..d98d9fa
--- /dev/null
+++ b/tests/src/com/android/dialer/voicemail/VoicemailAsyncTaskUtilTest.java
@@ -0,0 +1,388 @@
+/*
+ * 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 android.content.res.AssetFileDescriptor;
+import android.net.Uri;
+import android.os.Bundle;
+import android.os.ParcelFileDescriptor;
+import android.provider.CallLog;
+import android.provider.VoicemailContract;
+import android.test.InstrumentationTestCase;
+import android.test.mock.MockContentResolver;
+
+import com.android.contacts.common.test.mocks.MockContentProvider;
+import com.android.contacts.common.test.mocks.MockContentProvider.Query;
+import com.android.dialer.calllog.CallLogQuery;
+import com.android.dialer.database.VoicemailArchiveContract;
+import com.android.dialer.util.AsyncTaskExecutors;
+import com.android.dialer.util.FakeAsyncTaskExecutor;
+import com.android.dialer.voicemail.VoicemailAsyncTaskUtil.OnGetArchivedVoicemailFilePathListener;
+import com.android.dialer.voicemail.VoicemailAsyncTaskUtil.OnArchiveVoicemailListener;
+import com.android.dialer.voicemail.VoicemailAsyncTaskUtil.OnSetVoicemailArchiveStatusListener;
+
+import org.junit.Rule;
+import org.junit.rules.TemporaryFolder;
+import static org.mockito.Mockito.*;
+
+import java.io.FileNotFoundException;
+import java.io.IOException;
+
+public class VoicemailAsyncTaskUtilTest extends InstrumentationTestCase {
+    private static final String TEST_MIME_TYPE = "audio/mp3";
+    private static final String TEST_NUMBER = "+1412555555";
+    private static final String TEST_FILE_PATH = "TEST_PATH";
+    private static final String TEST_TRANSCRIPTION = "TEST_TRANSCRIPTION";
+    private static final long TEST_DATE = 0;
+    private static final long TEST_DURATION = 0;
+    private static final int TEST_SERVER_ID = 1;
+    private static final int TEST_ID = 2;
+    private static final Uri ARCHIVED_VOICEMAIL_URI =
+            VoicemailArchiveContract.VoicemailArchive.buildWithId(TEST_ID);
+    private static final Uri VOICEMAIL_URI = VoicemailContract.Voicemails.CONTENT_URI
+            .buildUpon().appendPath(Integer.toString(TEST_SERVER_ID)).build();
+    private static final String[] CALLLOG_QUERY_PROJECTION = new String[] {
+            CallLog.Calls._ID,
+            CallLog.Calls.NUMBER,
+            CallLog.Calls.DATE,
+            CallLog.Calls.DURATION,
+            CallLog.Calls.TYPE,
+            CallLog.Calls.COUNTRY_ISO,
+            CallLog.Calls.VOICEMAIL_URI,
+            CallLog.Calls.GEOCODED_LOCATION,
+            CallLog.Calls.CACHED_NAME,
+            CallLog.Calls.CACHED_NUMBER_TYPE,
+            CallLog.Calls.CACHED_NUMBER_LABEL,
+            CallLog.Calls.CACHED_LOOKUP_URI,
+            CallLog.Calls.CACHED_MATCHED_NUMBER,
+            CallLog.Calls.CACHED_NORMALIZED_NUMBER,
+            CallLog.Calls.CACHED_PHOTO_ID,
+            CallLog.Calls.CACHED_FORMATTED_NUMBER,
+            CallLog.Calls.IS_READ,
+            CallLog.Calls.NUMBER_PRESENTATION,
+            CallLog.Calls.PHONE_ACCOUNT_COMPONENT_NAME,
+            CallLog.Calls.PHONE_ACCOUNT_ID,
+            CallLog.Calls.FEATURES,
+            CallLog.Calls.DATA_USAGE,
+            CallLog.Calls.TRANSCRIPTION,
+            CallLog.Calls.CACHED_PHOTO_URI
+    };
+    private static final String[] VOICEMAIL_PROJECTION = new String[] {
+            VoicemailContract.Voicemails._ID,
+            VoicemailContract.Voicemails.NUMBER,
+            VoicemailContract.Voicemails.DATE,
+            VoicemailContract.Voicemails.DURATION,
+            VoicemailContract.Voicemails.MIME_TYPE,
+            VoicemailContract.Voicemails.TRANSCRIPTION,
+    };
+
+    private final MockContentResolver mContentResolver = new MockContentResolver();
+    private final MockContentProvider mArchiveContentProvider = new TestVoicemailContentProvider();
+    private final MockContentProvider mVoicemailContentProvider =
+            new TestVoicemailContentProvider();
+    private final MockContentProvider mCallLogContentProvider = new MockContentProvider();
+    @Rule
+    private final TemporaryFolder mTemporaryFolder = new TemporaryFolder();
+
+    private VoicemailAsyncTaskUtil mVoicemailAsyncTaskUtil;
+    private FakeAsyncTaskExecutor mFakeAsyncTaskExecutor;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        mFakeAsyncTaskExecutor = new FakeAsyncTaskExecutor(getInstrumentation());
+        AsyncTaskExecutors.setFactoryForTest(mFakeAsyncTaskExecutor.getFactory());
+        mContentResolver.addProvider(VoicemailArchiveContract.AUTHORITY, mArchiveContentProvider);
+        mContentResolver.addProvider(VoicemailContract.AUTHORITY, mVoicemailContentProvider);
+        mContentResolver.addProvider(CallLog.AUTHORITY, mCallLogContentProvider);
+        mVoicemailAsyncTaskUtil = new VoicemailAsyncTaskUtil(mContentResolver);
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        AsyncTaskExecutors.setFactoryForTest(null);
+        super.tearDown();
+    }
+
+    public void testGetVoicemailFilePath_VoicemailExists() throws Throwable {
+        newVoicemailArchiveQuery().withAnyProjection()
+                .returnRow(getCombinedContentValuesWithData());
+        final OnGetArchivedVoicemailFilePathListener listener =
+                mock(OnGetArchivedVoicemailFilePathListener.class);
+        runTestOnUiThread(new Runnable() {
+            @Override
+            public void run() {
+                mVoicemailAsyncTaskUtil.getVoicemailFilePath(listener, ARCHIVED_VOICEMAIL_URI);
+            }
+        });
+        mFakeAsyncTaskExecutor.runTask(VoicemailAsyncTaskUtil.Tasks.GET_VOICEMAIL_FILE_PATH);
+        verify(listener).onGetArchivedVoicemailFilePath(TEST_FILE_PATH);
+        verifyQueries();
+    }
+
+    public void testGetVoicemailFilePath_VoicemailNotExists() throws Throwable {
+        newVoicemailArchiveFakeQuery().withAnyProjection().returnEmptyCursor();
+        final OnGetArchivedVoicemailFilePathListener listener =
+                mock(OnGetArchivedVoicemailFilePathListener.class);
+        runTestOnUiThread(new Runnable() {
+            @Override
+            public void run() {
+                mVoicemailAsyncTaskUtil.getVoicemailFilePath(listener, getFakeVoicemailUri());
+            }
+        });
+        mFakeAsyncTaskExecutor.runTask(VoicemailAsyncTaskUtil.Tasks.GET_VOICEMAIL_FILE_PATH);
+        verify(listener).onGetArchivedVoicemailFilePath(null);
+        verifyQueries();
+    }
+
+    public void testSetVoicemailArchiveStatus_VoicemailNotExists() throws Throwable {
+        newVoicemailArchiveNotExistsUpdateQuery(true);
+        final OnSetVoicemailArchiveStatusListener listener =
+                mock(OnSetVoicemailArchiveStatusListener.class);
+        runTestOnUiThread(new Runnable() {
+            @Override
+            public void run() {
+                mVoicemailAsyncTaskUtil.setVoicemailArchiveStatus(listener,
+                        getFakeVoicemailUri(), true);
+            }
+        });
+        mFakeAsyncTaskExecutor.runTask(VoicemailAsyncTaskUtil.Tasks.SET_VOICEMAIL_ARCHIVE_STATUS);
+        verify(listener).onSetVoicemailArchiveStatus(false);
+        verifyQueries();
+    }
+
+    public void testSetVoicemailArchiveStatus_VoicemailExists() throws Throwable {
+        newVoicemailArchiveExistsUpdateQuery(true);
+        final OnSetVoicemailArchiveStatusListener listener =
+                mock(OnSetVoicemailArchiveStatusListener.class);
+        runTestOnUiThread(new Runnable() {
+            @Override
+            public void run() {
+                mVoicemailAsyncTaskUtil.setVoicemailArchiveStatus(listener,
+                        ARCHIVED_VOICEMAIL_URI, true);
+            }
+        });
+        mFakeAsyncTaskExecutor.runTask(VoicemailAsyncTaskUtil.Tasks.SET_VOICEMAIL_ARCHIVE_STATUS);
+        verify(listener).onSetVoicemailArchiveStatus(true);
+        verifyQueries();
+    }
+
+    public void testArchiveVoicemailContent_ArchiveNotExists() throws Throwable {
+        newVoicemailArchiveExistsQuery().returnEmptyCursor();
+        newQueryCallLogInfo().returnRow(getCallLogContentValues());
+        newVoicemailQuery().returnRow(getVoicemailContentValues());
+        newVoicemailArchiveInsert();
+        final OnArchiveVoicemailListener listener = mock(OnArchiveVoicemailListener.class);
+        runTestOnUiThread(new Runnable() {
+            @Override
+            public void run() {
+                mVoicemailAsyncTaskUtil.archiveVoicemailContent(listener, VOICEMAIL_URI);
+            }
+        });
+        mFakeAsyncTaskExecutor.runTask(VoicemailAsyncTaskUtil.Tasks.ARCHIVE_VOICEMAIL_CONTENT);
+        verify(listener).onArchiveVoicemail(ARCHIVED_VOICEMAIL_URI);
+        verifyQueries();
+    }
+
+    public void testArchiveVoicemailContent_ArchiveExists() throws Throwable {
+        newVoicemailArchiveExistsQuery().returnRow(getCombinedValuesWithId());
+        final OnArchiveVoicemailListener listener = mock(OnArchiveVoicemailListener.class);
+        runTestOnUiThread(new Runnable() {
+            @Override
+            public void run() {
+                mVoicemailAsyncTaskUtil.archiveVoicemailContent(listener, VOICEMAIL_URI);
+            }
+        });
+        mFakeAsyncTaskExecutor.runTask(VoicemailAsyncTaskUtil.Tasks.ARCHIVE_VOICEMAIL_CONTENT);
+        verify(listener).onArchiveVoicemail(ARCHIVED_VOICEMAIL_URI);
+        verifyQueries();
+    }
+
+    public void testArchiveVoicemailContent_CallLogInfoNotExists() throws Throwable {
+        newVoicemailArchiveExistsQuery().returnEmptyCursor();
+        newQueryCallLogInfo().returnEmptyCursor();
+        newVoicemailQuery().returnEmptyCursor();
+        final OnArchiveVoicemailListener listener = mock(OnArchiveVoicemailListener.class);
+        runTestOnUiThread(new Runnable() {
+            @Override
+            public void run() {
+                mVoicemailAsyncTaskUtil.archiveVoicemailContent(listener, VOICEMAIL_URI);
+            }
+        });
+        mFakeAsyncTaskExecutor.runTask(VoicemailAsyncTaskUtil.Tasks.ARCHIVE_VOICEMAIL_CONTENT);
+        verify(listener).onArchiveVoicemail(null);
+        verifyQueries();
+    }
+
+    private Query newVoicemailArchiveQuery() {
+        return mArchiveContentProvider.expectQuery(ARCHIVED_VOICEMAIL_URI);
+    }
+
+    private Query newVoicemailArchiveFakeQuery() {
+        return mArchiveContentProvider.expectQuery(getFakeVoicemailUri());
+    }
+
+    private Query newQueryCallLogInfo() {
+        return mCallLogContentProvider.expectQuery(ContentUris.withAppendedId(
+                CallLog.Calls.CONTENT_URI_WITH_VOICEMAIL, ContentUris.parseId(VOICEMAIL_URI)))
+                .withProjection(CALLLOG_QUERY_PROJECTION);
+    }
+
+    private Query newVoicemailQuery() {
+        return mVoicemailContentProvider.expectQuery(VOICEMAIL_URI).withAnySelection()
+                .withProjection(VOICEMAIL_PROJECTION);
+    }
+
+    private Query newVoicemailArchiveExistsQuery() {
+        return mArchiveContentProvider.expectQuery(
+                VoicemailArchiveContract.VoicemailArchive.CONTENT_URI)
+                .withSelection(VoicemailArchiveContract.VoicemailArchive.SERVER_ID + "="
+                        + ContentUris.parseId(VOICEMAIL_URI), (String[]) null)
+                .withProjection(VoicemailArchiveContract.VoicemailArchive._ID);
+    }
+
+    private void newVoicemailArchiveInsert() {
+        mArchiveContentProvider.expectInsert(
+                VoicemailArchiveContract.VoicemailArchive.CONTENT_URI, getCombinedContentValues(),
+                ARCHIVED_VOICEMAIL_URI);
+    }
+
+    private void newVoicemailArchiveNotExistsUpdateQuery(boolean status) {
+        mArchiveContentProvider.expectUpdate(getFakeVoicemailUri(),
+                getArchiveStatusUpdateValues(status), null, null).returnRowsAffected(0);
+    }
+
+    private void newVoicemailArchiveExistsUpdateQuery(boolean status) {
+        mArchiveContentProvider.expectUpdate(ARCHIVED_VOICEMAIL_URI,
+                getArchiveStatusUpdateValues(status), null, null).returnRowsAffected(1);
+    }
+
+    private static ContentValues getCallLogContentValues() {
+        ContentValues values = new ContentValues();
+        values.put(CALLLOG_QUERY_PROJECTION[CallLogQuery.GEOCODED_LOCATION], "");
+        values.put(CALLLOG_QUERY_PROJECTION[CallLogQuery.CACHED_NAME], "");
+        values.put(CALLLOG_QUERY_PROJECTION[CallLogQuery.COUNTRY_ISO], "");
+        values.put(CALLLOG_QUERY_PROJECTION[CallLogQuery.CACHED_NUMBER_TYPE], 0);
+        values.put(CALLLOG_QUERY_PROJECTION[CallLogQuery.CACHED_NUMBER_LABEL], "");
+        values.put(CALLLOG_QUERY_PROJECTION[CallLogQuery.CACHED_LOOKUP_URI], "");
+        values.put(CALLLOG_QUERY_PROJECTION[CallLogQuery.CACHED_MATCHED_NUMBER], "");
+        values.put(CALLLOG_QUERY_PROJECTION[CallLogQuery.CACHED_NORMALIZED_NUMBER], "");
+        values.put(CALLLOG_QUERY_PROJECTION[CallLogQuery.CACHED_FORMATTED_NUMBER], "");
+        values.put(CALLLOG_QUERY_PROJECTION[CallLogQuery.NUMBER_PRESENTATION], 0);
+        values.put(CALLLOG_QUERY_PROJECTION[CallLogQuery.ACCOUNT_COMPONENT_NAME], "");
+        values.put(CALLLOG_QUERY_PROJECTION[CallLogQuery.ACCOUNT_ID], "");
+        values.put(CALLLOG_QUERY_PROJECTION[CallLogQuery.FEATURES], 0);
+        values.put(CALLLOG_QUERY_PROJECTION[23], "");
+        return values;
+    }
+
+    private static ContentValues getVoicemailContentValues() {
+        ContentValues values = new ContentValues();
+        values.put(VoicemailContract.Voicemails.NUMBER, TEST_NUMBER);
+        values.put(VoicemailContract.Voicemails.DATE, TEST_DATE);
+        values.put(VoicemailContract.Voicemails.DURATION, TEST_DURATION);
+        values.put(VoicemailContract.Voicemails.MIME_TYPE, TEST_MIME_TYPE);
+        values.put(VoicemailContract.Voicemails._ID, TEST_SERVER_ID);
+        values.put(VoicemailContract.Voicemails.TRANSCRIPTION, TEST_TRANSCRIPTION);
+        values.put("_data", TEST_FILE_PATH);    // VoicemailContract.Voicemails._DATA
+        return values;
+    }
+
+    private static ContentValues getCombinedContentValues() {
+        ContentValues values = new ContentValues();
+        // Call log info
+        values.put(VoicemailArchiveContract.VoicemailArchive.GEOCODED_LOCATION, "");
+        values.put(VoicemailArchiveContract.VoicemailArchive.CACHED_NAME, "");
+        values.put(VoicemailArchiveContract.VoicemailArchive.CACHED_NUMBER_TYPE, 0);
+        values.put(VoicemailArchiveContract.VoicemailArchive.CACHED_NUMBER_LABEL, "");
+        values.put(VoicemailArchiveContract.VoicemailArchive.CACHED_LOOKUP_URI, "");
+        values.put(VoicemailArchiveContract.VoicemailArchive.CACHED_MATCHED_NUMBER, "");
+        values.put(VoicemailArchiveContract.VoicemailArchive.CACHED_NORMALIZED_NUMBER, "");
+        values.put(VoicemailArchiveContract.VoicemailArchive.CACHED_FORMATTED_NUMBER, "");
+        values.put(VoicemailArchiveContract.VoicemailArchive.NUMBER_PRESENTATION, 0);
+        values.put(VoicemailArchiveContract.VoicemailArchive.ACCOUNT_COMPONENT_NAME, "");
+        values.put(VoicemailArchiveContract.VoicemailArchive.ACCOUNT_ID, "");
+        values.put(VoicemailArchiveContract.VoicemailArchive.FEATURES, 0);
+        values.put(VoicemailArchiveContract.VoicemailArchive.CACHED_PHOTO_URI, "");
+        values.put(VoicemailArchiveContract.VoicemailArchive.COUNTRY_ISO, "");
+
+        // Voicemail content info
+        values.put(VoicemailArchiveContract.VoicemailArchive.NUMBER, TEST_NUMBER);
+        values.put(VoicemailArchiveContract.VoicemailArchive.DATE, TEST_DATE);
+        values.put(VoicemailArchiveContract.VoicemailArchive.DURATION, TEST_DURATION);
+        values.put(VoicemailArchiveContract.VoicemailArchive.MIME_TYPE, TEST_MIME_TYPE);
+        values.put(VoicemailArchiveContract.VoicemailArchive.SERVER_ID, TEST_SERVER_ID);
+        values.put(VoicemailArchiveContract.VoicemailArchive.TRANSCRIPTION, TEST_TRANSCRIPTION);
+
+        // Custom fields
+        values.put(VoicemailArchiveContract.VoicemailArchive.ARCHIVED, false);
+        return values;
+    }
+
+    private static ContentValues getCombinedContentValuesWithData() {
+        ContentValues values = getCombinedContentValues();
+        values.put(VoicemailArchiveContract.VoicemailArchive._DATA, TEST_FILE_PATH);
+        return values;
+    }
+
+    private static ContentValues getCombinedValuesWithId() {
+        ContentValues values = getCombinedContentValuesWithData();
+        values.put(VoicemailArchiveContract.VoicemailArchive._ID, TEST_ID);
+        return values;
+    }
+
+    private static ContentValues getArchiveStatusUpdateValues(boolean status) {
+        ContentValues values = new ContentValues();
+        values.put(VoicemailArchiveContract.VoicemailArchive.ARCHIVED, status);
+        return values;
+    }
+
+    private static Uri getFakeVoicemailUri() {
+        return VoicemailArchiveContract.VoicemailArchive.buildWithId(0);
+    }
+
+    private void verifyQueries() {
+        mArchiveContentProvider.verify();
+        mCallLogContentProvider.verify();
+        mVoicemailContentProvider.verify();
+    }
+
+    private class TestVoicemailContentProvider extends MockContentProvider {
+        @Override
+        public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException {
+            int modeBits = ParcelFileDescriptor.parseMode(mode);
+            try {
+                return ParcelFileDescriptor.open(mTemporaryFolder.newFile(), modeBits);
+            } catch (IOException e) {
+                return null;
+            }
+        }
+
+        @Override
+        public AssetFileDescriptor openTypedAssetFile(Uri uri, String mimeTypeFilter, Bundle opts) {
+            try {
+                return new AssetFileDescriptor(openFile(uri, "r"), 0,
+                        AssetFileDescriptor.UNKNOWN_LENGTH);
+            } catch (FileNotFoundException e) {
+                return null;
+            }
+        }
+    }
+}
+
diff --git a/tests/src/com/android/dialer/voicemail/VoicemailPlaybackTest.java b/tests/src/com/android/dialer/voicemail/VoicemailPlaybackTest.java
index abd582b..be9905e 100644
--- a/tests/src/com/android/dialer/voicemail/VoicemailPlaybackTest.java
+++ b/tests/src/com/android/dialer/voicemail/VoicemailPlaybackTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2015 The Android Open Source Project
+ * 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.
@@ -16,10 +16,14 @@
 
 package com.android.dialer.voicemail;
 
+import android.content.ContentUris;
+import android.database.Cursor;
+import android.net.Uri;
 import android.test.suitebuilder.annotation.Suppress;
 
 import com.android.dialer.calllog.CallLogActivity;
-
+import com.android.dialer.database.VoicemailArchiveContract;
+import static com.android.dialer.voicemail.VoicemailAsyncTaskUtil.Tasks.ARCHIVE_VOICEMAIL_CONTENT;
 import static com.android.dialer.voicemail.VoicemailPlaybackPresenter.Tasks.CHECK_FOR_CONTENT;
 
 /**
@@ -38,6 +42,12 @@
         mPresenter = VoicemailPlaybackPresenter.getInstance(getActivity(), null);
     }
 
+    @Override
+    public void tearDown() throws Exception {
+        cleanUpArchivedVoicemailUri();
+        super.tearDown();
+    }
+
     @Suppress
     public void testWhenCheckForContentCompletes() throws Throwable {
         setUriForRealFileVoicemailEntry();
@@ -54,4 +64,82 @@
 
         assertStateTextContains("Loading voicemail");
     }
+
+    public void testArchiveContent() throws Throwable {
+        setUriForRealFileVoicemailEntry();
+        setPlaybackViewForPresenter();
+        mFakeAsyncTaskExecutor.runTask(CHECK_FOR_CONTENT);
+
+        getInstrumentation().runOnMainSync(new Runnable() {
+            @Override
+            public void run() {
+                mPresenter.archiveContent(mVoicemailUri, true);
+            }
+        });
+        mFakeAsyncTaskExecutor.runTask(CHECK_FOR_CONTENT);
+        mFakeAsyncTaskExecutor.runTask(ARCHIVE_VOICEMAIL_CONTENT);
+        getInstrumentation().waitForIdleSync();
+        assertVoicemailArchived();
+    }
+
+    public void testShareContent() throws Throwable {
+        setUriForRealFileVoicemailEntry();
+        setPlaybackViewForPresenter();
+        mFakeAsyncTaskExecutor.runTask(CHECK_FOR_CONTENT);
+
+        getInstrumentation().runOnMainSync(new Runnable() {
+            @Override
+            public void run() {
+                mPresenter.archiveContent(mVoicemailUri, false);
+            }
+        });
+        mFakeAsyncTaskExecutor.runTask(CHECK_FOR_CONTENT);
+        mFakeAsyncTaskExecutor.runTask(ARCHIVE_VOICEMAIL_CONTENT);
+        getInstrumentation().waitForIdleSync();
+        assertVoicemailArchived();
+    }
+
+    private void assertVoicemailArchived() {
+        try (Cursor cursor = getArchivedVoicemailCursor()) {
+            assertTrue(hasContent(cursor));
+            assertEquals(ContentUris.parseId(mVoicemailUri), getRowServerId(cursor));
+        } catch (Exception e) {
+            fail("Voicemail was not archived: " + e.toString());
+        }
+    }
+
+    private void cleanUpArchivedVoicemailUri() {
+        try (Cursor cursor = getArchivedVoicemailCursor()) {
+            if (hasContent(cursor)) {
+                getContentResolver().delete(getRowUri(cursor), null, null);
+            }
+        }
+    }
+
+    private Cursor getArchivedVoicemailCursor() {
+        return getContentResolver().query(
+                VoicemailArchiveContract.VoicemailArchive.CONTENT_URI,
+                new String[] {
+                        VoicemailArchiveContract.VoicemailArchive._ID,
+                        VoicemailArchiveContract.VoicemailArchive.SERVER_ID
+                },
+                VoicemailArchiveContract.VoicemailArchive.SERVER_ID + "="
+                        + ContentUris.parseId(mVoicemailUri),
+                null,
+                null);
+    }
+
+    private int getRowServerId(Cursor cursor) {
+        return cursor
+                .getInt(cursor.getColumnIndex(VoicemailArchiveContract.VoicemailArchive.SERVER_ID));
+    }
+
+    private Uri getRowUri(Cursor cursor) {
+        return VoicemailArchiveContract.VoicemailArchive.buildWithId(cursor.getInt(
+                cursor.getColumnIndex(VoicemailArchiveContract.VoicemailArchive._ID)));
+    }
+
+    private boolean hasContent(Cursor cursor) {
+        return cursor != null && cursor.moveToFirst();
+    }
 }
\ No newline at end of file
