diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index 5889bc5..5db88a0 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -20,9 +20,9 @@
     <string name="app_label" msgid="3389954322874982620">"የዕውቂያ ማከማቻ"</string>
     <string name="provider_label" msgid="6012150850819899907">"እውቅያዎች"</string>
     <string name="upgrade_msg" msgid="8640807392794309950">"የእውቂያዎችን ውሂብ ጎታ በማሻሻል ላይ፡፡"</string>
-    <string name="upgrade_out_of_memory_notification_ticker" msgid="7638747231223520477">"የእውቅያዎች  አሻሽል  ተጨማሪ ማህደረ ትውስታ ይፈልጋል"</string>
+    <string name="upgrade_out_of_memory_notification_ticker" msgid="7638747231223520477">"የእውቅያዎች አልቅ ተጨማሪ ማህደረ ትውስታ ይፈልጋል"</string>
     <string name="upgrade_out_of_memory_notification_title" msgid="8888171924684998531">"ለእውቅያዎች ማከማቻ በማሻሻል ላይ"</string>
-    <string name="upgrade_out_of_memory_notification_text" msgid="8438179450336437626">"አሻሽሉን ለማጠናቀቅ ንካ፡፡"</string>
+    <string name="upgrade_out_of_memory_notification_text" msgid="8438179450336437626">"አሻሽሉን ለማላቅ ይንኩ"</string>
     <string name="default_directory" msgid="93961630309570294">"እውቅያዎች"</string>
     <string name="local_invisible_directory" msgid="705244318477396120">"ሌላ"</string>
     <string name="read_write_all_voicemail_label" msgid="4557216100818257560">"ሁሉንም  የድምፅ መልዕክቶች ድረስ"</string>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index d2fd0a6..90d7822 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="sharedUserLabel" msgid="8024311725474286801">"تطبيقات Android المركزية"</string>
+    <string name="sharedUserLabel" msgid="8024311725474286801">"‏تطبيقات Android المركزية"</string>
     <string name="app_label" msgid="3389954322874982620">"تخزين جهات الاتصال"</string>
     <string name="provider_label" msgid="6012150850819899907">"جهات الاتصال"</string>
     <string name="upgrade_msg" msgid="8640807392794309950">"جارٍ ترقية قاعدة بيانات جهات الاتصال."</string>
diff --git a/res/values-az-rAZ/strings.xml b/res/values-az-rAZ/strings.xml
new file mode 100644
index 0000000..d11f636
--- /dev/null
+++ b/res/values-az-rAZ/strings.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 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.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="sharedUserLabel" msgid="8024311725474286801">"Android Core Apps"</string>
+    <string name="app_label" msgid="3389954322874982620">"Kontakt Yaddaşı"</string>
+    <string name="provider_label" msgid="6012150850819899907">"Kontaktlar"</string>
+    <string name="upgrade_msg" msgid="8640807392794309950">"Kontakt data bazası təkmilləşdirilir."</string>
+    <string name="upgrade_out_of_memory_notification_ticker" msgid="7638747231223520477">"Kontakt təkmilləşdirməsi əlavə yaddaş tələb edir."</string>
+    <string name="upgrade_out_of_memory_notification_title" msgid="8888171924684998531">"Kontakt üçün yaddaş təkmilləşdirilir."</string>
+    <string name="upgrade_out_of_memory_notification_text" msgid="8438179450336437626">"Təkmilləşdirməni tamamlamaq üçün toxunun."</string>
+    <string name="default_directory" msgid="93961630309570294">"Kontaktlar"</string>
+    <string name="local_invisible_directory" msgid="705244318477396120">"Digər"</string>
+    <string name="read_write_all_voicemail_label" msgid="4557216100818257560">"Bütün səsli məktublara giriş"</string>
+    <string name="read_write_all_voicemail_description" msgid="8029809937805761356">"Tətbiqə bu cihazın giriş əldə edə biləcəyi bütün səsli məktubları saxlamağa və əldə etməyə imkan verir."</string>
+    <string name="voicemail_from_column" msgid="435732568832121444">"Səsli mesaj göndərən: "</string>
+    <string name="debug_dump_title" msgid="4916885724165570279">"Kontakt data bazasını kopyalayın"</string>
+    <string name="debug_dump_database_message" msgid="406438635002392290">"Siz 1) informasiyaya və daxili yaddaş ehtiyatındakı zəng jurnalına bağlı data bazanızın nüsxəsini hazırlamaq 2) və onu e-poçt ilə göndərmək üzrəsiniz. Onu cihazdan kənarda və ya alınmış e-məktubda uğurla kopyalayandan sonra nüsxəsini silməyi unutmayın."</string>
+    <string name="debug_dump_delete_button" msgid="7832879421132026435">"İndi silin"</string>
+    <string name="debug_dump_start_button" msgid="2837506913757600001">"Başladın"</string>
+    <string name="debug_dump_email_sender_picker" msgid="3534420908672176460">"Faylınızı göndərmək üçün proqram seçin"</string>
+    <string name="debug_dump_email_subject" msgid="108188398416385976">"Kontakt Db qoşulub"</string>
+    <string name="debug_dump_email_body" msgid="4577749800871444318">"Qoşmada mənim bütün kontakt məlumatlarım olan kontakt data bazam var. Ehtiyatla idarə edin."</string>
+</resources>
diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml
new file mode 100644
index 0000000..d11f636
--- /dev/null
+++ b/res/values-az/strings.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 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.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="sharedUserLabel" msgid="8024311725474286801">"Android Core Apps"</string>
+    <string name="app_label" msgid="3389954322874982620">"Kontakt Yaddaşı"</string>
+    <string name="provider_label" msgid="6012150850819899907">"Kontaktlar"</string>
+    <string name="upgrade_msg" msgid="8640807392794309950">"Kontakt data bazası təkmilləşdirilir."</string>
+    <string name="upgrade_out_of_memory_notification_ticker" msgid="7638747231223520477">"Kontakt təkmilləşdirməsi əlavə yaddaş tələb edir."</string>
+    <string name="upgrade_out_of_memory_notification_title" msgid="8888171924684998531">"Kontakt üçün yaddaş təkmilləşdirilir."</string>
+    <string name="upgrade_out_of_memory_notification_text" msgid="8438179450336437626">"Təkmilləşdirməni tamamlamaq üçün toxunun."</string>
+    <string name="default_directory" msgid="93961630309570294">"Kontaktlar"</string>
+    <string name="local_invisible_directory" msgid="705244318477396120">"Digər"</string>
+    <string name="read_write_all_voicemail_label" msgid="4557216100818257560">"Bütün səsli məktublara giriş"</string>
+    <string name="read_write_all_voicemail_description" msgid="8029809937805761356">"Tətbiqə bu cihazın giriş əldə edə biləcəyi bütün səsli məktubları saxlamağa və əldə etməyə imkan verir."</string>
+    <string name="voicemail_from_column" msgid="435732568832121444">"Səsli mesaj göndərən: "</string>
+    <string name="debug_dump_title" msgid="4916885724165570279">"Kontakt data bazasını kopyalayın"</string>
+    <string name="debug_dump_database_message" msgid="406438635002392290">"Siz 1) informasiyaya və daxili yaddaş ehtiyatındakı zəng jurnalına bağlı data bazanızın nüsxəsini hazırlamaq 2) və onu e-poçt ilə göndərmək üzrəsiniz. Onu cihazdan kənarda və ya alınmış e-məktubda uğurla kopyalayandan sonra nüsxəsini silməyi unutmayın."</string>
+    <string name="debug_dump_delete_button" msgid="7832879421132026435">"İndi silin"</string>
+    <string name="debug_dump_start_button" msgid="2837506913757600001">"Başladın"</string>
+    <string name="debug_dump_email_sender_picker" msgid="3534420908672176460">"Faylınızı göndərmək üçün proqram seçin"</string>
+    <string name="debug_dump_email_subject" msgid="108188398416385976">"Kontakt Db qoşulub"</string>
+    <string name="debug_dump_email_body" msgid="4577749800871444318">"Qoşmada mənim bütün kontakt məlumatlarım olan kontakt data bazam var. Ehtiyatla idarə edin."</string>
+</resources>
diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml
deleted file mode 100644
index 171fbb6..0000000
--- a/res/values-be/strings.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2009 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="sharedUserLabel" msgid="8024311725474286801">"Асноўныя праграмы для Android"</string>
-    <string name="app_label" msgid="3389954322874982620">"Сховішча кантактаў"</string>
-    <string name="provider_label" msgid="6012150850819899907">"Кантакты"</string>
-    <string name="upgrade_msg" msgid="8640807392794309950">"Абнаўленне базы дадзеных кантактаў."</string>
-    <string name="upgrade_out_of_memory_notification_ticker" msgid="7638747231223520477">"Для абнаўлення кантактаў патрабуецца больш памяці."</string>
-    <string name="upgrade_out_of_memory_notification_title" msgid="8888171924684998531">"Каб абнавiць кантакты, патрабуецца больш памяцi"</string>
-    <string name="upgrade_out_of_memory_notification_text" msgid="8438179450336437626">"Націсніце, каб завершыць абнаўленне."</string>
-    <string name="default_directory" msgid="93961630309570294">"Кантакты"</string>
-    <string name="local_invisible_directory" msgid="705244318477396120">"Іншае"</string>
-    <string name="read_write_all_voicemail_label" msgid="4557216100818257560">"Доступ да ўсіх галасавых паведамленняў"</string>
-    <string name="read_write_all_voicemail_description" msgid="8029809937805761356">"Дазваляе прыкладанню захоўваць і прайграваць усе даступныя для гэтай прылады паведамленні галасавой пошты."</string>
-    <string name="voicemail_from_column" msgid="435732568832121444">"Галасавое паведамленне ад "</string>
-    <string name="debug_dump_title" msgid="4916885724165570279">"Капiраваць базу дадзеных кантактаў"</string>
-    <string name="debug_dump_database_message" msgid="406438635002392290">"Вы збіраецеся 1) зрабіць копію базы дадзеных, якая ўключае ў сябе ўсе звесткi пра кантакты і званкi на ўнутранай памяці, і 2) адправiць яго па электроннай пошце. Не забудзьцеся выдаліць копію, як толькі вы паспяхова скапіруеце іх на прыладу ці атрымаеце па электроннай пошце."</string>
-    <string name="debug_dump_delete_button" msgid="7832879421132026435">"Выдаліць зараз"</string>
-    <string name="debug_dump_start_button" msgid="2837506913757600001">"Пачаць"</string>
-    <string name="debug_dump_email_sender_picker" msgid="3534420908672176460">"Выберыце праграму для адпраўкі файла"</string>
-    <string name="debug_dump_email_subject" msgid="108188398416385976">"Далучаны кантакты Dd"</string>
-    <string name="debug_dump_email_body" msgid="4577749800871444318">"Далучана база дадзеных маiх кантактаў з усёй інфармацыяй. Працуйце з ёй уважліва."</string>
-</resources>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
new file mode 100644
index 0000000..27342c9
--- /dev/null
+++ b/res/values-en-rIN/strings.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 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.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="sharedUserLabel" msgid="8024311725474286801">"Android Core Apps"</string>
+    <string name="app_label" msgid="3389954322874982620">"Contacts Storage"</string>
+    <string name="provider_label" msgid="6012150850819899907">"Contacts"</string>
+    <string name="upgrade_msg" msgid="8640807392794309950">"Upgrading contacts database."</string>
+    <string name="upgrade_out_of_memory_notification_ticker" msgid="7638747231223520477">"Contact upgrade needs more memory."</string>
+    <string name="upgrade_out_of_memory_notification_title" msgid="8888171924684998531">"Upgrading storage for contacts"</string>
+    <string name="upgrade_out_of_memory_notification_text" msgid="8438179450336437626">"Touch to complete the upgrade."</string>
+    <string name="default_directory" msgid="93961630309570294">"Contacts"</string>
+    <string name="local_invisible_directory" msgid="705244318477396120">"Other"</string>
+    <string name="read_write_all_voicemail_label" msgid="4557216100818257560">"Access all voicemails"</string>
+    <string name="read_write_all_voicemail_description" msgid="8029809937805761356">"Allows the app to store and retrieve all voicemails that this device can access."</string>
+    <string name="voicemail_from_column" msgid="435732568832121444">"Voicemail from "</string>
+    <string name="debug_dump_title" msgid="4916885724165570279">"Copy contacts database"</string>
+    <string name="debug_dump_database_message" msgid="406438635002392290">"You are about to 1) make a copy of your database which includes all contacts related information and all call log to the internal storage, and 2) email it. Remember to delete the copy as soon as you have successfully copied it off the device or the email is received."</string>
+    <string name="debug_dump_delete_button" msgid="7832879421132026435">"Delete now"</string>
+    <string name="debug_dump_start_button" msgid="2837506913757600001">"Start"</string>
+    <string name="debug_dump_email_sender_picker" msgid="3534420908672176460">"Choose a programme to send your file"</string>
+    <string name="debug_dump_email_subject" msgid="108188398416385976">"Contacts Db attached"</string>
+    <string name="debug_dump_email_body" msgid="4577749800871444318">"Attached is my contacts database with all my contacts information. Handle with care."</string>
+</resources>
diff --git a/res/values-et/strings.xml b/res/values-et-rEE/strings.xml
similarity index 100%
rename from res/values-et/strings.xml
rename to res/values-et-rEE/strings.xml
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
new file mode 100644
index 0000000..00ae19b
--- /dev/null
+++ b/res/values-fr-rCA/strings.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 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.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="sharedUserLabel" msgid="8024311725474286801">"Applications de base Android"</string>
+    <string name="app_label" msgid="3389954322874982620">"Liste des contacts"</string>
+    <string name="provider_label" msgid="6012150850819899907">"Contacts"</string>
+    <string name="upgrade_msg" msgid="8640807392794309950">"Mise à jour de la base de données des contacts en cours…"</string>
+    <string name="upgrade_out_of_memory_notification_ticker" msgid="7638747231223520477">"La mise à jour des contacts requiert plus de mémoire."</string>
+    <string name="upgrade_out_of_memory_notification_title" msgid="8888171924684998531">"Mise à jour du stockage des contacts"</string>
+    <string name="upgrade_out_of_memory_notification_text" msgid="8438179450336437626">"Appuyez pour terminer la mise à jour."</string>
+    <string name="default_directory" msgid="93961630309570294">"Contacts"</string>
+    <string name="local_invisible_directory" msgid="705244318477396120">"Autre"</string>
+    <string name="read_write_all_voicemail_label" msgid="4557216100818257560">"Accéder à tous les messages vocaux"</string>
+    <string name="read_write_all_voicemail_description" msgid="8029809937805761356">"Permet à l\'application de stocker et de récupérer tous les messages vocaux auxquels cet appareil peut accéder."</string>
+    <string name="voicemail_from_column" msgid="435732568832121444">"Message vocal de "</string>
+    <string name="debug_dump_title" msgid="4916885724165570279">"Copier la base de données de contacts"</string>
+    <string name="debug_dump_database_message" msgid="406438635002392290">"Vous êtes sur le point de 1) faire une copie de votre base de données (qui inclut toutes les données relatives aux contacts et l\'intégralité du journal d\'appels) dans la mémoire de stockage interne, puis de 2) l\'envoyer par courriel. N\'oubliez pas de supprimer la copie une fois qu\'elle a été dupliquée ou dès que le courriel a été reçu."</string>
+    <string name="debug_dump_delete_button" msgid="7832879421132026435">"Supprimer maintenant"</string>
+    <string name="debug_dump_start_button" msgid="2837506913757600001">"Démarrer"</string>
+    <string name="debug_dump_email_sender_picker" msgid="3534420908672176460">"Choisissez un programme pour envoyer vos fichiers"</string>
+    <string name="debug_dump_email_subject" msgid="108188398416385976">"Base de données de contacts ci-jointe"</string>
+    <string name="debug_dump_email_body" msgid="4577749800871444318">"Veuillez trouver ci-joint ma base de données de contacts incluant toutes les coordonnées de mes contacts. Merci de la traiter avec précaution."</string>
+</resources>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index cc50237..32feaf3 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -29,7 +29,7 @@
     <string name="read_write_all_voicemail_description" msgid="8029809937805761356">"एप्‍लि‍केशन को ऐसे सभी ध्‍वनि‍मेल संग्रहीत और पुनर्प्राप्त करने देता है जि‍न पर यह उपकरण पहुंच सकता है."</string>
     <string name="voicemail_from_column" msgid="435732568832121444">"इनका ध्‍वनि‍मेल: "</string>
     <string name="debug_dump_title" msgid="4916885724165570279">"संपर्क डेटाबेस की प्रतिलिपि बनाएं"</string>
