Merge "2+ voicemail notification sends user to call log."
diff --git a/Android.mk b/Android.mk
index e9e7515..67859bd 100644
--- a/Android.mk
+++ b/Android.mk
@@ -5,6 +5,7 @@
LOCAL_SRC_FILES := $(call all-java-files-under, src)
+LOCAL_JAVA_LIBRARIES := telephony-common
LOCAL_STATIC_JAVA_LIBRARIES := \
com.android.phone.common \
com.android.vcard \
diff --git a/res/menu/people_options.xml b/res/menu/people_options.xml
index 8c91e88..2b3c918 100644
--- a/res/menu/people_options.xml
+++ b/res/menu/people_options.xml
@@ -55,4 +55,10 @@
<item
android:id="@+id/menu_help"
android:title="@string/menu_help" />
+
+ <item
+ android:id="@+id/export_database"
+ android:title="@string/menu_export_database"
+ android:visible="false"
+ android:showAsAction="never" />
</menu>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index a43fda8..e333d20 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -286,7 +286,7 @@
<string name="missing_name" msgid="8745511583852904385">"(بلا اسم)"</string>
<string name="menu_accounts" msgid="8499114602017077970">"الحسابات"</string>
<string name="menu_clear_frequents" msgid="7688250191932838833">"محو قائمة من يتصل بهم كثيرًا"</string>
- <string name="menu_contacts_filter" msgid="2165153460860262501">"جهات الاتصال التي يتم عرضها"</string>
+ <string name="menu_contacts_filter" msgid="2165153460860262501">"جهات الاتصال المعروضة"</string>
<string name="menu_import_export" msgid="26217871113229507">"استيراد/تصدير"</string>
<string name="dialog_import_export" msgid="4360648034889921624">"استيراد/تصدير جهات اتصال"</string>
<string name="dialog_import" msgid="2431698729761448759">"استيراد جهات الاتصال"</string>
@@ -455,7 +455,7 @@
<string name="custom_list_filter" msgid="7836035257402013957">"تحديد عرض مخصص"</string>
<string name="contact_list_loading" msgid="5488620820563977329">"جارٍ التحميل..."</string>
<string name="activity_title_settings" msgid="5464130076132770781">"الإعدادات"</string>
- <string name="activity_title_contacts_filter" msgid="8275542497615516969">"جهات الاتصال التي يتم عرضها"</string>
+ <string name="activity_title_contacts_filter" msgid="8275542497615516969">"جهات الاتصال المعروضة"</string>
<string name="menu_settings" msgid="377929915873428211">"الإعدادات"</string>
<string name="menu_help" msgid="5123887102216637725">"مساعدة"</string>
<string name="preference_displayOptions" msgid="1341720270148252393">"خيارات العرض"</string>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 41431bd..a31e534 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -281,7 +281,7 @@
<string name="call_disambig_title" msgid="4392886850104795739">"Nummer auswählen"</string>
<string name="call_settings" msgid="7666474782093693667">"Einstellungen"</string>
<string name="sms_disambig_title" msgid="5846266399240630846">"Nummer auswählen"</string>
- <string name="make_primary" msgid="5829291915305113983">"Diese Auswahl speichern"</string>
+ <string name="make_primary" msgid="5829291915305113983">"Auswahl speichern"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"Für diese Aktion wurde keine App gefunden."</string>
<string name="missing_name" msgid="8745511583852904385">"(Kein Name)"</string>
<string name="menu_accounts" msgid="8499114602017077970">"Konten"</string>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 33a3b36..1eb3333 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -185,7 +185,7 @@
<string name="type_missed" msgid="2720502601640509542">"Llamada perdida"</string>
<string name="type_voicemail" msgid="5153139450668549908">"Buzón de voz"</string>
<string name="actionIncomingCall" msgid="6028930669817038600">"Llamadas entrantes"</string>
- <string name="callBack" msgid="5498224409038809224">"Volver a llamar"</string>
+ <string name="callBack" msgid="5498224409038809224">"Llamar"</string>
<string name="callAgain" msgid="3197312117049874778">"Volver a llamar"</string>
<string name="returnCall" msgid="8171961914203617813">"Devolver llamada"</string>
<string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> min. y <xliff:g id="SECONDS">%s</xliff:g> seg."</string>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index 3967d87..827e3a7 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -36,7 +36,7 @@
<string name="editGroupDescription" msgid="6321161304201540561">"ویرایش گروه"</string>
<string name="insertGroupDescription" msgid="5658512271662210139">"ایجاد گروه"</string>
<string name="contactDetailAbout" msgid="5430408883907061400">"درباره"</string>
- <string name="contactDetailUpdates" msgid="3780588624763446941">"نسخه های به روز"</string>
+ <string name="contactDetailUpdates" msgid="3780588624763446941">"نسخههای به روز"</string>
<string name="searchHint" msgid="8482945356247760701">"جستجوی مخاطبین"</string>
<string name="menu_search" msgid="9147752853603483719">"جستجو"</string>
<string name="menu_newContact" msgid="1209922412763274638">"مخاطب جدید"</string>
@@ -47,7 +47,7 @@
<string name="menu_editContact" msgid="9042415603857662633">"ویرایش"</string>
<string name="menu_deleteContact" msgid="6788644058868189393">"حذف"</string>
<string name="menu_copy" msgid="6108677035381940698">"کپی"</string>
- <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"محل بر روی صفحه اصلی"</string>
+ <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"محل بر روی صفحهٔ اصلی"</string>
<string name="menu_call" msgid="3992595586042260618">"تماس با مخاطب"</string>
<string name="menu_sendSMS" msgid="5535886767547006515">"ارسال متن به مخاطب"</string>
<string name="menu_splitAggregate" msgid="8368636463748691868">"تفکیک"</string>
@@ -67,18 +67,18 @@
<string name="menu_set_ring_tone" msgid="8728345772068064946">"تنظیم آهنگ زنگ"</string>
<string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"همه تماسها به پست صوتی"</string>
<string name="readOnlyContactWarning" msgid="7808825687289848259">"شما نمیتوانید مخاطبین را از حسابهای فقط خواندنی حذف کنید اما میتوانید آنها را در لیستهای مخاطبین خود پنهان کنید."</string>
- <string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"این مخاطب دارای اطلاعاتی از چند حساب است. اطلاعات حساب های فقط خواندنی در لیست های مخاطبین پنهان می شوند اما حذف نمی شوند."</string>
- <string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"حذف این مخاطب اطلاعات را از حساب های متعدد حذف می کند."</string>
- <string name="deleteConfirmation" msgid="811706994761610640">"این مخاطب حذف می شود."</string>
+ <string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"این مخاطب دارای اطلاعاتی از چند حساب است. اطلاعات حسابهای فقط خواندنی در لیستهای مخاطبین پنهان میشوند اما حذف نمیشوند."</string>
+ <string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"حذف این مخاطب اطلاعات را از حسابهای متعدد حذف میکند."</string>
+ <string name="deleteConfirmation" msgid="811706994761610640">"این مخاطب حذف میشود."</string>
<string name="menu_done" msgid="796017761764190697">"انجام شد"</string>
<string name="menu_doNotSave" msgid="58593876893538465">"لغو"</string>
<string name="menu_discard" msgid="6456087569315685632">"صرفنظر"</string>
- <string name="label_notes" msgid="8337354953278341042">"یادداشت ها"</string>
+ <string name="label_notes" msgid="8337354953278341042">"یادداشتها"</string>
<string name="label_sip_address" msgid="124073911714324974">"تماس اینترنتی"</string>
<string name="ghostData_company" msgid="5414421120553765775">"شرکت"</string>
<string name="ghostData_title" msgid="7496735200318496110">"عنوان"</string>
<string name="invalidContactMessage" msgid="8215051456181842274">"مخاطبی موجود نیست."</string>
- <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"ابزارک مخاطب به صفحه اصلی شما اضافه شد."</string>
+ <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"ابزارک مخاطب به صفحهٔ اصلی شما اضافه شد."</string>
<string name="pickerNewContactHeader" msgid="7750705279843568147">"ایجاد مخاطب جدید"</string>
<string name="pickerNewContactText" msgid="6166997164401048211">"ایجاد مخاطب جدید"</string>
<string name="phoneLabelsGroup" msgid="6468091477851199285">"تلفن"</string>
@@ -103,7 +103,7 @@
<string name="emptyGroup" msgid="7502116218697177370">"هیچ فردی در این گروه نیست."</string>
<string name="addPeopleToGroup" msgid="7879585947222263516">"برای افزودن چند عضو، گروه را ویرایش کنید."</string>
<string name="savingContact" msgid="4075751076741924939">"در حال ذخیره مخاطب..."</string>
- <string name="savingDisplayGroups" msgid="2133152192716475939">"در حال ذخیره گزینه های نمایش..."</string>
+ <string name="savingDisplayGroups" msgid="2133152192716475939">"در حال ذخیره گزینههای نمایش..."</string>
<string name="contactSavedToast" msgid="7152589189385441091">"مخاطب ذخیره شد."</string>
<string name="contactSavedErrorToast" msgid="3207250533172944892">"تغییرات مخاطب ذخیره نمیشود."</string>
<string name="groupSavedToast" msgid="1168756874239833756">"گروه ذخیره شد."</string>
@@ -135,7 +135,7 @@
<item quantity="other" msgid="7988132539476575389">"<xliff:g id="COUNT">%d</xliff:g> یافت شد"</item>
</plurals>
<string name="contactsAllLabel" msgid="6479708629170672169">"همه مخاطبین"</string>
- <string name="contactsGroupsLabel" msgid="2841971472518003524">"گروه ها"</string>
+ <string name="contactsGroupsLabel" msgid="2841971472518003524">"گروهها"</string>
<string name="contactsFavoritesLabel" msgid="8417039765586853670">"موارد دلخواه"</string>
<string name="dialerIconLabel" msgid="6500826552823403796">"تلفن"</string>
<string name="recentCallsIconLabel" msgid="1419116422359067949">"گزارش تماس"</string>
@@ -164,7 +164,7 @@
<string name="dialerDialpadHintText" msgid="5824490365898349041">"شماره گیری برای افزودن یک تماس"</string>
<string name="simContacts_emptyLoading" msgid="6700035985448642408">"در حال بارگیری سیم کارت..."</string>
<string name="simContacts_title" msgid="27341688347689769">"مخاطبین سیم کارت"</string>
- <string name="noContactsHelpTextWithSyncForCreateShortcut" msgid="801504710275614594">"شما مخاطبی برای نمایش ندارید. (در صورتی که اکنون یک حساب را اضافه کردید، همگام سازی مخاطبین چند دقیقه طول می کشد.)"</string>
+ <string name="noContactsHelpTextWithSyncForCreateShortcut" msgid="801504710275614594">"شما مخاطبی برای نمایش ندارید. (در صورتی که اکنون یک حساب را اضافه کردید، همگام سازی مخاطبین چند دقیقه طول میکشد.)"</string>
<string name="noContactsHelpTextForCreateShortcut" msgid="3081286388667108335">"شما مخاطبی برای نمایش ندارید."</string>
<string name="noContactsHelpText" product="tablet" msgid="6226271923423236696">"شما مخاطبی برای نمایش ندارید."\n\n"برای افزودن مخاطبین، "<font fgcolor="#ffffffff"><b>"منو"</b></font>" را لمس کرده و سپس این موارد را لمس کنید:"\n" "\n<li><font fgcolor="#ffffffff"><b>"حسابها"</b></font>" برای افزودن یا تنظیم یک حساب با مخاطبینی که میتوانید با رایانه لوحی همگامسازی کنید"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"مخاطب جدید"</b></font>" برای ایجاد یک مخاطب جدید از ابتدا"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"وارد کردن/صادر کردن"</b></font>" برای وارد کردن مخاطبین از سیم کارت یا کارت SD شما"\n</li></string>
<string name="noContactsHelpText" product="default" msgid="4405064135698982080">"شما مخاطبی برای نمایش ندارید."\n\n"برای افزودن مخاطب، "<font fgcolor="#ffffffff"><b>"منو"</b></font>" را لمس کرده و سپس این موارد را لمس کنید:"\n" "\n<li><font fgcolor="#ffffffff"><b>"حسابها"</b></font>" برای افزودن یا تنظیم یک حساب با مخاطبینی که میتوانید با گوشی همگامسازی کنید"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"مخاطب جدید"</b></font>" برای ایجاد یک مخاطب جدید از ابتدا"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"وارد کردن/صادر کردن"</b></font>" برای وارد کردن مخاطبین از سیم کارت یا کارت SD شما"\n</li></string>
@@ -174,7 +174,7 @@
<string name="noContactsNoSimHelpText" product="default" msgid="6224952277619986841">"شما مخاطبی برای نمایش ندارید."\n\n"برای افزودن مخاطبین، "<font fgcolor="#ffffffff"><b>"منو"</b></font>" را لمس کرده و سپس این موارد را لمس کنید:"\n" "\n<li><font fgcolor="#ffffffff"><b>"حسابها"</b></font>" برای افزودن یا تنظیم یک حساب با مخاطبینی که میتوانید با گوشی همگامسازی کنید"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"مخاطب جدید"</b></font>" برای ایجاد یک مخاطب جدید از ابتدا"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"وارد کردن/صادر کردن"</b></font>" برای وارد کردن مخاطبین از کارت SD شما"\n</li></string>
<string name="noContactsNoSimHelpTextWithSync" product="tablet" msgid="5415762667445638265">"شما مخاطبی برای نمایش ندارید. (در صورتی که اکنون یک حساب اضافه کردهاید، همگامسازی مخاطبین چند دقیقه طول میکشد.)"\n\n"برای افزودن مخاطبین، "<font fgcolor="#ffffffff"><b>"منو"</b></font>" را لمس کرده و سپس این موارد را لمس کنید:"\n" "\n<li><font fgcolor="#ffffffff"><b>"حسابها"</b></font>" برای افزودن یا پیکربندی یک حساب با مخاطبینی که میتوانید در رایانه لوحی همگامسازی کنید"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"گزینههای نمایش"</b></font>" برای تغییر مخاطبینی که قابل مشاهده هستند"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"مخاطب جدید"</b></font>" برای ایجاد یک مخاطب جدید از ابتدا"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"وارد کردن/صادر کردن"</b></font>" برای وارد کردن مخاطبین از کارت SD شما"\n</li></string>
<string name="noContactsNoSimHelpTextWithSync" product="default" msgid="7443705129830284440">"شما مخاطبی برای نمایش ندارید. (در صورتی که اکنون یک حساب اضافه کردهاید، همگامسازی مخاطبین چند دقیقه طول میکشد.)"\n\n"برای افزودن مخاطبین، "<font fgcolor="#ffffffff"><b>"منو"</b></font>" را لمس کرده و سپس این موارد را لمس کنید:"\n" "\n<li><font fgcolor="#ffffffff"><b>"حسابها"</b></font>" برای افزودن یا تنظیم یک حساب با مخاطبینی که میتوانید با گوشی همگامسازی کنید"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"گزینههای نمایش"</b></font>" برای تغییر مخاطبینی که قابل مشاهده هستند"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"مخاطب جدید"</b></font>" برای ایجاد یک مخاطب جدید از ابتدا"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"وارد کردن/صادر کردن"</b></font>" برای وارد کردن مخاطبین از کارت SD شما"\n</li></string>
- <string name="noFavoritesHelpText" msgid="3744655776704833277">"شما هیچ مورد دلخواهی ندارید."\n\n"برای افزودن یک مخاطب به لیست موارد دلخواه خود: "\n\n" "<li>"برگه "<b>"مخاطبین"</b>\n</li>" را لمس کنید"\n<li>"مخاطبی را که می خواهید به لیست موارد دلخواه خود اضافه کنید لمس کنید"\n</li>" "\n<li>"ستاره واقع در کنار نام مخاطب را لمس کنید"\n</li></string>
+ <string name="noFavoritesHelpText" msgid="3744655776704833277">"شما هیچ مورد دلخواهی ندارید."\n\n"برای افزودن یک مخاطب به لیست موارد دلخواه خود: "\n\n" "<li>"برگه "<b>"مخاطبین"</b>\n</li>" را لمس کنید"\n<li>"مخاطبی را که میخواهید به لیست موارد دلخواه خود اضافه کنید لمس کنید"\n</li>" "\n<li>"ستاره واقع در کنار نام مخاطب را لمس کنید"\n</li></string>
<string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"استفاده از صفحه کلید لمسی"</string>
<string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"برگشت به تماس در حال انجام"</string>
<string name="dialer_addAnotherCall" msgid="4205688819890074468">"افزودن تماس"</string>
@@ -184,7 +184,7 @@
<string name="type_outgoing" msgid="343108709599392641">"تماس خروجی"</string>
<string name="type_missed" msgid="2720502601640509542">"تماس بی پاسخ"</string>
<string name="type_voicemail" msgid="5153139450668549908">"پست صوتی"</string>
- <string name="actionIncomingCall" msgid="6028930669817038600">"تماس های ورودی"</string>
+ <string name="actionIncomingCall" msgid="6028930669817038600">"تماسهای ورودی"</string>
<string name="callBack" msgid="5498224409038809224">"بازگرداندن تماس"</string>
<string name="callAgain" msgid="3197312117049874778">"تماس مجدد"</string>
<string name="returnCall" msgid="8171961914203617813">"برگشت تماس"</string>
@@ -218,12 +218,12 @@
<string name="import_from_sim" msgid="3859272228033941659">"وارد کردن از سیم کارت"</string>
<string name="import_from_sdcard" product="default" msgid="8668347930577565175">"وارد کردن از حافظه"</string>
<string name="export_to_sdcard" product="default" msgid="6092815580965201089">"صادر کردن به حافظه"</string>
- <string name="share_visible_contacts" msgid="890150378880783797">"اشتراک گذاری مخاطبین قابل مشاهده"</string>
+ <string name="share_visible_contacts" msgid="890150378880783797">"اشتراکگذاری مخاطبین قابل مشاهده"</string>
<string name="import_one_vcard_string" msgid="9059163467020328433">"وارد کردن یک فایل کارت ویزیت"</string>
<string name="import_multiple_vcard_string" msgid="3810226492811062392">"وارد کردن چند فایل کارت ویزیت"</string>
- <string name="import_all_vcard_string" msgid="5518136113853448474">"وارد کردن همه فایل های کارت ویزیت"</string>
+ <string name="import_all_vcard_string" msgid="5518136113853448474">"وارد کردن همه فایلهای کارت ویزیت"</string>
<string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"جستجوی داده کارت ویزیت در دستگاه ذخیره..."</string>
- <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"درحال جستجوی دادههای کارت ویزیت در کارت SD..."</string>
+ <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"در حال جستجوی دادههای کارت ویزیت در کارت SD..."</string>
<string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"دستگاه ذخیره نمیتواند بررسی شود. (علت: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
<string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"کارت SD نمیتواند بررسی شود. (علت: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
<string name="fail_reason_io_error" msgid="6748358842976073255">"خطای ورودی/خروجی"</string>
@@ -245,10 +245,10 @@
<string name="reading_vcard_canceled_title" msgid="1925216585981542019">"خواندن داده کارت ویزیت لغو شد"</string>
<string name="importing_vcard_finished_title" msgid="3341541727268747967">"وارد کردن کارت ویزیت <xliff:g id="FILENAME">%s</xliff:g> پایان یافت"</string>
<string name="importing_vcard_canceled_title" msgid="2147475978165599336">"واردکردن <xliff:g id="FILENAME">%s</xliff:g> لغو شد"</string>
- <string name="vcard_import_will_start_message" msgid="2804911199145873396">"<xliff:g id="FILENAME">%s</xliff:g> به زودی وارد می شود."</string>
- <string name="vcard_import_will_start_message_with_default_name" msgid="1022969530654129470">"فایل پس از مدت کوتاهی وارد می شود."</string>
+ <string name="vcard_import_will_start_message" msgid="2804911199145873396">"<xliff:g id="FILENAME">%s</xliff:g> به زودی وارد میشود."</string>
+ <string name="vcard_import_will_start_message_with_default_name" msgid="1022969530654129470">"فایل پس از مدت کوتاهی وارد میشود."</string>
<string name="vcard_import_request_rejected_message" msgid="2890471184508516011">"درخواست وارد کردن کارت ویزیت رد شد. لطفاً بعداً امتحان کنید."</string>
- <string name="vcard_export_will_start_message" msgid="2210241345252081463">"<xliff:g id="FILENAME">%s</xliff:g> به زودی صادر می شود."</string>
+ <string name="vcard_export_will_start_message" msgid="2210241345252081463">"<xliff:g id="FILENAME">%s</xliff:g> به زودی صادر میشود."</string>
<string name="vcard_export_request_rejected_message" msgid="2844874826431327531">"درخواست صدور کارت ویزیت رد شد. لطفاً بعداً امتحان کنید."</string>
<string name="vcard_unknown_filename" msgid="7171709890959915954">"مخاطب"</string>
<string name="percentage" msgid="1044592438199055502">"<xliff:g id="PERCENTAGE">%s</xliff:g><xliff:g id="PERCENTSIGN">%%</xliff:g>"</string>
@@ -275,8 +275,8 @@
<string name="cancel_import_confirmation_message" msgid="3929951040347726757">"وارد کردن <xliff:g id="FILENAME">%s</xliff:g> لغو شود؟"</string>
<string name="cancel_export_confirmation_message" msgid="1995462401949262638">"صادر کردن <xliff:g id="FILENAME">%s</xliff:g> لغو شود؟"</string>
<string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"نمیتوان وارد کردن/ صادر کردن کارت ویزیت را لغو کرد"</string>
- <string name="search_settings_description" msgid="2675223022992445813">"نام های مخاطبین شما"</string>
- <string name="add_2sec_pause" msgid="9214012315201040129">"افزودن یک مکث 2 ثانیه ای"</string>
+ <string name="search_settings_description" msgid="2675223022992445813">"نامهای مخاطبین شما"</string>
+ <string name="add_2sec_pause" msgid="9214012315201040129">"افزودن یک مکث ۲ ثانیهای"</string>
<string name="add_wait" msgid="3360818652790319634">"افزودن انتظار"</string>
<string name="call_disambig_title" msgid="4392886850104795739">"انتخاب شماره"</string>
<string name="call_settings" msgid="7666474782093693667">"تنظیمات"</string>
@@ -290,8 +290,8 @@
<string name="menu_import_export" msgid="26217871113229507">"وارد کردن/صادر کردن"</string>
<string name="dialog_import_export" msgid="4360648034889921624">"وارد کردن/صادر کردن مخاطبین"</string>
<string name="dialog_import" msgid="2431698729761448759">"وارد کردن مخاطبین"</string>
- <string name="menu_share" msgid="943789700636542260">"اشتراک گذاری"</string>
- <string name="share_via" msgid="563121028023030093">"اشتراک گذاری مخاطب از طریق"</string>
+ <string name="menu_share" msgid="943789700636542260">"اشتراکگذاری"</string>
+ <string name="share_via" msgid="563121028023030093">"اشتراکگذاری مخاطب از طریق"</string>
<string name="share_error" msgid="948429331673358107">"این مخاطب قابل اشتراکگذاری نیست."</string>
<string name="nameLabelsGroup" msgid="2034640839640477827">"نام"</string>
<string name="nicknameLabelsGroup" msgid="2891682101053358010">"نام مستعار"</string>
@@ -299,13 +299,13 @@
<string name="websiteLabelsGroup" msgid="4202998982804009261">"وب سایت"</string>
<string name="eventLabelsGroup" msgid="3695433812142818803">"رویدادها"</string>
<string name="relationLabelsGroup" msgid="1854373894284572781">"رابطه"</string>
- <string name="groupsLabel" msgid="8573535366319059326">"گروه ها"</string>
+ <string name="groupsLabel" msgid="8573535366319059326">"گروهها"</string>
<string name="dialog_new_contact_account" msgid="9044704073286262197">"ایجاد مخاطبین تحت حساب"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"ایجاد گروه تحت حساب کاربری"</string>
<string name="menu_sync_remove" msgid="3266725887008450161">"حذف گروه همگام سازی"</string>
<string name="dialog_sync_add" msgid="8267045393119375803">"افزودن گروه همگام سازی"</string>
- <string name="display_more_groups" msgid="2682547080423434170">"گروه های بیشتر..."</string>
- <string name="display_ungrouped" msgid="6885954210243119591">"کلیه مخاطبین دیگر"</string>
+ <string name="display_more_groups" msgid="2682547080423434170">"گروههای بیشتر..."</string>
+ <string name="display_ungrouped" msgid="6885954210243119591">"همهٔ مخاطبین دیگر"</string>
<string name="display_all_contacts" msgid="2031647544742889505">"همه مخاطبین"</string>
<string name="display_warn_remove_ungrouped" msgid="8872290721676651414">"حذف \"<xliff:g id="GROUP">%s</xliff:g>\" از همگامسازی نیز هر گونه مخاطب گروهبندی نشدهای را از همگامسازی حذف میکند."</string>
<string name="account_phone" product="tablet" msgid="7946049152658522054">"فقط رایانه لوحی، همگام سازی نشده"</string>
@@ -373,7 +373,7 @@
<string name="chat_jabber" msgid="7561444230307829609">"گپ با استفاده از Jabber"</string>
<string name="chat" msgid="9025361898797412245">"گپ"</string>
<string name="audio_chat" msgid="2535716629358298691">"گپ صوتی"</string>
- <string name="video_chat" msgid="1872255818640336072">"گپ ویدیویی"</string>
+ <string name="video_chat" msgid="1872255818640336072">"گپ ویدئویی"</string>
<string name="postal_address" msgid="8765560217149624536">"آدرس"</string>
<string name="postal_street" msgid="8133143961580058972">"خیابان"</string>
<string name="postal_pobox" msgid="4431938829180269821">"صندوق پستی"</string>
@@ -406,17 +406,17 @@
<string name="display_options_sort_list_by" msgid="6080091755852211076">"مرتب سازی لیست بر اساس"</string>
<string name="display_options_sort_by_given_name" msgid="184916793466387067">"نام"</string>
<string name="display_options_sort_by_family_name" msgid="7857986975275712622">"نام خانوادگی"</string>
- <string name="display_options_view_names_as" msgid="18022868169627979">"مشاهده نام های مخاطب بعنوان"</string>
+ <string name="display_options_view_names_as" msgid="18022868169627979">"مشاهده نامهای مخاطب بهعنوان"</string>
<string name="display_options_view_given_name_first" msgid="6968288511197363292">"ابتدا نام"</string>
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"ابتدا نام خانوادگی"</string>
<string name="take_photo" msgid="7496128293167402354">"عکسبرداری"</string>
<string name="take_new_photo" msgid="7341354729436576304">"گرفتن عکس جدید"</string>
<string name="pick_photo" msgid="3746334626214970837">"انتخاب عکس از گالری"</string>
<string name="pick_new_photo" msgid="7962368009197147617">"انتخاب عکس جدید از گالری"</string>
- <string name="locale_change_in_progress" msgid="7583992153091537467">"لیست مخاطبین در حال به روزرسانی برای منعکس کردن تغییرات زبان است."</string>
- <string name="upgrade_in_progress" msgid="474511436863451061">"لیست مخاطبین در حال به روزرسانی است."</string>
- <string name="upgrade_out_of_memory" msgid="1209994418877625940">"مخاطبین در حال ارتقا هستند. "\n\n"فرآیند ارتقا به تقریباً <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> مگابایت از حافظه داخلی نیاز دارد. "\n\n"یکی از گزینههای زیر را انتخاب کنید:"</string>
- <string name="upgrade_out_of_memory_uninstall" msgid="1721798828992091432">"حذف نصب برخی از برنامه های کاربردی"</string>
+ <string name="locale_change_in_progress" msgid="7583992153091537467">"لیست مخاطبین در حال بهروزرسانی برای منعکس کردن تغییرات زبان است."</string>
+ <string name="upgrade_in_progress" msgid="474511436863451061">"لیست مخاطبین در حال بهروزرسانی است."</string>
+ <string name="upgrade_out_of_memory" msgid="1209994418877625940">"مخاطبین در حال ارتقا هستند. "\n\n"فرآیند ارتقا به تقریباً <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> مگابایت از حافظهٔ داخلی نیاز دارد. "\n\n"یکی از گزینههای زیر را انتخاب کنید:"</string>
+ <string name="upgrade_out_of_memory_uninstall" msgid="1721798828992091432">"حذف نصب برخی از برنامههای کاربردی"</string>
<string name="upgrade_out_of_memory_retry" msgid="8431289830472724609">"امتحان مجدد برای ارتقا"</string>
<string name="search_results_searching" msgid="3984833028938569930">"در حال جستجو..."</string>
<string name="menu_display_selected" msgid="6470001164297969034">"نمایش موارد انتخاب شده"</string>
@@ -439,7 +439,7 @@
</plurals>
<string name="local_invisible_directory" msgid="6046691709127661065">"سایر موارد"</string>
<string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"پیوستن به مخاطب فعلی با مخاطب انتخابی؟"</string>
- <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"به ویرایش مخاطب انتخابی می روید؟ اطلاعاتی که تا حال وارد کرده اید کپی خواهد شد."</string>
+ <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"به ویرایش مخاطب انتخابی میروید؟ اطلاعاتی که تا حال وارد کردهاید کپی خواهد شد."</string>
<string name="menu_copyContact" msgid="1573960845106822639">"کپی در مخاطبین من"</string>
<string name="add_to_my_contacts" msgid="1068274916793627723">"افزودن به مخاطبین من"</string>
<string name="contact_directory_description" msgid="683398073603909119">"دایرکتوری <xliff:g id="TYPE">%1$s</xliff:g>"</string>
@@ -453,12 +453,12 @@
<string name="list_filter_phones" msgid="735313795643493365">"همه مخاطبین دارای شماره تلفن"</string>
<string name="list_filter_single" msgid="5871400283515893087">"مخاطب"</string>
<string name="custom_list_filter" msgid="7836035257402013957">"تعیین نمای سفارشی"</string>
- <string name="contact_list_loading" msgid="5488620820563977329">"درحال بارگیری..."</string>
+ <string name="contact_list_loading" msgid="5488620820563977329">"در حال بارگیری..."</string>
<string name="activity_title_settings" msgid="5464130076132770781">"تنظیمات"</string>
<string name="activity_title_contacts_filter" msgid="8275542497615516969">"مخاطبین جهت نمایش"</string>
<string name="menu_settings" msgid="377929915873428211">"تنظیمات"</string>
<string name="menu_help" msgid="5123887102216637725">"راهنمایی"</string>
- <string name="preference_displayOptions" msgid="1341720270148252393">"گزینه های نمایش"</string>
+ <string name="preference_displayOptions" msgid="1341720270148252393">"گزینههای نمایش"</string>
<string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>، <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
<string name="hint_findContacts" msgid="1808681193458772072">"پیدا کردن مخاطبین"</string>
<string name="non_phone_caption" msgid="1541655052330027380">"شماره تلفن"</string>
@@ -468,7 +468,7 @@
<string name="widget_name_and_phonetic" msgid="8739586586600099979">"<xliff:g id="DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="PHONETIC_NAME">%2$s</xliff:g>)"</string>
<string name="date_year_toggle" msgid="7356532842767854606">"یک سال وارد کنید"</string>
<string name="social_widget_label" msgid="6378905543028924592">"مخاطب"</string>
- <string name="social_widget_loading" msgid="5327336597364074608">"درحال بارگیری..."</string>
+ <string name="social_widget_loading" msgid="5327336597364074608">"در حال بارگیری..."</string>
<string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"ایجاد مخاطب جدید"</string>
<string name="contacts_unavailable_add_account" msgid="7911101713860139754">"وارد شدن به یک حساب"</string>
<string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"وارد کردن مخاطبین"</string>
@@ -489,7 +489,7 @@
</plurals>
<string name="toast_join_with_empty_contact" msgid="2238581529864542985">"لطفاً قبل از ادغام با مخاطب دیگر، نام مخاطب را وارد کنید."</string>
<string name="copy_text" msgid="3257145021583508761">"کپی به کلیپ بورد"</string>
- <string name="set_default" msgid="4417505153468300351">"تنظیم پیش فرض"</string>
+ <string name="set_default" msgid="4417505153468300351">"تنظیم پیشفرض"</string>
<string name="clear_default" msgid="7193185801596678067">"پاک کردن پیش فرضها"</string>
<string name="toast_text_copied" msgid="5143776250008541719">"متن کپی شده"</string>
<string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"از تغییرات شما صرفنظر شود؟"</string>
@@ -505,7 +505,7 @@
<string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>، <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
<string name="notification_new_voicemail_ticker" msgid="895342132049452081">"پست صوتی جدید از <xliff:g id="CALLER">%1$s</xliff:g>"</string>
<string name="voicemail_playback_error" msgid="1811242131549854624">"پخش پست صوتی ممکن نیست."</string>
- <string name="voicemail_buffering" msgid="738287747618697097">"درحال بافر کردن؟؟؟"</string>
+ <string name="voicemail_buffering" msgid="738287747618697097">"در حال بافر کردن؟؟؟"</string>
<string name="voicemail_fetching_content" msgid="877911315738258780">"در حال واکشی پست صوتی؟؟؟"</string>
<string name="voicemail_fetching_timout" msgid="6691792377574905201">"واکشی پست صوتی ممکن نیست."</string>
<string name="call_log_new_header" msgid="846546437517724715">"جدید"</string>
@@ -550,10 +550,10 @@
<string name="no_account_prompt" msgid="7061052512446855192">"People با یک حساب Google بهتر کار میکند."\n\n"• از هر مرورگر وب به آن دسترسی دارید"\n"• از رویدادهای خود به طور امن پشتیبان تهیه کنید"</string>
<string name="generic_no_account_prompt" msgid="7218827704367325460">"مخاطبین خود را ایمن نگهدارید حتی اگر گوشی شما گم شود: با یک سرویس آنلاین همگامسازی کنید."</string>
<string name="generic_no_account_prompt_title" msgid="753783911899054860">"افزودن یک حساب"</string>
- <string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"از مخاطب جدید شما نسخه پشتبان تهیه نمیشود. حسابی را اضافه میکنید که از مخاطبین بصورت آنلاین نسخه پشتبان تهیه کند؟"</string>
+ <string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"از مخاطب جدید شما نسخه پشتبان تهیه نمیشود. حسابی را اضافه میکنید که از مخاطبین بهصورت آنلاین نسخه پشتبان تهیه کند؟"</string>
<string name="contact_editor_prompt_one_account" msgid="8669032699767375976">"مخاطب جدید شما با <xliff:g id="ACCOUNT_NAME">%1$s</xliff:g> همگامسازی خواهد شد."</string>
<string name="contact_editor_prompt_multiple_accounts" msgid="611828200100438242">"شما میتوانید مخاطب جدید خود را با یکی از حسابهای زیر همگامسازی کنید. از کدامیک میخواهید استفاده کنید؟"</string>
- <string name="keep_local" msgid="1258761699192993322">"ذخیره بصورت محلی"</string>
+ <string name="keep_local" msgid="1258761699192993322">"ذخیره بهصورت محلی"</string>
<string name="add_account" msgid="8201790677994503186">"افزودن حساب"</string>
<string name="add_new_account" msgid="5748627740680940264">"اافزودن حساب جدید"</string>
<string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"تماس ارسال نشد"</string>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 1d9514f..15a2e89 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -72,7 +72,7 @@
<string name="deleteConfirmation" msgid="811706994761610640">"この連絡先を削除します。"</string>
<string name="menu_done" msgid="796017761764190697">"完了"</string>
<string name="menu_doNotSave" msgid="58593876893538465">"キャンセル"</string>
- <string name="menu_discard" msgid="6456087569315685632">"破棄"</string>
+ <string name="menu_discard" msgid="6456087569315685632">"キャンセル"</string>
<string name="label_notes" msgid="8337354953278341042">"メモ"</string>
<string name="label_sip_address" msgid="124073911714324974">"インターネット通話"</string>
<string name="ghostData_company" msgid="5414421120553765775">"会社"</string>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index 68888d2..6afbd54 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -79,7 +79,7 @@
<string name="ghostData_title" msgid="7496735200318496110">"Jina la heshima"</string>
<string name="invalidContactMessage" msgid="8215051456181842274">"Mwasiliani hayupo."</string>
<string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Wijeti ya mawasiliano imeongezwa kwenye skrini ya Nyumbani."</string>
- <string name="pickerNewContactHeader" msgid="7750705279843568147">"Unda akaunti mpya"</string>
+ <string name="pickerNewContactHeader" msgid="7750705279843568147">"Weka anwani mpya"</string>
<string name="pickerNewContactText" msgid="6166997164401048211">"Anzisha mwasiliani mpya"</string>
<string name="phoneLabelsGroup" msgid="6468091477851199285">"Simu"</string>
<string name="emailLabelsGroup" msgid="8389931313045344406">"Barua pepe"</string>
@@ -302,7 +302,7 @@
<string name="eventLabelsGroup" msgid="3695433812142818803">"Matukio"</string>
<string name="relationLabelsGroup" msgid="1854373894284572781">"Uhusiano"</string>
<string name="groupsLabel" msgid="8573535366319059326">"Vikundi"</string>
- <string name="dialog_new_contact_account" msgid="9044704073286262197">"Unda anwani chini ya akaunti"</string>
+ <string name="dialog_new_contact_account" msgid="9044704073286262197">"Weka anwani chini ya akaunti"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Unda kikundi chini ya akaunti"</string>
<string name="menu_sync_remove" msgid="3266725887008450161">"Ondoa kikundi cha usawazishaji"</string>
<string name="dialog_sync_add" msgid="8267045393119375803">"Ongeza kikundi cha usawazishaji"</string>
@@ -471,7 +471,7 @@
<string name="date_year_toggle" msgid="7356532842767854606">"Bainisha mwaka"</string>
<string name="social_widget_label" msgid="6378905543028924592">"Anwani"</string>
<string name="social_widget_loading" msgid="5327336597364074608">"Inapakia…"</string>
- <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Unda akaunti mpya"</string>
+ <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Fungua akaunti mpya"</string>
<string name="contacts_unavailable_add_account" msgid="7911101713860139754">"Ingia katika akaunti"</string>
<string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"Ingiza wasiliani"</string>
<string name="create_group_dialog_title" msgid="6874527142828424475">"Unda kikundi kipya"</string>
@@ -560,6 +560,6 @@
<string name="add_new_account" msgid="5748627740680940264">"Ongeza akaunti mpya"</string>
<string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Simu haijatumwa"</string>
<string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Ili kusanidi ujumbe wa sauti, nenda kwa Menyu > Mipangilio."</string>
- <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Kupigia simu ujumbe wa sauti, kwanza lemaza hali ya ndege."</string>
+ <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Kupigia simu ujumbe wa sauti, kwanza zima hali ya ndege."</string>
<string name="action_menu_overflow_description" msgid="2303272250613084574">"Chaguo zaidi"</string>
</resources>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index e8798e4..6b09f78 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -74,7 +74,7 @@
<string name="menu_doNotSave" msgid="58593876893538465">"取消"</string>
<string name="menu_discard" msgid="6456087569315685632">"舍弃"</string>
<string name="label_notes" msgid="8337354953278341042">"备注"</string>
- <string name="label_sip_address" msgid="124073911714324974">"互联网通话"</string>
+ <string name="label_sip_address" msgid="124073911714324974">"互联网电话"</string>
<string name="ghostData_company" msgid="5414421120553765775">"公司"</string>
<string name="ghostData_title" msgid="7496735200318496110">"职位"</string>
<string name="invalidContactMessage" msgid="8215051456181842274">"该联系人不存在。"</string>
@@ -82,8 +82,8 @@
<string name="pickerNewContactHeader" msgid="7750705279843568147">"新建联系人"</string>
<string name="pickerNewContactText" msgid="6166997164401048211">"创建新联系人"</string>
<string name="phoneLabelsGroup" msgid="6468091477851199285">"电话"</string>
- <string name="emailLabelsGroup" msgid="8389931313045344406">"发送电子邮件"</string>
- <string name="imLabelsGroup" msgid="3898238486262614027">"即时消息"</string>
+ <string name="emailLabelsGroup" msgid="8389931313045344406">"电子邮件"</string>
+ <string name="imLabelsGroup" msgid="3898238486262614027">"即时聊天工具"</string>
<string name="postalLabelsGroup" msgid="3487738141112589324">"地址"</string>
<string-array name="otherLabels">
<item msgid="8287841928119937597">"组织"</item>
@@ -297,7 +297,7 @@
<string name="nicknameLabelsGroup" msgid="2891682101053358010">"昵称"</string>
<string name="organizationLabelsGroup" msgid="2478611760751832035">"组织"</string>
<string name="websiteLabelsGroup" msgid="4202998982804009261">"网站"</string>
- <string name="eventLabelsGroup" msgid="3695433812142818803">"活动"</string>
+ <string name="eventLabelsGroup" msgid="3695433812142818803">"重要日子"</string>
<string name="relationLabelsGroup" msgid="1854373894284572781">"关系"</string>
<string name="groupsLabel" msgid="8573535366319059326">"群组"</string>
<string name="dialog_new_contact_account" msgid="9044704073286262197">"在帐户下创建联系人"</string>
@@ -385,15 +385,15 @@
<string name="full_name" msgid="6602579550613988977">"姓名"</string>
<string name="name_given" msgid="1687286314106019813">"名字"</string>
<string name="name_family" msgid="3416695586119999058">"姓氏"</string>
- <string name="name_prefix" msgid="59756378548779822">"名称前缀"</string>
+ <string name="name_prefix" msgid="59756378548779822">"姓名前缀"</string>
<string name="name_middle" msgid="8467433655992690326">"中间名"</string>
- <string name="name_suffix" msgid="3855278445375651441">"名称后缀"</string>
+ <string name="name_suffix" msgid="3855278445375651441">"姓名后缀"</string>
<string name="name_phonetic_given" msgid="6853570431394449191">"名字拼音"</string>
<string name="name_phonetic_middle" msgid="8643721493320405200">"中间名拼音"</string>
<string name="name_phonetic_family" msgid="462095502140180305">"姓氏拼音"</string>
<string name="name_phonetic" msgid="4259595234312430484">"姓名拼音"</string>
- <string name="connections" msgid="8098440723172028350">"联系"</string>
- <string name="add_connection_button" msgid="4861308615789601727">"加强联系"</string>
+ <string name="connections" msgid="8098440723172028350">"社交网络"</string>
+ <string name="add_connection_button" msgid="4861308615789601727">"添加社交网络"</string>
<string name="recent" msgid="2659189233141493004">"最新"</string>
<string name="recent_updates" msgid="4267258535615860710">"最新动态"</string>
<string name="account_type_format" msgid="718948015590343010">"<xliff:g id="SOURCE">%1$s</xliff:g> 联系人"</string>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 8292a56..e2db03c 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1818,6 +1818,9 @@
voicemail service in Airplane mode. [CHAR LIMI=NONE] -->
<string name="dialog_voicemail_airplane_mode_message">To call voicemail, first turn off Airplane mode.</string>
+ <!-- Menu item shown only when the special debug mode is enabled, which is used to send all contacts database files via email. [CHAR LIMI=NONE] -->
+ <string name="menu_export_database">Export database files</string>
+
<!-- Content description for the fake action menu overflow button.
This should be same as the description for the real action menu
overflow button available in ActionBar.
diff --git a/src/com/android/contacts/SpecialCharSequenceMgr.java b/src/com/android/contacts/SpecialCharSequenceMgr.java
index b662d1c..4902fde 100644
--- a/src/com/android/contacts/SpecialCharSequenceMgr.java
+++ b/src/com/android/contacts/SpecialCharSequenceMgr.java
@@ -16,6 +16,10 @@
package com.android.contacts;
+import com.android.internal.telephony.ITelephony;
+import com.android.internal.telephony.TelephonyCapabilities;
+import com.android.internal.telephony.TelephonyIntents;
+
import android.app.AlertDialog;
import android.app.KeyguardManager;
import android.app.ProgressDialog;
@@ -29,7 +33,6 @@
import android.os.Looper;
import android.os.RemoteException;
import android.os.ServiceManager;
-import android.provider.Telephony.Intents;
import android.telephony.PhoneNumberUtils;
import android.telephony.TelephonyManager;
import android.util.Log;
@@ -37,9 +40,6 @@
import android.widget.EditText;
import android.widget.Toast;
-import com.android.internal.telephony.ITelephony;
-import com.android.internal.telephony.TelephonyCapabilities;
-
/**
* Helper class to listen for some magic character sequences
* that are handled specially by the dialer.
@@ -131,7 +131,7 @@
// Secret codes are in the form *#*#<code>#*#*
int len = input.length();
if (len > 8 && input.startsWith("*#*#") && input.endsWith("#*#*")) {
- Intent intent = new Intent(Intents.SECRET_CODE_ACTION,
+ Intent intent = new Intent(TelephonyIntents.SECRET_CODE_ACTION,
Uri.parse("android_secret_code://" + input.substring(4, len - 4)));
context.sendBroadcast(intent);
return true;
diff --git a/src/com/android/contacts/activities/ContactDetailActivity.java b/src/com/android/contacts/activities/ContactDetailActivity.java
index 811b904..b03a976 100644
--- a/src/com/android/contacts/activities/ContactDetailActivity.java
+++ b/src/com/android/contacts/activities/ContactDetailActivity.java
@@ -20,6 +20,7 @@
import android.app.Fragment;
import android.content.ActivityNotFoundException;
import android.content.ContentValues;
+import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
@@ -259,11 +260,14 @@
actionBar.setTitle(displayName);
actionBar.setSubtitle(company);
- if (!TextUtils.isEmpty(displayName) &&
- AccessibilityManager.getInstance(this).isEnabled()) {
- View decorView = getWindow().getDecorView();
- decorView.setContentDescription(displayName);
- decorView.sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED);
+ if (!TextUtils.isEmpty(displayName)) {
+ AccessibilityManager accessibilityManager =
+ (AccessibilityManager) this.getSystemService(Context.ACCESSIBILITY_SERVICE);
+ if (accessibilityManager.isEnabled()) {
+ View decorView = getWindow().getDecorView();
+ decorView.setContentDescription(displayName);
+ decorView.sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED);
+ }
}
}
diff --git a/src/com/android/contacts/activities/NonPhoneActivity.java b/src/com/android/contacts/activities/NonPhoneActivity.java
index 1c0f4e2..fc22146 100644
--- a/src/com/android/contacts/activities/NonPhoneActivity.java
+++ b/src/com/android/contacts/activities/NonPhoneActivity.java
@@ -38,6 +38,9 @@
* be used as a phone. This allows the user to see the phone number
*/
public class NonPhoneActivity extends ContactsActivity {
+
+ private static final String PHONE_NUMBER_KEY = "PHONE_NUMBER";
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -48,7 +51,9 @@
}
final NonPhoneDialogFragment fragment = new NonPhoneDialogFragment();
- fragment.setArguments(Bundle.forPair("PHONE_NUMBER", phoneNumber));
+ Bundle bundle = new Bundle();
+ bundle.putString(PHONE_NUMBER_KEY, phoneNumber);
+ fragment.setArguments(bundle);
getFragmentManager().beginTransaction().add(fragment, "Fragment").commitAllowingStateLoss();
}
@@ -89,7 +94,7 @@
}
private String getArgumentPhoneNumber() {
- return getArguments().getPairValue();
+ return getArguments().getString(PHONE_NUMBER_KEY);
}
@Override
diff --git a/src/com/android/contacts/activities/PeopleActivity.java b/src/com/android/contacts/activities/PeopleActivity.java
index a99ac45..b811dd9 100644
--- a/src/com/android/contacts/activities/PeopleActivity.java
+++ b/src/com/android/contacts/activities/PeopleActivity.java
@@ -110,6 +110,8 @@
/** Shows a toogle button for hiding/showing updates. Don't submit with true */
private static final boolean DEBUG_TRANSITIONS = false;
+ private static final String ENABLE_DEBUG_OPTIONS_HIDDEN_CODE = "debug debug!";
+
// These values needs to start at 2. See {@link ContactEntryListFragment}.
private static final int SUBACTIVITY_NEW_CONTACT = 2;
private static final int SUBACTIVITY_EDIT_CONTACT = 3;
@@ -165,6 +167,8 @@
private ContactDetailLayoutController mContactDetailLayoutController;
+ private boolean mEnableDebugMenuOptions;
+
private final Handler mHandler = new Handler();
/**
@@ -631,7 +635,10 @@
invalidateOptionsMenu();
break;
case ActionBarAdapter.Listener.Action.CHANGE_SEARCH_QUERY:
- setQueryTextToFragment(mActionBarAdapter.getQueryString());
+ final String queryString = mActionBarAdapter.getQueryString();
+ setQueryTextToFragment(queryString);
+ updateDebugOptionsVisibility(
+ ENABLE_DEBUG_OPTIONS_HIDDEN_CODE.equals(queryString));
break;
default:
throw new IllegalStateException("Unkonwn ActionBarAdapter action: " + action);
@@ -643,6 +650,13 @@
updateFragmentsVisibility();
}
+ private void updateDebugOptionsVisibility(boolean visible) {
+ if (mEnableDebugMenuOptions != visible) {
+ mEnableDebugMenuOptions = visible;
+ invalidateOptionsMenu();
+ }
+ }
+
/**
* Updates the fragment/view visibility according to the current mode, such as
* {@link ActionBarAdapter#isSearchMode()} and {@link ActionBarAdapter#getCurrentTab()}.
@@ -1449,6 +1463,9 @@
makeMenuItemVisible(menu, R.id.menu_settings,
showMiscOptions && !ContactsPreferenceActivity.isEmpty(this));
+ // Debug options need to be visible even in search mode.
+ makeMenuItemVisible(menu, R.id.export_database, mEnableDebugMenuOptions);
+
return true;
}
@@ -1545,6 +1562,12 @@
startActivity(intent);
return true;
}
+ case R.id.export_database: {
+ final Intent intent = new Intent("com.android.providers.contacts.DUMP_DATABASE");
+ intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
+ startActivity(intent);
+ return true;
+ }
}
return false;
}
diff --git a/src/com/android/contacts/calllog/CallLogAdapter.java b/src/com/android/contacts/calllog/CallLogAdapter.java
index 516cdb4..3688dca 100644
--- a/src/com/android/contacts/calllog/CallLogAdapter.java
+++ b/src/com/android/contacts/calllog/CallLogAdapter.java
@@ -39,11 +39,10 @@
import com.android.contacts.util.ExpirableCache;
import com.android.contacts.util.UriUtils;
import com.google.common.annotations.VisibleForTesting;
+import com.google.common.base.Objects;
import java.util.LinkedList;
-import libcore.util.Objects;
-
/**
* Adapter class to fill in data for the Call Log.
*/
diff --git a/src/com/android/contacts/dialpad/DialpadFragment.java b/src/com/android/contacts/dialpad/DialpadFragment.java
index 745c044..a853711 100644
--- a/src/com/android/contacts/dialpad/DialpadFragment.java
+++ b/src/com/android/contacts/dialpad/DialpadFragment.java
@@ -191,6 +191,15 @@
private boolean mWasEmptyBeforeTextChange;
+ /**
+ * This field is set to true while processing an incoming DIAL intent, in order to make sure
+ * that SpecialCharSequenceMgr actions can be triggered by user input but *not* by a
+ * tel: URI passed by some other app. It will be set to false when all digits are cleared.
+ */
+ private boolean mDigitsFilledByIntent;
+
+ private static final String PREF_DIGITS_FILLED_BY_INTENT = "pref_digits_filled_by_intent";
+
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
mWasEmptyBeforeTextChange = TextUtils.isEmpty(s);
@@ -214,12 +223,14 @@
// When DTMF dialpad buttons are being pressed, we delay SpecialCharSequencMgr sequence,
// since some of SpecialCharSequenceMgr's behavior is too abrupt for the "touch-down"
// behavior.
- if (SpecialCharSequenceMgr.handleChars(getActivity(), input.toString(), mDigits)) {
+ if (!mDigitsFilledByIntent &&
+ SpecialCharSequenceMgr.handleChars(getActivity(), input.toString(), mDigits)) {
// A special sequence was entered, clear the digits
mDigits.getText().clear();
}
if (isDigitsEmpty()) {
+ mDigitsFilledByIntent = false;
mDigits.setCursorVisible(false);
}
@@ -243,6 +254,10 @@
mProhibitedPhoneNumberRegexp = getResources().getString(
R.string.config_prohibited_phone_number_regexp);
+
+ if (state != null) {
+ mDigitsFilledByIntent = state.getBoolean(PREF_DIGITS_FILLED_BY_INTENT);
+ }
}
@Override
@@ -330,6 +345,8 @@
if (Constants.SCHEME_TEL.equals(uri.getScheme())) {
// Put the requested number into the input area
String data = uri.getSchemeSpecificPart();
+ // Remember it is filled via Intent.
+ mDigitsFilledByIntent = true;
setFormattedDigits(data, null);
return true;
} else {
@@ -343,6 +360,8 @@
if (c != null) {
try {
if (c.moveToFirst()) {
+ // Remember it is filled via Intent.
+ mDigitsFilledByIntent = true;
// Put the number into the input area
setFormattedDigits(c.getString(0), c.getString(1));
return true;
@@ -436,6 +455,9 @@
showDialpadChooser(needToShowDialpadChooser);
}
+ /**
+ * Sets formatted digits to digits field.
+ */
private void setFormattedDigits(String data, String normalizedNumber) {
// strip the non-dialable numbers out of the data string.
String dialString = PhoneNumberUtils.extractNetworkPortion(data);
@@ -591,6 +613,12 @@
}
@Override
+ public void onSaveInstanceState(Bundle outState) {
+ super.onSaveInstanceState(outState);
+ outState.putBoolean(PREF_DIGITS_FILLED_BY_INTENT, mDigitsFilledByIntent);
+ }
+
+ @Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
if (ViewConfiguration.get(getActivity()).hasPermanentMenuKey() &&
diff --git a/src/com/android/contacts/list/AccountFilterActivity.java b/src/com/android/contacts/list/AccountFilterActivity.java
index c5a21ba..af727a5 100644
--- a/src/com/android/contacts/list/AccountFilterActivity.java
+++ b/src/com/android/contacts/list/AccountFilterActivity.java
@@ -69,7 +69,7 @@
super.onCreate(icicle);
setContentView(R.layout.contact_list_filter);
- mListView = (ListView) findViewById(com.android.internal.R.id.list);
+ mListView = (ListView) findViewById(android.R.id.list);
mListView.setOnItemClickListener(this);
ActionBar actionBar = getActionBar();
diff --git a/src/com/android/contacts/list/ContactEntryListFragment.java b/src/com/android/contacts/list/ContactEntryListFragment.java
index 98a4ae2..e422d1b 100644
--- a/src/com/android/contacts/list/ContactEntryListFragment.java
+++ b/src/com/android/contacts/list/ContactEntryListFragment.java
@@ -744,7 +744,7 @@
"'android.R.id.list'");
}
- View emptyView = mView.findViewById(com.android.internal.R.id.empty);
+ View emptyView = mView.findViewById(android.R.id.empty);
if (emptyView != null) {
mListView.setEmptyView(emptyView);
if (emptyView instanceof ContactListEmptyView) {
diff --git a/src/com/android/contacts/list/ContactListItemView.java b/src/com/android/contacts/list/ContactListItemView.java
index 6d79ace..bfe06b0 100644
--- a/src/com/android/contacts/list/ContactListItemView.java
+++ b/src/com/android/contacts/list/ContactListItemView.java
@@ -67,9 +67,6 @@
public class ContactListItemView extends ViewGroup
implements SelectionBoundsAdjuster {
- private static final int QUICK_CONTACT_BADGE_STYLE =
- com.android.internal.R.attr.quickContactBadgeStyleWindowMedium;
-
// Style values for layout and appearance
private final int mPreferredHeight;
private final int mGapBetweenImageAndText;
@@ -609,23 +606,14 @@
*/
private void ensurePhotoViewSize() {
if (!mPhotoViewWidthAndHeightAreReady) {
- if (mQuickContactEnabled) {
- TypedArray a = mContext.obtainStyledAttributes(null,
- com.android.internal.R.styleable.ViewGroup_Layout,
- QUICK_CONTACT_BADGE_STYLE, 0);
- mPhotoViewWidth = a.getLayoutDimension(
- android.R.styleable.ViewGroup_Layout_layout_width,
- ViewGroup.LayoutParams.WRAP_CONTENT);
- mPhotoViewHeight = a.getLayoutDimension(
- android.R.styleable.ViewGroup_Layout_layout_height,
- ViewGroup.LayoutParams.WRAP_CONTENT);
- a.recycle();
- } else if (mPhotoView != null) {
- mPhotoViewWidth = mPhotoViewHeight = getDefaultPhotoViewSize();
- } else {
- final int defaultPhotoViewSize = getDefaultPhotoViewSize();
- mPhotoViewWidth = mKeepHorizontalPaddingForPhotoView ? defaultPhotoViewSize : 0;
- mPhotoViewHeight = mKeepVerticalPaddingForPhotoView ? defaultPhotoViewSize : 0;
+ mPhotoViewWidth = mPhotoViewHeight = getDefaultPhotoViewSize();
+ if (!mQuickContactEnabled && mPhotoView == null) {
+ if (!mKeepHorizontalPaddingForPhotoView) {
+ mPhotoViewWidth = 0;
+ }
+ if (!mKeepVerticalPaddingForPhotoView) {
+ mPhotoViewHeight = 0;
+ }
}
mPhotoViewWidthAndHeightAreReady = true;
@@ -640,6 +628,18 @@
return mDefaultPhotoViewSize;
}
+ /**
+ * Gets a LayoutParam that corresponds to the default photo size.
+ *
+ * @return A new LayoutParam.
+ */
+ private LayoutParams getDefaultPhotoLayoutParams() {
+ LayoutParams params = generateDefaultLayoutParams();
+ params.width = getDefaultPhotoViewSize();
+ params.height = params.width;
+ return params;
+ }
+
@Override
protected void drawableStateChanged() {
super.drawableStateChanged();
@@ -723,7 +723,8 @@
throw new IllegalStateException("QuickContact is disabled for this view");
}
if (mQuickContact == null) {
- mQuickContact = new QuickContactBadge(mContext, null, QUICK_CONTACT_BADGE_STYLE);
+ mQuickContact = new QuickContactBadge(mContext);
+ mQuickContact.setLayoutParams(getDefaultPhotoLayoutParams());
if (mNameTextView != null) {
mQuickContact.setContentDescription(mContext.getString(
R.string.description_quick_contact_for, mNameTextView.getText()));
@@ -740,11 +741,8 @@
*/
public ImageView getPhotoView() {
if (mPhotoView == null) {
- if (mQuickContactEnabled) {
- mPhotoView = new ImageView(mContext, null, QUICK_CONTACT_BADGE_STYLE);
- } else {
- mPhotoView = new ImageView(mContext);
- }
+ mPhotoView = new ImageView(mContext);
+ mPhotoView.setLayoutParams(getDefaultPhotoLayoutParams());
// Quick contact style used above will set a background - remove it
mPhotoView.setBackground(null);
addView(mPhotoView);
diff --git a/src/com/android/contacts/list/CustomContactListFilterActivity.java b/src/com/android/contacts/list/CustomContactListFilterActivity.java
index 8842a1d..c62b389 100644
--- a/src/com/android/contacts/list/CustomContactListFilterActivity.java
+++ b/src/com/android/contacts/list/CustomContactListFilterActivity.java
@@ -92,7 +92,7 @@
super.onCreate(icicle);
setContentView(R.layout.contact_list_filter_custom);
- mList = (ExpandableListView) findViewById(com.android.internal.R.id.list);
+ mList = (ExpandableListView) findViewById(android.R.id.list);
mList.setOnChildClickListener(this);
mList.setHeaderDividersEnabled(true);
mPrefs = PreferenceManager.getDefaultSharedPreferences(this);
diff --git a/src/com/android/contacts/model/RawContact.java b/src/com/android/contacts/model/RawContact.java
index 3a193b4..d884198 100644
--- a/src/com/android/contacts/model/RawContact.java
+++ b/src/com/android/contacts/model/RawContact.java
@@ -213,6 +213,7 @@
} else {
values.put(RawContacts.DATA_SET, dataSet);
}
+ return;
}
}
throw new IllegalArgumentException(
diff --git a/src/com/android/contacts/test/FragmentTestActivity.java b/src/com/android/contacts/test/FragmentTestActivity.java
index 1dec34b..80c6731 100644
--- a/src/com/android/contacts/test/FragmentTestActivity.java
+++ b/src/com/android/contacts/test/FragmentTestActivity.java
@@ -17,6 +17,8 @@
package com.android.contacts.test;
import android.os.Bundle;
+import android.view.Window;
+import android.view.WindowManager;
import com.android.contacts.ContactsActivity;
import com.android.contacts.R;
@@ -30,6 +32,13 @@
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+
+ // Normally fragment/activity onStart() methods will not be called when screen is locked.
+ // Use the following flags to ensure that activities can be show for testing.
+ Window window = getWindow();
+ window.addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON |
+ WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
+
setContentView(R.layout.fragment_test);
}
}
diff --git a/tests/src/com/android/contacts/list/ContactListItemViewTest.java b/tests/src/com/android/contacts/list/ContactListItemViewTest.java
index 860e5da..748876f 100644
--- a/tests/src/com/android/contacts/list/ContactListItemViewTest.java
+++ b/tests/src/com/android/contacts/list/ContactListItemViewTest.java
@@ -36,7 +36,7 @@
@LargeTest
public class ContactListItemViewTest extends ActivityInstrumentationTestCase2<PeopleActivity> {
/** The HTML code used to mark the start of the highlighted part. */
- private static final String START = "<font color =\"#99cc00\">";
+ private static final String START = "<font color =\"#33b5e5\">";
/** The HTML code used to mark the end of the highlighted part. */
private static final String END = "</font>";
diff --git a/tests/src/com/android/contacts/model/account/ExternalAccountTypeTest.java b/tests/src/com/android/contacts/model/account/ExternalAccountTypeTest.java
index 9545bc1..6eb3bd7 100644
--- a/tests/src/com/android/contacts/model/account/ExternalAccountTypeTest.java
+++ b/tests/src/com/android/contacts/model/account/ExternalAccountTypeTest.java
@@ -31,17 +31,12 @@
import android.test.AndroidTestCase;
import android.test.suitebuilder.annotation.SmallTest;
-import com.android.contacts.model.account.AccountType;
-import com.android.contacts.model.account.BaseAccountType;
-import com.android.contacts.model.account.ExternalAccountType;
-import com.android.contacts.model.account.FallbackAccountType;
import com.android.contacts.model.dataitem.DataKind;
import com.android.contacts.tests.R;
+import com.google.common.base.Objects;
import java.util.List;
-import libcore.util.Objects;
-
/**
* Test case for {@link ExternalAccountType}.
*
diff --git a/tests/src/com/android/contacts/tests/mocks/MockAccountTypeManager.java b/tests/src/com/android/contacts/tests/mocks/MockAccountTypeManager.java
index d774252..ce16743 100644
--- a/tests/src/com/android/contacts/tests/mocks/MockAccountTypeManager.java
+++ b/tests/src/com/android/contacts/tests/mocks/MockAccountTypeManager.java
@@ -19,6 +19,7 @@
import com.android.contacts.model.account.AccountType;
import com.android.contacts.model.account.AccountTypeWithDataSet;
import com.android.contacts.model.account.AccountWithDataSet;
+import com.google.common.base.Objects;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
@@ -26,8 +27,6 @@
import java.util.List;
import java.util.Map;
-import libcore.util.Objects;
-
/**
* A mock {@link AccountTypeManager} class.
*/