diff options
author | Yorke Lee <yorkelee@google.com> | 2013-12-11 15:54:38 -0800 |
---|---|---|
committer | Yorke Lee <yorkelee@google.com> | 2013-12-11 15:54:38 -0800 |
commit | 1ef2b4a896e301b9e81aee073e58e35216128b2e (patch) | |
tree | ea51cb210d670b96438af9606e19a84e20297685 | |
parent | 0140cf8eba4d904d5316a36045ad0333447f02fe (diff) |
Fix NPE in DialerDatabaseHelper for null phone numbers
Bug: 12006585
Change-Id: Iaed732806cbb8fb0301596162102e81ab8ec6024
-rw-r--r-- | src/com/android/dialer/database/DialerDatabaseHelper.java | 29 |
1 files changed, 23 insertions, 6 deletions
diff --git a/src/com/android/dialer/database/DialerDatabaseHelper.java b/src/com/android/dialer/database/DialerDatabaseHelper.java index 555c1715c..646104b8b 100644 --- a/src/com/android/dialer/database/DialerDatabaseHelper.java +++ b/src/com/android/dialer/database/DialerDatabaseHelper.java @@ -628,10 +628,26 @@ public class DialerDatabaseHelper extends SQLiteOpenHelper { updatedContactCursor.moveToPosition(-1); while (updatedContactCursor.moveToNext()) { - insert.bindLong(1, updatedContactCursor.getLong(PhoneQuery.PHONE_ID)); - insert.bindString(2, updatedContactCursor.getString(PhoneQuery.PHONE_NUMBER)); - insert.bindLong(3, updatedContactCursor.getLong(PhoneQuery.PHONE_CONTACT_ID)); - insert.bindString(4, updatedContactCursor.getString(PhoneQuery.PHONE_LOOKUP_KEY)); + insert.clearBindings(); + + // Handle string columns which can possibly be null first. In the case of certain + // null columns (due to malformed rows possibly inserted by third-party apps + // or sync adapters), skip the phone number row. + final String number = updatedContactCursor.getString(PhoneQuery.PHONE_NUMBER); + if (TextUtils.isEmpty(number)) { + continue; + } else { + insert.bindString(2, number); + } + + final String lookupKey = updatedContactCursor.getString( + PhoneQuery.PHONE_LOOKUP_KEY); + if (TextUtils.isEmpty(lookupKey)) { + continue; + } else { + insert.bindString(4, lookupKey); + } + final String displayName = updatedContactCursor.getString( PhoneQuery.PHONE_DISPLAY_NAME); if (displayName == null) { @@ -639,6 +655,9 @@ public class DialerDatabaseHelper extends SQLiteOpenHelper { } else { insert.bindString(5, displayName); } + + insert.bindLong(1, updatedContactCursor.getLong(PhoneQuery.PHONE_ID)); + insert.bindLong(3, updatedContactCursor.getLong(PhoneQuery.PHONE_CONTACT_ID)); insert.bindLong(6, updatedContactCursor.getLong(PhoneQuery.PHONE_PHOTO_ID)); insert.bindLong(7, updatedContactCursor.getLong(PhoneQuery.PHONE_LAST_TIME_USED)); insert.bindLong(8, updatedContactCursor.getInt(PhoneQuery.PHONE_TIMES_USED)); @@ -648,8 +667,6 @@ public class DialerDatabaseHelper extends SQLiteOpenHelper { insert.bindLong(12, updatedContactCursor.getInt(PhoneQuery.PHONE_IS_PRIMARY)); insert.bindLong(13, currentMillis); insert.executeInsert(); - insert.clearBindings(); - final String contactPhoneNumber = updatedContactCursor.getString(PhoneQuery.PHONE_NUMBER); final ArrayList<String> numberPrefixes = |