-    <string name="debug_dump_database_message" msgid="406438635002392290">"आप 1) आंतरिक संग्रहण में अपने उस डेटाबेस की प्रतिलिपि बनाने वाले हैं जिसमें सभी संपर्कों संबंधी जानकारी और सभी कॉल लॉग शामिल हैं, और 2) उसे ईमेल करने वाले हैं. जैसे ही आप उपकरण से इसकी प्रतिलिपि सफलतापूर्वक बना लें या ईमेल प्राप्त हो जाए तो प्रतिलिपि को हटाना न भूलें."</string>
+    <string name="debug_dump_database_message" msgid="406438635002392290">"आप 1) मोबाइल संग्रहण में अपने उस डेटाबेस की प्रतिलिपि बनाने वाले हैं जिसमें सभी संपर्कों संबंधी जानकारी और सभी कॉल लॉग शामिल हैं, और 2) उसे ईमेल करने वाले हैं. जैसे ही आप उपकरण से इसकी प्रतिलिपि सफलतापूर्वक बना लें या ईमेल प्राप्त हो जाए तो प्रतिलिपि को हटाना न भूलें."</string>
     <string name="debug_dump_delete_button" msgid="7832879421132026435">"अभी हटाएं"</string>
     <string name="debug_dump_start_button" msgid="2837506913757600001">"प्रारंभ करें"</string>
     <string name="debug_dump_email_sender_picker" msgid="3534420908672176460">"अपनी फ़ाइल भेजने के लिए कोई प्रोग्राम चुनें"</string>
diff --git a/res/values-hy-rAM/strings.xml b/res/values-hy-rAM/strings.xml
new file mode 100644
index 0000000..1de2d05
--- /dev/null
+++ b/res/values-hy-rAM/strings.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 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.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="sharedUserLabel" msgid="8024311725474286801">"Android Core Apps"</string>
+    <string name="app_label" msgid="3389954322874982620">"Կոնտակտների պահոց"</string>
+    <string name="provider_label" msgid="6012150850819899907">"Կոնտակտներ"</string>
+    <string name="upgrade_msg" msgid="8640807392794309950">"Կոնտակտների տվյալների շտեմարանի թարմացում:"</string>
+    <string name="upgrade_out_of_memory_notification_ticker" msgid="7638747231223520477">"Կոնտակտների թարմացումը պահանջում է ավելի շատ հիշողություն:"</string>
+    <string name="upgrade_out_of_memory_notification_title" msgid="8888171924684998531">"Կոնտակտների պահոցի թարմացում"</string>
+    <string name="upgrade_out_of_memory_notification_text" msgid="8438179450336437626">"Հպեք` թարմացումն ավարտելու համար:"</string>
+    <string name="default_directory" msgid="93961630309570294">"Կոնտակտներ"</string>
+    <string name="local_invisible_directory" msgid="705244318477396120">"Այլ"</string>
+    <string name="read_write_all_voicemail_label" msgid="4557216100818257560">"Մատչում բոլոր ձայնային փոստերին"</string>
+    <string name="read_write_all_voicemail_description" msgid="8029809937805761356">"Թույլ է տալիս ծրագրին պահել և առբերել այս սարքի համար մատչելի ձայնային փոստերը:"</string>
+    <string name="voicemail_from_column" msgid="435732568832121444">"Ձայնային փոստ "</string>
+    <string name="debug_dump_title" msgid="4916885724165570279">"Պատճենել կոնտակտային տվյալների շտեմարաը"</string>
+    <string name="debug_dump_database_message" msgid="406438635002392290">"Դուք պատրաստվում եք 1) պատճենել ձեր տվյալների շտեմարանը ներքին պահոցում, որը կներառի բոլոր կոնտակտային տվյալները և բոլոր զանգերի գրանցումները, ապա 2) ուղարկել այն էլփոստով:  Չմոռանաք սարքի վրա հաջողությամբ այդ ամենը պատճենելուց կամ էլփոստը ստանալուց հետո անհապաղ ջնջել պատճենը:"</string>
+    <string name="debug_dump_delete_button" msgid="7832879421132026435">"Ջնջել հիմա"</string>
+    <string name="debug_dump_start_button" msgid="2837506913757600001">"Մեկնարկել"</string>
+    <string name="debug_dump_email_sender_picker" msgid="3534420908672176460">"Ընտրեք ծրագիրը` ձեր ֆայլն ուղարկելու համար"</string>
+    <string name="debug_dump_email_subject" msgid="108188398416385976">"Կոնտակտների Db-ն կցված է"</string>
+    <string name="debug_dump_email_body" msgid="4577749800871444318">"Կից իմ կոնտակտների տվյալների շտեմարանն է` իմ բոլոր կոնտակտների տեղեկություններով: Վերաբերվեք խմաքով:"</string>
+</resources>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 7a0eb82..2242fc5 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -26,13 +26,13 @@
     <string name="default_directory" msgid="93961630309570294">"אנשי קשר"</string>
     <string name="local_invisible_directory" msgid="705244318477396120">"אחר"</string>
     <string name="read_write_all_voicemail_label" msgid="4557216100818257560">"גישה לכל הודעות הדואר הקולי"</string>
-    <string name="read_write_all_voicemail_description" msgid="8029809937805761356">"מאפשר ליישום לאחסן ולאחזר את כל הודעות הדואר הקולי שלמכשיר זה יש גישה אליהן."</string>
+    <string name="read_write_all_voicemail_description" msgid="8029809937805761356">"מאפשר לאפליקציה לאחסן ולאחזר את כל הודעות הדואר הקולי שלמכשיר זה יש גישה אליהן."</string>
     <string name="voicemail_from_column" msgid="435732568832121444">"הודעה קולית מאת "</string>
     <string name="debug_dump_title" msgid="4916885724165570279">"העתקת מסד נתוני אנשי קשר"</string>
     <string name="debug_dump_database_message" msgid="406438635002392290">"אתה עומד 1) ליצור עותק באחסון הפנימי של מסד הנתונים שכולל את כל המידע הקשור לאנשי הקשר וכל יומני השיחות, 2) לשלוח אותו בדוא\"ל. זכור למחוק את העותק מיד לאחר שתעתיק אותו בהצלחה מהמכשיר או כשהודעת הדוא\"ל מתקבלת."</string>
     <string name="debug_dump_delete_button" msgid="7832879421132026435">"מחק עכשיו"</string>
     <string name="debug_dump_start_button" msgid="2837506913757600001">"התחל"</string>
-    <string name="debug_dump_email_sender_picker" msgid="3534420908672176460">"בחר תוכנית לשליחת הקובץ"</string>
+    <string name="debug_dump_email_sender_picker" msgid="3534420908672176460">"בחר תכנית לשליחת הקובץ"</string>
     <string name="debug_dump_email_subject" msgid="108188398416385976">"מסד נתוני אנשי קשר מצורף"</string>
     <string name="debug_dump_email_body" msgid="4577749800871444318">"מצורף מסד הנתונים של אנשי הקשר שלי עם כל פרטי אנשי הקשר. שמור עליו היטב."</string>
 </resources>
