Issue
I have the ID of a contact group, and I'd like to list its members. Here's the code I'm trying:
String[] projection = new String[]{
ContactsContract.CommonDataKinds.GroupMembership.CONTACT_ID
};
Cursor contacts = getContentResolver().query(
Data.CONTENT_URI,
projection,
ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID + "=" + gid,
null,
null
);
String result = "";
do {
result += contacts.getString(contacts.getColumnIndex(ContactsContract.CommonDataKinds.GroupMembership.CONTACT_ID)) + " ";
} while (contacts.moveToNext());
But this throws an Exception:
03-24 17:11:33.097: ERROR/AndroidRuntime(10730): android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 2
...
03-24 17:11:33.097: ERROR/AndroidRuntime(10730): at myapp.MultiSend$1.onItemClick(MultiSend.java:83)
which is the line starting result +=
. Can anyone tell me what I'm doing wrong, or suggest a better way to get the same information?
Solution
Try this code snippet
String[] projection = new String[]{
ContactsContract.CommonDataKinds.GroupMembership.CONTACT_ID
};
Cursor contacts = getContentResolver().query(
Data.CONTENT_URI,
projection,
ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID + "=" + gid,
null,
null
);
startManagingCursor(contacts);
String result = "";
if (contacts.moveToFirst()) {
do {
try {
result += contacts.getString(contacts.getColumnIndex(ContactsContract.CommonDataKinds.GroupMembership.CONTACT_ID)) + " ";
} catch (Exception ex) {
ex.printStackTrace();
}
} while (contacts.moveToNext());
}
Answered By - Muhammad Shahab
Answer Checked By - Pedro (JavaFixing Volunteer)