[automerger skipped] Import translations. DO NOT MERGE ANYWHERE am: a7caa5885a -s ours

am skip reason: subject contains skip directive

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Contacts/+/20739431

Change-Id: Icb05a84cbb018e66d40de6a39e1822ce40160cac
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index e974863..0e59458 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -45,7 +45,6 @@
     <uses-permission android:name="android.permission.USE_CREDENTIALS"/>
     <uses-permission android:name="android.permission.VIBRATE"/>
     <uses-permission android:name="android.permission.READ_SYNC_SETTINGS"/>
-    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
     <uses-permission android:name="android.permission.SET_DEFAULT_ACCOUNT_FOR_CONTACTS"/>
     <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
     <!-- Following used for Contact metadata syncing -->
@@ -55,7 +54,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-permission android:name="android.permission.HIDE_OVERLAY_WINDOWS" />
     <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
 
     <uses-feature
diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml
index 2c12133..4563946 100644
--- a/res/values-kk/strings.xml
+++ b/res/values-kk/strings.xml
@@ -457,7 +457,7 @@
     <string name="about_build_version" msgid="5870642814752351712">"Жинақ нұсқасы"</string>
     <string name="about_open_source_licenses" msgid="1617836621315557445">"Ашық кодты бағдарлама лицензиялары"</string>
     <string name="about_open_source_licenses_summary" msgid="4843627659117423491">"Ашық бастапқы код бағдарламасына арналған лицензия туралы мәліметтер"</string>
-    <string name="about_privacy_policy" msgid="4581488375200402678">"Құпиялылық саясаты"</string>
+    <string name="about_privacy_policy" msgid="4581488375200402678">"Құпиялық саясаты"</string>
     <string name="about_terms_of_service" msgid="7419670771785057738">"Қызмет көрсету шарттары"</string>
     <string name="activity_title_licenses" msgid="6434398894019119709">"Ашық кодты бағдарлама лицензиялары"</string>
     <string name="url_open_error_toast" msgid="4885855620824048385">"Url ашылған жоқ."</string>
diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml
index 11b01e8..f7d8535 100644
--- a/res/values-te/strings.xml
+++ b/res/values-te/strings.xml
@@ -33,13 +33,13 @@
     <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_deleteContact" msgid="15161764025276217">"తొలగించు"</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>
     <string name="menu_splitAggregate" msgid="2062290275288905833">"వేరు చేయి"</string>
     <string name="menu_editGroup" msgid="8706562583754054622">"కాంటాక్ట్‌లను తీసివేయండి"</string>
     <string name="menu_renameGroup" msgid="2685886609399776475">"లేబుల్ పేరును మార్చు"</string>
-    <string name="menu_deleteGroup" msgid="1180215594530228294">"లేబుల్‌ను తొలగించు"</string>
+    <string name="menu_deleteGroup" msgid="1180215594530228294">"లేబుల్‌ను తొలగించండి"</string>
     <string name="menu_addToGroup" msgid="5034813446697655310">"కాంటాక్ట్‌ను జోడించండి"</string>
     <string name="menu_selectForGroup" msgid="6386553337569514850">"కాంటాక్ట్‌లను ఎంచుకోండి"</string>
     <string name="menu_addContactsToGroup" msgid="4549318978482280577">"కాంటాక్ట్‌లను జోడించండి"</string>
@@ -55,7 +55,7 @@
     <string name="contacts_unlinking_progress_bar" msgid="5696679068872394167">"అన్‌లింక్ చేస్తున్నాము"</string>
     <string name="menu_joinAggregate" msgid="3116395302755287038">"లింక్ చేయి"</string>
     <string name="menu_linkedContacts" msgid="6363718333551613063">"లింక్ చేసిన కాంటాక్ట్‌లను చూడండి"</string>