diff --git a/res/values-ka-rGE/strings.xml b/res/values-ka-rGE/strings.xml
new file mode 100644
index 0000000..fd46c67
--- /dev/null
+++ b/res/values-ka-rGE/strings.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 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.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="sharedUserLabel" msgid="8024311725474286801">"Android-ის ბირთვის აპები"</string>
+    <string name="app_label" msgid="3389954322874982620">"კონტაქტების მეხსიერება"</string>
+    <string name="provider_label" msgid="6012150850819899907">"კონტაქტები"</string>
+    <string name="upgrade_msg" msgid="8640807392794309950">"მონაცემთა ბაზის ახალ ვერსიაზე გადასვლა."</string>
+    <string name="upgrade_out_of_memory_notification_ticker" msgid="7638747231223520477">"კონტაქტების ახალ ვერსიაზე გადასვლას ესაჭიროება მეტი მეხსიერება."</string>
+    <string name="upgrade_out_of_memory_notification_title" msgid="8888171924684998531">"კონტაქტების მეხსიერების ახალ ვერსიაზე გადასვლა"</string>
+    <string name="upgrade_out_of_memory_notification_text" msgid="8438179450336437626">"შეეხეთ ახალ ვერსიაზე გადასვლის დასასრულებლად."</string>
+    <string name="default_directory" msgid="93961630309570294">"კონტაქტები"</string>
+    <string name="local_invisible_directory" msgid="705244318477396120">"სხვა"</string>
+    <string name="read_write_all_voicemail_label" msgid="4557216100818257560">"მთელ ხმოვან ფოსტაზე წვდომა"</string>
+    <string name="read_write_all_voicemail_description" msgid="8029809937805761356">"აპს ეძლევა ამ მოწყობილობისთვის ხელმისაწვდომი ყველა ხმოვანი ფოსტის შენახვისა და მოძიების საშუალება."</string>
+    <string name="voicemail_from_column" msgid="435732568832121444">"ხმოვანი ფოსტა "</string>
+    <string name="debug_dump_title" msgid="4916885724165570279">"კონტაქტების მონაცემთა ბაზის კოპირება"</string>
+    <string name="debug_dump_database_message" msgid="406438635002392290">"თქვენ აპირებთ 1) შიდა მეხსიერებაში მონაცემთა ბაზის კოპირებას, რომელიც შეიცავს ყველა კონტაქტთან დაკავშირებულ ინფორმაციას და ზარების ჟურნალს და 2) მის გაგზავნას ელფოსტის საშუალებით. გახსოვდეთ, რომ კოპირების წარმატებით დასრულებისთანავე ან ელფოსტის მიღებისთანავე უნდა წაშალოთ მოწყობილობიდან ასლი."</string>
+    <string name="debug_dump_delete_button" msgid="7832879421132026435">"წაიშალოს ახლა"</string>
+    <string name="debug_dump_start_button" msgid="2837506913757600001">"დაწყება"</string>
+    <string name="debug_dump_email_sender_picker" msgid="3534420908672176460">"ფაილის გასაგზავნად აირჩიეთ პროგრამა"</string>
+    <string name="debug_dump_email_subject" msgid="108188398416385976">"დართულია კონტაქტების მ.ბაზა"</string>
+    <string name="debug_dump_email_body" msgid="4577749800871444318">"დართულია ჩემი კონტაქტების მონაცემთა ბაზა, რომელიც შეიცავს ინფორმაციას ყველა ჩემი კონტაქტის შესახებ. მოუფრთხილდი."</string>
+</resources>
diff --git a/res/values-km-rKH/strings.xml b/res/values-km-rKH/strings.xml
new file mode 100644
index 0000000..733e689
--- /dev/null
+++ b/res/values-km-rKH/strings.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 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.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="sharedUserLabel" msgid="8024311725474286801">"កម្មវិធី​​សំខាន់ៗ​របស់ Android"</string>
+    <string name="app_label" msgid="3389954322874982620">"ឧបករណ៍​ផ្ទុក​ទំនាក់ទំនង"</string>
+    <string name="provider_label" msgid="6012150850819899907">"ទំនាក់ទំនង"</string>
+    <string name="upgrade_msg" msgid="8640807392794309950">"ធ្វើ​បច្ចុប្បន្នភាព​មូលដ្ឋាន​ទិន្នន័យ​ទំនាក់ទំនង។"</string>
+    <string name="upgrade_out_of_memory_notification_ticker" msgid="7638747231223520477">"ការ​ធ្វើ​បច្ចុប្បន្នភាព​ទំនាក់ទំនង​ត្រូវការ​អង្គ​ចងចាំ​ច្រើន"</string>
+    <string name="upgrade_out_of_memory_notification_title" msgid="8888171924684998531">"ធ្វើ​បច្ចុប្បន្នភាព​ឧបករណ៍​ផ្ទុក​ទំនាក់ទំនង"</string>
+    <string name="upgrade_out_of_memory_notification_text" msgid="8438179450336437626">"ប៉ះ​ដើម្បី​បញ្ចប់​ការ​ធ្វើ​បច្ចុប្បន្នភាព។"</string>
+    <string name="default_directory" msgid="93961630309570294">"ទំនាក់ទំនង"</string>
+    <string name="local_invisible_directory" msgid="705244318477396120">"ផ្សេងៗ"</string>
+    <string name="read_write_all_voicemail_label" msgid="4557216100818257560">"ដំណើរ​ការ​សារ​ជា​សំឡេង​ទាំងអស់"</string>
+    <string name="read_write_all_voicemail_description" msgid="8029809937805761356">"ឱ្យ​កម្មវិធី​ទុក និង​ទៅ​យក​សារ​ជា​សំឡេង​ទាំងអស់​ដែល​ឧបករណ៍​នេះ​អាច​ដំណើរ​ការ​បាន។"</string>
+    <string name="voicemail_from_column" msgid="435732568832121444">"សារ​ជា​សំឡេង​ពី "</string>
+    <string name="debug_dump_title" msgid="4916885724165570279">"ចម្លង​មូលដ្ឋាន​ទិន្នន័យ​ទំនាក់ទំនង"</string>
+    <string name="debug_dump_database_message" msgid="406438635002392290">"អ្នក​ហៀបនឹង ១) ចម្លង​មូលដ្ឋាន​ទិន្នន័យ​របស់​អ្នក​ដែល​រួម​មាន​ព័ត៌មាន​ទំនាក់ទំនង និង​កំណត់ហេតុ​ហៅ​ទាំងអស់​ទៅកាន់​ឧបករណ៍​ផ្ទុក​ខាងក្នុង ២) ផ្ញើ​អ៊ី​ម៉ែ​ល​វា​។ ចងចាំ​ថា​អ្នក​ត្រូវ​លុប​ច្បាប់​ចម្លង​ភ្លាមៗ បន្ទាប់ពី​បាន​ចម្លង​ចេញពី​ឧបករណ៍ ឬ​បាន​ទទួល​អ៊ីមែល។"</string>
+    <string name="debug_dump_delete_button" msgid="7832879421132026435">"លុប​ឥឡូវ"</string>
+    <string name="debug_dump_start_button" msgid="2837506913757600001">"ចាប់ផ្ដើម"</string>
+    <string name="debug_dump_email_sender_picker" msgid="3534420908672176460">"ជ្រើស​កម្មវិធី​ដើម្បី​ផ្ញើ​ឯកសារ​របស់​អ្នក"</string>
+    <string name="debug_dump_email_subject" msgid="108188398416385976">"បាន​ភ្ជាប់​មូលដ្ឋាន​ទិន្នន័យ​ទំនាក់ទំនង"</string>
+    <string name="debug_dump_email_body" msgid="4577749800871444318">"ឯកសារ​ភ្ជាប់​គឺជា​មូលដ្ឋាន​ទិន្នន័យ​ទំនាក់ទំនង​ព្រមទាំង​ព័ត៌មាន​ទំនាក់ទំនង​ទាំង​អស់​របស់​ខ្ញុំ។ ប្រើ​វា​ដោយ​ប្រុងប្រយ័ត្ន។"</string>
+</resources>
diff --git a/res/values-lo-rLA/strings.xml b/res/values-lo-rLA/strings.xml
new file mode 100644
index 0000000..357b3fc
--- /dev/null
+++ b/res/values-lo-rLA/strings.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 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.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="sharedUserLabel" msgid="8024311725474286801">"ແອັບພລິເຄຊັນຫຼັກຂອງ Android"</string>
+    <string name="app_label" msgid="3389954322874982620">"ບ່ອນຈັດເກັບຂໍ້ມູນລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+    <string name="provider_label" msgid="6012150850819899907">"ລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+    <string name="upgrade_msg" msgid="8640807392794309950">"ກຳລັງອັບເກຣດຖານຂໍ້ມູນລາຍຊື່ຜູ່ຕິດຕໍ່."</string>
+    <string name="upgrade_out_of_memory_notification_ticker" msgid="7638747231223520477">"ການອັບເກຣດລາຍຊື່ຜູ່ຕິດຕໍ່ ຈະຕ້ອງໃຊ້ໜ່ວຍຄວາມຈຳເພີ່ມຕື່ມ."</string>
+    <string name="upgrade_out_of_memory_notification_title" msgid="8888171924684998531">"ອັບເກຣດບ່ອນຈັດເກັບຂໍ້ມູນລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+    <string name="upgrade_out_of_memory_notification_text" msgid="8438179450336437626">"ແຕະເພື່ອສິ້ນສຸດຂັ້ນຕອນການອັບເກຣດ."</string>
+    <string name="default_directory" msgid="93961630309570294">"ລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+    <string name="local_invisible_directory" msgid="705244318477396120">"ອື່ນໆ"</string>
+    <string name="read_write_all_voicemail_label" msgid="4557216100818257560">"ເຂົ້າເຖິງຂໍ້ຄວາມສຽງທັງໝົດ"</string>
+    <string name="read_write_all_voicemail_description" msgid="8029809937805761356">"ອະນຸຍາດໃຫ້ແອັບຯສາມາດບັນທຶກ ແລະດຶງຂໍ້ມູນຂໍ້ຄວາມສຽງທັງໝົດ ທີ່ອຸປະກອນນີ້ສາມາດເຂົ້າເຖິງໄດ້."</string>
+    <string name="voicemail_from_column" msgid="435732568832121444">"ຂໍ້ຄວາມສຽງຈາກ "</string>
+    <string name="debug_dump_title" msgid="4916885724165570279">"ສຳເນົາຖານຂໍ້ມູນລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+    <string name="debug_dump_database_message" msgid="406438635002392290">"ທ່ານກຳລັງຈະ 1) ສ້າງສຳເນົາຂອງຖານຂໍ້ມູນເຊິ່ງຈະມີ ຂໍ້ມູນທີ່ກ່ຽວຂ້ອງກັບລາຍຊື່ຜູ່ຕິດຕໍ່ ແລະບັນທຶກການໂທທັງໝົດ ເພື່ອຈັດເກັບໃນບ່ອນຈັດເກັບຂໍ້ມູນພາຍໃນ ແລະ 2) ສົ່ງມັນໄປທາງອີເມວ. ຫຼັງຈາກທ່ານສຳເນົາຂໍ້ມູນທີ່ສ້າງອອກຈາກອຸປະກອນນີ້ ຫຼືສົ່ງມັນຜ່ານທາງອີເມວສຳເລັດແລ້ວ ຢ່າລືມລຶບມັນອອກໂດຍທັນທີ."</string>
+    <string name="debug_dump_delete_button" msgid="7832879421132026435">"ລຶບອອກດຽວນີ້"</string>
+    <string name="debug_dump_start_button" msgid="2837506913757600001">"ເລີ່ມ​ຕົ້ນ"</string>
+    <string name="debug_dump_email_sender_picker" msgid="3534420908672176460">"ເລືອກໂປຣແກຣມເພື່ອສົ່ງໄຟລ໌ຂອງທ່ານ"</string>
+    <string name="debug_dump_email_subject" msgid="108188398416385976">"ແນບໄຟລ໌ຖານຂໍ້ມູນລາຍຊື່ຜູ່ຕິດຕໍ່ແລ້ວ"</string>
+    <string name="debug_dump_email_body" msgid="4577749800871444318">"ໄຟລ໌ທີ່ແນບມານຳ ແມ່ນຖານຂໍ້ມູນຂອງລາຍຊື່ຜູ່ຕິດຕໍ່ຂອງຂ້ອຍ. ກະລຸນາຈັດການດ້ວຍຄວາມລະມັດລະວັງ."</string>
+</resources>
diff --git a/res/values-mn-rMN/strings.xml b/res/values-mn-rMN/strings.xml
new file mode 100644
index 0000000..907d384
--- /dev/null
+++ b/res/values-mn-rMN/strings.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 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.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="sharedUserLabel" msgid="8024311725474286801">"Андройдын үндсэн апп-ууд"</string>
+    <string name="app_label" msgid="3389954322874982620">"Харилцагчдын сан"</string>
+    <string name="provider_label" msgid="6012150850819899907">"Харилцагчид"</string>
+    <string name="upgrade_msg" msgid="8640807392794309950">"Харилцагчдын өгөгдлийн санг сайжруулж байна."</string>
+    <string name="upgrade_out_of_memory_notification_ticker" msgid="7638747231223520477">"Харилцагчдын сайжруулалт хийхэд илүү их санах ой шаардлагатай."</string>
+    <string name="upgrade_out_of_memory_notification_title" msgid="8888171924684998531">"Харилцагчдад зориулсан санг сайжруулж байна"</string>
+    <string name="upgrade_out_of_memory_notification_text" msgid="8438179450336437626">"Сайжруулалтыг дуусгахын тулд хүрнэ үү."</string>
+    <string name="default_directory" msgid="93961630309570294">"Харилцагчид"</string>
+    <string name="local_invisible_directory" msgid="705244318477396120">"Бусад"</string>
+    <string name="read_write_all_voicemail_label" msgid="4557216100818257560">"Бүх дуут шууданд хандалт хийх"</string>
+    <string name="read_write_all_voicemail_description" msgid="8029809937805761356">"Энэ төхөөрөмжийн хандалт хийх боломжтой бүх дуут шууданг хадгалах буюу татахыг апп-д зөвшөөрнө."</string>
+    <string name="voicemail_from_column" msgid="435732568832121444">"Дуут шуудан илгээгч "</string>
+    <string name="debug_dump_title" msgid="4916885724165570279">"Харилцагчдын мэдээллийн санг хуулах"</string>
+    <string name="debug_dump_database_message" msgid="406438635002392290">"Та 1) бүх харилцагчидтай холбоотой мэдээллүүд болон ярианы жагсаалтыг агуулсан өөрийн өгөгдлийн сангийн хуулбарыг дотоод санд хадгалах, мөн 2) имэйлдэх гэж байна. Та үүнийг төхөөрөмжөөсөө амжилттай хуулж дуусах буюу имэйлээр хүлээж авсны дараа устгах хэрэгтэйг санаарай."</string>
+    <string name="debug_dump_delete_button" msgid="7832879421132026435">"Одоо устгах"</string>
+    <string name="debug_dump_start_button" msgid="2837506913757600001">"Эхлэх"</string>
+    <string name="debug_dump_email_sender_picker" msgid="3534420908672176460">"Өөрийн файлийг илгээх програмыг сонгоно уу"</string>
+    <string name="debug_dump_email_subject" msgid="108188398416385976">"Харилцагчдын Db-г хавсаргав"</string>
+    <string name="debug_dump_email_body" msgid="4577749800871444318">"Хавсралтад миний бүх харилцагчийн мэдээлэл бүхий өгөгдлийн сан байгаа. Болгоомжтой харьцана уу."</string>
+</resources>
diff --git a/res/values-ms/strings.xml b/res/values-ms-rMY/strings.xml
similarity index 100%
rename from res/values-ms/strings.xml
rename to res/values-ms-rMY/strings.xml
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 909e54e..8ab46d6 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -25,7 +25,7 @@
     <string name="upgrade_out_of_memory_notification_text" msgid="8438179450336437626">"Trykk for å fullføre oppgraderingen."</string>
     <string name="default_directory" msgid="93961630309570294">"Kontakter"</string>
     <string name="local_invisible_directory" msgid="705244318477396120">"Andre"</string>
-    <string name="read_write_all_voicemail_label" msgid="4557216100818257560">"Tilgang til alle talemeldinger"</string>
+    <string name="read_write_all_voicemail_label" msgid="4557216100818257560">"Lese alle talemeldinger"</string>
     <string name="read_write_all_voicemail_description" msgid="8029809937805761356">"Lar appen lagre og hente alle talepostmeldinger som denne enheten har tilgang til."</string>
     <string name="voicemail_from_column" msgid="435732568832121444">"Talemelding fra "</string>
     <string name="debug_dump_title" msgid="4916885724165570279">"Kopiér kontaktdatabasen"</string>
