Merge change I652a8d7b into eclair
* changes:
Fix ImportVCardActivity so that NPE will never occur during import.
diff --git a/src/com/android/contacts/ImportVCardActivity.java b/src/com/android/contacts/ImportVCardActivity.java
index 1dacd62..8fd9c0d 100644
--- a/src/com/android/contacts/ImportVCardActivity.java
+++ b/src/com/android/contacts/ImportVCardActivity.java
@@ -101,6 +101,7 @@
private ProgressDialog mProgressDialogForScanVCard;
private List<VCardFile> mAllVCardFileList;
+ private VCardScanThread mVCardScanThread;
private VCardReadThread mVCardReadThread;
private ProgressDialog mProgressDialogForReadVCard;
@@ -602,7 +603,6 @@
mHandler.post(new Runnable() {
public void run() {
mVCardReadThread = new VCardReadThread(selectedVCardFileList);
- mVCardReadThread.start();
showDialog(R.id.dialog_reading_vcard);
}
});
@@ -612,7 +612,6 @@
mHandler.post(new Runnable() {
public void run() {
mVCardReadThread = new VCardReadThread(canonicalPath);
- mVCardReadThread.start();
showDialog(R.id.dialog_reading_vcard);
}
});
@@ -683,6 +682,7 @@
mProgressDialogForReadVCard.setMessage(message);
mProgressDialogForReadVCard.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
mProgressDialogForReadVCard.setOnCancelListener(mVCardReadThread);
+ mVCardReadThread.start();
}
return mProgressDialogForReadVCard;
}
@@ -709,14 +709,15 @@
protected Dialog onCreateDialog(int resId) {
switch (resId) {
case R.id.dialog_searching_vcard: {
- if (mProgressDialogForScanVCard != null) {
- return mProgressDialogForScanVCard;
- } else {
- // It may happen in the complicated situation.
- // TODO: Investigate on this.
- Log.e(LOG_TAG, "Cached ProgressDialog object is null, which should not happen.");
- break;
+ if (mProgressDialogForScanVCard == null) {
+ String title = getString(R.string.searching_vcard_title);
+ String message = getString(R.string.searching_vcard_message);
+ mProgressDialogForScanVCard =
+ ProgressDialog.show(this, title, message, true, false);
+ mProgressDialogForScanVCard.setOnCancelListener(mVCardScanThread);
+ mVCardScanThread.start();
}
+ return mProgressDialogForScanVCard;
}
case R.id.dialog_sdcard_not_found: {
AlertDialog.Builder builder = new AlertDialog.Builder(this)
@@ -747,7 +748,6 @@
return getVCardFileSelectDialog(false);
}
case R.id.dialog_reading_vcard: {
- // mVCardReadThread.start() must be called before.
return getReadingVCardDialog();
}
case R.id.dialog_io_exception: {
@@ -821,12 +821,7 @@
showDialog(R.id.dialog_sdcard_not_found);
} else {
File sdcardDirectory = new File("/sdcard");
- String title = getString(R.string.searching_vcard_title);
- String message = getString(R.string.searching_vcard_message);
- mProgressDialogForScanVCard = ProgressDialog.show(this, title, message, true, false);
- VCardScanThread thread = new VCardScanThread(sdcardDirectory);
- mProgressDialogForScanVCard.setOnCancelListener(thread);
- thread.start();
+ mVCardScanThread = new VCardScanThread(sdcardDirectory);
showDialog(R.id.dialog_searching_vcard);
}
}