-    <string name="menu_save" msgid="7204524700499687371">"సేవ్ చేయి"</string>
+    <string name="menu_save" msgid="7204524700499687371">"సేవ్ చేయండి"</string>
     <string name="titleJoinContactDataWith" msgid="7342386037654890242">"కాంటాక్ట్‌లను లింక్ చేయండి"</string>
     <string name="blurbJoinContactDataWith" msgid="132105056919797709">"మీరు <xliff:g id="NAME">%s</xliff:g>తో లింక్ చేయాలనుకునే కాంటాక్ట్‌ను ఎంచుకోండి:"</string>
     <string name="separatorJoinAggregateSuggestions" msgid="8347769365870796983">"సూచిత కాంటాక్ట్‌లు"</string>
@@ -82,7 +82,7 @@
     <string name="batch_delete_multiple_accounts_confirmation" msgid="4547718538924570984">"తొలగించాల్సిన కాంటాక్ట్‌లు పలు ఖాతాల నుండి వివరాలను కలిగి ఉన్నాయి. చదవడానికి మాత్రమే ఖాతాల నుండి వివరాలు దాచబడతాయి, తొలగించబడవు."</string>
     <string name="multipleContactDeleteConfirmation" msgid="2970218685653877287">"ఈ కాంటాక్ట్‌ను తొలగించడం వలన పలు ఖాతాల నుండి వివరాలు తొలగించబడతాయి."</string>
     <string name="deleteConfirmation" msgid="3727809366015979585">"ఈ కాంటాక్ట్‌ను తొలగించాలా?"</string>
-    <string name="deleteConfirmation_positive_button" msgid="1604511403421785160">"తొలగించు"</string>
+    <string name="deleteConfirmation_positive_button" msgid="1604511403421785160">"తొలగించండి"</string>
     <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>
@@ -169,7 +169,7 @@
     <string name="toast_text_copied" msgid="845906090076228771">"వచనం కాపీ చేయబడింది"</string>
     <string name="cancel_confirmation_dialog_message" msgid="7486892574762212762">"మార్పులను విస్మరించాలా?"</string>
     <string name="cancel_confirmation_dialog_cancel_editing_button" msgid="8280294641821133477">"విస్మరించు"</string>
-    <string name="cancel_confirmation_dialog_keep_editing_button" msgid="7117943783437253341">"రద్దు చేయి"</string>
+    <string name="cancel_confirmation_dialog_keep_editing_button" msgid="7117943783437253341">"రద్దు చేయండి"</string>
     <string name="leave_customize_confirmation_dialog_message" msgid="5330853530872707231">"అనుకూలీకరణలను విస్మరించాలా?"</string>
     <string name="enter_contact_name" msgid="521859148893732679">"కాంటాక్ట్‌లను సెర్చ్ చేయండి"</string>
     <string name="title_edit_group" msgid="4246193439931854759">"కాంటాక్ట్‌లను తీసివేయండి"</string>
@@ -213,7 +213,7 @@
     <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>
     <string name="quickcontact_suggestion_link_button" msgid="3485212664301802371">"కాంటాక్ట్‌లను లింక్ చేయండి"</string>
-    <string name="quickcontact_suggestion_cancel_button" msgid="8851156850681440055">"రద్దు చేయి"</string>
+    <string name="quickcontact_suggestion_cancel_button" msgid="8851156850681440055">"రద్దు చేయండి"</string>
     <string name="suggestion_card_this_contact_title" msgid="8851257599121989253">"ఈ కాంటాక్ట్"</string>
     <string name="suggestion_card_duplicates_title" msgid="2623890874933696454">"సంభావ్య నకిలీలు"</string>
     <string name="suggestion_card_help_message" msgid="8367379652312412794">"ఈ కాంటాక్ట్‌లు ఒకే వ్యక్తికి సంబంధించినవి అయ్యి ఉండవచ్చు. మీరు వాటిని ఒకే కాంటాక్ట్‌గా లింక్ చేయవచ్చు."</string>
@@ -228,7 +228,7 @@
     <string name="menu_title_filters" msgid="349866121417914494">"ఖాతాలు"</string>
     <string name="hamburger_feature_highlight_header" msgid="1786641424099282909">"సూచనలు"</string>
     <string name="hamburger_feature_highlight_body" msgid="782935036630531528">"మీ కాంటాక్ట్‌లను ఉత్తమంగా నిర్వహించండి మరియు ఉపయోగించండి"</string>
