diff --git a/res/layout/status_bar_ongoing_event_progress_bar.xml b/res/layout/status_bar_ongoing_event_progress_bar.xml
index 5eb4e9d..3c7530a 100644
--- a/res/layout/status_bar_ongoing_event_progress_bar.xml
+++ b/res/layout/status_bar_ongoing_event_progress_bar.xml
@@ -37,9 +37,8 @@
             android:orientation="vertical"
             android:paddingTop="8dp"
             android:focusable="true"
-            android:clickable="true"
             >
-            <com.android.contacts.vcard.AnimatedImageView
+            <ImageView
                 android:id="@+id/status_icon"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
@@ -52,59 +51,44 @@
                 android:textColor="#ff000000"
                 android:singleLine="true"
                 android:textSize="14sp"
-                android:layout_gravity="center_horizontal"
-                />
+                android:layout_gravity="center_horizontal" />
         </LinearLayout>
 
         <RelativeLayout
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:orientation="vertical"
-            android:focusable="true"
-            android:clickable="true"
-            >
+            android:focusable="true">
             <LinearLayout
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:orientation="horizontal"
                 android:focusable="true"
-                android:clickable="true"
                 android:layout_alignParentTop="true"
-                android:paddingTop="10dp"
-                >
-                <TextView android:id="@+id/status_title"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:singleLine="true"
-                    android:textSize="18sp"
-                    android:textColor="#ff000000"
-                    android:paddingLeft="2dp"
-                    />
+                android:paddingTop="10dp">
                 <TextView android:id="@+id/status_description"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:textColor="#ff000000"
                     android:singleLine="true"
-                    android:textSize="14sp"
-                    android:paddingLeft="5dp"
-                    />
+                    android:textSize="18sp"
+                    android:paddingLeft="5dp" />
             </LinearLayout>
-            <ProgressBar android:id="@+id/status_progress_bar"
-                style="?android:attr/progressBarStyleHorizontal"
-                android:layout_width="match_parent" 
-                android:layout_height="wrap_content"
-                android:layout_alignParentBottom="true"
-                android:paddingBottom="8dp"
-                android:paddingRight="25dp"
-                />
+            <ProgressBar
+               android:id="@+id/status_progress_bar"
+               style="?android:attr/progressBarStyleHorizontal"
+               android:layout_width="match_parent"
+               android:layout_height="wrap_content"
+               android:layout_alignParentBottom="true"
+               android:paddingBottom="8dp"
+               android:paddingRight="25dp" />
         </RelativeLayout>
     </LinearLayout>
-        
-    <com.android.contacts.vcard.AnimatedImageView
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:src="@android:drawable/divider_horizontal_bright"
-        />
 
+    <ImageView
+       android:layout_width="match_parent"
+       android:layout_height="wrap_content"
+       android:src="@android:drawable/divider_horizontal_bright"
+       />
 </LinearLayout>
 
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 100dcc4..5bdfdf8 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -755,11 +755,12 @@
     <!-- The message shown while importing vCard(s).
          First argument is current index of contacts to be imported.
          Second argument is the total number of contacts.
-         Third argument is the Uri which is being read. -->
-    <string name="progress_notifier_message"><xliff:g id="current_number">%s</xliff:g>/<xliff:g id="total_number">%s</xliff:g>: <xliff:g id="filename" example="foo.vcf">%s</xliff:g></string>
+         Third argument is the name of a contact which is being read. -->
+    <string name="progress_notifier_message">Importing <xliff:g id="current_number">%s</xliff:g>/<xliff:g id="total_number">%s</xliff:g>: <xliff:g id="name" example="Joe Due">%s</xliff:g></string>
 
-    <!-- Dialog title shown when reading vCard data -->
-    <string name="reading_vcard_title">Reading vCard(s)</string>
+    <!-- Description shown when importing vCard data.
+         The argument is the name of a contact which is being read. -->
+    <string name="importing_vcard_description">Importing <xliff:g id="name" example="Joe Due">%s</xliff:g></string>
 
     <!-- Dialog title shown when reading vCard data failed -->
     <string name="reading_vcard_failed_title">Failed to Read vCard data</string>
diff --git a/src/com/android/contacts/vcard/ImportProgressNotifier.java b/src/com/android/contacts/vcard/ImportProgressNotifier.java
index ad88f64..286bb43 100644
--- a/src/com/android/contacts/vcard/ImportProgressNotifier.java
+++ b/src/com/android/contacts/vcard/ImportProgressNotifier.java
@@ -20,6 +20,7 @@
 import android.app.PendingIntent;
 import android.content.Context;
 import android.content.Intent;
+import android.widget.RemoteViews;
 
 import com.android.contacts.R;
 import com.android.contacts.activities.ContactBrowserActivity;
