안드로이드 개발 질문/답변
(글 수 45,052)
그룹리스트중 하나클릭 -> 해당그룹 주소록(이름,전화번호) 리스트 보여주기
1.우선 폰에 저장된 그룹을 불러옵니다.
Uri uri = ContactsContract.Groups.CONTENT_URI;
String[] projection = new String[] {
ContactsContract.Groups._ID,
ContactsContract.Groups.TITLE
};
String selection = ContactsContract.Groups.DELETED + " = 0" +
" AND " + ContactsContract.Groups.GROUP_VISIBLE + " = 1";
String[] selectionArgs = null;
String sortOrder = ContactsContract.Groups._ID + " COLLATE LOCALIZED ASC";
cursor = managedQuery(uri, projection, selection, selectionArgs, sortOrder);
//set adapter
SimpleCursorAdapter groupadapter = new SimpleCursorAdapter(getApplicationContext(),
R.layout.groupcontact_row,
cursor,
new String[] {ContactsContract.Groups._ID, ContactsContract.Groups.TITLE},
new int[] {R.id.txtViewGroupId, R.id.txtViewGroupTitle});
setListAdapter(groupadapter);
2. 해당 그룹을 선택하면(리스트 아이템클릭시) 그룹에 소속된 주소록을 불러옵니다.
int groupid = intent.getIntExtra("CONTACTGROUPID", 1);
Uri uri = ContactsContract.Data.CONTENT_URI;
String[] projection = new String[] {
ContactsContract.CommonDataKinds.GroupMembership._ID,
ContactsContract.CommonDataKinds.GroupMembership.DISPLAY_NAME,
ContactsContract.CommonDataKinds.GroupMembership.RAW_CONTACT_ID,
// ContactsContract.CommonDataKinds.Phone.NUMBER,
ContactsContract.CommonDataKinds.GroupMembership.DATA1,
ContactsContract.CommonDataKinds.GroupMembership.PHOTO_ID,
ContactsContract.CommonDataKinds.GroupMembership.CONTACT_ID
};
String selection = ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID + " = " + groupid + " AND "
+ ContactsContract.CommonDataKinds.GroupMembership.MIMETYPE + " = '"
+ ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE + "'";
String[] selectionArgs = null;
String sortOrder = null;
Cursor cursor = managedQuery(uri, projection, selection, selectionArgs, sortOrder);
위와같이 선택된 그룹의 주소록을 가져오는데 주소록 각각의 전화번호를 가져올 수 없습니다.
ContactsContract.CommonDataKinds.GroupMembership.RAW_CONTACT_ID 이 컬럼이 전화 번호인줄 알았지만 아니었습니다.
혹시 ContactsContract.CommonDataKinds.GroupMembership에는 전화번호 컬럼이 없는건가요??
ContactsContract.CommonDataKinds.Phone 이클래스를 이용해서 그룹을 구분해야 되는건가요?
좋은 방법 좀 알려주세요
고수님들의 답변 부탁드립니다.
1.우선 폰에 저장된 그룹을 불러옵니다.
Uri uri = ContactsContract.Groups.CONTENT_URI;
String[] projection = new String[] {
ContactsContract.Groups._ID,
ContactsContract.Groups.TITLE
};
String selection = ContactsContract.Groups.DELETED + " = 0" +
" AND " + ContactsContract.Groups.GROUP_VISIBLE + " = 1";
String[] selectionArgs = null;
String sortOrder = ContactsContract.Groups._ID + " COLLATE LOCALIZED ASC";
cursor = managedQuery(uri, projection, selection, selectionArgs, sortOrder);
//set adapter
SimpleCursorAdapter groupadapter = new SimpleCursorAdapter(getApplicationContext(),
R.layout.groupcontact_row,
cursor,
new String[] {ContactsContract.Groups._ID, ContactsContract.Groups.TITLE},
new int[] {R.id.txtViewGroupId, R.id.txtViewGroupTitle});
setListAdapter(groupadapter);
2. 해당 그룹을 선택하면(리스트 아이템클릭시) 그룹에 소속된 주소록을 불러옵니다.
int groupid = intent.getIntExtra("CONTACTGROUPID", 1);
Uri uri = ContactsContract.Data.CONTENT_URI;
String[] projection = new String[] {
ContactsContract.CommonDataKinds.GroupMembership._ID,
ContactsContract.CommonDataKinds.GroupMembership.DISPLAY_NAME,
ContactsContract.CommonDataKinds.GroupMembership.RAW_CONTACT_ID,
// ContactsContract.CommonDataKinds.Phone.NUMBER,
ContactsContract.CommonDataKinds.GroupMembership.DATA1,
ContactsContract.CommonDataKinds.GroupMembership.PHOTO_ID,
ContactsContract.CommonDataKinds.GroupMembership.CONTACT_ID
};
String selection = ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID + " = " + groupid + " AND "
+ ContactsContract.CommonDataKinds.GroupMembership.MIMETYPE + " = '"
+ ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE + "'";
String[] selectionArgs = null;
String sortOrder = null;
Cursor cursor = managedQuery(uri, projection, selection, selectionArgs, sortOrder);
위와같이 선택된 그룹의 주소록을 가져오는데 주소록 각각의 전화번호를 가져올 수 없습니다.
ContactsContract.CommonDataKinds.GroupMembership.RAW_CONTACT_ID 이 컬럼이 전화 번호인줄 알았지만 아니었습니다.
혹시 ContactsContract.CommonDataKinds.GroupMembership에는 전화번호 컬럼이 없는건가요??
ContactsContract.CommonDataKinds.Phone 이클래스를 이용해서 그룹을 구분해야 되는건가요?
좋은 방법 좀 알려주세요
고수님들의 답변 부탁드립니다.




Log.i("Test", getString(0).toString() + "/" + getString(1).toString();
이런식으로 불러올수있습니다.