-    <string name="undo" msgid="2446931036220975026">"చర్య రద్దు చేయి"</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_mobile" msgid="6504312789160309832">"మొబైల్‌కు కాల్ చేయండి"</string>
@@ -344,7 +344,7 @@
     <string name="chat_icq" msgid="4289041376069626281">"ICQని ఉపయోగించి చాట్ చేయండి"</string>
     <string name="chat_jabber" msgid="1097960594943864847">"Jabberని ఉపయోగించి చాట్ చేయండి"</string>
     <string name="chat" msgid="8390862712584830532">"చాట్ చేయండి"</string>
-    <string name="description_minus_button" msgid="1305985971158054217">"తొలగించు"</string>
+    <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>
@@ -365,7 +365,7 @@
     <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>
+    <string name="dialog_new_contact_account" msgid="5652018124788855057">"దిగుమతి చేసిన కాంటాక్ట్‌లను దీనిలో సేవ్ చేయండి:"</string>
     <string name="import_from_sim" msgid="7825280799813847991">"SIM కార్డ్"</string>
     <string name="import_from_sim_summary_fmt" msgid="4234771828377985321">"SIM <xliff:g id="SIM_NAME">%1$s</xliff:g>"</string>
     <string name="import_from_sim_secondary_contact_count_fmt" msgid="4406774701661271748">"{count,plural, =1{# కాంటాక్ట్}other{# కాంటాక్ట్‌లు}}"</string>
@@ -437,7 +437,7 @@
     <string name="menu_contacts_filter" msgid="5854584270038139275">"డిస్‌ప్లే చేయాల్సిన కాంటాక్ట్‌లు"</string>
     <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="menu_custom_filter_save" msgid="2412959737200856930">"సేవ్ చేయండి"</string>
     <string name="hint_findContacts" msgid="5554298639062659655">"కాంటాక్ట్‌లను సెర్చ్ చేయండి"</string>
     <string name="contactsFavoritesLabel" msgid="8339645684721732714">"ఇష్టమైనవి"</string>
     <string name="menu_import" msgid="2206768098740726906">"దిగుమతి చేయండి"</string>
@@ -448,7 +448,7 @@
     <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>
-    <string name="set_default_account" msgid="9194321110211682396">"కాల్స్‌ల కోసం ఎప్పుడూ ఇది ఉపయోగించు"</string>
+    <string name="set_default_account" msgid="9194321110211682396">"కాల్స్‌ల కోసం ఎప్పుడూ ఇది ఉపయోగించండి"</string>
     <string name="call_with_a_note" msgid="2463785820399287281">"గమనికతో కాల్ చేయి"</string>
     <string name="call_subject_hint" msgid="7056652101889538157">"కాల్‌తో పాటు పంపడానికి గమనికను టైప్ చేయండి…"</string>
     <string name="send_and_call_button" msgid="4851257959568592699">"పంపు &amp; కాల్ చేయి"</string>
