Treat NPE: ignore directories which return null toward listFiles().

Bug: 2460741
diff --git a/src/com/android/contacts/ImportVCardActivity.java b/src/com/android/contacts/ImportVCardActivity.java
index d785736..474748c 100644
--- a/src/com/android/contacts/ImportVCardActivity.java
+++ b/src/com/android/contacts/ImportVCardActivity.java
@@ -27,15 +27,17 @@
 import android.content.Intent;
 import android.content.DialogInterface.OnCancelListener;
 import android.content.DialogInterface.OnClickListener;
+import android.net.Uri;
 import android.os.Bundle;
+import android.os.Environment;
 import android.os.Handler;
 import android.os.PowerManager;
-import android.pim.vcard.VCardEntryCommitter;
-import android.pim.vcard.VCardInterpreter;
-import android.pim.vcard.VCardInterpreterCollection;
 import android.pim.vcard.VCardConfig;
+import android.pim.vcard.VCardEntryCommitter;
 import android.pim.vcard.VCardEntryConstructor;
 import android.pim.vcard.VCardEntryCounter;
+import android.pim.vcard.VCardInterpreter;
+import android.pim.vcard.VCardInterpreterCollection;
 import android.pim.vcard.VCardParser_V21;
 import android.pim.vcard.VCardParser_V30;
 import android.pim.vcard.VCardSourceDetector;
@@ -48,7 +50,6 @@
 import android.text.TextUtils;
 import android.text.style.RelativeSizeSpan;
 import android.util.Log;
-import android.net.Uri;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -577,6 +578,12 @@
                 throw new CanceledException();
             }
 
+            // 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 + ")");
+                return;
+            }
             for (File file : directory.listFiles()) {
                 if (mCanceled) {
                     throw new CanceledException();
@@ -727,6 +734,7 @@
             startImportVCardFromSdCard();
         }
     }
+
     @Override
     protected Dialog onCreateDialog(int resId) {
         switch (resId) {
@@ -848,12 +856,12 @@
      * This method should be called from a thread with a looper (like Activity).
      */
     public void startImportVCardFromSdCard() {
-        File file = new File("/sdcard");
+        // TODO: should use getExternalStorageState().
+        final File file = Environment.getExternalStorageDirectory();
         if (!file.exists() || !file.isDirectory() || !file.canRead()) {
             showDialog(R.id.dialog_sdcard_not_found);
         } else {
-            File sdcardDirectory = new File("/sdcard");
-            mVCardScanThread = new VCardScanThread(sdcardDirectory);
+            mVCardScanThread = new VCardScanThread(file);
             showDialog(R.id.dialog_searching_vcard);
         }
     }