diff options
| author | Brian Attwell <brianattwell@google.com> | 2014-10-03 15:45:18 -0700 |
|---|---|---|
| committer | Brian Attwell <brianattwell@google.com> | 2014-10-03 22:46:32 +0000 |
| commit | b831b14466d640fe260ba2e752c88c7fcd62a14b (patch) | |
| tree | b92a6da4ba33f3201a2cae610208b4d6f65c00cd /src | |
| parent | c62cc7931593b4137f8a507689b653e1e15e1260 (diff) | |
| download | packages_apps_Contacts-b831b14466d640fe260ba2e752c88c7fcd62a14b.tar.gz packages_apps_Contacts-b831b14466d640fe260ba2e752c88c7fcd62a14b.tar.bz2 packages_apps_Contacts-b831b14466d640fe260ba2e752c88c7fcd62a14b.zip | |
Don't crash QuickContacts because of null uri
When composeQuickContactActivity() is passed a null uri, then
startActivity throws the following exception:
ActivityNotFoundException: No Activity found to handle Intent
{ act=android.provider.action.QUICK_CONTACT flg=0x20000000 (has extras) }
I can't reproduce this. So lets just fix the crash.
Inside contact list fragments, ignore clicks on views bound to null uris.
We don't need to change Dialer. It already handles these cases.
Note that we can't fix this by checking for null URIs inside
ContactEntryListFragment. One of the Dialer subclasses of
ContactEntryListFragment requires null URIs.
Bug: 17807956
Change-Id: I41dd878b23b8cc3e9b8ad49e12675a4da9ced466
Diffstat (limited to 'src')
4 files changed, 15 insertions, 1 deletions
diff --git a/src/com/android/contacts/list/ContactPickerFragment.java b/src/com/android/contacts/list/ContactPickerFragment.java index 442f5c7e7..0503d3397 100644 --- a/src/com/android/contacts/list/ContactPickerFragment.java +++ b/src/com/android/contacts/list/ContactPickerFragment.java @@ -128,6 +128,9 @@ public class ContactPickerFragment extends ContactEntryListFragment<ContactEntry } else { uri = ((ContactListAdapter)getAdapter()).getContactUri(position); } + if (uri == null) { + return; + } if (mEditMode) { editContact(uri); } else if (mShortcutRequested) { diff --git a/src/com/android/contacts/list/DefaultContactBrowseListFragment.java b/src/com/android/contacts/list/DefaultContactBrowseListFragment.java index bf1bdcab5..463020287 100644 --- a/src/com/android/contacts/list/DefaultContactBrowseListFragment.java +++ b/src/com/android/contacts/list/DefaultContactBrowseListFragment.java @@ -18,6 +18,7 @@ package com.android.contacts.list; import android.content.Context; import android.content.CursorLoader; import android.content.Intent; +import android.net.Uri; import android.provider.ContactsContract.Contacts; import android.text.TextUtils; import android.util.Log; @@ -86,7 +87,11 @@ public class DefaultContactBrowseListFragment extends ContactBrowseListFragment @Override protected void onItemClick(int position, long id) { - viewContact(getAdapter().getContactUri(position)); + final Uri uri = getAdapter().getContactUri(position); + if (uri == null) { + return; + } + viewContact(uri); } @Override diff --git a/src/com/android/contacts/list/EmailAddressPickerFragment.java b/src/com/android/contacts/list/EmailAddressPickerFragment.java index 2146b68f3..f89f74327 100644 --- a/src/com/android/contacts/list/EmailAddressPickerFragment.java +++ b/src/com/android/contacts/list/EmailAddressPickerFragment.java @@ -45,6 +45,9 @@ public class EmailAddressPickerFragment extends ContactEntryListFragment<Contact @Override protected void onItemClick(int position, long id) { EmailAddressListAdapter adapter = (EmailAddressListAdapter)getAdapter(); + if (getAdapter().getItem(position) == null) { + return; + } pickEmailAddress(adapter.getDataUri(position)); } diff --git a/src/com/android/contacts/list/PostalAddressPickerFragment.java b/src/com/android/contacts/list/PostalAddressPickerFragment.java index a23a78bd0..c64e17337 100644 --- a/src/com/android/contacts/list/PostalAddressPickerFragment.java +++ b/src/com/android/contacts/list/PostalAddressPickerFragment.java @@ -46,6 +46,9 @@ public class PostalAddressPickerFragment @Override protected void onItemClick(int position, long id) { + if (getAdapter().getItem(position) == null) { + return; + } if (!isLegacyCompatibilityMode()) { PostalAddressListAdapter adapter = (PostalAddressListAdapter)getAdapter(); pickPostalAddress(adapter.getDataUri(position)); |