diff --git a/src/com/android/contacts/NfcHandler.java b/src/com/android/contacts/NfcHandler.java
deleted file mode 100644
index 07b3f06..0000000
--- a/src/com/android/contacts/NfcHandler.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.contacts;
-
-import android.app.Activity;
-import android.content.ContentResolver;
-import android.content.Context;
-import android.net.Uri;
-import android.nfc.NdefMessage;
-import android.nfc.NdefRecord;
-import android.nfc.NfcAdapter;
-import android.nfc.NfcEvent;
-import android.provider.ContactsContract.Contacts;
-import android.provider.ContactsContract.Profile;
-import android.util.Log;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-
-/**
-  * This class implements sharing the currently displayed
-  * contact to another device using NFC. NFC sharing is only
-  * enabled when the activity is in the foreground and resumed.
-  * When an NFC link is established, {@link #createMessage}
-  * will be called to create the data to be sent over the link,
-  * which is a vCard in this case.
-  */
-public class NfcHandler implements NfcAdapter.CreateNdefMessageCallback {
-
-    private static final String TAG = "ContactNfcHandler";
-    private static final String PROFILE_LOOKUP_KEY = "profile";
-    private final Context mContext;
-    private final Uri mContactUri;
-
-    /* Register NFC handler. This should be called in activities' onCreate(), or similar methods */
-    public static void register(Activity activity, Uri contactUri) {
-        NfcAdapter adapter = NfcAdapter.getDefaultAdapter(activity.getApplicationContext());
-        if (adapter == null) {
-            return;  // NFC not available on this device
-        }
-        adapter.setNdefPushMessageCallback(new NfcHandler(activity, contactUri), activity);
-    }
-
-    public NfcHandler(Context context, Uri contactUri) {
-        mContext = context;
-        mContactUri = contactUri;
-    }
-
-    @Override
-    public NdefMessage createNdefMessage(NfcEvent event) {
-        ContentResolver resolver = mContext.getContentResolver();
-        if (mContactUri != null) {
-            final String lookupKey = Uri.encode(mContactUri.getPathSegments().get(2));
-            final Uri shareUri;
-            // TODO find out where to get this constant from, or find another way
-            // of determining this.
-            if (lookupKey.equals(PROFILE_LOOKUP_KEY)) {
-                shareUri = Profile.CONTENT_VCARD_URI.buildUpon().
-                appendQueryParameter(Contacts.QUERY_PARAMETER_VCARD_NO_PHOTO, "true").
-                build();
-            } else {
-                shareUri = Contacts.CONTENT_VCARD_URI.buildUpon().
-                appendPath(lookupKey).
-                appendQueryParameter(Contacts.QUERY_PARAMETER_VCARD_NO_PHOTO, "true").
-                build();
-            }
-            ByteArrayOutputStream ndefBytes = new ByteArrayOutputStream();
-            byte[] buffer = new byte[1024];
-            int r;
-            try {
-                InputStream vcardInputStream = resolver.openInputStream(shareUri);
-                while ((r = vcardInputStream.read(buffer)) > 0) {
-                    ndefBytes.write(buffer, 0, r);
-                }
-
-                NdefRecord record = NdefRecord.createMime("text/x-vcard", ndefBytes.toByteArray());
-                return new NdefMessage(record);
-            } catch (IOException e) {
-                Log.e(TAG, "IOException creating vcard.");
-                return null;
-            }
-        } else {
-            Log.w(TAG, "No contact URI to share.");
-            return null;
-        }
-    }
-}
diff --git a/src/com/android/contacts/activities/ContactEditorActivity.java b/src/com/android/contacts/activities/ContactEditorActivity.java
index 74a0df6..2af25f8 100644
--- a/src/com/android/contacts/activities/ContactEditorActivity.java
+++ b/src/com/android/contacts/activities/ContactEditorActivity.java
@@ -314,6 +314,8 @@
     public void onCreate(Bundle savedState) {
         super.onCreate(savedState);
 
+        getWindow().setHideOverlayWindows(true);
+
         RequestPermissionsActivity.startPermissionActivityIfNeeded(this);
 
         final Intent intent = getIntent();
diff --git a/src/com/android/contacts/activities/ContactEditorSpringBoardActivity.java b/src/com/android/contacts/activities/ContactEditorSpringBoardActivity.java
index cf2ce9c..64283d2 100644
--- a/src/com/android/contacts/activities/ContactEditorSpringBoardActivity.java
+++ b/src/com/android/contacts/activities/ContactEditorSpringBoardActivity.java
@@ -242,6 +242,7 @@
         finish();
     }
 
+    @SuppressWarnings("MissingSuperCall") // TODO: Fix me
     @Override
     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
         // Ignore failed requests
