Address photo editing security bug am: 8b19ca4708 am: 8036494cfd am: 9f1e088258
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Contacts/+/15840259
Change-Id: I3e0bb91c20b3f21bc7be2c47a8dea06de1914145
diff --git a/Android.bp b/Android.bp
new file mode 100644
index 0000000..08288f8
--- /dev/null
+++ b/Android.bp
@@ -0,0 +1,37 @@
+android_app {
+ name: "Contacts",
+
+ srcs: [
+ "src/**/*.java",
+ "src-bind/**/*.java",
+ ],
+
+ static_libs: [
+ "com.android.phone.common-lib",
+
+ "com.google.android.material_material",
+ "androidx.transition_transition",
+ "androidx.legacy_legacy-support-v13",
+ "androidx.appcompat_appcompat",
+ "androidx.cardview_cardview",
+ "androidx.recyclerview_recyclerview",
+ "androidx.palette_palette",
+ "androidx.legacy_legacy-support-v4",
+ "android-common",
+ "com.android.vcard",
+ "guava",
+ "libphonenumber",
+ ],
+
+ certificate: "shared",
+ product_specific: true,
+ privileged: true,
+ required: ["privapp_whitelist_com.android.contacts"],
+
+ optimize: {
+ proguard_flags_files: ["proguard.flags"],
+ },
+
+ sdk_version: "system_current",
+ min_sdk_version: "21",
+}
diff --git a/Android.mk b/Android.mk
deleted file mode 100644
index 2a3a485..0000000
--- a/Android.mk
+++ /dev/null
@@ -1,52 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := optional
-
-phone_common_dir := ../PhoneCommon
-
-src_dirs := src src-bind $(phone_common_dir)/src
-res_dirs := res $(phone_common_dir)/res
-asset_dirs := assets
-
-LOCAL_SRC_FILES := $(call all-java-files-under, $(src_dirs))
-LOCAL_RESOURCE_DIR := $(addprefix $(LOCAL_PATH)/, $(res_dirs))
-LOCAL_ASSET_DIR := $(addprefix $(LOCAL_PATH)/, $(asset_dirs))
-
-LOCAL_STATIC_ANDROID_LIBRARIES := \
- com.google.android.material_material \
- androidx.transition_transition \
- androidx.legacy_legacy-support-v13 \
- androidx.appcompat_appcompat \
- androidx.cardview_cardview \
- androidx.recyclerview_recyclerview \
- androidx.palette_palette \
- androidx.legacy_legacy-support-v4
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
- android-common \
- com.android.vcard \
- guava \
- libphonenumber
-
-LOCAL_USE_AAPT2 := true
-
-LOCAL_AAPT_FLAGS := \
- --auto-add-overlay \
- --extra-packages com.android.phone.common
-
-LOCAL_PACKAGE_NAME := Contacts
-LOCAL_CERTIFICATE := shared
-LOCAL_PRODUCT_MODULE := true
-LOCAL_PRIVILEGED_MODULE := true
-LOCAL_REQUIRED_MODULES := privapp_whitelist_com.android.contacts
-
-LOCAL_PROGUARD_FLAG_FILES := proguard.flags
-
-LOCAL_SDK_VERSION := current
-LOCAL_MIN_SDK_VERSION := 21
-
-include $(BUILD_PACKAGE)
-
-# Use the following include to make our test apk.
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 1110f86..012b924 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -21,7 +21,7 @@
<uses-sdk
android:minSdkVersion="21"
- android:targetSdkVersion="28"/>
+ android:targetSdkVersion="29"/>
<original-package android:name="com.android.contacts"/>
@@ -53,6 +53,7 @@
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<!-- Required in P to run Service.startForeground() -->
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
+ <uses-permission android:name="android.permission.HIDE_NON_SYSTEM_OVERLAY_WINDOWS" />
<uses-feature
android:name="android.hardware.telephony"
diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml
index 499448d..8f981d6 100644
--- a/res/values-b+sr+Latn/strings.xml
+++ b/res/values-b+sr+Latn/strings.xml
@@ -190,7 +190,7 @@
<string name="title_edit_group" msgid="4246193439931854759">"Uklonite kontakte"</string>
<string name="local_profile_title" msgid="1613784248702623410">"Moj lokalni profil"</string>
<string name="external_profile_title" msgid="2706282819025406927">"Moj <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g> profil"</string>
- <string name="contact_editor_prompt_zero_accounts" msgid="4468363031413457746">"Odvojte malo vremena da biste dodali nalog pomoću kog ćete napraviti rezervnu kopiju kontakata na Google-u."</string>
+ <string name="contact_editor_prompt_zero_accounts" msgid="4468363031413457746">"Odvojite malo vremena da biste dodali nalog pomoću kog ćete napraviti rezervnu kopiju kontakata na Google-u."</string>
<string name="contact_editor_prompt_one_account" msgid="765343809177951169">"Novi kontakti će biti sačuvani na nalogu <xliff:g id="ACCOUNT_NAME">%1$s</xliff:g>."</string>
<string name="contact_editor_prompt_multiple_accounts" msgid="1543322760761168351">"Izaberite podrazumevani nalog za nove kontakte:"</string>
<string name="contact_editor_title_new_contact" msgid="7534775011591770343">"Novi kontakt"</string>
diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml
index 926fe45..c7a40a2 100644
--- a/res/values-be/strings.xml
+++ b/res/values-be/strings.xml
@@ -327,7 +327,7 @@
<string name="postalLabelsGroup" msgid="7534317297587527570">"Адрас"</string>
<string name="imLabelsGroup" msgid="2113398976789806432">"ІМ"</string>
<string name="organizationLabelsGroup" msgid="2342482097897299099">"Арганізацыя"</string>
- <string name="relationLabelsGroup" msgid="8931615792208307291">"Сувязі"</string>
+ <string name="relationLabelsGroup" msgid="8931615792208307291">"Адносіны"</string>
<string name="eventLabelsGroup" msgid="8625868552164376823">"Асаблівая дата"</string>
<string name="sms" msgid="4246338112764847384">"Тэкставае паведамленне"</string>
<string name="postal_address" msgid="5031809899673855074">"Адрас"</string>
@@ -466,7 +466,7 @@
<string name="activity_title_contacts_filter" msgid="6340531582631006680">"Адлюстроўваць кантакты"</string>
<string name="custom_list_filter" msgid="2544327670202891979">"Наладзіць прагляд"</string>
<string name="menu_custom_filter_save" msgid="2412959737200856930">"Захаваць"</string>
- <string name="hint_findContacts" msgid="5554298639062659655">"Шукаць у кантактах"</string>
+ <string name="hint_findContacts" msgid="5554298639062659655">"Пошук кантактаў"</string>
<string name="contactsFavoritesLabel" msgid="8339645684721732714">"Выбранае"</string>
<string name="menu_import" msgid="2206768098740726906">"Імпартаваць"</string>
<string name="menu_export" msgid="1217402092617629429">"Экспартаваць"</string>
diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml
index fb2e8bc..f43d7c0 100644
--- a/res/values-bs/strings.xml
+++ b/res/values-bs/strings.xml
@@ -368,7 +368,7 @@
<string name="announce_expanded_fields" msgid="8410808184164186871">"Prošireno"</string>
<string name="announce_collapsed_fields" msgid="7611318715383228182">"Skupljeno"</string>
<string name="list_filter_all_accounts" msgid="6173785387972096770">"Svi kontakti"</string>
- <string name="list_filter_all_starred" msgid="2582865760150432568">"Označeno zvijezdom"</string>
+ <string name="list_filter_all_starred" msgid="2582865760150432568">"Označeno zvjezdicom"</string>
<string name="list_filter_customize" msgid="2368900508906139537">"Prilagodi"</string>
<string name="list_filter_single" msgid="6003845379327432129">"Kontakt"</string>
<string name="display_ungrouped" msgid="4823012484407759332">"Svi drugi kontakti"</string>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index cf32d11..7947c86 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -503,7 +503,7 @@
<string name="turn_auto_sync_on_dialog_confirm_btn" msgid="5575717918836806519">"Activa"</string>
<string name="connection_error_message" msgid="7446131881946138093">"Sense connexió"</string>
<string name="single_sim_display_label" msgid="264062966309455515">"SIM"</string>
- <string name="show_more_content_description" msgid="6298277298495491712">"Mostra més"</string>
+ <string name="show_more_content_description" msgid="6298277298495491712">"Mostra\'n més"</string>
<string name="importing_sim_finished_title" msgid="6436721150882268416">"Importació de la targeta SIM completada"</string>
<string name="importing_sim_failed_title" msgid="1046154274170241788">"La importació ha fallat"</string>
<string name="importing_sim_failed_message" msgid="55568522164349044">"No s\'han pogut importar els contactes de la targeta SIM"</string>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index b24ddb4..4ffa806 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -163,7 +163,7 @@
<string name="contact_directory_description" msgid="1773630547110881835">"Directorio <xliff:g id="TYPE">%1$s</xliff:g>"</string>
<string name="activity_title_settings" msgid="4004290638426915162">"Ajustes"</string>
<string name="menu_settings" msgid="3524924670246877187">"Ajustes"</string>
- <string name="menu_help" msgid="287801702920372292">"Ayuda y sugerencias"</string>
+ <string name="menu_help" msgid="287801702920372292">"Ayuda y comentarios"</string>
<string name="organization_company_and_title" msgid="7197631449041284518">"<xliff:g id="COMPANY_0">%2$s</xliff:g>, <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
<string name="non_phone_caption" msgid="7343449684187013327">"Número de teléfono"</string>
<string name="non_phone_add_to_contacts" msgid="5472784294274676663">"Añadir a contactos"</string>
@@ -471,11 +471,11 @@
<string name="call_subject_limit" msgid="5679166729627777474">"<xliff:g id="COUNT">%1$s</xliff:g>/<xliff:g id="LIMIT">%2$s</xliff:g>"</string>
<string name="call_subject_type_and_number" msgid="134754147019287616">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
<string name="about_build_version" msgid="5870642814752351712">"Versión de la compilación"</string>
- <string name="about_open_source_licenses" msgid="1617836621315557445">"Licencias de código abierto"</string>
+ <string name="about_open_source_licenses" msgid="1617836621315557445">"Licencias de software libre"</string>
<string name="about_open_source_licenses_summary" msgid="4843627659117423491">"Detalles de las licencias de software libre"</string>
<string name="about_privacy_policy" msgid="4581488375200402678">"Política de Privacidad"</string>
- <string name="about_terms_of_service" msgid="7419670771785057738">"Condiciones de Servicio"</string>
- <string name="activity_title_licenses" msgid="6434398894019119709">"Licencias de código abierto"</string>
+ <string name="about_terms_of_service" msgid="7419670771785057738">"Términos del Servicio"</string>
+ <string name="activity_title_licenses" msgid="6434398894019119709">"Licencias de software libre"</string>
<string name="url_open_error_toast" msgid="4885855620824048385">"No se ha podido abrir la URL."</string>
<string name="account_filter_view_checked" msgid="4740544238806346376">"Se ha seleccionado <xliff:g id="ACCOUNT_INFO">%s</xliff:g>"</string>
<string name="account_filter_view_not_checked" msgid="5782705545786455847">"No se ha seleccionado <xliff:g id="ACCOUNT_INFO">%s</xliff:g>"</string>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index 7085e52..b785dc2 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -429,7 +429,7 @@
<string name="caching_vcard_title" msgid="6333926052524937628">"در حال ذخیره در حافظهٔ پنهان"</string>
<string name="progress_notifier_message" msgid="8522060892889599746">"وارد کردن <xliff:g id="CURRENT_NUMBER">%1$s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%2$s</xliff:g>: <xliff:g id="NAME">%3$s</xliff:g>"</string>
<string name="export_to_vcf_file" msgid="3096479544575798192">"صادر کردن به فایل .vcf"</string>
- <string name="display_options_sort_list_by" msgid="4333658089057400431">"مرتبسازی براساس"</string>
+ <string name="display_options_sort_list_by" msgid="4333658089057400431">"بهترتیب"</string>
<string name="display_options_phonetic_name_fields" msgid="1857564544755287298">"تلفظ نام"</string>
<string name="editor_options_always_show_phonetic_names" msgid="3612488836474257715">"همیشه نشان داده شود"</string>
<string name="editor_options_hide_phonetic_names_if_empty" msgid="2693314301550366143">"اگر خالی است پنهان شود"</string>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index 6bb5f56..928940b 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -96,7 +96,7 @@
<string name="createContactShortcutSuccessful_NoName" msgid="532242135930208299">"Yhteystieto lisättiin aloitusnäytölle."</string>
<string name="createContactShortcutSuccessful" msgid="6980032407920515698">"<xliff:g id="NAME">%s</xliff:g> lisättiin aloitusnäytölle."</string>
<string name="photoPickerNotFoundText" msgid="6535222297923110991">"Laitteella ei ole kuvia."</string>
- <string name="attach_photo_dialog_title" msgid="7948754072673745235">"Yhteyshenkilön valokuva"</string>
+ <string name="attach_photo_dialog_title" msgid="7948754072673745235">"Yhteyshenkilön kuva"</string>
<string name="customLabelPickerTitle" msgid="816694850254307154">"Oman luokituksen nimi"</string>
<string name="removePhoto" msgid="1190099414600730001">"Poista kuva"</string>
<string name="noContacts" msgid="3030512741779213810">"Yhteystietoluettelo on tyhjä."</string>
@@ -149,10 +149,10 @@
<string name="video_chat" msgid="2477295971622477433">"Videokeskustelu"</string>
<string name="account_type_format" msgid="4926968760755013450">"<xliff:g id="SOURCE">%1$s</xliff:g>-osoite"</string>
<string name="google_account_type_format" msgid="4046692740262396811">"<xliff:g id="SOURCE">%1$s</xliff:g>-tili"</string>
- <string name="take_photo" msgid="820071555236547516">"Ota valokuva"</string>
+ <string name="take_photo" msgid="820071555236547516">"Ota kuva"</string>
<string name="take_new_photo" msgid="4383091978116875778">"Ota uusi kuva"</string>
- <string name="pick_photo" msgid="2050859661654812588">"Valitse valokuva"</string>
- <string name="pick_new_photo" msgid="4218112182908240970">"Valitse uusi valokuva"</string>
+ <string name="pick_photo" msgid="2050859661654812588">"Valitse kuva"</string>
+ <string name="pick_new_photo" msgid="4218112182908240970">"Valitse uusi kuva"</string>
<string name="search_results_searching" msgid="1373859095361975648">"Haetaan..."</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"Päivämäärä"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"Tunniste"</string>
@@ -217,9 +217,9 @@
<string name="header_phone_entry" msgid="7092868248113091293">"Puhelin"</string>
<string name="content_description_directions" msgid="860179347986211929">"reittiohjeet sijaintiin"</string>
<string name="editor_more_fields" msgid="6158558083947445518">"Lisää kenttiä"</string>
- <string name="editor_change_photo_content_description" msgid="8146896029044539032">"Vaihda yhteystiedon valokuvaa"</string>
- <string name="editor_add_photo_content_description" msgid="8457486801272200575">"Lisää yhteystiedon valokuva"</string>
- <string name="editor_contact_photo_content_description" msgid="8699261934352739">"Yhteystiedon valokuva"</string>
+ <string name="editor_change_photo_content_description" msgid="8146896029044539032">"Vaihda yhteystiedon kuvaa"</string>
+ <string name="editor_add_photo_content_description" msgid="8457486801272200575">"Lisää yhteystiedon kuva"</string>
+ <string name="editor_contact_photo_content_description" msgid="8699261934352739">"Yhteystiedon kuva"</string>
<string name="editor_failed_to_load" msgid="2328074829787373644">"Muokkausnäkymän avaaminen epäonnistui."</string>
<string name="editor_account_selector_title" msgid="3190515989740696043">"Tallennetaan tilille"</string>
<string name="editor_account_selector_read_only_title" msgid="4870485850053962114">"Tilin <xliff:g id="ACCOUNT">%s</xliff:g> yhteystietoja ei voi muokata."</string>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index 83ef3cf..7cc9320 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -29,7 +29,7 @@
<string name="header_entry_contact_list_adapter_header_title" msgid="4098233078586958762">"Créer un contact"</string>
<string name="searchHint" msgid="1487501532610025473">"Rech. des contacts"</string>
<string name="menu_addStar" msgid="4903812703386825130">"Ajouter aux favoris"</string>
- <string name="menu_removeStar" msgid="3707373931808303701">"Supprimer des favoris"</string>
+ <string name="menu_removeStar" msgid="3707373931808303701">"Retirer des favoris"</string>
<string name="description_action_menu_remove_star" msgid="4044390281910122890">"Supprimé des favoris"</string>
<string name="description_action_menu_add_star" msgid="7316521132809388851">"Ajouté aux favoris"</string>
<string name="menu_editContact" msgid="5039663761025630208">"Modifier"</string>
@@ -37,7 +37,7 @@
<string name="menu_change_photo" msgid="4911246106907208055">"Changer de photo"</string>
<string name="menu_create_contact_shortcut" msgid="8983436328557825860">"Créer un raccourci"</string>
<string name="menu_splitAggregate" msgid="2062290275288905833">"Annuler la fusion"</string>
- <string name="menu_editGroup" msgid="8706562583754054622">"Supprimer les contacts"</string>
+ <string name="menu_editGroup" msgid="8706562583754054622">"Retirer les contacts"</string>
<string name="menu_renameGroup" msgid="2685886609399776475">"Renommer l\'étiquette"</string>
<string name="menu_deleteGroup" msgid="1180215594530228294">"Supprimer l\'étiquette"</string>
<string name="menu_addToGroup" msgid="5034813446697655310">"Ajouter un contact"</string>
@@ -183,7 +183,7 @@
<string name="cancel_confirmation_dialog_keep_editing_button" msgid="7117943783437253341">"Annuler"</string>
<string name="leave_customize_confirmation_dialog_message" msgid="5330853530872707231">"Supprimer les personnalisations?"</string>
<string name="enter_contact_name" msgid="521859148893732679">"Rechercher dans les contacts"</string>
- <string name="title_edit_group" msgid="4246193439931854759">"Supprimer les contacts"</string>
+ <string name="title_edit_group" msgid="4246193439931854759">"Retirer les contacts"</string>
<string name="local_profile_title" msgid="1613784248702623410">"Mon profil local"</string>
<string name="external_profile_title" msgid="2706282819025406927">"Mon profil <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g>"</string>
<string name="contact_editor_prompt_zero_accounts" msgid="4468363031413457746">"Prenez une minute pour ajouter un compte qui sauvegardera vos contacts sur Google."</string>
@@ -369,7 +369,7 @@
<string name="list_filter_single" msgid="6003845379327432129">"contact"</string>
<string name="display_ungrouped" msgid="4823012484407759332">"Tous les autres contacts"</string>
<string name="display_all_contacts" msgid="1281067776483704512">"Tous les contacts"</string>
- <string name="menu_sync_remove" msgid="7523335046562082188">"Supprimer le groupe de synchronisation"</string>
+ <string name="menu_sync_remove" msgid="7523335046562082188">"Retirer le groupe de synchronisation"</string>
<string name="dialog_sync_add" msgid="8012361965908515959">"Ajouter groupe de synchronisation"</string>
<string name="display_more_groups" msgid="8398232980355188133">"Autres groupes…"</string>
<string name="display_warn_remove_ungrouped" msgid="522866344738506017">"Le retrait du groupe \"<xliff:g id="GROUP">%s</xliff:g>\" de la synchronisation entraîne également le retrait des contacts n\'appartenant à aucun groupe."</string>
diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml
index c20c6ae..690f2e7 100644
--- a/res/values-gl/strings.xml
+++ b/res/values-gl/strings.xml
@@ -310,10 +310,10 @@
<string name="name_prefix" msgid="8857117624713905211">"Forma de tratamento"</string>
<string name="name_middle" msgid="7330498948136181042">"Segundo nome"</string>
<string name="name_suffix" msgid="4502958221763936999">"Título académico ou profesional"</string>
- <string name="name_phonetic" msgid="4746541275769990740">"Nome fonético"</string>
- <string name="name_phonetic_given" msgid="425534279190047812">"Nome fonético"</string>
- <string name="name_phonetic_middle" msgid="6528822054594516485">"Segundo nome fonético"</string>
- <string name="name_phonetic_family" msgid="1690852801039809448">"Apelido fonético"</string>
+ <string name="name_phonetic" msgid="4746541275769990740">"Nome (pronunciación)"</string>
+ <string name="name_phonetic_given" msgid="425534279190047812">"Nome (pronunciación)"</string>
+ <string name="name_phonetic_middle" msgid="6528822054594516485">"Segundo nome (pronunciación)"</string>
+ <string name="name_phonetic_family" msgid="1690852801039809448">"Apelidos (pronunciación)"</string>
<string name="phoneLabelsGroup" msgid="2746758650001801885">"Teléfono"</string>
<string name="emailLabelsGroup" msgid="3360719560200449554">"Correo electrónico"</string>
<string name="postalLabelsGroup" msgid="7534317297587527570">"Enderezo"</string>
@@ -357,8 +357,8 @@
<string name="description_minus_button" msgid="1305985971158054217">"eliminar"</string>
<string name="expand_name_fields_description" msgid="6059558159338959487">"Mostrar máis campos de nome"</string>
<string name="collapse_name_fields_description" msgid="7950435675716414477">"Contraer campos de nome"</string>
- <string name="expand_phonetic_name_fields_description" msgid="7414340689396399173">"Mostrar máis campos de nome fonético"</string>
- <string name="collapse_phonetic_name_fields_description" msgid="4614902922362144094">"Contraer campos de nome fonético"</string>
+ <string name="expand_phonetic_name_fields_description" msgid="7414340689396399173">"Mostrar máis campos de pronuncia do nome"</string>
+ <string name="collapse_phonetic_name_fields_description" msgid="4614902922362144094">"Contraer campos de pronuncia do nome"</string>
<string name="expand_fields_description" msgid="8604448646798943909">"Despregar"</string>
<string name="collapse_fields_description" msgid="3213872920491992960">"Contraer"</string>
<string name="announce_expanded_fields" msgid="8410808184164186871">"Despregado"</string>
@@ -430,7 +430,7 @@
<string name="progress_notifier_message" msgid="8522060892889599746">"Importando <xliff:g id="CURRENT_NUMBER">%1$s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%2$s</xliff:g>: <xliff:g id="NAME">%3$s</xliff:g>"</string>
<string name="export_to_vcf_file" msgid="3096479544575798192">"Exportar a ficheiro .vcf"</string>
<string name="display_options_sort_list_by" msgid="4333658089057400431">"Ordenar por"</string>
- <string name="display_options_phonetic_name_fields" msgid="1857564544755287298">"Nome fonético"</string>
+ <string name="display_options_phonetic_name_fields" msgid="1857564544755287298">"Nome (pronunciación)"</string>
<string name="editor_options_always_show_phonetic_names" msgid="3612488836474257715">"Mostrar sempre"</string>
<string name="editor_options_hide_phonetic_names_if_empty" msgid="2693314301550366143">"Ocultar se está baleiro"</string>
<string name="display_options_sort_by_given_name" msgid="893781924536349248">"Nome"</string>
diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml
index 8f814ab..da6125c 100644
--- a/res/values-gu/strings.xml
+++ b/res/values-gu/strings.xml
@@ -32,7 +32,7 @@
<string name="menu_removeStar" msgid="3707373931808303701">"મનપસંદમાંથી દૂર કરો"</string>
<string name="description_action_menu_remove_star" msgid="4044390281910122890">"મનપસંદમાંથી દૂર કર્યું"</string>
<string name="description_action_menu_add_star" msgid="7316521132809388851">"મનપસંદમાં ઉમેર્યું"</string>
- <string name="menu_editContact" msgid="5039663761025630208">"સંપાદન"</string>
+ <string name="menu_editContact" msgid="5039663761025630208">"ફેરફાર કરો"</string>
<string name="menu_deleteContact" msgid="15161764025276217">"કાઢી નાખો"</string>
<string name="menu_change_photo" msgid="4911246106907208055">"ફોટો બદલો"</string>
<string name="menu_create_contact_shortcut" msgid="8983436328557825860">"શૉર્ટકટ બનાવો"</string>
@@ -310,10 +310,10 @@
<string name="name_prefix" msgid="8857117624713905211">"નામ ઉપસર્ગ"</string>
<string name="name_middle" msgid="7330498948136181042">"પિતા/પતિનું નામ"</string>
<string name="name_suffix" msgid="4502958221763936999">"નામ પ્રત્યય"</string>
- <string name="name_phonetic" msgid="4746541275769990740">"ધ્વન્યાત્મક નામ"</string>
- <string name="name_phonetic_given" msgid="425534279190047812">"ધ્વન્યાત્મક નામ"</string>
- <string name="name_phonetic_middle" msgid="6528822054594516485">"ધ્વન્યાત્મક પિતા/પતિનું નામ"</string>
- <string name="name_phonetic_family" msgid="1690852801039809448">"ધ્વન્યાત્મક અટક"</string>
+ <string name="name_phonetic" msgid="4746541275769990740">"ફોનેટિક નામ"</string>
+ <string name="name_phonetic_given" msgid="425534279190047812">"ફોનેટિક નામ"</string>
+ <string name="name_phonetic_middle" msgid="6528822054594516485">"ફોનેટિક પિતા/પતિનું નામ"</string>
+ <string name="name_phonetic_family" msgid="1690852801039809448">"ફોનેટિક અટક"</string>
<string name="phoneLabelsGroup" msgid="2746758650001801885">"ફોન"</string>
<string name="emailLabelsGroup" msgid="3360719560200449554">"ઇમેઇલ"</string>
<string name="postalLabelsGroup" msgid="7534317297587527570">"સરનામું"</string>
@@ -357,8 +357,8 @@
<string name="description_minus_button" msgid="1305985971158054217">"કાઢી નાખો"</string>
<string name="expand_name_fields_description" msgid="6059558159338959487">"વધુ નામ ફીલ્ડ્સ બતાવો"</string>
<string name="collapse_name_fields_description" msgid="7950435675716414477">"નામ ફીલ્ડ્સ સંકુચિત કરો"</string>
- <string name="expand_phonetic_name_fields_description" msgid="7414340689396399173">"વધુ ધ્વન્યાત્મક નામ ફીલ્ડ્સ બતાવો"</string>
- <string name="collapse_phonetic_name_fields_description" msgid="4614902922362144094">"ધ્વન્યાત્મક નામ ફીલ્ડ્સ સંકુચિત કરો"</string>
+ <string name="expand_phonetic_name_fields_description" msgid="7414340689396399173">"વધુ ફોનેટિક નામ ફીલ્ડ બતાવો"</string>
+ <string name="collapse_phonetic_name_fields_description" msgid="4614902922362144094">"ફોનેટિક નામ ફીલ્ડ સંકુચિત કરો"</string>
<string name="expand_fields_description" msgid="8604448646798943909">"વિસ્તૃત કરો"</string>
<string name="collapse_fields_description" msgid="3213872920491992960">"સંકુચિત કરો"</string>
<string name="announce_expanded_fields" msgid="8410808184164186871">"વિસ્તૃત કર્યું"</string>
@@ -430,7 +430,7 @@
<string name="progress_notifier_message" msgid="8522060892889599746">"<xliff:g id="CURRENT_NUMBER">%1$s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%2$s</xliff:g> આયાત કરે છે: <xliff:g id="NAME">%3$s</xliff:g>"</string>
<string name="export_to_vcf_file" msgid="3096479544575798192">".vcf ફાઇલ પર નિકાસ કરો"</string>
<string name="display_options_sort_list_by" msgid="4333658089057400431">"આ પ્રમાણે સૉર્ટ કરો"</string>
- <string name="display_options_phonetic_name_fields" msgid="1857564544755287298">"ધ્વન્યાત્મક નામ"</string>
+ <string name="display_options_phonetic_name_fields" msgid="1857564544755287298">"ફોનેટિક નામ"</string>
<string name="editor_options_always_show_phonetic_names" msgid="3612488836474257715">"હંમેશા બતાવો"</string>
<string name="editor_options_hide_phonetic_names_if_empty" msgid="2693314301550366143">"જો ખાલી હોય તો છુપાવો"</string>
<string name="display_options_sort_by_given_name" msgid="893781924536349248">"નામ"</string>
diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml
index 94420ff..c0d5936 100644
--- a/res/values-hy/strings.xml
+++ b/res/values-hy/strings.xml
@@ -393,13 +393,13 @@
<string name="cancel_export_confirmation_message" msgid="370693160959236239">"Չեղարկե՞լ <xliff:g id="FILENAME">%s</xliff:g>-ի արտահանումը"</string>
<string name="cancel_vcard_import_or_export_failed" msgid="3041814872516288484">"Հնարավոր չէ չեղարկել vCard-ի ներմուծումը/արտահանումը"</string>
<string name="fail_reason_unknown" msgid="3721044979355043778">"Անհայտ սխալ:"</string>
- <string name="fail_reason_could_not_open_file" msgid="6015509564074145162">"Հնարավոր չէ բացել \"<xliff:g id="FILE_NAME">%1$s</xliff:g>\"-ը. պատճառը` <xliff:g id="EXACT_REASON">%2$s</xliff:g>:"</string>
+ <string name="fail_reason_could_not_open_file" msgid="6015509564074145162">"Հնարավոր չէ բացել \"<xliff:g id="FILE_NAME">%1$s</xliff:g>\"-ը. պատճառը՝ <xliff:g id="EXACT_REASON">%2$s</xliff:g>:"</string>
<string name="fail_reason_could_not_initialize_exporter" msgid="4145819808407973981">"Հնարավոր չէ մեկնարկել արտահանողը. պատճառը` «<xliff:g id="EXACT_REASON">%s</xliff:g>»:"</string>
<string name="fail_reason_no_exportable_contact" msgid="487925011719622851">"Արտահանելի կոնտակտ չկա:"</string>
<string name="missing_required_permission" msgid="1308037728470791436">"Դուք անջատել եք անհրաժեշտ թույլտվությունը:"</string>
<string name="fail_reason_error_occurred_during_export" msgid="6179270404825288837">"Արտահանման ընթացքում տեղի է ունեցել սխալ. պատճառը` «<xliff:g id="EXACT_REASON">%s</xliff:g>»:"</string>
<string name="fail_reason_io_error" msgid="6364839914349999408">"I/O սխալ"</string>
- <string name="fail_reason_low_memory_during_import" msgid="4525361860523306991">"Հիշողությունը բավարար չէ: Հնարավոր է` ֆայլը չափազանց մեծ է:"</string>
+ <string name="fail_reason_low_memory_during_import" msgid="4525361860523306991">"Հիշողությունը բավարար չէ: Հնարավոր է՝ ֆայլը չափազանց մեծ է:"</string>
<string name="fail_reason_not_supported" msgid="6449916670421646290">"Ձևաչափը չի աջակցվում:"</string>
<string name="exporting_vcard_finished_title" msgid="1984393609140969504">"<xliff:g id="FILENAME">%s</xliff:g>-ի արտահանումն ավարտվեց"</string>
<string name="exporting_vcard_finished_title_fallback" msgid="9029067439586573959">"Կոնտակտների արտահանումն ավարտվեց:"</string>
@@ -503,7 +503,7 @@
<string name="turn_auto_sync_on_dialog_confirm_btn" msgid="5575717918836806519">"Միացնել"</string>
<string name="connection_error_message" msgid="7446131881946138093">"Կապ չկա"</string>
<string name="single_sim_display_label" msgid="264062966309455515">"SIM քարտ"</string>
- <string name="show_more_content_description" msgid="6298277298495491712">"Ցուցադրել ավելի շատ"</string>
+ <string name="show_more_content_description" msgid="6298277298495491712">"Ցույց տալ ավելի շատ"</string>
<string name="importing_sim_finished_title" msgid="6436721150882268416">"SIM քարտի ներմուծումն ավարտվեց"</string>
<string name="importing_sim_failed_title" msgid="1046154274170241788">"Ներմուծման սխալ"</string>
<string name="importing_sim_failed_message" msgid="55568522164349044">"Չհաջողվեց կոնտակտներ ներմուծել SIM քարտից"</string>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index a200960..5cfc832 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -137,7 +137,7 @@
<string name="search_settings_description" msgid="5630675648560839920">"השמות של אנשי הקשר"</string>
<string name="quickcontact_transparent_view_description" msgid="7783027850792852265">"לחץ כדי לחזור אל המסך הקודם"</string>
<string name="quickcontact_add_phone_number" msgid="1683577288080727862">"הוספת מספר טלפון"</string>
- <string name="quickcontact_add_email" msgid="1442894568471116797">"הוסף אימייל"</string>
+ <string name="quickcontact_add_email" msgid="1442894568471116797">"הוספת אימייל"</string>
<string name="missing_app" msgid="5674389915738964148">"לא נמצאה אפליקציה שיכולה לטפל בפעולה זו."</string>
<string name="menu_share" msgid="6343022811796001773">"שיתוף"</string>
<string name="menu_add_contact" msgid="5822356185421997656">"הוספה לאנשי הקשר"</string>
diff --git a/res/values-ja/donottranslate_config.xml b/res/values-ja/donottranslate_config.xml
index ff8a8eb..b357856 100644
--- a/res/values-ja/donottranslate_config.xml
+++ b/res/values-ja/donottranslate_config.xml
@@ -32,7 +32,4 @@
<!-- If true, the order of name fields in the editor is primary (i.e. given name first) -->
<bool name="config_editor_field_order_primary">false</bool>
-
- <!-- If true, phonetic name is included in the contact editor by default -->
- <bool name="config_editor_include_phonetic_name">true</bool>
</resources>
diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml
index 56672d6..d389335 100644
--- a/res/values-ky/strings.xml
+++ b/res/values-ky/strings.xml
@@ -454,7 +454,7 @@
<string name="activity_title_contacts_filter" msgid="6340531582631006680">"Көрсөтүлүүчү байланыштар"</string>
<string name="custom_list_filter" msgid="2544327670202891979">"Тандап көрсөтүү"</string>
<string name="menu_custom_filter_save" msgid="2412959737200856930">"Сактоо"</string>
- <string name="hint_findContacts" msgid="5554298639062659655">"Байланыштарды издеңиз"</string>
+ <string name="hint_findContacts" msgid="5554298639062659655">"Байланыштарды издөө"</string>
<string name="contactsFavoritesLabel" msgid="8339645684721732714">"Cүйүктүүлөр"</string>
<string name="menu_import" msgid="2206768098740726906">"Өткөрүп алуу"</string>
<string name="menu_export" msgid="1217402092617629429">"Өткөрүп берүү"</string>
diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml
index fdf3b01..603d7bd 100644
--- a/res/values-ml/strings.xml
+++ b/res/values-ml/strings.xml
@@ -311,9 +311,9 @@
<string name="name_middle" msgid="7330498948136181042">"മിഡിൽ നെയിം"</string>
<string name="name_suffix" msgid="4502958221763936999">"പേരിന്റെ സഫിക്സ്"</string>
<string name="name_phonetic" msgid="4746541275769990740">"ഉച്ചാരണപ്രകാരമുള്ള പേര്"</string>
- <string name="name_phonetic_given" msgid="425534279190047812">"ഫസ്റ്റ് നെയിം"</string>
+ <string name="name_phonetic_given" msgid="425534279190047812">"ഉച്ചാരണപ്രകാരമുള്ള ഫസ്റ്റ് നെയിം"</string>
<string name="name_phonetic_middle" msgid="6528822054594516485">"ഉച്ചാരണപ്രകാരമുള്ള മിഡിൽ നെയിം"</string>
- <string name="name_phonetic_family" msgid="1690852801039809448">"പേരിന്റെ അവസാന ഭാഗം"</string>
+ <string name="name_phonetic_family" msgid="1690852801039809448">"ഉച്ചാരണപ്രകാരമുള്ള ലാസ്റ്റ് നെയിം"</string>
<string name="phoneLabelsGroup" msgid="2746758650001801885">"ഫോണ്"</string>
<string name="emailLabelsGroup" msgid="3360719560200449554">"ഇമെയില്"</string>
<string name="postalLabelsGroup" msgid="7534317297587527570">"വിലാസം"</string>
diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml
index 937d078..e51a178 100644
--- a/res/values-mn/strings.xml
+++ b/res/values-mn/strings.xml
@@ -209,7 +209,7 @@
<string name="header_organization_entry" msgid="7428066442988227441">"Байгууллага"</string>
<string name="header_nickname_entry" msgid="1110276804512795150">"Хоч"</string>
<string name="header_note_entry" msgid="339680292368016788">"Тэмдэглэл"</string>
- <string name="header_website_entry" msgid="3618691707215428785">"Вэбсайт"</string>
+ <string name="header_website_entry" msgid="3618691707215428785">"Вебсайт"</string>
<string name="header_event_entry" msgid="70962228694476731">"Үйл явдал"</string>
<string name="header_relation_entry" msgid="993618132732521944">"Хамаарал"</string>
<string name="header_name_entry" msgid="2516776099121101578">"Нэр"</string>
@@ -328,7 +328,7 @@
<string name="label_notes" msgid="7134226125644463585">"Тэмдэглэл"</string>
<string name="label_custom_field" msgid="4160584225306364924">"Тусгай"</string>
<string name="label_sip_address" msgid="8876347942587537552">"SIP"</string>
- <string name="websiteLabelsGroup" msgid="114754928100220315">"Вэбсайт"</string>
+ <string name="websiteLabelsGroup" msgid="114754928100220315">"Вебсайт"</string>
<string name="groupsLabel" msgid="5622154133880646122">"Шошгууд"</string>
<string name="email_home" msgid="1102791500866910269">"Гэрийн имэйл рүү"</string>
<string name="email_mobile" msgid="6461172430397598705">"Гар утас руу имэйлдэх"</string>
@@ -499,7 +499,7 @@
<string name="dismiss_sync_alert" msgid="4057176963960104786">"Хаах"</string>
<string name="account_sync_off" msgid="6187683798342006021">"Автомат синк идэвхгүй байна. Идэвхжүүлэх бол товшино уу."</string>
<string name="turn_auto_sync_on_dialog_title" msgid="3812155064863594938">"Автомат синкийг асаах уу?"</string>
- <string name="turn_auto_sync_on_dialog_body" msgid="5386810641905184682">"Google Харилцагч төдийгүй бүх апп болон бүртгэлд таны оруулсан өөрчлөлтийг вэб болон таны бусад төхөөрөмжүүд хооронд шинэчилж байх болно."</string>
+ <string name="turn_auto_sync_on_dialog_body" msgid="5386810641905184682">"Google Харилцагч төдийгүй бүх апп болон бүртгэлд таны оруулсан өөрчлөлтийг веб болон таны бусад төхөөрөмжүүд хооронд шинэчилж байх болно."</string>
<string name="turn_auto_sync_on_dialog_confirm_btn" msgid="5575717918836806519">"Идэвхжүүлэх"</string>
<string name="connection_error_message" msgid="7446131881946138093">"Холболт байхгүй"</string>
<string name="single_sim_display_label" msgid="264062966309455515">"SIM"</string>
diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml
index a017629..3b475ab 100644
--- a/res/values-mr/strings.xml
+++ b/res/values-mr/strings.xml
@@ -198,7 +198,7 @@
<string name="contact_editor_unlink_contacts" msgid="8399419729744305687">"दुवा रद्द करा"</string>
<string name="add_account" msgid="3071396624500839020">"खाते जोडा"</string>
<string name="add_new_account" msgid="573368229646104110">"नवीन खाते जोडा"</string>
- <string name="menu_export_database" msgid="1658249125751926885">"डेटाबेस फाईल एक्सपोर्ट करा"</string>
+ <string name="menu_export_database" msgid="1658249125751926885">"डेटाबेस फाइल एक्सपोर्ट करा"</string>
<string name="action_menu_add_new_contact_button" msgid="1201339383074001291">"नवीन संपर्क तयार करा"</string>
<string name="expanding_entry_card_view_see_more" msgid="6636033205952561590">"अधिक पहा"</string>
<string name="expanding_entry_card_view_see_less" msgid="6399603072579278030">"कमी पहा"</string>
@@ -369,10 +369,10 @@
<string name="list_filter_single" msgid="6003845379327432129">"संपर्क"</string>
<string name="display_ungrouped" msgid="4823012484407759332">"इतर सर्व संपर्क"</string>
<string name="display_all_contacts" msgid="1281067776483704512">"सर्व संपर्क"</string>
- <string name="menu_sync_remove" msgid="7523335046562082188">"संकालन समूह काढून टाका"</string>
- <string name="dialog_sync_add" msgid="8012361965908515959">"संकालन गट जोडा"</string>
+ <string name="menu_sync_remove" msgid="7523335046562082188">"सिंक समूह काढून टाका"</string>
+ <string name="dialog_sync_add" msgid="8012361965908515959">"सिंक गट जोडा"</string>
<string name="display_more_groups" msgid="8398232980355188133">"अधिक गट..."</string>
- <string name="display_warn_remove_ungrouped" msgid="522866344738506017">"संकालन करा मधून \"<xliff:g id="GROUP">%s</xliff:g>\" हटविल्याने संकालन करा मधून कोणत्याही गटबद्ध न केलेल्या संपर्कांना देखील हटवेल."</string>
+ <string name="display_warn_remove_ungrouped" msgid="522866344738506017">"सिंक करा मधून \"<xliff:g id="GROUP">%s</xliff:g>\" हटविल्याने सिंक करा मधून कोणत्याही गटबद्ध न केलेल्या संपर्कांना देखील हटवेल."</string>
<string name="savingDisplayGroups" msgid="6779839417901711381">"प्रदर्शन पर्याय सेव्ह करत आहे…"</string>
<string name="listCustomView" msgid="5782275477737032610">"सानुकूलित दृश्य"</string>
<string name="dialog_new_contact_account" msgid="5652018124788855057">"इंपोर्ट केलेले संपर्क यावर सेव्ह करा:"</string>
@@ -386,7 +386,7 @@
<item quantity="other"><xliff:g id="COUNT_2">^1</xliff:g> संपर्क • <xliff:g id="PHONE_NUMBER_3">^2</xliff:g></item>
<item quantity="one"><xliff:g id="COUNT_0">^1</xliff:g> संपर्क • <xliff:g id="PHONE_NUMBER_1">^2</xliff:g></item>
</plurals>
- <string name="import_from_vcf_file" msgid="6776403212804361301">".vcf फाईल"</string>
+ <string name="import_from_vcf_file" msgid="6776403212804361301">".vcf फाइल"</string>
<string name="nothing_to_import_message" msgid="2594519620375509783">"इंपोर्ट करण्यासाठी काहीही नाही"</string>
<string name="import_from_vcf_file_confirmation_message" msgid="8579284961401472204">"vCard मधून संपर्क इंपोर्ट करायचे?"</string>
<string name="cancel_import_confirmation_message" msgid="1007412828398265611">"<xliff:g id="FILENAME">%s</xliff:g> चे इंपोर्ट रद्द करायचे?"</string>
@@ -399,7 +399,7 @@
<string name="missing_required_permission" msgid="1308037728470791436">"तुम्ही आवश्यक असलेली एक परवानगी अक्षम केली आहे."</string>
<string name="fail_reason_error_occurred_during_export" msgid="6179270404825288837">"एक्सपोर्ट दरम्यान एरर आलीt: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
<string name="fail_reason_io_error" msgid="6364839914349999408">"I/O एरर"</string>
- <string name="fail_reason_low_memory_during_import" msgid="4525361860523306991">"पुरेशी मेमरी नाही. फाईल कदाचित खूप मोठी असू शकते."</string>
+ <string name="fail_reason_low_memory_during_import" msgid="4525361860523306991">"पुरेशी मेमरी नाही. फाइल कदाचित खूप मोठी असू शकते."</string>
<string name="fail_reason_not_supported" msgid="6449916670421646290">"स्वरूपन समर्थित नाही."</string>
<string name="exporting_vcard_finished_title" msgid="1984393609140969504">"<xliff:g id="FILENAME">%s</xliff:g> एक्सपोर्ट करणे समाप्त झाले."</string>
<string name="exporting_vcard_finished_title_fallback" msgid="9029067439586573959">"संपर्क इंपोर्ट करणे समाप्त झाले"</string>
@@ -418,7 +418,7 @@
<string name="importing_vcard_finished_title" msgid="2274644947000264322">"vCard <xliff:g id="FILENAME">%s</xliff:g> इंपोर्ट करणे समाप्त झाले"</string>
<string name="importing_vcard_canceled_title" msgid="8165471996631186776">"<xliff:g id="FILENAME">%s</xliff:g> इंपोर्ट करणे रद्द झाले"</string>
<string name="vcard_import_will_start_message" msgid="4514702035621833178">"<xliff:g id="FILENAME">%s</xliff:g> लवकरच इंपोर्ट केली जाईल."</string>
- <string name="vcard_import_will_start_message_with_default_name" msgid="8205422202924103470">"फाईल लवकरच इंपोर्ट केली जाईल."</string>
+ <string name="vcard_import_will_start_message_with_default_name" msgid="8205422202924103470">"फाइल लवकरच इंपोर्ट केली जाईल."</string>
<string name="vcard_import_request_rejected_message" msgid="4754292694777189540">"vCard इंपोर्ट विनंती नाकारली. नंतर पुन्हा प्रयत्न करा."</string>
<string name="contacts_export_will_start_message" msgid="6428126265599715944">"संपर्क लवकरच एक्सपोर्ट केले जातील."</string>
<string name="vcard_export_request_rejected_message" msgid="6455336845734884740">"vCard एक्सपोर्ट विनंती नाकारली. नंतर पुन्हा प्रयत्न करा."</string>
@@ -495,10 +495,10 @@
<string name="sim_import_failed_toast" msgid="358117391138073786">"सिम संपर्क इंपोर्ट करण्यात अयशस्वी"</string>
<string name="sim_import_title" msgid="8202961146093040684">"सिम वरून इंपोर्ट करा"</string>
<string name="sim_import_cancel_content_description" msgid="4746065462808862682">"रद्द करा"</string>
- <string name="auto_sync_off" msgid="7039314601316227882">"स्वयं-संकालन बंद आहे. सुरू करण्यासाठी टॅप करा."</string>
+ <string name="auto_sync_off" msgid="7039314601316227882">"स्वयं-सिंक बंद आहे. सुरू करण्यासाठी टॅप करा."</string>
<string name="dismiss_sync_alert" msgid="4057176963960104786">"डिसमिस करा"</string>
- <string name="account_sync_off" msgid="6187683798342006021">"स्वयं-संकालन बंद आहे. सुरू करण्यासाठी टॅप करा."</string>
- <string name="turn_auto_sync_on_dialog_title" msgid="3812155064863594938">"स्वयं-संकालन सुरू करायचे?"</string>
+ <string name="account_sync_off" msgid="6187683798342006021">"स्वयं-सिंक बंद आहे. सुरू करण्यासाठी टॅप करा."</string>
+ <string name="turn_auto_sync_on_dialog_title" msgid="3812155064863594938">"स्वयं-सिंक सुरू करायचे?"</string>
<string name="turn_auto_sync_on_dialog_body" msgid="5386810641905184682">"फक्त संपर्कांमध्ये नाही, तर तुम्ही सर्व अॅप्स आणि खात्यांमध्ये करता ते बदल, वेब आणि आपल्या अन्य डिव्हाइसेस दरम्यान अपडेट ठेवले जातील."</string>
<string name="turn_auto_sync_on_dialog_confirm_btn" msgid="5575717918836806519">"सुरू करा"</string>
<string name="connection_error_message" msgid="7446131881946138093">"कोणतेही कनेक्शन नाही"</string>
diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml
index 9271460..fe3835f 100644
--- a/res/values-my/strings.xml
+++ b/res/values-my/strings.xml
@@ -459,8 +459,8 @@
<string name="menu_import" msgid="2206768098740726906">"ထည့်သွင်းရန်"</string>
<string name="menu_export" msgid="1217402092617629429">"ထုတ်ယူရန်"</string>
<string name="menu_blocked_numbers" msgid="7064680515202657609">"ပိတ်ဆို့နံပါတ်များ"</string>
- <string name="contact_status_update_attribution" msgid="5051874518046969847">"<xliff:g id="SOURCE">%1$s</xliff:g> မှတဆင့်"</string>
- <string name="contact_status_update_attribution_with_date" msgid="2195847657702455703">"<xliff:g id="DATE">%1$s</xliff:g> <xliff:g id="SOURCE">%2$s</xliff:g> မှတဆင့်"</string>
+ <string name="contact_status_update_attribution" msgid="5051874518046969847">"<xliff:g id="SOURCE">%1$s</xliff:g> မှတစ်ဆင့်"</string>
+ <string name="contact_status_update_attribution_with_date" msgid="2195847657702455703">"<xliff:g id="DATE">%1$s</xliff:g> <xliff:g id="SOURCE">%2$s</xliff:g> မှတစ်ဆင့်"</string>
<string name="action_menu_back_from_search" msgid="683765774264585732">"ရှာဖွေမှုရပ်ရန်"</string>
<string name="description_clear_search" msgid="1852934085825794095">"ရှာဖွေမှုကို ရှင်းပါ"</string>
<string name="select_account_dialog_title" msgid="5047523441152129207">"အကောင့်"</string>
diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml
index b67e0e2..aff6c07 100644
--- a/res/values-ne/strings.xml
+++ b/res/values-ne/strings.xml
@@ -34,7 +34,7 @@
<string name="description_action_menu_add_star" msgid="7316521132809388851">"मनपर्नेमा थपियो"</string>
<string name="menu_editContact" msgid="5039663761025630208">"सम्पादन गर्नुहोस्"</string>
<string name="menu_deleteContact" msgid="15161764025276217">"मेट्नुहोस्"</string>
- <string name="menu_change_photo" msgid="4911246106907208055">"तस्बिर परिवर्तन गर्नुहोस्"</string>
+ <string name="menu_change_photo" msgid="4911246106907208055">"फोटो परिवर्तन गर्नुहोस्"</string>
<string name="menu_create_contact_shortcut" msgid="8983436328557825860">"सर्टकट सिर्जना गर्नुहोस्"</string>
<string name="menu_splitAggregate" msgid="2062290275288905833">"अनलिंक"</string>
<string name="menu_editGroup" msgid="8706562583754054622">"सम्पर्कहरू हटाउनुहोस्"</string>
@@ -95,10 +95,10 @@
<string name="invalidContactMessage" msgid="6204402264821083362">"सम्पर्क उपलब्ध छैन।"</string>
<string name="createContactShortcutSuccessful_NoName" msgid="532242135930208299">"सम्पर्क गृह स्क्रिनमा थपियो।"</string>
<string name="createContactShortcutSuccessful" msgid="6980032407920515698">"<xliff:g id="NAME">%s</xliff:g> गृह स्क्रिनमा थपियो।"</string>
- <string name="photoPickerNotFoundText" msgid="6535222297923110991">"यन्त्रमा कुनै पनि तस्बिरहरू उपलब्ध छैनन्।"</string>
- <string name="attach_photo_dialog_title" msgid="7948754072673745235">"सम्पर्क तस्बिर"</string>
+ <string name="photoPickerNotFoundText" msgid="6535222297923110991">"यन्त्रमा कुनै पनि फोटोहरू उपलब्ध छैनन्।"</string>
+ <string name="attach_photo_dialog_title" msgid="7948754072673745235">"सम्पर्क फोटो"</string>
<string name="customLabelPickerTitle" msgid="816694850254307154">"आफू अनुकूल पारिएको लेबलको नाम"</string>
- <string name="removePhoto" msgid="1190099414600730001">"तस्बिर मेट्नुहोस्"</string>
+ <string name="removePhoto" msgid="1190099414600730001">"फोटो मेट्नुहोस्"</string>
<string name="noContacts" msgid="3030512741779213810">"तपाईंको सम्पर्क ठेगानाहरूको सूची खाली छ"</string>
<string name="emptyGroup" msgid="8598261660865081152">"यो लेबल अन्तर्गत कुनै सम्पर्कहरू छैनन्"</string>
<string name="emptyAccount" msgid="7450843210977018582">"यस खातामा कुनै सम्पर्क ठेगानाहरू छैनन्"</string>
@@ -149,10 +149,10 @@
<string name="video_chat" msgid="2477295971622477433">"भिडियो च्याट"</string>
<string name="account_type_format" msgid="4926968760755013450">"<xliff:g id="SOURCE">%1$s</xliff:g> सम्पर्क"</string>
<string name="google_account_type_format" msgid="4046692740262396811">"<xliff:g id="SOURCE">%1$s</xliff:g> खाता"</string>
- <string name="take_photo" msgid="820071555236547516">"तस्बिर लिनुहोस्"</string>
- <string name="take_new_photo" msgid="4383091978116875778">"नयाँ तस्बिर खिच्नुहोस्"</string>
- <string name="pick_photo" msgid="2050859661654812588">"तस्बिर छान्नुहोस्"</string>
- <string name="pick_new_photo" msgid="4218112182908240970">"नयाँ तस्बिर चयन गर्नुहोस्"</string>
+ <string name="take_photo" msgid="820071555236547516">"फोटो लिनुहोस्"</string>
+ <string name="take_new_photo" msgid="4383091978116875778">"नयाँ फोटो खिच्नुहोस्"</string>
+ <string name="pick_photo" msgid="2050859661654812588">"फोटो छान्नुहोस्"</string>
+ <string name="pick_new_photo" msgid="4218112182908240970">"नयाँ फोटो चयन गर्नुहोस्"</string>
<string name="search_results_searching" msgid="1373859095361975648">"खोजी कार्य गर्दै..."</string>
<string name="event_edit_field_hint_text" msgid="1720286136507504896">"मिति"</string>
<string name="group_edit_field_hint_text" msgid="1159504474053684478">"लेबल"</string>
@@ -217,9 +217,9 @@
<string name="header_phone_entry" msgid="7092868248113091293">"फोन"</string>
<string name="content_description_directions" msgid="860179347986211929">"स्थानको लागि निर्देशनहरू"</string>
<string name="editor_more_fields" msgid="6158558083947445518">"थप क्षेत्रहरू"</string>
- <string name="editor_change_photo_content_description" msgid="8146896029044539032">"सम्पर्कको तस्बिर बदल्नुहोस्"</string>
- <string name="editor_add_photo_content_description" msgid="8457486801272200575">"सम्पर्कको तस्बिर थप्नुहोस्"</string>
- <string name="editor_contact_photo_content_description" msgid="8699261934352739">"सम्पर्कको तस्बिर"</string>
+ <string name="editor_change_photo_content_description" msgid="8146896029044539032">"सम्पर्कको फोटो बदल्नुहोस्"</string>
+ <string name="editor_add_photo_content_description" msgid="8457486801272200575">"सम्पर्कको फोटो थप्नुहोस्"</string>
+ <string name="editor_contact_photo_content_description" msgid="8699261934352739">"सम्पर्कको फोटो"</string>
<string name="editor_failed_to_load" msgid="2328074829787373644">"सम्पादक खोल्न सकिएन।"</string>
<string name="editor_account_selector_title" msgid="3190515989740696043">"यसमा सुरक्षित गरिँदै"</string>
<string name="editor_account_selector_read_only_title" msgid="4870485850053962114">"<xliff:g id="ACCOUNT">%s</xliff:g> को सम्पर्क सम्बन्धी जानकारी सम्पादन गर्न मिल्दैन"</string>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 6478cf2..7e5242d 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -241,7 +241,7 @@
<string name="hamburger_feature_highlight_body" msgid="782935036630531528">"Organiseer je contacten op een overzichtelijke en nuttige manier"</string>
<string name="undo" msgid="2446931036220975026">"Ongedaan maken"</string>
<string name="call_custom" msgid="2844900154492073207">"<xliff:g id="CUSTOM_LABEL">%s</xliff:g> bellen"</string>
- <string name="call_home" msgid="2443904771140750492">"Bellen naar huis"</string>
+ <string name="call_home" msgid="2443904771140750492">"Thuis bellen"</string>
<string name="call_mobile" msgid="6504312789160309832">"Bellen naar mobiel"</string>
<string name="call_work" msgid="2414313348547560346">"Bellen naar werk"</string>
<string name="call_fax_work" msgid="5026843006300760797">"Bellen naar fax werk"</string>
@@ -341,7 +341,7 @@
<string name="postal_region" msgid="6130239447563491435">"Staat"</string>
<string name="postal_postcode" msgid="33077708757232659">"Postcode"</string>
<string name="postal_country" msgid="6642804283917549861">"Land"</string>
- <string name="map_home" msgid="2169053372466501148">"Thuisadres weergeven"</string>
+ <string name="map_home" msgid="2169053372466501148">"Woonadres weergeven"</string>
<string name="map_work" msgid="8296916987749726461">"Werkadres weergeven"</string>
<string name="map_other" msgid="4009931029322619674">"Adres weergeven"</string>
<string name="map_custom" msgid="7797812861927817335">"Adres voor <xliff:g id="CUSTOM_LABEL">%s</xliff:g> bekijken"</string>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index 0d1af6d..1438160 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -190,7 +190,7 @@
<string name="title_edit_group" msgid="4246193439931854759">"Уклоните контакте"</string>
<string name="local_profile_title" msgid="1613784248702623410">"Мој локални профил"</string>
<string name="external_profile_title" msgid="2706282819025406927">"Мој <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g> профил"</string>
- <string name="contact_editor_prompt_zero_accounts" msgid="4468363031413457746">"Одвојте мало времена да бисте додали налог помоћу ког ћете направити резервну копију контаката на Google-у."</string>
+ <string name="contact_editor_prompt_zero_accounts" msgid="4468363031413457746">"Одвојите мало времена да бисте додали налог помоћу ког ћете направити резервну копију контаката на Google-у."</string>
<string name="contact_editor_prompt_one_account" msgid="765343809177951169">"Нови контакти ће бити сачувани на налогу <xliff:g id="ACCOUNT_NAME">%1$s</xliff:g>."</string>
<string name="contact_editor_prompt_multiple_accounts" msgid="1543322760761168351">"Изаберите подразумевани налог за нове контакте:"</string>
<string name="contact_editor_title_new_contact" msgid="7534775011591770343">"Нови контакт"</string>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index 35014bc..b6ff4ea 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -92,7 +92,7 @@
<string name="multipleContactDeleteConfirmation" msgid="2970218685653877287">"Kufuta anwani hii kutafuta maelezo kwenye akaunti nyingi."</string>
<string name="deleteConfirmation" msgid="3727809366015979585">"Je, ungependa kufuta anwani hii?"</string>
<string name="deleteConfirmation_positive_button" msgid="1604511403421785160">"Futa"</string>
- <string name="invalidContactMessage" msgid="6204402264821083362">"Mwasiliani hayupo."</string>
+ <string name="invalidContactMessage" msgid="6204402264821083362">"Anwani haipo."</string>
<string name="createContactShortcutSuccessful_NoName" msgid="532242135930208299">"Anwani imeongezwa kwenye Skrini ya kwanza."</string>
<string name="createContactShortcutSuccessful" msgid="6980032407920515698">"<xliff:g id="NAME">%s</xliff:g> imeongezwa kwenye Skrini ya kwanza."</string>
<string name="photoPickerNotFoundText" msgid="6535222297923110991">"Hakuna picha inayopatikana kwenye kifaa."</string>
@@ -412,7 +412,7 @@
<string name="composer_has_no_exportable_contact" msgid="473911071832548562">"Hakuna anwani zinazoweza kuhamishwa."</string>
<string name="composer_not_initialized" msgid="3861391548605450184">"Kitunzi cha vCard hakikuanza vizuri."</string>
<string name="exporting_contact_failed_title" msgid="9003659313161289860">"Imeshindwa kuhamisha"</string>
- <string name="exporting_contact_failed_message" msgid="9198720310560773485">"Data ya mwasiliani haikuhamishwa.\nSababu: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+ <string name="exporting_contact_failed_message" msgid="9198720310560773485">"Data ya anwani halikuhamishwa.\nSababu: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
<string name="importing_vcard_description" msgid="6982207216746936735">"Inaingiza <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="reading_vcard_failed_title" msgid="1230432142768184978">"Haikuweza kusoma data ya vKadi"</string>
<string name="importing_vcard_finished_title" msgid="2274644947000264322">"Imemaliza kuleta vCard <xliff:g id="FILENAME">%s</xliff:g>"</string>
@@ -448,7 +448,7 @@
<string name="share_contacts_failure" msgid="1348777470180064086">"Imeshindwa kushiriki anwani."</string>
<string name="dialog_export" msgid="3497435010655060068">"Hamisha anwani"</string>
<string name="dialog_import" msgid="4590232235052756593">"Leta anwani kutoka kwenye"</string>
- <string name="share_error" msgid="4854612167186185739">"Mwasiliani huyu hawezi kushirikishwa."</string>
+ <string name="share_error" msgid="4854612167186185739">"Anwani hii haiwezi kushirikiwa."</string>
<string name="no_contact_to_share" msgid="6285287228557175749">"Hakuna anwani za kushiriki."</string>
<string name="menu_contacts_filter" msgid="5854584270038139275">"Anwani za kuonyesha"</string>
<string name="activity_title_contacts_filter" msgid="6340531582631006680">"Anwani za kuonyesha"</string>
diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml
index 921b145..83f300e 100644
--- a/res/values-uz/strings.xml
+++ b/res/values-uz/strings.xml
@@ -310,10 +310,10 @@
<string name="name_prefix" msgid="8857117624713905211">"Murojaat shakli"</string>
<string name="name_middle" msgid="7330498948136181042">"Otasining ismi"</string>
<string name="name_suffix" msgid="4502958221763936999">"Martabasi/unvoni"</string>
- <string name="name_phonetic" msgid="4746541275769990740">"Ism talaffuzi"</string>
- <string name="name_phonetic_given" msgid="425534279190047812">"Ism talaffuzi"</string>
- <string name="name_phonetic_middle" msgid="6528822054594516485">"Otasining ismi talaffuzi"</string>
- <string name="name_phonetic_family" msgid="1690852801039809448">"Familiya talaffuzi"</string>
+ <string name="name_phonetic" msgid="4746541275769990740">"Ism transkripsiyasi"</string>
+ <string name="name_phonetic_given" msgid="425534279190047812">"Ism transkripsiyasi"</string>
+ <string name="name_phonetic_middle" msgid="6528822054594516485">"Otasining ismi transkripsiyasi"</string>
+ <string name="name_phonetic_family" msgid="1690852801039809448">"Familiya transkripsiyasi"</string>
<string name="phoneLabelsGroup" msgid="2746758650001801885">"Telefon"</string>
<string name="emailLabelsGroup" msgid="3360719560200449554">"Email"</string>
<string name="postalLabelsGroup" msgid="7534317297587527570">"Manzil"</string>
@@ -430,7 +430,7 @@
<string name="progress_notifier_message" msgid="8522060892889599746">"Import qilinmoqda: <xliff:g id="CURRENT_NUMBER">%1$s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%2$s</xliff:g> – <xliff:g id="NAME">%3$s</xliff:g>"</string>
<string name="export_to_vcf_file" msgid="3096479544575798192">"VCF faylga eksport qilish"</string>
<string name="display_options_sort_list_by" msgid="4333658089057400431">"Saralash"</string>
- <string name="display_options_phonetic_name_fields" msgid="1857564544755287298">"Ism talaffuzi"</string>
+ <string name="display_options_phonetic_name_fields" msgid="1857564544755287298">"Ism transkripsiyasi"</string>
<string name="editor_options_always_show_phonetic_names" msgid="3612488836474257715">"Har doim ko‘rsatish"</string>
<string name="editor_options_hide_phonetic_names_if_empty" msgid="2693314301550366143">"Bo‘sh maydonni berkitish"</string>
<string name="display_options_sort_by_given_name" msgid="893781924536349248">"Ismi"</string>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index f35bf54..e22d44c 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -241,7 +241,7 @@
<string name="hamburger_feature_highlight_body" msgid="782935036630531528">"讓你的聯絡人資料井然有序又實用"</string>
<string name="undo" msgid="2446931036220975026">"復原"</string>
<string name="call_custom" msgid="2844900154492073207">"撥打<xliff:g id="CUSTOM_LABEL">%s</xliff:g>電話號碼"</string>
- <string name="call_home" msgid="2443904771140750492">"去電住家電話"</string>
+ <string name="call_home" msgid="2443904771140750492">"撥打住家電話"</string>
<string name="call_mobile" msgid="6504312789160309832">"去電行動裝置"</string>
<string name="call_work" msgid="2414313348547560346">"去電公司電話"</string>
<string name="call_fax_work" msgid="5026843006300760797">"去電公司傳真"</string>
@@ -312,7 +312,7 @@
<string name="name_suffix" msgid="4502958221763936999">"姓名後稱謂"</string>
<string name="name_phonetic" msgid="4746541275769990740">"姓名拼音"</string>
<string name="name_phonetic_given" msgid="425534279190047812">"名字拼音"</string>
- <string name="name_phonetic_middle" msgid="6528822054594516485">"中間名 (拼音)"</string>
+ <string name="name_phonetic_middle" msgid="6528822054594516485">"中間名拼音"</string>
<string name="name_phonetic_family" msgid="1690852801039809448">"姓氏拼音"</string>
<string name="phoneLabelsGroup" msgid="2746758650001801885">"電話"</string>
<string name="emailLabelsGroup" msgid="3360719560200449554">"電子郵件"</string>
diff --git a/src/com/android/contacts/SimImportFragment.java b/src/com/android/contacts/SimImportFragment.java
index 6042939..cee1b1a 100644
--- a/src/com/android/contacts/SimImportFragment.java
+++ b/src/com/android/contacts/SimImportFragment.java
@@ -55,6 +55,7 @@
import com.google.common.base.Function;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.MoreExecutors;
import java.util.ArrayList;
import java.util.Arrays;
@@ -477,7 +478,7 @@
simLoadResult.accounts = accounts;
return simLoadResult;
}
- });
+ }, MoreExecutors.directExecutor());
}
private LoaderResult loadFromSim() {
diff --git a/src/com/android/contacts/activities/ContactSelectionActivity.java b/src/com/android/contacts/activities/ContactSelectionActivity.java
index 57669fa..2057c9d 100644
--- a/src/com/android/contacts/activities/ContactSelectionActivity.java
+++ b/src/com/android/contacts/activities/ContactSelectionActivity.java
@@ -107,6 +107,9 @@
protected void onCreate(Bundle savedState) {
super.onCreate(savedState);
+ getWindow().addSystemFlags(android.view.WindowManager.LayoutParams
+ .SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS);
+
RequestPermissionsActivity.startPermissionActivityIfNeeded(this);
if (savedState != null) {
diff --git a/src/com/android/contacts/drawer/DrawerAdapter.java b/src/com/android/contacts/drawer/DrawerAdapter.java
index 0c8423a..b5a1ea7 100644
--- a/src/com/android/contacts/drawer/DrawerAdapter.java
+++ b/src/com/android/contacts/drawer/DrawerAdapter.java
@@ -271,16 +271,16 @@
result.setId(item.id);
}
final ContactListFilter account = item.account;
+ final AccountDisplayInfo displayableAccount =
+ mAccountDisplayFactory.getAccountDisplayInfoFor(item.account);
final TextView textView = ((TextView) result.findViewById(R.id.title));
- textView.setText(account.accountName);
+ textView.setText(displayableAccount.getNameLabel());
final boolean activated = account.equals(mSelectedAccount)
&& mSelectedView == ContactsView.ACCOUNT_VIEW;
textView.setTextAppearance(mActivity, activated
? TYPEFACE_STYLE_ACTIVATE : TYPEFACE_STYLE_INACTIVE);
final ImageView icon = (ImageView) result.findViewById(R.id.icon);
- final AccountDisplayInfo displayableAccount =
- mAccountDisplayFactory.getAccountDisplayInfoFor(item.account);
icon.setScaleType(ImageView.ScaleType.FIT_CENTER);
icon.setImageDrawable(displayableAccount.getIcon());
diff --git a/src/com/android/contacts/model/AccountTypeManager.java b/src/com/android/contacts/model/AccountTypeManager.java
index f67f074..196e67f 100644
--- a/src/com/android/contacts/model/AccountTypeManager.java
+++ b/src/com/android/contacts/model/AccountTypeManager.java
@@ -59,6 +59,7 @@
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.ListeningExecutorService;
+import com.google.common.util.concurrent.MoreExecutors;
import java.util.ArrayList;
import java.util.Collections;
@@ -404,28 +405,26 @@
ContentResolver.addStatusChangeListener(ContentResolver.SYNC_OBSERVER_TYPE_SETTINGS, this);
- if (Flags.getInstance().getBoolean(Experiments.CP2_DEVICE_ACCOUNT_DETECTION_ENABLED)) {
- // Observe changes to RAW_CONTACTS so that we will update the list of "Device" accounts
- // if a new device contact is added.
- mContext.getContentResolver().registerContentObserver(
- ContactsContract.RawContacts.CONTENT_URI, /* notifyDescendents */ true,
- new ContentObserver(mMainThreadHandler) {
- @Override
- public boolean deliverSelfNotifications() {
- return true;
- }
+ // Observe changes to RAW_CONTACTS so that we will update the list of "Device" accounts
+ // if a new device contact is added or removed.
+ mContext.getContentResolver().registerContentObserver(
+ ContactsContract.RawContacts.CONTENT_URI, /* notifyDescendents */ true,
+ new ContentObserver(mMainThreadHandler) {
+ @Override
+ public boolean deliverSelfNotifications() {
+ return true;
+ }
- @Override
- public void onChange(boolean selfChange) {
- reloadLocalAccounts();
- }
+ @Override
+ public void onChange(boolean selfChange) {
+ reloadLocalAccounts();
+ }
- @Override
- public void onChange(boolean selfChange, Uri uri) {
- reloadLocalAccounts();
- }
- });
- }
+ @Override
+ public void onChange(boolean selfChange, Uri uri) {
+ reloadLocalAccounts();
+ }
+ });
loadAccountTypes();
}
@@ -503,7 +502,8 @@
private synchronized void reloadAccountTypes() {
loadAccountTypes();
Futures.addCallback(
- Futures.transform(mAccountTypesFuture, mAccountsExtractor),
+ Futures.transform(mAccountTypesFuture, mAccountsExtractor,
+ MoreExecutors.directExecutor()),
newAccountsUpdatedCallback(mAccountManagerAccounts),
mMainThreadExecutor);
}
@@ -534,7 +534,8 @@
final ListenableFuture<List<List<AccountWithDataSet>>> all =
Futures.nonCancellationPropagating(
Futures.successfulAsList(
- Futures.transform(mAccountTypesFuture, mAccountsExtractor),
+ Futures.transform(mAccountTypesFuture, mAccountsExtractor,
+ MoreExecutors.directExecutor()),
mLocalAccountsFuture));
return Futures.transform(all, new Function<List<List<AccountWithDataSet>>,
@@ -560,7 +561,7 @@
AccountInfo.sortAccounts(null, result);
return result;
}
- });
+ }, MoreExecutors.directExecutor());
}
@Override
diff --git a/src/com/android/contacts/model/DeviceLocalAccountLocator.java b/src/com/android/contacts/model/DeviceLocalAccountLocator.java
index 4281de9..2b987d3 100644
--- a/src/com/android/contacts/model/DeviceLocalAccountLocator.java
+++ b/src/com/android/contacts/model/DeviceLocalAccountLocator.java
@@ -18,6 +18,8 @@
import android.accounts.Account;
import android.accounts.AccountManager;
import android.content.Context;
+import android.database.Cursor;
+import android.provider.ContactsContract;
import com.android.contacts.Experiments;
import com.android.contacts.model.account.AccountWithDataSet;
@@ -69,23 +71,25 @@
return new Cp2DeviceLocalAccountLocator(context.getContentResolver(),
ObjectFactory.getDeviceLocalAccountTypeFactory(context), knownTypes);
} else {
- return new NexusDeviceAccountLocator(accountManager);
+ return new NexusDeviceAccountLocator(context, accountManager);
}
}
/**
* On Nexus the "device" account uses "null" values for the account name and type columns
*
- * <p>However, the focus sync adapter automatically migrates contacts from this null
- * account to a Google account if one exists. Hence, the device account should be returned
- * only when there is no Google Account added
+ * <p>However, the focus sync adapter migrates contacts from this null account to a Google
+ * account if one exists. Hence, the device account should be returned only when there is no
+ * Google Account added or when there already exists contacts in the null account.
* </p>
*/
public static class NexusDeviceAccountLocator extends DeviceLocalAccountLocator {
-
+ private final Context mContext;
private final AccountManager mAccountManager;
- public NexusDeviceAccountLocator(AccountManager accountManager) {
+
+ public NexusDeviceAccountLocator(Context context, AccountManager accountManager) {
+ mContext = context;
mAccountManager = accountManager;
}
@@ -95,7 +99,7 @@
final Account[] accounts = mAccountManager
.getAccountsByType(GoogleAccountType.ACCOUNT_TYPE);
- if (accounts.length > 0) {
+ if (accounts.length > 0 && !AccountWithDataSet.getNullAccount().hasData(mContext)) {
return Collections.emptyList();
} else {
return Collections.singletonList(AccountWithDataSet.getNullAccount());
diff --git a/src/com/android/contacts/util/concurrent/FuturesUtil.java b/src/com/android/contacts/util/concurrent/FuturesUtil.java
index 113af93..ba72446 100644
--- a/src/com/android/contacts/util/concurrent/FuturesUtil.java
+++ b/src/com/android/contacts/util/concurrent/FuturesUtil.java
@@ -3,9 +3,10 @@
import android.os.Handler;
-import com.google.common.util.concurrent.FutureFallback;
+import com.google.common.util.concurrent.AsyncFunction;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.MoreExecutors;
import java.util.concurrent.CancellationException;
import java.util.concurrent.ScheduledExecutorService;
@@ -46,14 +47,14 @@
}
}, time, unit);
- return Futures.withFallback(future, new FutureFallback<V>() {
+ return Futures.catchingAsync(future, Throwable.class, new AsyncFunction<Throwable, V>() {
@Override
- public ListenableFuture<V> create(Throwable t) throws Exception {
+ public ListenableFuture<V> apply(Throwable t) throws Exception {
if ((t instanceof CancellationException) && didTimeout.get()) {
return Futures.immediateFailedFuture(new TimeoutException("Timeout expired"));
}
return Futures.immediateFailedFuture(t);
}
- });
+ }, MoreExecutors.directExecutor());
}
}
diff --git a/src/com/android/contacts/vcard/ImportVCardActivity.java b/src/com/android/contacts/vcard/ImportVCardActivity.java
index 2c69cdf..38367c4 100644
--- a/src/com/android/contacts/vcard/ImportVCardActivity.java
+++ b/src/com/android/contacts/vcard/ImportVCardActivity.java
@@ -546,6 +546,9 @@
protected void onCreate(Bundle bundle) {
super.onCreate(bundle);
+ getWindow().addSystemFlags(android.view.WindowManager.LayoutParams
+ .SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS);
+
Uri sourceUri = getIntent().getData();
// Reading uris from non-storage needs the permission granted from the source intent,
diff --git a/src/com/android/contacts/vcard/SelectAccountActivity.java b/src/com/android/contacts/vcard/SelectAccountActivity.java
index ac5b3eb..eb13e50 100644
--- a/src/com/android/contacts/vcard/SelectAccountActivity.java
+++ b/src/com/android/contacts/vcard/SelectAccountActivity.java
@@ -52,6 +52,9 @@
protected void onCreate(Bundle bundle) {
super.onCreate(bundle);
+ getWindow().addSystemFlags(android.view.WindowManager.LayoutParams
+ .SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS);
+
// There's three possibilities:
// - more than one accounts -> ask the user
// - just one account -> use the account without asking the user
diff --git a/tests/Android.bp b/tests/Android.bp
new file mode 100644
index 0000000..2e1d47b
--- /dev/null
+++ b/tests/Android.bp
@@ -0,0 +1,27 @@
+android_test {
+ name: "ContactsTests",
+
+ certificate: "shared",
+
+ srcs: ["src/**/*.java"],
+
+ instrumentation_for: "Contacts",
+
+ sdk_version: "current",
+ min_sdk_version: "21",
+
+ static_libs: [
+ "androidx.test.rules",
+ "hamcrest-library",
+ "mockito-target-minus-junit4",
+ "ub-uiautomator",
+ ],
+
+ libs: [
+ "android.test.runner.stubs",
+ "android.test.base.stubs",
+ "android.test.mock.stubs",
+ ],
+
+ test_suites: ["general-tests"],
+}
diff --git a/tests/Android.mk b/tests/Android.mk
deleted file mode 100644
index ce4e6ad..0000000
--- a/tests/Android.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-include $(CLEAR_VARS)
-
-# We only want this apk build for tests.
-LOCAL_MODULE_TAGS := tests
-LOCAL_CERTIFICATE := shared
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-res_dirs := res
-LOCAL_RESOURCE_DIR := $(addprefix $(LOCAL_PATH)/, $(res_dirs))
-
-LOCAL_PACKAGE_NAME := ContactsTests
-
-LOCAL_INSTRUMENTATION_FOR := Contacts
-
-LOCAL_SDK_VERSION := current
-LOCAL_MIN_SDK_VERSION := 21
-
-LOCAL_STATIC_JAVA_LIBRARIES += \
- androidx.test.rules \
- hamcrest-library \
- mockito-target-minus-junit4 \
- ub-uiautomator
-
-LOCAL_JAVA_LIBRARIES := \
- android.test.runner.stubs \
- android.test.base.stubs \
- android.test.mock.stubs \
-
-
-LOCAL_AAPT_FLAGS := \
- --auto-add-overlay \
- --extra-packages com.android.contacts.common.tests
-
-include $(BUILD_PACKAGE)
diff --git a/tests/AndroidManifest.xml b/tests/AndroidManifest.xml
index dfc40a9..f61efda 100644
--- a/tests/AndroidManifest.xml
+++ b/tests/AndroidManifest.xml
@@ -17,7 +17,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.contacts.tests">
- <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="28" />
+ <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="29" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
diff --git a/tests/AndroidTest.xml b/tests/AndroidTest.xml
new file mode 100644
index 0000000..5665490
--- /dev/null
+++ b/tests/AndroidTest.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2020 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<configuration description="Runs Tests for Contacts.">
+ <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
+ <option name="cleanup-apks" value="true" />
+ <option name="test-file-name" value="ContactsTests.apk" />
+ </target_preparer>
+
+ <option name="test-suite-tag" value="apct" />
+ <option name="test-tag" value="ContactsTests" />
+ <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
+ <option name="package" value="com.android.contacts.tests" />
+ <option name="runner" value="androidx.test.runner.AndroidJUnitRunner" />
+ <option name="hidden-api-checks" value="false"/>
+ </test>
+</configuration>
diff --git a/tests/README b/tests/README
new file mode 100644
index 0000000..43d905c
--- /dev/null
+++ b/tests/README
@@ -0,0 +1,13 @@
+# Running tests
+
+Build and install Contacts.apk
+
+Grant Contacts permissions to Contacts.apk
+
+Run
+```shell
+$ atest ContactsTests
+```
+
+More information can be found at
+https://source.android.com/compatibility/tests/development/atest
diff --git a/tests/src/com/android/contacts/activities/SimImportActivityTest.java b/tests/src/com/android/contacts/activities/SimImportActivityTest.java
index 9c90426..7069ef1 100644
--- a/tests/src/com/android/contacts/activities/SimImportActivityTest.java
+++ b/tests/src/com/android/contacts/activities/SimImportActivityTest.java
@@ -327,9 +327,9 @@
mDevice.findObject(By.textContains(targetAccount.name)).click();
mDevice.waitForIdle();
- assertTrue(mDevice.wait(Until.hasObject(By.text("Import One").checked(false).enabled(false)), TIMEOUT));
- assertTrue(mDevice.hasObject(By.text("Import Three").checked(false).enabled(false)));
- assertTrue(mDevice.hasObject(By.text("Import Six").checked(false).enabled(false)));
+ assertTrue(mDevice.wait(Until.hasObject(By.text("Import One").checked(false)), TIMEOUT));
+ assertTrue(mDevice.hasObject(By.text("Import Three").checked(false)));
+ assertTrue(mDevice.hasObject(By.text("Import Six").checked(false)));
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
contactsProviderClient.close();
diff --git a/tests/src/com/android/contacts/model/AccountTypeManagerTest.java b/tests/src/com/android/contacts/model/AccountTypeManagerTest.java
index 982517b..dfcb390 100644
--- a/tests/src/com/android/contacts/model/AccountTypeManagerTest.java
+++ b/tests/src/com/android/contacts/model/AccountTypeManagerTest.java
@@ -96,7 +96,7 @@
}
public void testGetDefaultAccount_NoAccounts_DefaultPreferenceSet() {
- when(mPrefs.getString(Mockito.anyString(), Mockito.anyString())).thenReturn(
+ when(mPrefs.getString(Mockito.anyString(), Mockito.any())).thenReturn(
getDefaultAccountPreference("name1", GoogleAccountType.ACCOUNT_TYPE));
assertNull(getDefaultGoogleAccountName());
}
@@ -108,21 +108,21 @@
public void testGetDefaultAccount_DefaultAccountPreferenceSet() {
when(mAccountManager.getAccountsByType(Mockito.anyString())).thenReturn(ACCOUNTS);
- when(mPrefs.getString(Mockito.anyString(), Mockito.anyString())).thenReturn(
+ when(mPrefs.getString(Mockito.anyString(), Mockito.any())).thenReturn(
getDefaultAccountPreference("name2", GoogleAccountType.ACCOUNT_TYPE));
assertEquals("name2", getDefaultGoogleAccountName());
}
public void testGetDefaultAccount_DefaultAccountPreferenceSet_NonGoogleAccountType() {
when(mAccountManager.getAccountsByType(Mockito.anyString())).thenReturn(ACCOUNTS);
- when(mPrefs.getString(Mockito.anyString(), Mockito.anyString())).thenReturn(
+ when(mPrefs.getString(Mockito.anyString(), Mockito.any())).thenReturn(
getDefaultAccountPreference("name3", "type3"));
assertEquals("name1", getDefaultGoogleAccountName());
}
public void testGetDefaultAccount_DefaultAccountPreferenceSet_UnknownName() {
when(mAccountManager.getAccountsByType(Mockito.anyString())).thenReturn(ACCOUNTS);
- when(mPrefs.getString(Mockito.anyString(), Mockito.anyString())).thenReturn(
+ when(mPrefs.getString(Mockito.anyString(), Mockito.any())).thenReturn(
getDefaultAccountPreference("name4",GoogleAccountType.ACCOUNT_TYPE));
assertEquals("name1", getDefaultGoogleAccountName());
}
diff --git a/tests/src/com/android/contacts/preference/ContactsPreferencesTest.java b/tests/src/com/android/contacts/preference/ContactsPreferencesTest.java
index 998f385..d7f34ee 100644
--- a/tests/src/com/android/contacts/preference/ContactsPreferencesTest.java
+++ b/tests/src/com/android/contacts/preference/ContactsPreferencesTest.java
@@ -56,7 +56,7 @@
Mockito.when(mResources.getString(Mockito.anyInt()))
.thenReturn(ACCOUNT_KEY); // contact_editor_default_account_key
- Mockito.when(mContext.getSharedPreferences(Mockito.anyString(), Mockito.anyInt()))
+ Mockito.when(mContext.getSharedPreferences(Mockito.any(), Mockito.anyInt()))
.thenReturn(mSharedPreferences);
Mockito.when(mSharedPreferences.contains(ContactsPreferences.SORT_ORDER_KEY))
.thenReturn(true);
@@ -184,7 +184,7 @@
mContactsPreferences = new ContactsPreferences(mContext,
/* isDefaultAccountUserChangeable */ true);
- Mockito.when(mSharedPreferences.getString(Mockito.eq(ACCOUNT_KEY), Mockito.anyString()))
+ Mockito.when(mSharedPreferences.getString(Mockito.eq(ACCOUNT_KEY), Mockito.any()))
.thenReturn(new AccountWithDataSet("name1", "type1", "dataset1").stringify(),
new AccountWithDataSet("name2", "type2", "dataset2").stringify());
@@ -199,7 +199,7 @@
public void testShouldShowAccountChangedNotificationIfAccountNotSaved() {
mContactsPreferences = new ContactsPreferences(mContext,
/* isDefaultAccountUserChangeable */ true);
- Mockito.when(mSharedPreferences.getString(Mockito.eq(ACCOUNT_KEY), Mockito.anyString()))
+ Mockito.when(mSharedPreferences.getString(Mockito.eq(ACCOUNT_KEY), Mockito.any()))
.thenReturn(null);
assertTrue("Should prompt to change default if no default is saved",
@@ -211,7 +211,7 @@
public void testShouldShowAccountChangedNotification() {
mContactsPreferences = new ContactsPreferences(mContext,
/* isDefaultAccountUserChangeable */ true);
- Mockito.when(mSharedPreferences.getString(Mockito.eq(ACCOUNT_KEY), Mockito.anyString()))
+ Mockito.when(mSharedPreferences.getString(Mockito.eq(ACCOUNT_KEY), Mockito.any()))
.thenReturn(new AccountWithDataSet("name", "type", "dataset").stringify());
assertFalse("Should not prompt to change default if current default exists",
@@ -228,7 +228,7 @@
public void testShouldShowAccountChangedNotificationWhenThereIsOneAccount() {
mContactsPreferences = new ContactsPreferences(mContext,
/* isDefaultAccountUserChangeable */ true);
- Mockito.when(mSharedPreferences.getString(Mockito.eq(ACCOUNT_KEY), Mockito.anyString()))
+ Mockito.when(mSharedPreferences.getString(Mockito.eq(ACCOUNT_KEY), Mockito.any()))
.thenReturn(null);
// Normally we would prompt because there is no default set but if there is just one
diff --git a/tests/src/com/android/contacts/test/mocks/ForwardingContentProvider.java b/tests/src/com/android/contacts/test/mocks/ForwardingContentProvider.java
index 993d0b7..a08bff9 100644
--- a/tests/src/com/android/contacts/test/mocks/ForwardingContentProvider.java
+++ b/tests/src/com/android/contacts/test/mocks/ForwardingContentProvider.java
@@ -23,8 +23,10 @@
import android.content.res.AssetFileDescriptor;
import android.database.Cursor;
import android.net.Uri;
+import android.os.Binder;
import android.os.Bundle;
import android.os.CancellationSignal;
+import android.os.IBinder;
import android.os.ParcelFileDescriptor;
import android.os.RemoteException;
import androidx.annotation.Nullable;
@@ -203,4 +205,8 @@
throw new RuntimeException(e);
}
}
+
+ public IBinder getIContentProviderBinder() {
+ return new Binder();
+ }
}