Include data set when getting raw contacts to add to label
Test: manually create group w/ some members for account
types w/ and w/o a dataSet
Bug: 31393749
Change-Id: Iafcfd926f9c886d91ac7abbf1d3102a9f977eb7a
diff --git a/src/com/android/contacts/activities/GroupMembersActivity.java b/src/com/android/contacts/activities/GroupMembersActivity.java
index e887cb9..c32842a 100644
--- a/src/com/android/contacts/activities/GroupMembersActivity.java
+++ b/src/com/android/contacts/activities/GroupMembersActivity.java
@@ -88,15 +88,17 @@
private final long mGroupId;
private final String mAccountName;
private final String mAccountType;
+ private final String mDataSet;
private UpdateGroupMembersAsyncTask(int type, Context context, long[] contactIds,
- long groupId, String accountName, String accountType) {
+ long groupId, String accountName, String accountType, String dataSet) {
mContext = context;
mType = type;
mContactIds = contactIds;
mGroupId = groupId;
mAccountName = accountName;
mAccountType = accountType;
+ mDataSet = dataSet;
}
@Override
@@ -127,10 +129,16 @@
// ContactSaveService will log a warning if the raw contact is already a member and keep
// going but it is not ideal, we could also prune raw contacts that are already members.
private long[] getRawContactIds() {
- final Uri rawContactUri = RawContacts.CONTENT_URI.buildUpon()
- .appendQueryParameter(RawContacts.ACCOUNT_NAME, mAccountName)
- .appendQueryParameter(RawContacts.ACCOUNT_TYPE, mAccountType)
- .build();
+ final Uri.Builder builder = RawContacts.CONTENT_URI.buildUpon();
+ // null account names are not valid, see ContactsProvider2#appendAccountFromParameter
+ if (mAccountName != null) {
+ builder.appendQueryParameter(RawContacts.ACCOUNT_NAME, mAccountName);
+ builder.appendQueryParameter(RawContacts.ACCOUNT_TYPE, mAccountType);
+ }
+ if (mDataSet != null) {
+ builder.appendQueryParameter(RawContacts.DATA_SET, mDataSet);
+ }
+ final Uri rawContactUri = builder.build();
final String[] projection = new String[]{RawContacts._ID};
final StringBuilder selection = new StringBuilder();
final String[] selectionArgs = new String[mContactIds.length];
@@ -443,7 +451,7 @@
final long[] contactIds = mMembersFragment.getAdapter().getSelectedContactIdsArray();
new UpdateGroupMembersAsyncTask(UpdateGroupMembersAsyncTask.TYPE_REMOVE,
this, contactIds, mGroupMetaData.groupId, mGroupMetaData.accountName,
- mGroupMetaData.accountType).execute();
+ mGroupMetaData.accountType, mGroupMetaData.dataSet).execute();
mActionBarAdapter.setSelectionMode(false);
}
@@ -489,7 +497,7 @@
}
new UpdateGroupMembersAsyncTask(UpdateGroupMembersAsyncTask.TYPE_ADD,
this, contactIds, mGroupMetaData.groupId, mGroupMetaData.accountName,
- mGroupMetaData.accountType).execute();
+ mGroupMetaData.accountType, mGroupMetaData.dataSet).execute();
}
}
@@ -610,6 +618,6 @@
contactIds[0] = contactId;
new UpdateGroupMembersAsyncTask(UpdateGroupMembersAsyncTask.TYPE_REMOVE,
this, contactIds, mGroupMetaData.groupId, mGroupMetaData.accountName,
- mGroupMetaData.accountType).execute();
+ mGroupMetaData.accountType, mGroupMetaData.dataSet).execute();
}
}
diff --git a/src/com/android/contacts/common/list/ContactListFilter.java b/src/com/android/contacts/common/list/ContactListFilter.java
index 81ee5c9..8e29308 100644
--- a/src/com/android/contacts/common/list/ContactListFilter.java
+++ b/src/com/android/contacts/common/list/ContactListFilter.java
@@ -330,9 +330,12 @@
throw new IllegalStateException(
"filterType must be FILTER_TYPE_ACCOUNT or FILER_TYPE_GROUP_MEMBERS");
}
- uriBuilder.appendQueryParameter(RawContacts.ACCOUNT_NAME, accountName);
- uriBuilder.appendQueryParameter(RawContacts.ACCOUNT_TYPE, accountType);
- if (!TextUtils.isEmpty(dataSet)) {
+ // null account names are not valid, see ContactsProvider2#appendAccountFromParameter
+ if (accountName != null) {
+ uriBuilder.appendQueryParameter(RawContacts.ACCOUNT_NAME, accountName);
+ uriBuilder.appendQueryParameter(RawContacts.ACCOUNT_TYPE, accountType);
+ }
+ if (dataSet != null) {
uriBuilder.appendQueryParameter(RawContacts.DATA_SET, dataSet);
}
return uriBuilder;