diff --git a/src/com/android/contacts/activities/ContactSelectionActivity.java b/src/com/android/contacts/activities/ContactSelectionActivity.java
index 2057c9d..9273c61 100644
--- a/src/com/android/contacts/activities/ContactSelectionActivity.java
+++ b/src/com/android/contacts/activities/ContactSelectionActivity.java
@@ -107,8 +107,7 @@
     protected void onCreate(Bundle savedState) {
         super.onCreate(savedState);
 
-        getWindow().addSystemFlags(android.view.WindowManager.LayoutParams
-            .SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS);
+        getWindow().setHideOverlayWindows(true);
 
         RequestPermissionsActivity.startPermissionActivityIfNeeded(this);
 
diff --git a/src/com/android/contacts/activities/PeopleActivity.java b/src/com/android/contacts/activities/PeopleActivity.java
index 412c067..ceb3d59 100644
--- a/src/com/android/contacts/activities/PeopleActivity.java
+++ b/src/com/android/contacts/activities/PeopleActivity.java
@@ -421,6 +421,7 @@
         getWindow().setBackgroundDrawable(null);
     }
 
+    @SuppressWarnings("MissingSuperCall") // TODO: Fix me
     @Override
     protected void onNewIntent(Intent intent) {
         final String action = intent.getAction();
@@ -603,6 +604,7 @@
         onSyncStateUpdated();
     }
 
+    @SuppressWarnings("MissingSuperCall") // TODO: Fix me
     @Override
     public void onMultiWindowModeChanged(boolean entering) {
         initializeHomeVisibility();
diff --git a/src/com/android/contacts/activities/RequestImportVCardPermissionsActivity.java b/src/com/android/contacts/activities/RequestImportVCardPermissionsActivity.java
index 224339a..2f17fe7 100644
--- a/src/com/android/contacts/activities/RequestImportVCardPermissionsActivity.java
+++ b/src/com/android/contacts/activities/RequestImportVCardPermissionsActivity.java
@@ -28,9 +28,7 @@
             // Contacts group
             permission.GET_ACCOUNTS,
             permission.READ_CONTACTS,
-            permission.WRITE_CONTACTS,
-            // Storage group
-            permission.READ_EXTERNAL_STORAGE,
+            permission.WRITE_CONTACTS
     };
 
     @Override
diff --git a/src/com/android/contacts/dialog/CallSubjectDialog.java b/src/com/android/contacts/dialog/CallSubjectDialog.java
index 036a0f3..ffce0f5 100644
--- a/src/com/android/contacts/dialog/CallSubjectDialog.java
+++ b/src/com/android/contacts/dialog/CallSubjectDialog.java
@@ -274,6 +274,7 @@
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
+        getWindow().setHideOverlayWindows(true);
         mAnimationDuration = getResources().getInteger(R.integer.call_subject_animation_duration);
         mPrefs = PreferenceManager.getDefaultSharedPreferences(this);
         mPhotoSize = getResources().getDimensionPixelSize(
diff --git a/src/com/android/contacts/editor/ContactEditorFragment.java b/src/com/android/contacts/editor/ContactEditorFragment.java
index ce4b9bc..52c20e6 100755
--- a/src/com/android/contacts/editor/ContactEditorFragment.java
+++ b/src/com/android/contacts/editor/ContactEditorFragment.java
@@ -98,6 +98,7 @@
 import com.google.common.collect.Lists;
 
 import java.io.FileNotFoundException;
+import java.util.Arrays;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashSet;
@@ -132,11 +133,10 @@
     private static final String KEY_PHOTO_RAW_CONTACT_ID = "photo_raw_contact_id";
     private static final String KEY_UPDATED_PHOTOS = "updated_photos";
 
-    private static final List<String> VALID_INTENT_ACTIONS = new ArrayList<String>() {{
-        add(Intent.ACTION_EDIT);
-        add(Intent.ACTION_INSERT);
-        add(ContactEditorActivity.ACTION_SAVE_COMPLETED);
-    }};
+    private static final List<String> VALID_INTENT_ACTIONS = Arrays.asList(
+            Intent.ACTION_EDIT,
+            Intent.ACTION_INSERT,
+            ContactEditorActivity.ACTION_SAVE_COMPLETED);
 
     private static final String KEY_ACTION = "action";
     private static final String KEY_URI = "uri";
diff --git a/src/com/android/contacts/editor/SuggestionEditConfirmationDialogFragment.java b/src/com/android/contacts/editor/SuggestionEditConfirmationDialogFragment.java
index df22773..461a752 100644
--- a/src/com/android/contacts/editor/SuggestionEditConfirmationDialogFragment.java
+++ b/src/com/android/contacts/editor/SuggestionEditConfirmationDialogFragment.java
@@ -47,7 +47,7 @@
         return new AlertDialog.Builder(getActivity())
                 .setIconAttribute(android.R.attr.alertDialogIcon)
                 .setMessage(R.string.aggregation_suggestion_edit_dialog_message)
-                .setPositiveButton(android.R.string.yes,
+                .setPositiveButton(android.R.string.ok,
                         new DialogInterface.OnClickListener() {
                             @Override
                             public void onClick(DialogInterface dialog, int whichButton) {
@@ -61,7 +61,7 @@
                             }
                         }
                 )
-                .setNegativeButton(android.R.string.no, null)
+                .setNegativeButton(android.R.string.cancel, null)
                 .create();
     }
 }