diff --git a/res/values-ne-rNP/strings.xml b/res/values-ne-rNP/strings.xml
new file mode 100644
index 0000000..17672ea
--- /dev/null
+++ b/res/values-ne-rNP/strings.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 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.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="sharedUserLabel" msgid="8024311725474286801">"एन्ड्रोइड कोर अनुप्रयोगहरू"</string>
+    <string name="app_label" msgid="3389954322874982620">"सम्पर्कहरू भण्डारण"</string>
+    <string name="provider_label" msgid="6012150850819899907">"सम्पर्कहरू"</string>
+    <string name="upgrade_msg" msgid="8640807392794309950">"सम्पर्क डेटाबेस अद्यावधिक गर्दै।"</string>
+    <string name="upgrade_out_of_memory_notification_ticker" msgid="7638747231223520477">"सम्पर्क अद्यावधिकका लागि अझै धेरै मेमोरी चाहिन्छ।"</string>
+    <string name="upgrade_out_of_memory_notification_title" msgid="8888171924684998531">"सम्पर्कका लागि भणडारण अद्यावधिक गर्दै"</string>
+    <string name="upgrade_out_of_memory_notification_text" msgid="8438179450336437626">"अद्यावधिक कार्य पुरा गर्न छुनुहोस्।"</string>
+    <string name="default_directory" msgid="93961630309570294">"सम्पर्कहरू"</string>
+    <string name="local_invisible_directory" msgid="705244318477396120">"अन्य"</string>
+    <string name="read_write_all_voicemail_label" msgid="4557216100818257560">"सम्पूर्ण भ्वाइसमेलहरू पहुँच गर्नुहोस्"</string>
+    <string name="read_write_all_voicemail_description" msgid="8029809937805761356">"यो उपकरणले पहुँच गर्न सक्ने हरेक भ्वाइसमेलहरू यो अनुप्रयोगलाई भण्डारण गर्न र पुन:बहाली गर्न अनुमति दिन्छ।"</string>
+    <string name="voicemail_from_column" msgid="435732568832121444">"बाट भ्वाइसमेल "</string>
+    <string name="debug_dump_title" msgid="4916885724165570279">"सम्पर्क डेटाबेस प्रतिलिप गर्नुहोस्"</string>
+    <string name="debug_dump_database_message" msgid="406438635002392290">"तपाईँले केही बेरमा १) आन्तरिक भण्डारणमा सम्पुर्ण सम्पर्क सम्बन्धी जानकारी र कल लग भएको डेटाबेसको एउटा प्रतिलिपी बनाउनुहोस्, र  2) उनीहरूलाई इमेल गर्नुहोस्। उपरकणमा प्रतिलिपीको नक्कल पार्ना साथ अथवा इमेल प्राप्त हुने बित्तिकै प्रतिलिपी मेटाउन ख्याल गर्नुहोस्।"</string>
+    <string name="debug_dump_delete_button" msgid="7832879421132026435">"अहिले हटाउनुहोस्"</string>
+    <string name="debug_dump_start_button" msgid="2837506913757600001">"सुरु गर्नुहोस्"</string>
+    <string name="debug_dump_email_sender_picker" msgid="3534420908672176460">"आफ्नो फाइल पठाउनका लागि एउटा प्रोग्राम छान्नुहोस्।"</string>
+    <string name="debug_dump_email_subject" msgid="108188398416385976">"सम्पर्क Db संलग्न गरिएको छ।"</string>
+    <string name="debug_dump_email_body" msgid="4577749800871444318">"संलग्न मेरा सम्पुर्ण जानकारीको सम्पर्क डेटाबेस हो। सावधानीपूर्वक राख्नुहोस्।"</string>
+</resources>
diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml
new file mode 100644
index 0000000..17672ea
--- /dev/null
+++ b/res/values-ne/strings.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 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.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="sharedUserLabel" msgid="8024311725474286801">"एन्ड्रोइड कोर अनुप्रयोगहरू"</string>
+    <string name="app_label" msgid="3389954322874982620">"सम्पर्कहरू भण्डारण"</string>
+    <string name="provider_label" msgid="6012150850819899907">"सम्पर्कहरू"</string>
+    <string name="upgrade_msg" msgid="8640807392794309950">"सम्पर्क डेटाबेस अद्यावधिक गर्दै।"</string>
+    <string name="upgrade_out_of_memory_notification_ticker" msgid="7638747231223520477">"सम्पर्क अद्यावधिकका लागि अझै धेरै मेमोरी चाहिन्छ।"</string>
+    <string name="upgrade_out_of_memory_notification_title" msgid="8888171924684998531">"सम्पर्कका लागि भणडारण अद्यावधिक गर्दै"</string>
+    <string name="upgrade_out_of_memory_notification_text" msgid="8438179450336437626">"अद्यावधिक कार्य पुरा गर्न छुनुहोस्।"</string>
+    <string name="default_directory" msgid="93961630309570294">"सम्पर्कहरू"</string>
+    <string name="local_invisible_directory" msgid="705244318477396120">"अन्य"</string>
+    <string name="read_write_all_voicemail_label" msgid="4557216100818257560">"सम्पूर्ण भ्वाइसमेलहरू पहुँच गर्नुहोस्"</string>
+    <string name="read_write_all_voicemail_description" msgid="8029809937805761356">"यो उपकरणले पहुँच गर्न सक्ने हरेक भ्वाइसमेलहरू यो अनुप्रयोगलाई भण्डारण गर्न र पुन:बहाली गर्न अनुमति दिन्छ।"</string>
+    <string name="voicemail_from_column" msgid="435732568832121444">"बाट भ्वाइसमेल "</string>
+    <string name="debug_dump_title" msgid="4916885724165570279">"सम्पर्क डेटाबेस प्रतिलिप गर्नुहोस्"</string>
+    <string name="debug_dump_database_message" msgid="406438635002392290">"तपाईँले केही बेरमा १) आन्तरिक भण्डारणमा सम्पुर्ण सम्पर्क सम्बन्धी जानकारी र कल लग भएको डेटाबेसको एउटा प्रतिलिपी बनाउनुहोस्, र  2) उनीहरूलाई इमेल गर्नुहोस्। उपरकणमा प्रतिलिपीको नक्कल पार्ना साथ अथवा इमेल प्राप्त हुने बित्तिकै प्रतिलिपी मेटाउन ख्याल गर्नुहोस्।"</string>
+    <string name="debug_dump_delete_button" msgid="7832879421132026435">"अहिले हटाउनुहोस्"</string>
+    <string name="debug_dump_start_button" msgid="2837506913757600001">"सुरु गर्नुहोस्"</string>
+    <string name="debug_dump_email_sender_picker" msgid="3534420908672176460">"आफ्नो फाइल पठाउनका लागि एउटा प्रोग्राम छान्नुहोस्।"</string>
+    <string name="debug_dump_email_subject" msgid="108188398416385976">"सम्पर्क Db संलग्न गरिएको छ।"</string>
+    <string name="debug_dump_email_body" msgid="4577749800871444318">"संलग्न मेरा सम्पुर्ण जानकारीको सम्पर्क डेटाबेस हो। सावधानीपूर्वक राख्नुहोस्।"</string>
+</resources>
diff --git a/res/values-si-rLK/strings.xml b/res/values-si-rLK/strings.xml
new file mode 100644
index 0000000..5dfc184
--- /dev/null
+++ b/res/values-si-rLK/strings.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 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.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="sharedUserLabel" msgid="8024311725474286801">"Android මධ්‍ය යෙදුම්"</string>
+    <string name="app_label" msgid="3389954322874982620">"සම්බන්ධතා ආචයනය"</string>
+    <string name="provider_label" msgid="6012150850819899907">"සම්බන්ධතා"</string>
+    <string name="upgrade_msg" msgid="8640807392794309950">"සම්බන්ධතා දත්ත සමුදාය උත්ශ්‍රේණි කරමින්."</string>
+    <string name="upgrade_out_of_memory_notification_ticker" msgid="7638747231223520477">"සම්බන්ධතා උත්ශ්‍රේණි කිරීමට තව මතකය අවශ්‍යයි."</string>
+    <string name="upgrade_out_of_memory_notification_title" msgid="8888171924684998531">"සම්බන්ධතා සඳහා ආචයනය උත්ශ්‍රේණි කරමින්"</string>
+    <string name="upgrade_out_of_memory_notification_text" msgid="8438179450336437626">"උත්ශ්‍රේණි කිරීම සම්පූර්ණ කිරීමට ස්පර්ශ කරන්න."</string>
+    <string name="default_directory" msgid="93961630309570294">"සම්බන්ධතා"</string>
+    <string name="local_invisible_directory" msgid="705244318477396120">"වෙනත්"</string>
+    <string name="read_write_all_voicemail_label" msgid="4557216100818257560">"සියලු හඬ තැපැල් ප්‍රවේශ කිරීම"</string>
+    <string name="read_write_all_voicemail_description" msgid="8029809937805761356">"උපාංගයට ප්‍රවේශ කළ හැකි සියලු හඬ තැපැල් ගබඩා කිරීම සහ ලබාගැනීමට යෙදුමට අවසර ලබාදේ."</string>
+    <string name="voicemail_from_column" msgid="435732568832121444">"හඬ තැපෑල ලැබෙන්නේ "</string>
+    <string name="debug_dump_title" msgid="4916885724165570279">"සම්බන්ධතා දත්ත සමුදාය පිටපත් කරන්න"</string>
+    <string name="debug_dump_database_message" msgid="406438635002392290">"ඔබ සදන්නේ 1) සම්බන්ධතා ආශ්‍රිත තොරතුරු සහ සියලු ඇමතුම් ලොගයේ තිබෙන ඔබගේ දත්ත සමුදායේ පිටපතක් අභ්‍යන්තර ආචයනයට ගැනීමට, සහ 2) එය ඊ-තැපැල් කිරීමටයි. ඔබ සාර්ථකව උපාංගයෙන් පිටපත් කර විට හෝ ඊ-තැපෑල ලැබුණු විට පිටපත මකා දැමීමට මතක තබාගන්න."</string>
+    <string name="debug_dump_delete_button" msgid="7832879421132026435">"දැන් මකන්න"</string>
+    <string name="debug_dump_start_button" msgid="2837506913757600001">"ආරම්භ කරන්න"</string>
+    <string name="debug_dump_email_sender_picker" msgid="3534420908672176460">"ඔබගේ ගොනුව යැවීමට ක්‍රමලේඛයක් තෝරන්න"</string>
+    <string name="debug_dump_email_subject" msgid="108188398416385976">"සම්බන්ධතා Db අමුණා ඇත"</string>
+    <string name="debug_dump_email_body" msgid="4577749800871444318">"අමුණා ඇත්තේ මගේ සම්බන්ධතා තොරතුරු සියල්ල තිබෙන සම්බන්ධතා දත්ත සමුදායයි. ප්‍රවේශමෙන් පාවිච්චි කරන්න."</string>
+</resources>
diff --git a/res/values-si/strings.xml b/res/values-si/strings.xml
new file mode 100644
index 0000000..5dfc184
--- /dev/null
+++ b/res/values-si/strings.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 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.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="sharedUserLabel" msgid="8024311725474286801">"Android මධ්‍ය යෙදුම්"</string>
+    <string name="app_label" msgid="3389954322874982620">"සම්බන්ධතා ආචයනය"</string>
+    <string name="provider_label" msgid="6012150850819899907">"සම්බන්ධතා"</string>
+    <string name="upgrade_msg" msgid="8640807392794309950">"සම්බන්ධතා දත්ත සමුදාය උත්ශ්‍රේණි කරමින්."</string>
+    <string name="upgrade_out_of_memory_notification_ticker" msgid="7638747231223520477">"සම්බන්ධතා උත්ශ්‍රේණි කිරීමට තව මතකය අවශ්‍යයි."</string>
+    <string name="upgrade_out_of_memory_notification_title" msgid="8888171924684998531">"සම්බන්ධතා සඳහා ආචයනය උත්ශ්‍රේණි කරමින්"</string>
+    <string name="upgrade_out_of_memory_notification_text" msgid="8438179450336437626">"උත්ශ්‍රේණි කිරීම සම්පූර්ණ කිරීමට ස්පර්ශ කරන්න."</string>
+    <string name="default_directory" msgid="93961630309570294">"සම්බන්ධතා"</string>
+    <string name="local_invisible_directory" msgid="705244318477396120">"වෙනත්"</string>
+    <string name="read_write_all_voicemail_label" msgid="4557216100818257560">"සියලු හඬ තැපැල් ප්‍රවේශ කිරීම"</string>
+    <string name="read_write_all_voicemail_description" msgid="8029809937805761356">"උපාංගයට ප්‍රවේශ කළ හැකි සියලු හඬ තැපැල් ගබඩා කිරීම සහ ලබාගැනීමට යෙදුමට අවසර ලබාදේ."</string>
+    <string name="voicemail_from_column" msgid="435732568832121444">"හඬ තැපෑල ලැබෙන්නේ "</string>
+    <string name="debug_dump_title" msgid="4916885724165570279">"සම්බන්ධතා දත්ත සමුදාය පිටපත් කරන්න"</string>
+    <string name="debug_dump_database_message" msgid="406438635002392290">"ඔබ සදන්නේ 1) සම්බන්ධතා ආශ්‍රිත තොරතුරු සහ සියලු ඇමතුම් ලොගයේ තිබෙන ඔබගේ දත්ත සමුදායේ පිටපතක් අභ්‍යන්තර ආචයනයට ගැනීමට, සහ 2) එය ඊ-තැපැල් කිරීමටයි. ඔබ සාර්ථකව උපාංගයෙන් පිටපත් කර විට හෝ ඊ-තැපෑල ලැබුණු විට පිටපත මකා දැමීමට මතක තබාගන්න."</string>
+    <string name="debug_dump_delete_button" msgid="7832879421132026435">"දැන් මකන්න"</string>
+    <string name="debug_dump_start_button" msgid="2837506913757600001">"ආරම්භ කරන්න"</string>
+    <string name="debug_dump_email_sender_picker" msgid="3534420908672176460">"ඔබගේ ගොනුව යැවීමට ක්‍රමලේඛයක් තෝරන්න"</string>
+    <string name="debug_dump_email_subject" msgid="108188398416385976">"සම්බන්ධතා Db අමුණා ඇත"</string>
+    <string name="debug_dump_email_body" msgid="4577749800871444318">"අමුණා ඇත්තේ මගේ සම්බන්ධතා තොරතුරු සියල්ල තිබෙන සම්බන්ධතා දත්ත සමුදායයි. ප්‍රවේශමෙන් පාවිච්චි කරන්න."</string>
+</resources>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index 05d46fa..4550db0 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -29,7 +29,7 @@
     <string name="read_write_all_voicemail_description" msgid="8029809937805761356">"Inaruhusu programu kuhifadhi na kutoa mawasiliano yote ya sauti ambayo kifaa hiki kinaweza kufikia."</string>
     <string name="voicemail_from_column" msgid="435732568832121444">"Barua ya sauti kutoka "</string>
     <string name="debug_dump_title" msgid="4916885724165570279">"Nakili hifadhidata ya anwani"</string>
-    <string name="debug_dump_database_message" msgid="406438635002392290">"Unakaribia 1) kuunda nakala ya hifadhidata yako ambayo inajumuisha maelezo yote yanayohusiana na anwani na kumbukumbu zote za simu katika hifadhi ya ndani, na 2) uitume kwa barua pepe. Kumbuka kufuta nakala pindi tu unapoinakili kwa ufanisi kutoka kwenye kifaa au barua pepe imepokewa."</string>
+    <string name="debug_dump_database_message" msgid="406438635002392290">"Unaelekea 1) kuunda nakala ya hifadhidata yako ambayo inajumuisha maelezo yote yanayohusiana na anwani na kumbukumbu zote za simu katika hifadhi ya ndani, na 2) uitume kwa barua pepe. Kumbuka kufuta nakala pindi tu utakapomaliza kuinakili kutoka kwenye kifaa au barua pepe itakapopokewa."</string>
     <string name="debug_dump_delete_button" msgid="7832879421132026435">"Futa sasa"</string>
     <string name="debug_dump_start_button" msgid="2837506913757600001">"Anza"</string>
     <string name="debug_dump_email_sender_picker" msgid="3534420908672176460">"Chagua programu ili kutuma faili yako"</string>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