@@ -56,24 +57,25 @@
         // - There's high probability where name comes soon after the beginning of entry, so
         //   we don't need to hurry to show something.
 
-        final String title = mContext.getString(R.string.reading_vcard_title);
 
-        String totalCountString;
+        final String totalCountString;
         synchronized (this) {
             totalCountString = String.valueOf(mTotalCount);
         }
-        final String description = mContext.getString(R.string.progress_notifier_message,
-                String.valueOf(mCurrentCount),
-                totalCountString,
-                contactStruct.getDisplayName());
+        final String tickerText =
+                mContext.getString(R.string.progress_notifier_message,
+                        String.valueOf(mCurrentCount),
+                        totalCountString,
+                        contactStruct.getDisplayName());
+
 
         final Context context = mContext.getApplicationContext();
 
-        /* TODO: fix this.
+        final String description = mContext.getString(R.string.importing_vcard_description,
+                contactStruct.getDisplayName());
         final RemoteViews remoteViews =
                 new RemoteViews(context.getPackageName(),
                 R.layout.status_bar_ongoing_event_progress_bar);
-        remoteViews.setTextViewText(R.id.status_title, title);
         remoteViews.setTextViewText(R.id.status_description, description);
         remoteViews.setProgressBar(R.id.status_progress_bar, mTotalCount, mCurrentCount,
                 mTotalCount == -1);
@@ -89,23 +91,17 @@
 
         final Notification notification = new Notification();
         notification.icon = android.R.drawable.stat_sys_download;
-        notification.tickerText = description;
+        notification.tickerText = tickerText;
+        notification.contentView = remoteViews;
         notification.flags |= Notification.FLAG_ONGOING_EVENT;
-        notification.tickerText = description;
-        notification.contentView = remoteViews;*/
-
-        final long when = System.currentTimeMillis();
-        final Notification notification = new Notification(
-                android.R.drawable.stat_sys_download,
-                description,
-                when);
 
         final PendingIntent pendingIntent =
                 PendingIntent.getActivity(context, 0,
                         new Intent(context, ContactBrowserActivity.class),
                         PendingIntent.FLAG_UPDATE_CURRENT);
 
-        notification.setLatestEventInfo(context, title, description, pendingIntent);
+        notification.contentIntent = pendingIntent;
+        // notification.setLatestEventInfo(context, title, description, pendingIntent);
         mNotificationManager.notify(VCardService.IMPORT_NOTIFICATION_ID, notification);
     }
 
diff --git a/src/com/android/contacts/vcard/ImportVCardActivity.java b/src/com/android/contacts/vcard/ImportVCardActivity.java
index b2c8d1a..6374af5 100644
--- a/src/com/android/contacts/vcard/ImportVCardActivity.java
+++ b/src/com/android/contacts/vcard/ImportVCardActivity.java
@@ -99,6 +99,8 @@
     /* package */ final static int VCARD_VERSION_V21 = 1;
     /* package */ final static int VCARD_VERSION_V30 = 2;
 
+    private static final String SECURE_DIRECTORY_NAME = ".android_secure";
+
     final static String CACHED_URIS = "cached_uris";
 
     private AccountSelectionUtil.AccountSelectedListener mAccountSelectionListener;
@@ -150,6 +152,10 @@
                         // "manually" call unbindService() here.
                         unbindService(this);
                         mDisconnectAndFinishDone = true;
+                        finish();
+                    } else {
+                        // If not connected, finish() must be called when connected, as
+                        // We cann not call finish() now.
                     }
                 }
             }
@@ -669,7 +675,12 @@
             // e.g. secured directory may return null toward listFiles().
             final File[] files = directory.listFiles();
             if (files == null) {
-                Log.w(LOG_TAG, "listFiles() returned null (directory: " + directory + ")");
+                final String currentDirectoryPath = directory.getCanonicalPath();
+                final String secureDirectoryPath =
+                        mRootDirectory.getCanonicalPath().concat(SECURE_DIRECTORY_NAME);
+                if (!TextUtils.equals(currentDirectoryPath, secureDirectoryPath)) {
+                    Log.w(LOG_TAG, "listFiles() returned null (directory: " + directory + ")");
+                }
                 return;
             }
             for (File file : directory.listFiles()) {
@@ -952,7 +963,7 @@
                     Log.e(LOG_TAG, "Error message is null while it must not.");
                     message = getString(R.string.fail_reason_unknown);
                 }
-                AlertDialog.Builder builder = new AlertDialog.Builder(this)
+                final AlertDialog.Builder builder = new AlertDialog.Builder(this)
                     .setTitle(getString(R.string.reading_vcard_failed_title))
                     .setIcon(android.R.drawable.ic_dialog_alert)
                     .setMessage(message)