diff --git a/src/com/android/contacts/group/GroupMembersFragment.java b/src/com/android/contacts/group/GroupMembersFragment.java
index 3b66739..b0369c7 100644
--- a/src/com/android/contacts/group/GroupMembersFragment.java
+++ b/src/com/android/contacts/group/GroupMembersFragment.java
@@ -90,7 +90,6 @@
 
     private static final int LOADER_GROUP_METADATA = 100;
     private static final int MSG_FAIL_TO_LOAD = 1;
-    private static final int RESULT_GROUP_ADD_MEMBER = 100;
 
     /** Filters out duplicate contacts. */
     private class FilterCursorWrapper extends CursorWrapper {
@@ -448,7 +447,7 @@
 
     private void startGroupAddMemberActivity() {
         startActivityForResult(GroupUtil.createPickMemberIntent(getContext(), mGroupMetaData,
-                getMemberContactIds()), RESULT_GROUP_ADD_MEMBER);
+                getMemberContactIds()), GroupUtil.RESULT_GROUP_ADD_MEMBER);
     }
 
     @Override
@@ -504,7 +503,7 @@
     @Override
     public void onActivityResult(int requestCode, int resultCode, Intent data) {
         if (resultCode != Activity.RESULT_OK || data == null
-                || requestCode != RESULT_GROUP_ADD_MEMBER) {
+                || requestCode != GroupUtil.RESULT_GROUP_ADD_MEMBER) {
             return;
         }
 
@@ -776,7 +775,7 @@
             @Override
             public void onClick(View v) {
                 startActivityForResult(GroupUtil.createPickMemberIntent(getContext(),
-                        mGroupMetaData, getMemberContactIds()), RESULT_GROUP_ADD_MEMBER);
+                        mGroupMetaData, getMemberContactIds()), GroupUtil.RESULT_GROUP_ADD_MEMBER);
             }
         });
         return view;
diff --git a/src/com/android/contacts/group/GroupUtil.java b/src/com/android/contacts/group/GroupUtil.java
index dae4f4e..17998f8 100644
--- a/src/com/android/contacts/group/GroupUtil.java
+++ b/src/com/android/contacts/group/GroupUtil.java
@@ -58,7 +58,8 @@
     public static final String ACTION_SWITCH_GROUP = "switchGroup";
     public static final String ACTION_UPDATE_GROUP = "updateGroup";
 
-    public static final int RESULT_SEND_TO_SELECTION = 100;
+    public static final int RESULT_GROUP_ADD_MEMBER = 100;
+    public static final int RESULT_SEND_TO_SELECTION = 200;
 
     // System IDs of FFC groups in Google accounts
     private static final Set<String> FFC_GROUPS =