new file mode 100644
index 0000000..0d5e401
--- /dev/null
+++ b/res/values-zh-rHK/strings.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 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.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="sharedUserLabel" msgid="8024311725474286801">"Android 核心應用程式"</string>
+    <string name="app_label" msgid="3389954322874982620">"聯絡人儲存空間"</string>
+    <string name="provider_label" msgid="6012150850819899907">"通訊錄"</string>
+    <string name="upgrade_msg" msgid="8640807392794309950">"正在升級聯絡人資料庫。"</string>
+    <string name="upgrade_out_of_memory_notification_ticker" msgid="7638747231223520477">"需要更多記憶體才能將通訊錄升級。"</string>
+    <string name="upgrade_out_of_memory_notification_title" msgid="8888171924684998531">"正在升級通訊錄儲存空間"</string>
+    <string name="upgrade_out_of_memory_notification_text" msgid="8438179450336437626">"輕觸即可完成升級。"</string>
+    <string name="default_directory" msgid="93961630309570294">"通訊錄"</string>
+    <string name="local_invisible_directory" msgid="705244318477396120">"其他"</string>
+    <string name="read_write_all_voicemail_label" msgid="4557216100818257560">"存取所有語音留言"</string>
+    <string name="read_write_all_voicemail_description" msgid="8029809937805761356">"允許應用程式儲存及擷取這部裝置可存取的所有留言。"</string>
+    <string name="voicemail_from_column" msgid="435732568832121444">"留言來自 "</string>
+    <string name="debug_dump_title" msgid="4916885724165570279">"複製通訊錄資料庫"</string>
+    <string name="debug_dump_database_message" msgid="406438635002392290">"您即將要 1) 把您的資料庫 (包括所有聯絡人相關資料及所有通話記錄) 複製到內部儲存空間，然後 2) 以電郵寄出。當您成功從裝置複製這個資料庫的副本或收到電子郵件後，別忘記立即刪除這個副本。"</string>
+    <string name="debug_dump_delete_button" msgid="7832879421132026435">"立即刪除"</string>
+    <string name="debug_dump_start_button" msgid="2837506913757600001">"開始"</string>
+    <string name="debug_dump_email_sender_picker" msgid="3534420908672176460">"選擇要傳送檔案的程式"</string>
+    <string name="debug_dump_email_subject" msgid="108188398416385976">"附上通訊錄資料庫"</string>
+    <string name="debug_dump_email_body" msgid="4577749800871444318">"附上我的通訊錄資料庫，其中包括我所有的聯絡人資料，請謹慎處理。"</string>
+</resources>
diff --git a/src/com/android/providers/contacts/ContactLocaleUtils.java b/src/com/android/providers/contacts/ContactLocaleUtils.java
index c63f7fc..3d3ae82 100644
--- a/src/com/android/providers/contacts/ContactLocaleUtils.java
+++ b/src/com/android/providers/contacts/ContactLocaleUtils.java
@@ -49,7 +49,8 @@
     public static final Locale LOCALE_ARABIC = new Locale("ar");
     public static final Locale LOCALE_GREEK = new Locale("el");
     public static final Locale LOCALE_HEBREW = new Locale("he");
-    // Ukrainian labels are superset of Russian
+    // Serbian and Ukrainian labels are complementary supersets of Russian
+    public static final Locale LOCALE_SERBIAN = new Locale("sr");
     public static final Locale LOCALE_UKRAINIAN = new Locale("uk");
     public static final Locale LOCALE_THAI = new Locale("th");
 
@@ -80,8 +81,9 @@
             // which way to label it (so eg Chinese cannot be added because
             // the labeling of a Chinese character varies between Simplified,
             // Traditional, and Japanese locales). Use English only for all
-            // Latin based alphabets. Ukrainian is chosen for Cyrillic because
-            // its alphabet is a superset of Russian.
+            // Latin based alphabets. Ukrainian and Serbian are chosen for
+            // Cyrillic because their alphabets are complementary supersets
+            // of Russian.
             mAlphabeticIndex = new AlphabeticIndex(locale)
                 .setMaxLabelCount(300)
                 .addLabels(Locale.ENGLISH)
@@ -92,6 +94,7 @@
                 .addLabels(LOCALE_HEBREW)
                 .addLabels(LOCALE_GREEK)
                 .addLabels(LOCALE_UKRAINIAN)
+                .addLabels(LOCALE_SERBIAN)
                 .getImmutableIndex();
             mAlphabeticIndexBucketCount = mAlphabeticIndex.getBucketCount();
             mNumberBucketIndex = mAlphabeticIndexBucketCount - 1;
diff --git a/src/com/android/providers/contacts/ContactsProvider2.java b/src/com/android/providers/contacts/ContactsProvider2.java
index d0b696c..13b21b5 100644
--- a/src/com/android/providers/contacts/ContactsProvider2.java
+++ b/src/com/android/providers/contacts/ContactsProvider2.java
@@ -69,6 +69,7 @@
 import android.provider.ContactsContract;
 import android.provider.ContactsContract.AggregationExceptions;
 import android.provider.ContactsContract.Authorization;
+import android.provider.ContactsContract.CommonDataKinds.Callable;
 import android.provider.ContactsContract.CommonDataKinds.Contactables;
 import android.provider.ContactsContract.CommonDataKinds.Email;
 import android.provider.ContactsContract.CommonDataKinds.GroupMembership;
@@ -87,6 +88,7 @@
 import android.provider.ContactsContract.Contacts.AggregationSuggestions;
 import android.provider.ContactsContract.Data;
 import android.provider.ContactsContract.DataUsageFeedback;
+import android.provider.ContactsContract.DeletedContacts;
 import android.provider.ContactsContract.Directory;
 import android.provider.ContactsContract.DisplayPhoto;
 import android.provider.ContactsContract.Groups;
@@ -112,6 +114,7 @@
 import com.android.common.content.ProjectionMap;
 import com.android.common.content.SyncStateContentProviderHelper;
 import com.android.common.io.MoreCloseables;
+import com.android.internal.util.ArrayUtils;
 import com.android.providers.contacts.ContactLookupKey.LookupKeySegment;
 import com.android.providers.contacts.ContactsDatabaseHelper.AccountsColumns;
 import com.android.providers.contacts.ContactsDatabaseHelper.AggregatedPresenceColumns;
@@ -180,7 +183,6 @@
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
-import java.util.Map.Entry;
 import java.util.Set;
 import java.util.concurrent.CountDownLatch;
 
@@ -933,8 +935,8 @@
             .build();
 
     private static final ProjectionMap sDeletedContactsProjectionMap = ProjectionMap.builder()
-            .add(ContactsContract.DeletedContacts.CONTACT_ID)
-            .add(ContactsContract.DeletedContacts.CONTACT_DELETED_TIMESTAMP)
+            .add(DeletedContacts.CONTACT_ID)
+            .add(DeletedContacts.CONTACT_DELETED_TIMESTAMP)
             .build();
 
     /**
@@ -1116,94 +1118,132 @@
     static {
         // Contacts URI matching table
         final UriMatcher matcher = sUriMatcher;
-        matcher.addURI(ContactsContract.AUTHORITY, "contacts", CONTACTS);
-        matcher.addURI(ContactsContract.AUTHORITY, "contacts/#", CONTACTS_ID);
-        matcher.addURI(ContactsContract.AUTHORITY, "contacts/#/data", CONTACTS_ID_DATA);
-        matcher.addURI(ContactsContract.AUTHORITY, "contacts/#/entities", CONTACTS_ID_ENTITIES);
-        matcher.addURI(ContactsContract.AUTHORITY, "contacts/#/suggestions",
-                AGGREGATION_SUGGESTIONS);
-        matcher.addURI(ContactsContract.AUTHORITY, "contacts/#/suggestions/*",
-                AGGREGATION_SUGGESTIONS);
-        matcher.addURI(ContactsContract.AUTHORITY, "contacts/#/photo", CONTACTS_ID_PHOTO);
-        matcher.addURI(ContactsContract.AUTHORITY, "contacts/#/display_photo",
-                CONTACTS_ID_DISPLAY_PHOTO);
-        matcher.addURI(ContactsContract.AUTHORITY, "contacts/#/stream_items",
-                CONTACTS_ID_STREAM_ITEMS);
-        matcher.addURI(ContactsContract.AUTHORITY, "contacts/filter", CONTACTS_FILTER);
-        matcher.addURI(ContactsContract.AUTHORITY, "contacts/filter/*", CONTACTS_FILTER);
-        matcher.addURI(ContactsContract.AUTHORITY, "contacts/lookup/*", CONTACTS_LOOKUP);
-        matcher.addURI(ContactsContract.AUTHORITY, "contacts/lookup/*/data", CONTACTS_LOOKUP_DATA);
-        matcher.addURI(ContactsContract.AUTHORITY, "contacts/lookup/*/photo",
-                CONTACTS_LOOKUP_PHOTO);
-        matcher.addURI(ContactsContract.AUTHORITY, "contacts/lookup/*/#", CONTACTS_LOOKUP_ID);
-        matcher.addURI(ContactsContract.AUTHORITY, "contacts/lookup/*/#/data",
-                CONTACTS_LOOKUP_ID_DATA);
-        matcher.addURI(ContactsContract.AUTHORITY, "contacts/lookup/*/#/photo",
-                CONTACTS_LOOKUP_ID_PHOTO);
-        matcher.addURI(ContactsContract.AUTHORITY, "contacts/lookup/*/display_photo",
-                CONTACTS_LOOKUP_DISPLAY_PHOTO);
-        matcher.addURI(ContactsContract.AUTHORITY, "contacts/lookup/*/#/display_photo",
-                CONTACTS_LOOKUP_ID_DISPLAY_PHOTO);
-        matcher.addURI(ContactsContract.AUTHORITY, "contacts/lookup/*/entities",
-                CONTACTS_LOOKUP_ENTITIES);
-        matcher.addURI(ContactsContract.AUTHORITY, "contacts/lookup/*/#/entities",
-                CONTACTS_LOOKUP_ID_ENTITIES);
-        matcher.addURI(ContactsContract.AUTHORITY, "contacts/lookup/*/stream_items",
-                CONTACTS_LOOKUP_STREAM_ITEMS);
-        matcher.addURI(ContactsContract.AUTHORITY, "contacts/lookup/*/#/stream_items",
-                CONTACTS_LOOKUP_ID_STREAM_ITEMS);
-        matcher.addURI(ContactsContract.AUTHORITY, "contacts/as_vcard/*", CONTACTS_AS_VCARD);
-        matcher.addURI(ContactsContract.AUTHORITY, "contacts/as_multi_vcard/*",
-                CONTACTS_AS_MULTI_VCARD);
-        matcher.addURI(ContactsContract.AUTHORITY, "contacts/strequent/", CONTACTS_STREQUENT);
-        matcher.addURI(ContactsContract.AUTHORITY, "contacts/strequent/filter/*",
-                CONTACTS_STREQUENT_FILTER);
-        matcher.addURI(ContactsContract.AUTHORITY, "contacts/group/*", CONTACTS_GROUP);
-        matcher.addURI(ContactsContract.AUTHORITY, "contacts/frequent", CONTACTS_FREQUENT);
-        matcher.addURI(ContactsContract.AUTHORITY, "contacts/delete_usage", CONTACTS_DELETE_USAGE);
 
