안드로이드로 주소록을 받아오는 것을 해 보고 있다. 기본적으로 이름과 전화번호를 받아 오는것을 만들고 있다. 생각으로는 단체문자하는 어플을 만들고 싶어서 모바일로 등록되어 있는 것만을 가져오고 싶다. 책에서는 People클래스를 이용하는데 deprecated되었다네. 그래서 다른 방법을 찾아보다가 발견한 페이지. http://androiddevblog.blogspot.com/2010/02/query-contacts-data.html 그래서 따라서 해 보았다.
잘 된다... 결과도 똑같아... 난 결국 뭘한거지.. ㅠㅠ 알아서 조인해 주는듯 하다.
Cursor contacts = managedQuery(ContactsContract.Contacts.CONTENT_URI, null, "HAS_PHONE_NUMBER=1", null, null);
MatrixCursor cursor = new MatrixCursor(new String[] {"_id", "name", "phone_number"}); startManagingCursor(cursor);
if (contacts.moveToFirst()) {
String name;
String contactId;
int nameColumn = contacts.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
int idColumn = contacts.getColumnIndex(ContactsContract.Contacts._ID);
do {
name = contacts.getString(nameColumn);
contactId = contacts.getString(idColumn);
Cursor phones = getContentResolver().query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=" + contactId + " AND " +
ContactsContract.CommonDataKinds.Phone.TYPE + "=" + ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE ,
null,
null);
if (phones.moveToNext()) {
String phoneNumber = phones
.getString(phones .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
cursor.addRow(new String[] {contactId, name, phoneNumber});
}
phones.close();
} while (contacts.moveToNext());
} contacts.close();
쿼리도 두 번 뿐이고 잘 된다. 왠지 조인으로 한번에 하면 될 쿼리를 나눠서 하느나 좀 신경쓰이긴 하지만. 근데 작업 도중 Contacts 를 통해 접근해야만 하는 줄 알았던 DISPLAY_NAME이 ContactsContract.CommonDataKinds.Phone.에도 있는것을 알았다. 음? 설마 하는 마음에 다음과 같이 해 보았다. Cursor cursor = managedQuery(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
new String[]{ContactsContract.CommonDataKinds.Phone._ID, ContactsContract.CommonDataKinds.Phone.CONTACT_ID,
ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
ContactsContract.CommonDataKinds.Phone.NUMBER},
ContactsContract.CommonDataKinds.Phone.TYPE + "=" + ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE, null, null);
startManagingCursor(cursor);
잘 된다... 결과도 똑같아... 난 결국 뭘한거지.. ㅠㅠ 알아서 조인해 주는듯 하다.
업뎃했으면서 변경된 사항도 예제랑 곁들여서 친절히 설명해주면 좋을것을...



