diff --git a/src/com/android/contacts/common/vcard/ExportProcessor.java b/src/com/android/contacts/common/vcard/ExportProcessor.java
index 791f2f9..d7b2c0f 100644
--- a/src/com/android/contacts/common/vcard/ExportProcessor.java
+++ b/src/com/android/contacts/common/vcard/ExportProcessor.java
@@ -197,9 +197,10 @@
             mService.updateMediaScanner(request.destUri.getPath());
 
             successful = true;
-            final String filename = uri.getLastPathSegment();
-            final String title = mService.getString(R.string.exporting_vcard_finished_title,
-                    filename);
+            final String filename = ExportVCardActivity.getOpenableUriDisplayName(mService, uri);
+            final String title = filename == null
+                    ? mService.getString(R.string.exporting_vcard_finished_title_fallback)
+                    : mService.getString(R.string.exporting_vcard_finished_title, filename);
             doFinishNotification(title, null);
         } finally {
             if (composer != null) {
diff --git a/src/com/android/contacts/common/vcard/ExportVCardActivity.java b/src/com/android/contacts/common/vcard/ExportVCardActivity.java
index 172f2f5..9ee02fe 100644
--- a/src/com/android/contacts/common/vcard/ExportVCardActivity.java
+++ b/src/com/android/contacts/common/vcard/ExportVCardActivity.java
@@ -23,6 +23,7 @@
 import android.content.DialogInterface;
 import android.content.Intent;
 import android.content.ServiceConnection;
+import android.database.Cursor;
 import android.net.Uri;
 import android.os.Bundle;
 import android.os.Environment;
@@ -30,6 +31,7 @@
 import android.os.IBinder;
 import android.os.Message;
 import android.os.Messenger;
+import android.provider.OpenableColumns;
 import android.text.BidiFormatter;
 import android.text.TextDirectionHeuristics;
 import android.text.TextUtils;
@@ -207,6 +209,23 @@
         super.unbindService(conn);
     }
 
+    /**
+     * Returns the display name for the given openable Uri or null if it could not be resolved. */
+    static String getOpenableUriDisplayName(Context context, Uri uri) {
+        if (uri == null) return null;
+        final Cursor cursor = context.getContentResolver().query(uri, null, null, null, null);
+        try {
+            if (cursor != null && cursor.moveToFirst()) {
+                return cursor.getString(cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME));
+            }
+        } finally {
+            if (cursor != null)  {
+                cursor.close();
+            }
+        }
+        return null;
+    }
+
     private synchronized void unbindAndFinish() {
         if (mConnected) {
             unbindService(this);
diff --git a/src/com/android/contacts/common/vcard/NotificationImportExportListener.java b/src/com/android/contacts/common/vcard/NotificationImportExportListener.java
index 4b1f9e5..f1a9fab 100644
--- a/src/com/android/contacts/common/vcard/NotificationImportExportListener.java
+++ b/src/com/android/contacts/common/vcard/NotificationImportExportListener.java
@@ -157,9 +157,11 @@
 
     @Override
     public void onExportProcessed(ExportRequest request, int jobId) {
-        final String displayName = request.destUri.getLastPathSegment();
-        final String message = mContext.getString(R.string.vcard_export_will_start_message,
-                displayName);
+        final String displayName = ExportVCardActivity.getOpenableUriDisplayName(mContext,
+                request.destUri);
+        final String message = displayName == null
+                ? mContext.getString(R.string.vcard_export_will_start_message_fallback)
+                : mContext.getString(R.string.vcard_export_will_start_message, displayName);
 
         mHandler.obtainMessage(0, message).sendToTarget();
         final Notification notification =