-        matcher.addURI(ContactsContract.AUTHORITY, "raw_contacts", RAW_CONTACTS);
-        matcher.addURI(ContactsContract.AUTHORITY, "raw_contacts/#", RAW_CONTACTS_ID);
-        matcher.addURI(ContactsContract.AUTHORITY, "raw_contacts/#/data", RAW_CONTACTS_ID_DATA);
-        matcher.addURI(ContactsContract.AUTHORITY, "raw_contacts/#/display_photo",
+        String path = Contacts.CONTENT_URI.getPath();
+        matcher.addURI(ContactsContract.AUTHORITY, path, CONTACTS);
+        matcher.addURI(ContactsContract.AUTHORITY, path + "/#",CONTACTS_ID);
+        matcher.addURI(ContactsContract.AUTHORITY, path + "/#/data", CONTACTS_ID_DATA);
+        matcher.addURI(ContactsContract.AUTHORITY, path + "/#/entities", CONTACTS_ID_ENTITIES);
+        matcher.addURI(ContactsContract.AUTHORITY, path + "/#/suggestions",
+                AGGREGATION_SUGGESTIONS);
+        matcher.addURI(ContactsContract.AUTHORITY, path + "/#/suggestions/*",
+                AGGREGATION_SUGGESTIONS);
+        matcher.addURI(ContactsContract.AUTHORITY, path + "/#/photo", CONTACTS_ID_PHOTO);
+        matcher.addURI(ContactsContract.AUTHORITY, path + "/#/display_photo",
+                CONTACTS_ID_DISPLAY_PHOTO);
+        matcher.addURI(ContactsContract.AUTHORITY, path + "/#/stream_items",
+                CONTACTS_ID_STREAM_ITEMS);
+
+        path = Contacts.CONTENT_FILTER_URI.getPath();
+        matcher.addURI(ContactsContract.AUTHORITY, path, CONTACTS_FILTER);
+        matcher.addURI(ContactsContract.AUTHORITY, path + "/*", CONTACTS_FILTER);
+
+        path = Contacts.CONTENT_LOOKUP_URI.getPath();
+        matcher.addURI(ContactsContract.AUTHORITY, path + "/*", CONTACTS_LOOKUP);
+        matcher.addURI(ContactsContract.AUTHORITY, path + "/*/data", CONTACTS_LOOKUP_DATA);
+        matcher.addURI(ContactsContract.AUTHORITY, path + "/*/photo", CONTACTS_LOOKUP_PHOTO);
+        matcher.addURI(ContactsContract.AUTHORITY, path + "/*/#", CONTACTS_LOOKUP_ID);
+        matcher.addURI(ContactsContract.AUTHORITY, path + "/*/#/data", CONTACTS_LOOKUP_ID_DATA);
+        matcher.addURI(ContactsContract.AUTHORITY, path + "/*/#/photo", CONTACTS_LOOKUP_ID_PHOTO);
+        matcher.addURI(ContactsContract.AUTHORITY, path + "/*/display_photo",
+                CONTACTS_LOOKUP_DISPLAY_PHOTO);
+        matcher.addURI(ContactsContract.AUTHORITY, path + "/*/#/display_photo",
+                CONTACTS_LOOKUP_ID_DISPLAY_PHOTO);
+        matcher.addURI(ContactsContract.AUTHORITY, path + "/*/entities", CONTACTS_LOOKUP_ENTITIES);
+        matcher.addURI(ContactsContract.AUTHORITY, path + "/*/#/entities",
+                CONTACTS_LOOKUP_ID_ENTITIES);
+        matcher.addURI(ContactsContract.AUTHORITY, path + "/*/stream_items",
+                CONTACTS_LOOKUP_STREAM_ITEMS);
+        matcher.addURI(ContactsContract.AUTHORITY, path + "/*/#/stream_items",
+                CONTACTS_LOOKUP_ID_STREAM_ITEMS);
+
+        matcher.addURI(ContactsContract.AUTHORITY, Contacts.CONTENT_VCARD_URI.getPath() + "/*",
+                CONTACTS_AS_VCARD);
+
+        matcher.addURI(ContactsContract.AUTHORITY,
+                Contacts.CONTENT_MULTI_VCARD_URI.getPath() + "/*", CONTACTS_AS_MULTI_VCARD);
+
+        matcher.addURI(ContactsContract.AUTHORITY, Contacts.CONTENT_STREQUENT_URI.getPath(),
+                CONTACTS_STREQUENT);
+
+        matcher.addURI(ContactsContract.AUTHORITY,
+                Contacts.CONTENT_STREQUENT_FILTER_URI.getPath() + "/*", CONTACTS_STREQUENT_FILTER);
+
+        matcher.addURI(ContactsContract.AUTHORITY, Contacts.CONTENT_GROUP_URI.getPath() + "/*",
+                CONTACTS_GROUP);
+
+        matcher.addURI(ContactsContract.AUTHORITY, Contacts.CONTENT_FREQUENT_URI.getPath(),
+                CONTACTS_FREQUENT);
+
+        matcher.addURI(ContactsContract.AUTHORITY, DataUsageFeedback.DELETE_USAGE_URI.getPath(),
+                CONTACTS_DELETE_USAGE);
+
+        path = RawContacts.CONTENT_URI.getPath();
+        matcher.addURI(ContactsContract.AUTHORITY, path, RAW_CONTACTS);
+        matcher.addURI(ContactsContract.AUTHORITY, path + "/#", RAW_CONTACTS_ID);
+        matcher.addURI(ContactsContract.AUTHORITY, path + "/#/data", RAW_CONTACTS_ID_DATA);
+        matcher.addURI(ContactsContract.AUTHORITY, path + "/#/display_photo",
                 RAW_CONTACTS_ID_DISPLAY_PHOTO);
-        matcher.addURI(ContactsContract.AUTHORITY, "raw_contacts/#/entity", RAW_CONTACT_ID_ENTITY);
-        matcher.addURI(ContactsContract.AUTHORITY, "raw_contacts/#/stream_items",
+        matcher.addURI(ContactsContract.AUTHORITY, path + "/#/entity", RAW_CONTACT_ID_ENTITY);
+        matcher.addURI(ContactsContract.AUTHORITY, path + "/#/stream_items",
                 RAW_CONTACTS_ID_STREAM_ITEMS);
-        matcher.addURI(ContactsContract.AUTHORITY, "raw_contacts/#/stream_items/#",
+        matcher.addURI(ContactsContract.AUTHORITY, path + "/#/stream_items/#",
                 RAW_CONTACTS_ID_STREAM_ITEMS_ID);
 
-        matcher.addURI(ContactsContract.AUTHORITY, "raw_contact_entities", RAW_CONTACT_ENTITIES);
+        path = RawContactsEntity.CONTENT_URI.getPath();
+        matcher.addURI(ContactsContract.AUTHORITY, path, RAW_CONTACT_ENTITIES);
 
-        matcher.addURI(ContactsContract.AUTHORITY, "data", DATA);
-        matcher.addURI(ContactsContract.AUTHORITY, "data/#", DATA_ID);
-        matcher.addURI(ContactsContract.AUTHORITY, "data/phones", PHONES);
-        matcher.addURI(ContactsContract.AUTHORITY, "data/phones/#", PHONES_ID);
-        matcher.addURI(ContactsContract.AUTHORITY, "data/phones/filter", PHONES_FILTER);
-        matcher.addURI(ContactsContract.AUTHORITY, "data/phones/filter/*", PHONES_FILTER);
-        matcher.addURI(ContactsContract.AUTHORITY, "data/emails", EMAILS);
-        matcher.addURI(ContactsContract.AUTHORITY, "data/emails/#", EMAILS_ID);
-        matcher.addURI(ContactsContract.AUTHORITY, "data/emails/lookup", EMAILS_LOOKUP);
-        matcher.addURI(ContactsContract.AUTHORITY, "data/emails/lookup/*", EMAILS_LOOKUP);
-        matcher.addURI(ContactsContract.AUTHORITY, "data/emails/filter", EMAILS_FILTER);
-        matcher.addURI(ContactsContract.AUTHORITY, "data/emails/filter/*", EMAILS_FILTER);
-        matcher.addURI(ContactsContract.AUTHORITY, "data/postals", POSTALS);
-        matcher.addURI(ContactsContract.AUTHORITY, "data/postals/#", POSTALS_ID);
+        path = Data.CONTENT_URI.getPath();
+        matcher.addURI(ContactsContract.AUTHORITY, path, DATA);
+        matcher.addURI(ContactsContract.AUTHORITY, path + "/#", DATA_ID);
+
+        path = Phone.CONTENT_URI.getPath();
+        matcher.addURI(ContactsContract.AUTHORITY, path, PHONES);
+        matcher.addURI(ContactsContract.AUTHORITY, path + "/#", PHONES_ID);
+        matcher.addURI(ContactsContract.AUTHORITY, path + "/filter", PHONES_FILTER);
+        matcher.addURI(ContactsContract.AUTHORITY, path + "/filter/*", PHONES_FILTER);
+
+        path = Email.CONTENT_URI.getPath();
+        matcher.addURI(ContactsContract.AUTHORITY, path, EMAILS);
+        matcher.addURI(ContactsContract.AUTHORITY, path + "/#", EMAILS_ID);
+
+        path = Email.CONTENT_LOOKUP_URI.getPath();
+        matcher.addURI(ContactsContract.AUTHORITY, path, EMAILS_LOOKUP);
+        matcher.addURI(ContactsContract.AUTHORITY, path + "/*", EMAILS_LOOKUP);
+
+        path = Email.CONTENT_FILTER_URI.getPath();
+        matcher.addURI(ContactsContract.AUTHORITY, path, EMAILS_FILTER);
+        matcher.addURI(ContactsContract.AUTHORITY, path + "/*", EMAILS_FILTER);
+
+        path = StructuredPostal.CONTENT_URI.getPath();
+        matcher.addURI(ContactsContract.AUTHORITY, path, POSTALS);
+        matcher.addURI(ContactsContract.AUTHORITY, path + "/#", POSTALS_ID);
+
+        path = DataUsageFeedback.FEEDBACK_URI.getPath();
         /** "*" is in CSV form with data ids ("123,456,789") */
-        matcher.addURI(ContactsContract.AUTHORITY, "data/usagefeedback/*", DATA_USAGE_FEEDBACK_ID);
-        matcher.addURI(ContactsContract.AUTHORITY, "data/callables/", CALLABLES);
-        matcher.addURI(ContactsContract.AUTHORITY, "data/callables/#", CALLABLES_ID);
-        matcher.addURI(ContactsContract.AUTHORITY, "data/callables/filter", CALLABLES_FILTER);
-        matcher.addURI(ContactsContract.AUTHORITY, "data/callables/filter/*", CALLABLES_FILTER);
+        matcher.addURI(ContactsContract.AUTHORITY, path + "/*", DATA_USAGE_FEEDBACK_ID);
 
-        matcher.addURI(ContactsContract.AUTHORITY, "data/contactables/", CONTACTABLES);
-        matcher.addURI(ContactsContract.AUTHORITY, "data/contactables/filter", CONTACTABLES_FILTER);
-        matcher.addURI(ContactsContract.AUTHORITY, "data/contactables/filter/*",
-                CONTACTABLES_FILTER);
+        path = Callable.CONTENT_URI.getPath();
+        matcher.addURI(ContactsContract.AUTHORITY, path, CALLABLES);
+        matcher.addURI(ContactsContract.AUTHORITY, path + "/#", CALLABLES_ID);
 
-        matcher.addURI(ContactsContract.AUTHORITY, "groups", GROUPS);
-        matcher.addURI(ContactsContract.AUTHORITY, "groups/#", GROUPS_ID);
-        matcher.addURI(ContactsContract.AUTHORITY, "groups_summary", GROUPS_SUMMARY);
+        path = Callable.CONTENT_FILTER_URI.getPath();
+        matcher.addURI(ContactsContract.AUTHORITY, path, CALLABLES_FILTER);
+        matcher.addURI(ContactsContract.AUTHORITY, path + "/*", CALLABLES_FILTER);
+
+        path = Contactables.CONTENT_URI.getPath();
+        matcher.addURI(ContactsContract.AUTHORITY, path, CONTACTABLES);
+
+        path = Contactables.CONTENT_FILTER_URI.getPath();
+        matcher.addURI(ContactsContract.AUTHORITY, path, CONTACTABLES_FILTER);
+        matcher.addURI(ContactsContract.AUTHORITY, path + "/*", CONTACTABLES_FILTER);
+
+        path = Groups.CONTENT_URI.getPath();
+        matcher.addURI(ContactsContract.AUTHORITY, path, GROUPS);
+        matcher.addURI(ContactsContract.AUTHORITY, path + "/#", GROUPS_ID);
+
+        path = Groups.CONTENT_SUMMARY_URI.getPath();
+        matcher.addURI(ContactsContract.AUTHORITY, path, GROUPS_SUMMARY);
 
         matcher.addURI(ContactsContract.AUTHORITY, SyncStateContentProviderHelper.PATH, SYNCSTATE);
         matcher.addURI(ContactsContract.AUTHORITY, SyncStateContentProviderHelper.PATH + "/#",
@@ -1214,16 +1254,18 @@
                 "profile/" + SyncStateContentProviderHelper.PATH + "/#",
                 PROFILE_SYNCSTATE_ID);
 
-        matcher.addURI(ContactsContract.AUTHORITY, "phone_lookup/*", PHONE_LOOKUP);
-        matcher.addURI(ContactsContract.AUTHORITY, "aggregation_exceptions",
-                AGGREGATION_EXCEPTIONS);
-        matcher.addURI(ContactsContract.AUTHORITY, "aggregation_exceptions/*",
-                AGGREGATION_EXCEPTION_ID);
+        path = PhoneLookup.CONTENT_FILTER_URI.getPath();
+        matcher.addURI(ContactsContract.AUTHORITY, path + "/*", PHONE_LOOKUP);
 
-        matcher.addURI(ContactsContract.AUTHORITY, "settings", SETTINGS);
+        path = AggregationExceptions.CONTENT_URI.getPath();
+        matcher.addURI(ContactsContract.AUTHORITY, path, AGGREGATION_EXCEPTIONS);
+        matcher.addURI(ContactsContract.AUTHORITY, path + "/*", AGGREGATION_EXCEPTION_ID);
 
-        matcher.addURI(ContactsContract.AUTHORITY, "status_updates", STATUS_UPDATES);
-        matcher.addURI(ContactsContract.AUTHORITY, "status_updates/#", STATUS_UPDATES_ID);
+        matcher.addURI(ContactsContract.AUTHORITY, Settings.CONTENT_URI.getPath(), SETTINGS);
+
+        path = StatusUpdates.CONTENT_URI.getPath();
+        matcher.addURI(ContactsContract.AUTHORITY, path, STATUS_UPDATES);
+        matcher.addURI(ContactsContract.AUTHORITY, path + "/#", STATUS_UPDATES_ID);
 
         matcher.addURI(ContactsContract.AUTHORITY, SearchManager.SUGGEST_URI_PATH_QUERY,
                 SEARCH_SUGGESTIONS);
@@ -1232,47 +1274,59 @@
         matcher.addURI(ContactsContract.AUTHORITY, SearchManager.SUGGEST_URI_PATH_SHORTCUT + "/*",
                 SEARCH_SHORTCUT);
 
-        matcher.addURI(ContactsContract.AUTHORITY, "provider_status", PROVIDER_STATUS);
+        matcher.addURI(ContactsContract.AUTHORITY, ProviderStatus.CONTENT_URI.getPath(),
+                PROVIDER_STATUS);
 
-        matcher.addURI(ContactsContract.AUTHORITY, "directories", DIRECTORIES);
-        matcher.addURI(ContactsContract.AUTHORITY, "directories/#", DIRECTORIES_ID);
+        path = Directory.CONTENT_URI.getPath();
+        matcher.addURI(ContactsContract.AUTHORITY, path, DIRECTORIES);
+        matcher.addURI(ContactsContract.AUTHORITY, path + "/#", DIRECTORIES_ID);
 
         matcher.addURI(ContactsContract.AUTHORITY, "complete_name", COMPLETE_NAME);
 
-        matcher.addURI(ContactsContract.AUTHORITY, "profile", PROFILE);
-        matcher.addURI(ContactsContract.AUTHORITY, "profile/entities", PROFILE_ENTITIES);
-        matcher.addURI(ContactsContract.AUTHORITY, "profile/data", PROFILE_DATA);
-        matcher.addURI(ContactsContract.AUTHORITY, "profile/data/#", PROFILE_DATA_ID);
-        matcher.addURI(ContactsContract.AUTHORITY, "profile/photo", PROFILE_PHOTO);
-        matcher.addURI(ContactsContract.AUTHORITY, "profile/display_photo", PROFILE_DISPLAY_PHOTO);
-        matcher.addURI(ContactsContract.AUTHORITY, "profile/as_vcard", PROFILE_AS_VCARD);
-        matcher.addURI(ContactsContract.AUTHORITY, "profile/raw_contacts", PROFILE_RAW_CONTACTS);
-        matcher.addURI(ContactsContract.AUTHORITY, "profile/raw_contacts/#",
-                PROFILE_RAW_CONTACTS_ID);
-        matcher.addURI(ContactsContract.AUTHORITY, "profile/raw_contacts/#/data",
-                PROFILE_RAW_CONTACTS_ID_DATA);
-        matcher.addURI(ContactsContract.AUTHORITY, "profile/raw_contacts/#/entity",
-                PROFILE_RAW_CONTACTS_ID_ENTITIES);
-        matcher.addURI(ContactsContract.AUTHORITY, "profile/status_updates",
+        path = Profile.CONTENT_URI.getPath();
+        matcher.addURI(ContactsContract.AUTHORITY, path, PROFILE);
+        matcher.addURI(ContactsContract.AUTHORITY, path + "/entities", PROFILE_ENTITIES);
+        matcher.addURI(ContactsContract.AUTHORITY, path + "/data", PROFILE_DATA);
+        matcher.addURI(ContactsContract.AUTHORITY, path + "/data/#", PROFILE_DATA_ID);
+        matcher.addURI(ContactsContract.AUTHORITY, path + "/photo", PROFILE_PHOTO);
+        matcher.addURI(ContactsContract.AUTHORITY, path + "/display_photo", PROFILE_DISPLAY_PHOTO);
+        matcher.addURI(ContactsContract.AUTHORITY, path + "/status_updates",
                 PROFILE_STATUS_UPDATES);
-        matcher.addURI(ContactsContract.AUTHORITY, "profile/raw_contact_entities",
+        matcher.addURI(ContactsContract.AUTHORITY, path + "/raw_contact_entities",
                 PROFILE_RAW_CONTACT_ENTITIES);
 
-        matcher.addURI(ContactsContract.AUTHORITY, "stream_items", STREAM_ITEMS);
-        matcher.addURI(ContactsContract.AUTHORITY, "stream_items/photo", STREAM_ITEMS_PHOTOS);
-        matcher.addURI(ContactsContract.AUTHORITY, "stream_items/#", STREAM_ITEMS_ID);
-        matcher.addURI(ContactsContract.AUTHORITY, "stream_items/#/photo", STREAM_ITEMS_ID_PHOTOS);
-        matcher.addURI(ContactsContract.AUTHORITY, "stream_items/#/photo/#",
+        path = Profile.CONTENT_VCARD_URI.getPath();
+        matcher.addURI(ContactsContract.AUTHORITY, path, PROFILE_AS_VCARD);
+
+        path = Profile.CONTENT_RAW_CONTACTS_URI.getPath();
+        matcher.addURI(ContactsContract.AUTHORITY, path, PROFILE_RAW_CONTACTS);
+        matcher.addURI(ContactsContract.AUTHORITY, path + "/#", PROFILE_RAW_CONTACTS_ID);
+        matcher.addURI(ContactsContract.AUTHORITY, path + "/#/data", PROFILE_RAW_CONTACTS_ID_DATA);
+        matcher.addURI(ContactsContract.AUTHORITY, path + "/#/entity",
+                PROFILE_RAW_CONTACTS_ID_ENTITIES);
+
+        path = StreamItems.CONTENT_URI.getPath();
+        matcher.addURI(ContactsContract.AUTHORITY, path, STREAM_ITEMS);
+        matcher.addURI(ContactsContract.AUTHORITY, path + "/photo", STREAM_ITEMS_PHOTOS);
+        matcher.addURI(ContactsContract.AUTHORITY, path + "/#", STREAM_ITEMS_ID);
+        matcher.addURI(ContactsContract.AUTHORITY, path + "/#/photo", STREAM_ITEMS_ID_PHOTOS);
+        matcher.addURI(ContactsContract.AUTHORITY, path + "/#/photo/#",
                 STREAM_ITEMS_ID_PHOTOS_ID);
-        matcher.addURI(ContactsContract.AUTHORITY, "stream_items_limit", STREAM_ITEMS_LIMIT);
 
-        matcher.addURI(ContactsContract.AUTHORITY, "display_photo/#", DISPLAY_PHOTO_ID);
-        matcher.addURI(ContactsContract.AUTHORITY, "photo_dimensions", PHOTO_DIMENSIONS);
+        matcher.addURI(ContactsContract.AUTHORITY, StreamItems.CONTENT_LIMIT_URI.getPath(),
+                STREAM_ITEMS_LIMIT);
 
-        matcher.addURI(ContactsContract.AUTHORITY, "deleted_contacts", DELETED_CONTACTS);
-        matcher.addURI(ContactsContract.AUTHORITY, "deleted_contacts/#", DELETED_CONTACTS_ID);
+        matcher.addURI(ContactsContract.AUTHORITY, DisplayPhoto.CONTENT_URI.getPath() + "/#",
+                DISPLAY_PHOTO_ID);
 
-        matcher.addURI(ContactsContract.AUTHORITY, "pinned_position_update",
+        matcher.addURI(ContactsContract.AUTHORITY,
+                DisplayPhoto.CONTENT_MAX_DIMENSIONS_URI.getPath(), PHOTO_DIMENSIONS);
+
+        path = DeletedContacts.CONTENT_URI.getPath();
+        matcher.addURI(ContactsContract.AUTHORITY, path, DELETED_CONTACTS);
+        matcher.addURI(ContactsContract.AUTHORITY, path + "/#", DELETED_CONTACTS_ID);
+
+        matcher.addURI(ContactsContract.AUTHORITY, PinnedPositions.UPDATE_URI.getPath(),
                 PINNED_POSITION_UPDATE);
     }
 
@@ -4795,10 +4849,14 @@
                                             " FROM " + Tables.RAW_CONTACTS +
                                             " WHERE " + RawContactsColumns.ACCOUNT_ID + " = ?1" +
                                             " AND " + RawContactsColumns.CONCRETE_CONTACT_ID +
+                                            " IS NOT NULL" +
+                                            " AND " + RawContactsColumns.CONCRETE_CONTACT_ID +
                                             " NOT IN (" +
                                             "    SELECT " + RawContactsColumns.CONCRETE_CONTACT_ID +
                                             "    FROM " + Tables.RAW_CONTACTS +
                                             "    WHERE " + RawContactsColumns.ACCOUNT_ID + " != ?1"
+                                            + "  AND " + RawContactsColumns.CONCRETE_CONTACT_ID +
+                                            "    IS NOT NULL"
                                             + ")", accountIdParams);
                             try {
                                 while (cursor.moveToNext()) {
@@ -5428,8 +5486,9 @@
                     qb.setProjectionMap(sStrequentStarredProjectionMap);
 
                     starredInnerQuery = qb.buildQuery(subProjection,
-                            Contacts.STARRED + "=1", Contacts._ID, null,
-                            Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC", null);
+                            DbQueryUtils.concatenateClauses(selection, Contacts.STARRED + "=1"),
+                            Contacts._ID, null, Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC",
+                            null);
 
                     // Reset the builder, and build the second query for frequents contacts
                     qb = new SQLiteQueryBuilder();
@@ -6147,13 +6206,10 @@
                     selectionArgs = mDbHelper.get().buildSipContactQuery(sb, sipAddress);
                     selection = sb.toString();
                 } else {
-                    // Use this flag to track whether sortOrder was originally empty
-                    boolean sortOrderIsEmpty = false;
                     if (TextUtils.isEmpty(sortOrder)) {
                         // Default the sort order to something reasonable so we get consistent
                         // results when callers don't request an ordering
                         sortOrder = " length(lookup.normalized_number) DESC";
-                        sortOrderIsEmpty = true;
                     }
 
                     String number = uri.getPathSegments().size() > 1
@@ -6166,29 +6222,46 @@
                             qb, normalizedNumber, numberE164);
                     qb.setProjectionMap(sPhoneLookupProjectionMap);
 
+                    // removeNonStarMatchesFromCursor() requires the cursor to contain
+                    // PhoneLookup.NUMBER. Therefore, if the projection explicitly omits it, extend
+                    // the projection.
+                    String[] projectionWithNumber = projection;
+                    if (projection != null
+                            && !ArrayUtils.contains(projection,PhoneLookup.NUMBER)) {
+                        projectionWithNumber = ArrayUtils.appendElement(String.class, projection,
+                                PhoneLookup.NUMBER);
+                    }
+
                     // Peek at the results of the first query (which attempts to use fully
                     // normalized and internationalized numbers for comparison).  If no results
                     // were returned, fall back to using the SQLite function
                     // phone_number_compare_loose.
                     qb.setStrict(true);
                     boolean foundResult = false;
-                    Cursor cursor = query(db, qb, projection, selection, selectionArgs,
+                    Cursor cursor = query(db, qb, projectionWithNumber, selection, selectionArgs,
                             sortOrder, groupBy, null, limit, cancellationSignal);
                     try {
                         if (cursor.getCount() > 0) {
                             foundResult = true;
-                            return cursor;
+                            return PhoneLookupWithStarPrefix
+                                    .removeNonStarMatchesFromCursor(number, cursor);
                         } else {
                             // Use fallback lookup method
 
                             qb = new SQLiteQueryBuilder();
+                            qb.setProjectionMap(sPhoneLookupProjectionMap);
+                            qb.setStrict(true);
 
                             // use the raw number instead of the normalized number because
                             // phone_number_compare_loose in SQLite works only with non-normalized
                             // numbers
                             mDbHelper.get().buildFallbackPhoneLookupAndContactQuery(qb, number);
 
-                            qb.setProjectionMap(sPhoneLookupProjectionMap);
+                            final Cursor fallbackCursor = query(db, qb, projectionWithNumber,
+                                    selection, selectionArgs, sortOrder, groupBy, having, limit,
+                                    cancellationSignal);
+                            return PhoneLookupWithStarPrefix
+                                    .removeNonStarMatchesFromCursor(number, fallbackCursor);
                         }
                     } finally {
                         if (!foundResult) {
@@ -6371,7 +6444,7 @@
                 String id = uri.getLastPathSegment();
                 qb.setTables(Tables.DELETED_CONTACTS);
                 qb.setProjectionMap(sDeletedContactsProjectionMap);
-                qb.appendWhere(ContactsContract.DeletedContacts.CONTACT_ID + "=?");
+                qb.appendWhere(DeletedContacts.CONTACT_ID + "=?");
                 selectionArgs = insertSelectionArg(selectionArgs, id);
                 break;
             }
diff --git a/src/com/android/providers/contacts/PhoneLookupWithStarPrefix.java b/src/com/android/providers/contacts/PhoneLookupWithStarPrefix.java
new file mode 100644
index 0000000..a05dd05
--- /dev/null
+++ b/src/com/android/providers/contacts/PhoneLookupWithStarPrefix.java
@@ -0,0 +1,151 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+package com.android.providers.contacts;
+
+import com.android.internal.annotations.VisibleForTesting;
+
+import android.database.Cursor;
+import android.database.MatrixCursor;
+import android.provider.ContactsContract.PhoneLookup;
+import android.telephony.PhoneNumberUtils;
+import android.text.TextUtils;
+import android.util.Log;
+
+/**
+ * Helper class for PHONE_LOOKUP's that involve numbers with "*" prefixes.
+ */
+/* package-protected */ final class PhoneLookupWithStarPrefix {
+    private static final String TAG = "PhoneLookupWSP";
+
+    /**
+     * Returns a cursor with a subset of the rows passed into this function. If {@param number}
+     * starts with a "*" then only rows from {@param cursor} that have a number equal to
+     * {@param number} will be returned. If {@param number} doesn't start with a "*", then
+     * only rows from {@param cursor} that have numbers without starting "*" characters
+     * will be returned.
+     *
+     * This function is used to resolve b/13195334.
+     *
+     * @param number unnormalized phone number.
+     * @param cursor this function takes ownership of the cursor. The calling scope MUST NOT
+     * use or close() the cursor passed into this function. The cursor must contain
+     * PhoneLookup.NUMBER.
+     *
+     * @return a cursor that the calling context owns
+     */
+    public static Cursor removeNonStarMatchesFromCursor(String number, Cursor cursor) {
+
+        // Close cursors that we don't return.
+        Cursor unreturnedCursor = cursor;
+
+        try {
+            if (TextUtils.isEmpty(number)) {
+                unreturnedCursor = null;
+                return cursor;
+            }
+
+            final String queryPhoneNumberNormalized = normalizeNumberWithStar(number);
+            if (!queryPhoneNumberNormalized.startsWith("*")
+                    && !matchingNumberStartsWithStar(cursor)) {
+                cursor.moveToPosition(-1);
+                unreturnedCursor = null;
+                return cursor;
+            }
+
+            final MatrixCursor matrixCursor = new MatrixCursor(cursor.getColumnNames());
+
+            // Close cursors that we don't return.
+            Cursor unreturnedMatrixCursor = matrixCursor;
+
+            try {
+                cursor.moveToPosition(-1);
+                while (cursor.moveToNext()) {
+                    final int numberIndex = cursor.getColumnIndex(PhoneLookup.NUMBER);
+                    final String matchingNumberNormalized
+                            = normalizeNumberWithStar(cursor.getString(numberIndex));
+                    if (!matchingNumberNormalized.startsWith("*")
+                            && !queryPhoneNumberNormalized.startsWith("*")
+                            || matchingNumberNormalized.equals(queryPhoneNumberNormalized)) {
+                        // Copy row from cursor into matrixCursor
+                        final MatrixCursor.RowBuilder b = matrixCursor.newRow();
+                        for (int column = 0; column < cursor.getColumnCount(); column++) {
+                            b.add(cursor.getColumnName(column), cursorValue(cursor, column));
+                        }
+                    }
+                }
+                unreturnedMatrixCursor = null;
+                return matrixCursor;
+            } finally {
+                if (unreturnedMatrixCursor != null) {
+                    unreturnedMatrixCursor.close();
+                }
+            }
+        } finally {
+            if (unreturnedCursor != null) {
+                unreturnedCursor.close();
+            }
+        }
+    }
+
+    @VisibleForTesting
+    static String normalizeNumberWithStar(String phoneNumber) {
+        if (TextUtils.isEmpty(phoneNumber)) {
+            return phoneNumber;
+        }
+        if (phoneNumber.startsWith("*")) {
+            // Use PhoneNumberUtils.normalizeNumber() to normalize the rest of the number after
+            // the leading "*". Strip out the "+" since "+"s are only allowed as leading
+            // characters. NOTE: This statement has poor performance. Fortunately, it won't be
+            // called very often.
+            return "*" + PhoneNumberUtils.normalizeNumber(
+                    phoneNumber.substring(1).replace("+", ""));
+        }
+        return PhoneNumberUtils.normalizeNumber(phoneNumber);
+    }
+
+    /**
+     * @return whether {@param cursor} contain any numbers that start with "*"
+     */
+    private static boolean matchingNumberStartsWithStar(Cursor cursor) {
+        cursor.moveToPosition(-1);
+        while (cursor.moveToNext()) {
+            final int numberIndex = cursor.getColumnIndex(PhoneLookup.NUMBER);
+            final String phoneNumber = normalizeNumberWithStar(cursor.getString(numberIndex));
+            if (phoneNumber.startsWith("*")) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    private static Object cursorValue(Cursor cursor, int column) {
+        switch(cursor.getType(column)) {
+            case Cursor.FIELD_TYPE_BLOB:
+                return cursor.getBlob(column);
+            case Cursor.FIELD_TYPE_INTEGER:
+                return cursor.getInt(column);
+            case Cursor.FIELD_TYPE_FLOAT:
+                return cursor.getFloat(column);
+            case Cursor.FIELD_TYPE_STRING:
+                return cursor.getString(column);
+            case Cursor.FIELD_TYPE_NULL:
+                return null;
+            default:
+                Log.d(TAG, "Invalid value in cursor: " + cursor.getType(column));
+                return null;
+        }
+    }
+}
diff --git a/src/com/android/providers/contacts/ProfileAwareUriMatcher.java b/src/com/android/providers/contacts/ProfileAwareUriMatcher.java
index 051c60e..ee5ec03 100644
--- a/src/com/android/providers/contacts/ProfileAwareUriMatcher.java
+++ b/src/com/android/providers/contacts/ProfileAwareUriMatcher.java
@@ -67,7 +67,13 @@
 
         // Do a second tokenization pass to determine whether the URI may apply to profiles.
         if (path != null) {
-            String[] tokens = PATH_SPLIT_PATTERN.split(path);
+            String newPath = path;
+            // Strip leading slash if present.
+            if (path.length() > 0 && path.charAt(0) == '/') {
+                newPath = path.substring(1);
+            }
+            String[] tokens = PATH_SPLIT_PATTERN.split(newPath);
+
             if (tokens != null) {
 
                 // Keep track of whether we've passed a "lookup" token in the path; wildcards after
diff --git a/tests/src/com/android/providers/contacts/ContactLocaleUtilsTest.java b/tests/src/com/android/providers/contacts/ContactLocaleUtilsTest.java
index ea4ef0f..1120981 100644
--- a/tests/src/com/android/providers/contacts/ContactLocaleUtilsTest.java
+++ b/tests/src/com/android/providers/contacts/ContactLocaleUtilsTest.java
@@ -37,6 +37,9 @@
     private static final String KANJI_NAME = "\u65e5";
     private static final String ARABIC_NAME = "\u0646\u0648\u0631"; /* Noor */
     private static final String CHINESE_NAME = "\u675C\u9D51";
+    private static final String SERBIAN_NAME = "\u0408\u0435\u043B\u0435\u043D\u0430";
+    private static final String UKRAINIAN_NAME = "\u0407";
+    private static final String UKRAINIAN_NAME_2 = "\u0490";
     private static final String CHINESE_LATIN_MIX_NAME_1 = "D\u675C\u9D51";
     private static final String CHINESE_LATIN_MIX_NAME_2 = "MARY \u675C\u9D51";
     private static final String[] CHINESE_NAME_KEY = {"\u9D51", "\u675C\u9D51", "JUAN", "DUJUAN",
@@ -93,11 +96,15 @@
     private static final String JAPANESE_MISC = "\u4ed6";
 
     private static final Locale LOCALE_ARABIC = new Locale("ar");
+    private static final Locale LOCALE_SERBIAN = new Locale("sr");
+    private static final Locale LOCALE_UKRAINIAN = new Locale("uk");
     private boolean hasChineseCollator;
     private boolean hasJapaneseCollator;
     private boolean hasKoreanCollator;
     private boolean hasArabicCollator;
     private boolean hasGermanCollator;
+    private boolean hasSerbianCollator;
+    private boolean hasUkrainianCollator;
 
     @Override
     protected void setUp() throws Exception {
@@ -114,6 +121,10 @@
                 hasArabicCollator = true;
             } else if (locale[i].equals(Locale.GERMANY)) {
                 hasGermanCollator = true;
+            } else if (locale[i].equals(LOCALE_SERBIAN)) {
+                hasSerbianCollator = true;
+            } else if (locale[i].equals(LOCALE_UKRAINIAN)) {
+                hasUkrainianCollator = true;
             }
         }
     }
@@ -143,6 +154,16 @@
         assertEquals("D", getLabel(CHINESE_LATIN_MIX_NAME_1));
         assertEquals("B", getLabel("Bob Smith"));
 
+        if (hasArabicCollator) {
+            assertEquals("\u0646", getLabel(ARABIC_NAME));
+        }
+        if (hasSerbianCollator) {
+            assertEquals("\u0408", getLabel(SERBIAN_NAME));
+        }
+        if (hasUkrainianCollator) {
+            assertEquals("\u0407", getLabel(UKRAINIAN_NAME));
+        }
+
         assertNull(getNameLookupKeys(LATIN_NAME, FullNameStyle.UNDEFINED));
         verifyLabels(getLabels(), LABELS_EN_US);
     }
@@ -253,6 +274,30 @@
         verifyLabels(getLabels(), LABELS_AR);
     }
 
+    public void testSerbianContactLocaleUtils() throws Exception {
+        if (!hasSerbianCollator) {
+            return;
+        }
+
+        ContactLocaleUtils.setLocale(LOCALE_SERBIAN);
+        assertEquals("\u0408", getLabel(SERBIAN_NAME));
+        assertEquals("B", getLabel("Bob Smith"));
+    }
+
+    public void testUkrainianContactLocaleUtils() throws Exception {
+        if (!hasUkrainianCollator) {
+            return;
+        }
+
+        ContactLocaleUtils.setLocale(LOCALE_UKRAINIAN);
+        assertEquals("\u0407", getLabel(UKRAINIAN_NAME));
+        // ICU 52 has a bug whereby this letter has a bucket created only if
+        // Ukrainian is the primary language. Once this is fixed also test this
+        // label when in English locale.
+        assertEquals("\u0490", getLabel(UKRAINIAN_NAME_2));
+        assertEquals("B", getLabel("Bob Smith"));
+    }
+
     public void testGermanContactLocaleUtils() throws Exception {
         if (!hasGermanCollator) {
             return;
diff --git a/tests/src/com/android/providers/contacts/ContactsProvider2Test.java b/tests/src/com/android/providers/contacts/ContactsProvider2Test.java
index 4cdf2b3..9f0dfd8 100644
--- a/tests/src/com/android/providers/contacts/ContactsProvider2Test.java
+++ b/tests/src/com/android/providers/contacts/ContactsProvider2Test.java
@@ -1353,6 +1353,131 @@
         assertEquals(0, getCount(lookupUri2, null, null));
     }
 
+    public void testPhoneLookupStarUseCases() {
+        // Create two raw contacts with numbers "*123" and "12 3". This is a real life example
+        // from b/13195334.
+        final ContentValues values = new ContentValues();
+        Uri rawContactUri = mResolver.insert(RawContacts.CONTENT_URI, values);
+        long rawContactId = ContentUris.parseId(rawContactUri);
+        DataUtil.insertStructuredName(mResolver, rawContactId, "Emergency", /* familyName =*/ null);
+        insertPhoneNumber(rawContactId, "*123");
+
+        rawContactUri = mResolver.insert(RawContacts.CONTENT_URI, values);
+        rawContactId = ContentUris.parseId(rawContactUri);
+        DataUtil.insertStructuredName(mResolver, rawContactId, "Voicemail", /* familyName =*/ null);
+        insertPhoneNumber(rawContactId, "12 3");
+
+        // Verify: "123" returns the "Voicemail" raw contact id. It should not match
+        // a phone number that starts with a "*".
+        Uri lookupUri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, "123");
+        values.clear();
+        values.put(PhoneLookup.DISPLAY_NAME, "Voicemail");
+        assertStoredValues(lookupUri, null, null, new ContentValues[] {values});
+
+        lookupUri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, "(1) 23");
+        values.clear();
+        values.put(PhoneLookup.DISPLAY_NAME, "Voicemail");
+        assertStoredValues(lookupUri, null, null, new ContentValues[] {values});
+
+        // Verify: "*123" returns the "Emergency" raw contact id.
+        lookupUri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, "*1-23");
+        values.clear();
+        values.put(PhoneLookup.DISPLAY_NAME, "Emergency");
+        assertStoredValues(lookupUri, null, null, new ContentValues[] {values});
+    }
+
+    public void testPhoneLookupReturnsNothingRatherThanStar() {
+        // Create Emergency raw contact with "*123456789" number.
+        final ContentValues values = new ContentValues();
+        final Uri rawContactUri = mResolver.insert(RawContacts.CONTENT_URI, values);
+        final long rawContactId1 = ContentUris.parseId(rawContactUri);
+        DataUtil.insertStructuredName(mResolver, rawContactId1, "Emergency",
+                /* familyName =*/ null);
+        insertPhoneNumber(rawContactId1, "*123456789");
+
+        // Lookup should return no results. It does not ignore stars even when no other matches.
+        final Uri lookupUri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, "123456789");
+        assertEquals(0, getCount(lookupUri, null, null));
+    }
+
+    public void testPhoneLookupReturnsNothingRatherThanMissStar() {
+        // Create Voice Mail raw contact with "123456789" number.
+        final ContentValues values = new ContentValues();
+        final Uri rawContactUri = mResolver.insert(RawContacts.CONTENT_URI, values);
+        final long rawContactId1 = ContentUris.parseId(rawContactUri);
+        DataUtil.insertStructuredName(mResolver, rawContactId1, "Voice mail",
+                /* familyName =*/ null);
+        insertPhoneNumber(rawContactId1, "123456789");
+
+        // Lookup should return no results. It does not ignore stars even when no other matches.
+        final Uri lookupUri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, "*123456789");
+        assertEquals(0, getCount(lookupUri, null, null));
+    }
+
+    public void testPhoneLookupStarNoFallbackMatch() {
+        final ContentValues values = new ContentValues();
+        final Uri rawContactUri = mResolver.insert(RawContacts.CONTENT_URI, values);
+        final long rawContactId1 = ContentUris.parseId(rawContactUri);
+        DataUtil.insertStructuredName(mResolver, rawContactId1, "Voice mail",
+                /* familyName =*/ null);
+        insertPhoneNumber(rawContactId1, "*011123456789");
+
+        // The numbers "+123456789" and "*011123456789" are a "fallback" match. The + is equivalent
+        // to "011". This lookup should return no results. Lookup does not ignore
+        // stars, even when doing a fallback lookup.
+        final Uri lookupUri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, "+123456789");
+        assertEquals(0, getCount(lookupUri, null, null));
+    }
+
+    public void testPhoneLookupStarNotBreakFallbackMatching() {
+        // Create a raw contact with a phone number starting with "011"
+        Uri rawContactUri = mResolver.insert(RawContacts.CONTENT_URI, new ContentValues());
+        long rawContactId = ContentUris.parseId(rawContactUri);
+        DataUtil.insertStructuredName(mResolver, rawContactId, "No star",
+                /* familyName =*/ null);
+        insertPhoneNumber(rawContactId, "011123456789");
+
+        // Create a raw contact with a phone number starting with "*011"
+        rawContactUri = mResolver.insert(RawContacts.CONTENT_URI, new ContentValues());
+        rawContactId = ContentUris.parseId(rawContactUri);
+        DataUtil.insertStructuredName(mResolver, rawContactId, "Has star",
+                /* familyName =*/ null);
+        insertPhoneNumber(rawContactId, "*011123456789");
+
+        // A phone number starting with "+" can (fallback) match the same phone number starting
+        // with "001". Verify that this fallback matching still occurs in the presence of
+        // numbers starting with "*"s.
+        final Uri lookupUri1 = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI,
+                "+123456789");
+        final ContentValues values = new ContentValues();
+        values.put(PhoneLookup.DISPLAY_NAME, "No star");
+        assertStoredValues(lookupUri1, null, null, new ContentValues[] {values});
+    }
+
+    public void testPhoneLookupExplicitProjection() {
+        final ContentValues values = new ContentValues();
+        final Uri rawContactUri = mResolver.insert(RawContacts.CONTENT_URI, values);
+        final long rawContactId1 = ContentUris.parseId(rawContactUri);
+        DataUtil.insertStructuredName(mResolver, rawContactId1, "Voice mail",
+                /* familyName =*/ null);
+        insertPhoneNumber(rawContactId1, "+1234567");
+
+        // Performing a query with a non-null projection with or without PhoneLookup.Number inside
+        // it should not cause a crash.
+        Uri lookupUri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, "1234567");
+        String[] projection = new String[] {PhoneLookup.DISPLAY_NAME};
+        mResolver.query(lookupUri, projection, null, null, null);
+        projection = new String[] {PhoneLookup.DISPLAY_NAME, PhoneLookup.NUMBER};
+        mResolver.query(lookupUri, projection, null, null, null);
+
+        // Shouldn't crash for a fallback query either
+        lookupUri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, "*0111234567");
+        projection = new String[] {PhoneLookup.DISPLAY_NAME};
+        mResolver.query(lookupUri, projection, null, null, null);
+        projection = new String[] {PhoneLookup.DISPLAY_NAME, PhoneLookup.NUMBER};
+        mResolver.query(lookupUri, projection, null, null, null);
+    }
+
     public void testPhoneLookupUseCases() {
         ContentValues values = new ContentValues();
         Uri rawContactUri;
diff --git a/tests/src/com/android/providers/contacts/PhoneLookupWithStarPrefixTest.java b/tests/src/com/android/providers/contacts/PhoneLookupWithStarPrefixTest.java
new file mode 100644
index 0000000..cd86a42
--- /dev/null
+++ b/tests/src/com/android/providers/contacts/PhoneLookupWithStarPrefixTest.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2009 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.providers.contacts;
+
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.LargeTest;
+import android.test.suitebuilder.annotation.SmallTest;
+
+@LargeTest
+public class PhoneLookupWithStarPrefixTest extends AndroidTestCase {
+
+    @SmallTest
+    public void testNormalizeNumberWithStar() {
+        assertEquals("6502910000", PhoneLookupWithStarPrefix.normalizeNumberWithStar(
+                "650 2910000"));
+        assertEquals("1234567", PhoneLookupWithStarPrefix.normalizeNumberWithStar("12,3#4*567"));
+        assertEquals("8004664114", PhoneLookupWithStarPrefix.normalizeNumberWithStar(
+                "800-GOOG-114"));
+        assertEquals("+16502910000", PhoneLookupWithStarPrefix.normalizeNumberWithStar(
+                "+1 650 2910000"));
+        assertEquals("*16502910000", PhoneLookupWithStarPrefix.normalizeNumberWithStar(
+                "*1 650 2910000"));
+        assertEquals("*123", PhoneLookupWithStarPrefix.normalizeNumberWithStar("*1-23"));
+        assertEquals("*123", PhoneLookupWithStarPrefix.normalizeNumberWithStar("*+1-23"));
+    }
+
+}
