diff --git a/src/com/android/providers/contacts/AbstractContactsProvider.java b/src/com/android/providers/contacts/AbstractContactsProvider.java
index 226652e..6f84df5 100644
--- a/src/com/android/providers/contacts/AbstractContactsProvider.java
+++ b/src/com/android/providers/contacts/AbstractContactsProvider.java
@@ -278,11 +278,15 @@
         }
         ContactsTransaction transaction = mTransactionHolder.get();
         if (transaction != null && (!transaction.isBatch() || callerIsBatch)) {
+            boolean notify = false;
             try {
                 if (transaction.isDirty()) {
-                    notifyChange();
+                    notify = true;
                 }
                 transaction.finish(callerIsBatch);
+                if (notify) {
+                    notifyChange();
+                }
             } finally {
                 // No matter what, make sure we clear out the thread-local transaction reference.
                 mTransactionHolder.set(null);
diff --git a/src/com/android/providers/contacts/ContactLocaleUtils.java b/src/com/android/providers/contacts/ContactLocaleUtils.java
index 4ca9118..dd399bc 100644
--- a/src/com/android/providers/contacts/ContactLocaleUtils.java
+++ b/src/com/android/providers/contacts/ContactLocaleUtils.java
@@ -16,6 +16,9 @@
 
 package com.android.providers.contacts;
 
+import android.icu.text.AlphabeticIndex;
+import android.icu.text.AlphabeticIndex.ImmutableIndex;
+import android.icu.text.Transliterator;
 import android.provider.ContactsContract.FullNameStyle;
 import android.provider.ContactsContract.PhoneticNameStyle;
 import android.text.TextUtils;
@@ -36,9 +39,6 @@
 import java.util.Map;
 import java.util.Set;
 
-import libcore.icu.AlphabeticIndex;
-import libcore.icu.AlphabeticIndex.ImmutableIndex;
-import libcore.icu.Transliterator;
 
 /**
  * This utility class provides specialized handling for locale specific
@@ -103,7 +103,7 @@
                 .addLabels(LOCALE_GREEK)
                 .addLabels(LOCALE_UKRAINIAN)
                 .addLabels(LOCALE_SERBIAN)
-                .getImmutableIndex();
+                .buildImmutableIndex();
             mAlphabeticIndexBucketCount = mAlphabeticIndex.getBucketCount();
             mNumberBucketIndex = mAlphabeticIndexBucketCount - 1;
         }
@@ -185,7 +185,7 @@
             } else if (bucketIndex > mNumberBucketIndex) {
                 --bucketIndex;
             }
-            return mAlphabeticIndex.getBucketLabel(bucketIndex);
+            return mAlphabeticIndex.getBucket(bucketIndex).getLabel();
         }
 
         @SuppressWarnings("unused")
@@ -318,9 +318,9 @@
                     mInitializedTransliterator = true;
                     Transliterator t = null;
                     try {
-                        t = new Transliterator("Hiragana-Latin; Katakana-Latin;"
+                        t = Transliterator.getInstance("Hiragana-Latin; Katakana-Latin;"
                                 + " Latin-Ascii");
-                    } catch (RuntimeException e) {
+                    } catch (IllegalArgumentException e) {
                         Log.w(TAG, "Hiragana/Katakana-Latin transliterator data"
                                 + " is missing");
                     }
diff --git a/src/com/android/providers/contacts/ContactLookupKey.java b/src/com/android/providers/contacts/ContactLookupKey.java
index ae96d50..be718a1 100644
--- a/src/com/android/providers/contacts/ContactLookupKey.java
+++ b/src/com/android/providers/contacts/ContactLookupKey.java
@@ -119,7 +119,7 @@
             return list;
         }
 
-        String string = Uri.decode(lookupKey);
+        String string = lookupKey;
         int offset = 0;
         int length = string.length();
         int hashCode = 0;
diff --git a/src/com/android/providers/contacts/ContactsProvider2.java b/src/com/android/providers/contacts/ContactsProvider2.java
index 7dc7e7e..13a5446 100644
--- a/src/com/android/providers/contacts/ContactsProvider2.java
+++ b/src/com/android/providers/contacts/ContactsProvider2.java
@@ -5323,7 +5323,7 @@
             }
 
             case CONTACTS_AS_VCARD: {
-                final String lookupKey = Uri.encode(uri.getPathSegments().get(2));
+                final String lookupKey = uri.getPathSegments().get(2);
                 long contactId = lookupContactIdByLookupKey(db, lookupKey);
                 qb.setTables(Views.CONTACTS);
                 qb.setProjectionMap(sContactsVCardProjectionMap);
@@ -8153,7 +8153,8 @@
                 // SQLite has limits on how many parameters can be used
                 // so the IDs are concatenated to a query string here instead
                 int index = 0;
-                for (String lookupKey : lookupKeyList) {
+                for (final String encodedLookupKey : lookupKeyList) {
+                    final String lookupKey = Uri.decode(encodedLookupKey);
                     inBuilder.append(index == 0 ? "(" : ",");
 
                     // TODO: Figure out what to do if the profile contact is in the list.
diff --git a/src/com/android/providers/contacts/HanziToPinyin.java b/src/com/android/providers/contacts/HanziToPinyin.java
index d140439..175d766 100644
--- a/src/com/android/providers/contacts/HanziToPinyin.java
+++ b/src/com/android/providers/contacts/HanziToPinyin.java
@@ -16,13 +16,13 @@
 
 package com.android.providers.contacts;
 
+import android.icu.text.Transliterator;
 import android.text.TextUtils;
 import android.util.Log;
 
 import java.util.ArrayList;
 import java.util.Locale;
 
-import libcore.icu.Transliterator;
 
 /**
  * An object to convert Chinese character to its corresponding pinyin string.
@@ -73,9 +73,10 @@
 
     private HanziToPinyin() {
         try {
-            mPinyinTransliterator = new Transliterator("Han-Latin/Names; Latin-Ascii; Any-Upper");
-            mAsciiTransliterator = new Transliterator("Latin-Ascii");
-        } catch (RuntimeException e) {
+            mPinyinTransliterator = Transliterator.getInstance(
+                    "Han-Latin/Names; Latin-Ascii; Any-Upper");
+            mAsciiTransliterator = Transliterator.getInstance("Latin-Ascii");
+        } catch (IllegalArgumentException e) {
             Log.w(TAG, "Han-Latin/Names transliterator data is missing,"
                   + " HanziToPinyin is disabled");
         }
diff --git a/src/com/android/providers/contacts/debug/DataExporter.java b/src/com/android/providers/contacts/debug/DataExporter.java
index c7c7dea..3ea49bd 100644
--- a/src/com/android/providers/contacts/debug/DataExporter.java
+++ b/src/com/android/providers/contacts/debug/DataExporter.java
@@ -17,7 +17,6 @@
 package com.android.providers.contacts.debug;
 
 import com.android.providers.contacts.util.Hex;
-import com.google.common.io.Closeables;
 
 import android.content.Context;
 import android.net.Uri;
@@ -62,12 +61,10 @@
         Log.i(TAG, "Dump started...");
 
         ensureOutputDirectory(context);
-        final ZipOutputStream os = new ZipOutputStream(new FileOutputStream(outFile));
-        os.setLevel(Deflater.BEST_COMPRESSION);
-        try {
+        
+        try (ZipOutputStream os = new ZipOutputStream(new FileOutputStream(outFile))) {
+            os.setLevel(Deflater.BEST_COMPRESSION);
             addDirectory(context, os, context.getFilesDir().getParentFile(), "contacts-files");
-        } finally {
-            Closeables.closeQuietly(os);
         }
         Log.i(TAG, "Dump finished.");
         return DumpFileProvider.AUTHORITY_URI.buildUpon().appendPath(fileName).build();
diff --git a/tests/src/com/android/providers/contacts/ContactLocaleUtilsTest.java b/tests/src/com/android/providers/contacts/ContactLocaleUtilsTest.java
index ec339eb..1913a2d 100644
--- a/tests/src/com/android/providers/contacts/ContactLocaleUtilsTest.java
+++ b/tests/src/com/android/providers/contacts/ContactLocaleUtilsTest.java
@@ -56,7 +56,7 @@
     private static final String[] LATIN_NAME_KEY_2 = {
         "John Paul Jones", "Paul Jones", "Jones", "JPJ", "PJ", "J"};
     private static final String[] LABELS_EN_US = {
-        "", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M",
+        "\u2026", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M",
         "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z",
         "#", ""};
     private static final String[] LABELS_JA_JP = {
@@ -84,7 +84,7 @@
         "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z",
         "#", ""};
     private static final String[] LABELS_AR = {
-        "", "\u0627", "\u0628", "\u062a", "\u062b", "\u062c", "\u062d",
+        "\u2026", "\u0627", "\u0628", "\u062a", "\u062b", "\u062c", "\u062d",
         "\u062e", "\u062f", "\u0630", "\u0631", "\u0632", "\u0633", "\u0634",
         "\u0635", "\u0636", "\u0637", "\u0638", "\u0639", "\u063a", "\u0641",
         "\u0642", "\u0643", "\u0644", "\u0645", "\u0646", "\u0647", "\u0648",
@@ -153,7 +153,7 @@
         assertEquals("#", getLabel(PHONE_NUMBER_1));
         assertEquals("#", getLabel(PHONE_NUMBER_2));
         assertEquals("J", getLabel(LATIN_NAME));
-        assertEquals("", getLabel(CHINESE_NAME));
+        assertEquals("\u2026", getLabel(CHINESE_NAME));
         assertEquals("D", getLabel(CHINESE_LATIN_MIX_NAME_1));
         assertEquals("B", getLabel("Bob Smith"));
 
@@ -164,6 +164,8 @@
             assertEquals("\u0408", getLabel(SERBIAN_NAME));
         }
         if (hasUkrainianCollator) {
+            // Updated in CLDR 27/ICU 55:
+            // http://cldr.unicode.org/index/downloads/cldr-27#TOC-Changes-to-Collation
             assertEquals("\u0406", getLabel(UKRAINIAN_NAME));
         }
 
@@ -335,12 +337,8 @@
         }
 
         ContactLocaleUtils.setLocale(LOCALE_UKRAINIAN);
-        assertEquals("\u0406", getLabel(UKRAINIAN_NAME));
-        // ICU 55 has a bug whereby these letters have buckets created only if
-        // Ukrainian is the primary language. Once this is fixed also test
-        // these labels when in English locale.
-        assertEquals("\u0407", getLabel(UKRAINIAN_NAME_2));
-        assertEquals("\u0490", getLabel(UKRAINIAN_NAME_3));
+        assertEquals("\u0407", getLabel(UKRAINIAN_NAME));
+        assertEquals("\u0490", getLabel(UKRAINIAN_NAME_2));
         assertEquals("B", getLabel("Bob Smith"));
     }
 
