Check for empty contact lookup keys
Bug:19588470
Change-Id: I1b0b262483a316a0a84a051e2a4225c68523e47e
diff --git a/src/com/android/contacts/ContactSaveService.java b/src/com/android/contacts/ContactSaveService.java
index 266ea46..4c3671f 100644
--- a/src/com/android/contacts/ContactSaveService.java
+++ b/src/com/android/contacts/ContactSaveService.java
@@ -387,6 +387,9 @@
Cursor c = resolver.query(Profile.CONTENT_URI,
new String[] {Contacts._ID, Contacts.LOOKUP_KEY},
null, null, null);
+ if (c == null) {
+ continue;
+ }
try {
if (c.moveToFirst()) {
final long contactId = c.getLong(0);
@@ -401,7 +404,9 @@
rawContactId);
lookupUri = RawContacts.getContactLookupUri(resolver, rawContactUri);
}
- Log.v(TAG, "Saved contact. New URI: " + lookupUri);
+ if (lookupUri != null) {
+ Log.v(TAG, "Saved contact. New URI: " + lookupUri);
+ }
// We can change this back to false later, if we fail to save the contact photo.
succeeded = true;
diff --git a/src/com/android/contacts/activities/ConfirmAddDetailActivity.java b/src/com/android/contacts/activities/ConfirmAddDetailActivity.java
index e3fa7e2..f4e8c78 100644
--- a/src/com/android/contacts/activities/ConfirmAddDetailActivity.java
+++ b/src/com/android/contacts/activities/ConfirmAddDetailActivity.java
@@ -495,6 +495,9 @@
if (photoId == 0) {
mContactId = cursor.getLong(ContactQuery._ID);
startDisambiguationQuery(mDisplayName);
+ } else if (TextUtils.isEmpty(mLookupKey)) {
+ finish();
+ return;
} else {
// Otherwise do the photo query.
Uri lookupUri = Contacts.getLookupUri(mContactId, mLookupKey);
diff --git a/src/com/android/contacts/activities/ShowOrCreateActivity.java b/src/com/android/contacts/activities/ShowOrCreateActivity.java
index da5bb9d..8277cdd 100755
--- a/src/com/android/contacts/activities/ShowOrCreateActivity.java
+++ b/src/com/android/contacts/activities/ShowOrCreateActivity.java
@@ -31,6 +31,7 @@
import android.provider.ContactsContract.PhoneLookup;
import android.provider.ContactsContract.RawContacts;
import android.telecom.PhoneAccount;
+import android.text.TextUtils;
import android.util.Log;
import com.android.contacts.common.ContactsUtils;
@@ -170,7 +171,7 @@
cursor.close();
}
- if (count == 1 && contactId != -1) {
+ if (count == 1 && contactId != -1 && !TextUtils.isEmpty(lookupKey)) {
// If we only found one item, jump right to viewing it
final Uri contactUri = Contacts.getLookupUri(contactId, lookupKey);
final Intent viewIntent = new Intent(Intent.ACTION_VIEW, contactUri);
diff --git a/src/com/android/contacts/editor/AggregationSuggestionView.java b/src/com/android/contacts/editor/AggregationSuggestionView.java
index a3d04e4..e3bab7e 100644
--- a/src/com/android/contacts/editor/AggregationSuggestionView.java
+++ b/src/com/android/contacts/editor/AggregationSuggestionView.java
@@ -20,6 +20,7 @@
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.provider.ContactsContract.Contacts;
+import android.text.TextUtils;
import android.util.AttributeSet;
import android.widget.ImageView;
import android.widget.LinearLayout;
@@ -138,6 +139,9 @@
public boolean handleItemClickEvent() {
if (mListener != null && isEnabled()) {
if (canEditSuggestedContact()) {
+ if (TextUtils.isEmpty(mLookupKey)) {
+ return false;
+ }
mListener.onEditAction(Contacts.getLookupUri(mContactId, mLookupKey));
} else {
ArrayList<Long> rawContactIds = Lists.newArrayList();
diff --git a/src/com/android/contacts/interactions/ContactDeletionInteraction.java b/src/com/android/contacts/interactions/ContactDeletionInteraction.java
index b10963b..b05cbab 100644
--- a/src/com/android/contacts/interactions/ContactDeletionInteraction.java
+++ b/src/com/android/contacts/interactions/ContactDeletionInteraction.java
@@ -32,6 +32,7 @@
import android.os.Bundle;
import android.provider.ContactsContract.Contacts;
import android.provider.ContactsContract.Contacts.Entity;
+import android.text.TextUtils;
import android.util.Log;
import com.android.contacts.ContactSaveService;
@@ -254,6 +255,11 @@
readOnlyRawContacts.add(rawContactId);
}
}
+ if (TextUtils.isEmpty(lookupKey)) {
+ Log.e(TAG, "Failed to find contact lookup key");
+ getActivity().finish();
+ return;
+ }
int readOnlyCount = readOnlyRawContacts.size();
int writableCount = writableRawContacts.size();