diff --git a/src/com/android/contacts/list/CustomContactListFilterActivity.java b/src/com/android/contacts/list/CustomContactListFilterActivity.java
index 425ee7e..5bc3c35 100644
--- a/src/com/android/contacts/list/CustomContactListFilterActivity.java
+++ b/src/com/android/contacts/list/CustomContactListFilterActivity.java
@@ -982,8 +982,8 @@
         public Dialog onCreateDialog(Bundle savedInstanceState) {
             return new AlertDialog.Builder(getActivity(), getTheme())
                     .setMessage(R.string.leave_customize_confirmation_dialog_message)
-                    .setNegativeButton(android.R.string.no, null)
-                    .setPositiveButton(android.R.string.yes, this)
+                    .setNegativeButton(android.R.string.cancel, null)
+                    .setPositiveButton(android.R.string.ok, this)
                     .create();
         }
 
diff --git a/src/com/android/contacts/model/SimContact.java b/src/com/android/contacts/model/SimContact.java
index 820e346..ee0e6dc 100644
--- a/src/com/android/contacts/model/SimContact.java
+++ b/src/com/android/contacts/model/SimContact.java
@@ -172,11 +172,7 @@
 
     @Override
     public int hashCode() {
-        int result = (int) (mRecordNumber ^ (mRecordNumber >>> 32));
-        result = 31 * result + (mName != null ? mName.hashCode() : 0);
-        result = 31 * result + (mPhone != null ? mPhone.hashCode() : 0);
-        result = 31 * result + Arrays.hashCode(mEmails);
-        return result;
+        return Objects.hash(mRecordNumber, mName, mPhone, Arrays.hashCode(mEmails));
     }
 
     @Override
diff --git a/src/com/android/contacts/model/dataitem/ImDataItem.java b/src/com/android/contacts/model/dataitem/ImDataItem.java
index a0e087c..a142585 100644
--- a/src/com/android/contacts/model/dataitem/ImDataItem.java
+++ b/src/com/android/contacts/model/dataitem/ImDataItem.java
@@ -23,6 +23,8 @@
 import android.provider.ContactsContract.CommonDataKinds.Im;
 import android.text.TextUtils;
 
+import java.util.Objects;
+
 /**
  * Represents an IM data item, wrapping the columns in
  * {@link ContactsContract.CommonDataKinds.Im}.
@@ -101,7 +103,7 @@
                 return that.getProtocol() == Im.PROTOCOL_CUSTOM;
             }
             return true;
-        } else if (getProtocol() != that.getProtocol()) {
+        } else if (!Objects.equals(getProtocol(), that.getProtocol())) {
             return false;
         } else if (getProtocol() == Im.PROTOCOL_CUSTOM &&
                 !TextUtils.equals(getCustomProtocol(), that.getCustomProtocol())) {
diff --git a/src/com/android/contacts/quickcontact/QuickContactActivity.java b/src/com/android/contacts/quickcontact/QuickContactActivity.java
index 5b144e1..35fc2cc 100644
--- a/src/com/android/contacts/quickcontact/QuickContactActivity.java
+++ b/src/com/android/contacts/quickcontact/QuickContactActivity.java
@@ -104,7 +104,6 @@
 import com.android.contacts.ContactsActivity;
 import com.android.contacts.ContactsUtils;
 import com.android.contacts.DynamicShortcuts;
-import com.android.contacts.NfcHandler;
 import com.android.contacts.R;
 import com.android.contacts.ShortcutIntentBuilder;
 import com.android.contacts.ShortcutIntentBuilder.OnShortcutIntentCreatedListener;
@@ -990,7 +989,6 @@
             }
         };
         mEntriesAndActionsTask.execute();
-        NfcHandler.register(this, mContactData.getLookupUri());
     }
 
     private void bindDataToCards(Cp2DataCardModel cp2DataCardModel) {
@@ -1486,6 +1484,11 @@
             final String dataString = event.buildDataStringForDisplay(context, kind);
             final Calendar cal = DateUtils.parseDate(dataString, false);
             if (cal != null) {
+                final int eventType = event.getContentValues().getAsInteger(Event.TYPE);
+                if (eventType == Event.TYPE_ANNIVERSARY || eventType == Event.TYPE_BIRTHDAY) {
+                    // setting the year to 0 makes a click open the coming birthday
+                    cal.set(Calendar.YEAR, 0);
+                }
                 final Date nextAnniversary =
                         DateUtils.getNextAnnualDate(cal);
                 final Uri.Builder builder = CalendarContract.CONTENT_URI.buildUpon();
diff --git a/src/com/android/contacts/vcard/ImportVCardActivity.java b/src/com/android/contacts/vcard/ImportVCardActivity.java
index 38367c4..6ddb8fa 100644
--- a/src/com/android/contacts/vcard/ImportVCardActivity.java
+++ b/src/com/android/contacts/vcard/ImportVCardActivity.java
@@ -546,8 +546,7 @@
     protected void onCreate(Bundle bundle) {
         super.onCreate(bundle);
 
-        getWindow().addSystemFlags(android.view.WindowManager.LayoutParams
-            .SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS);
+        getWindow().setHideOverlayWindows(true);
 
         Uri sourceUri = getIntent().getData();
 
diff --git a/src/com/android/contacts/vcard/ImportVCardDialogFragment.java b/src/com/android/contacts/vcard/ImportVCardDialogFragment.java
index 521a610..7ad67d1 100644
--- a/src/com/android/contacts/vcard/ImportVCardDialogFragment.java
+++ b/src/com/android/contacts/vcard/ImportVCardDialogFragment.java
@@ -68,7 +68,7 @@
         return new AlertDialog.Builder(getActivity())
                 .setIconAttribute(android.R.attr.alertDialogIcon)
                 .setMessage(R.string.import_from_vcf_file_confirmation_message)
-                .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
+                .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
                     @Override
                     public void onClick(DialogInterface dialog, int whichButton) {
                         final Listener listener = (Listener) getActivity();
@@ -77,7 +77,7 @@
                         }
                     }
                 })
-                .setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() {
+                .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
                     @Override
                     public void onClick(DialogInterface dialog, int whichButton) {
                         final Listener listener = (Listener) getActivity();
diff --git a/src/com/android/contacts/vcard/SelectAccountActivity.java b/src/com/android/contacts/vcard/SelectAccountActivity.java
index eb13e50..8ead5fa 100644
--- a/src/com/android/contacts/vcard/SelectAccountActivity.java
+++ b/src/com/android/contacts/vcard/SelectAccountActivity.java
@@ -52,8 +52,7 @@
     protected void onCreate(Bundle bundle) {
         super.onCreate(bundle);
 
-        getWindow().addSystemFlags(android.view.WindowManager.LayoutParams
-            .SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS);
+        getWindow().setHideOverlayWindows(true);
 
         // There's three possibilities:
         // - more than one accounts -> ask the user
diff --git a/src/com/android/contacts/vcard/VCardService.java b/src/com/android/contacts/vcard/VCardService.java
index 075d6bb..5e647c4 100644
--- a/src/com/android/contacts/vcard/VCardService.java
+++ b/src/com/android/contacts/vcard/VCardService.java
@@ -16,6 +16,7 @@
 package com.android.contacts.vcard;
 
 import android.app.Notification;
+import android.app.NotificationManager;
 import android.app.Service;
 import android.content.Intent;
 import android.media.MediaScannerConnection;
@@ -129,6 +130,10 @@
                     VCardCommonArguments.ARG_CALLING_ACTIVITY);
         } else {
             mCallingActivity = null;
+            // The intent will be null if the service is restarted after the app
+            // is killed but the notification may still exist so remove it.
+            NotificationManager nm = getSystemService(NotificationManager.class);
+            nm.cancelAll();
         }
         return START_STICKY;
     }
@@ -255,6 +260,9 @@
                 }
             }
         } else {
+            // In case notification of import is still present and app is killed remove it
+            NotificationManager nm = getSystemService(NotificationManager.class);
+            nm.cancel(NotificationImportExportListener.DEFAULT_NOTIFICATION_TAG, jobId);
             Log.w(LOG_TAG, String.format("Tried to remove unknown job (id: %d)", jobId));
         }
         stopServiceIfAppropriate();