안녕하세요 ^^ 


주소록을 가져와서 사용하려는데 주소부분이 불러와지지않아 고전하고있습니다. ㅠ0ㅠ


LogCat으로 들어온 Column 값을 보니 주소부분은 아니뜨질 않더라구요

해답이 잘 나오지않아 질문드립니다 ^^;;;

현재의 코드 구조상 MIME Type을 비교하여 각 데이터들을 읽어오는 형식인데.. 

각 Column의 MIME Type을 로그고양이를 통해 확인한 결과 아애 잡히지도 않았다는 ㅠ0ㅠ




따끔한 한수 부탁드립니다 :)


테스트는 Galaxy S(android 2.3.4) 로 하였습니다.



-LogCat 내용-

----------------------------------------------------------------------------------

04-20 14:12:36.402: E/MIMETYPE(1446): vnd.android.cursor.item/phone_v2 - 휴대전화번호

04-20 14:12:36.402: E/MIMETYPE(1446): vnd.android.cursor.item/email_v2 - Email

04-20 14:12:36.402: E/MIMETYPE(1446): vnd.android.cursor.item/name - 주소록이름

04-20 14:12:36.402: E/MIMETYPE(1446): vnd.android.cursor.item/phone_v2 - 집 전화번호

04-20 14:12:36.402: E/MIMETYPE(1446): vnd.android.cursor.item/phone_v2 - 회사 전화번호

04-20 14:12:36.402: E/MIMETYPE(1446): vnd.android.cursor.item/phone_v2 - 팩스번호

04-20 14:12:36.402: E/MIMETYPE(1446): vnd.android.cursor.item/organization - 소속 / 직책

----------------------------------------------------------------------------------



-Source Code-

----------------------------------------------------------------------------------

/** 주소록 리스트를가져옵니다. */

public ArrayList<ContactTo> getContactDatas()

{

// Key - Value 타입의 쌍 데이터

HashMap<Long, ContactTo> hmContacts = new HashMap<Long, ContactTo>();

// return 될 객체

this.contactList = new ArrayList<ContactTo>();

// SQL Projection

String[] projection = new String[] { 

ContactsContract.Data.CONTACT_ID

ContactsContract.Data.DISPLAY_NAME,

ContactsContract.Data.PHOTO_ID,

ContactsContract.Data.DATA1,

ContactsContract.Data.DATA2,

ContactsContract.Data.MIMETYPE

};

// 주소록 Cursor 획득을 위한 Query 수행

this.contactCursor = this.contentResolver.query (

ContactsContract.Data.CONTENT_URI,

projection

null,

null

ContactsContract.Data.DISPLAY_NAME+","+ContactsContract.Data._ID+" COLLATE LOCALIZED ASC" 

);

this.contactCursor.moveToFirst();

if ( ! this.contactCursor.isAfterLast() )

{

ContactTo contactTo = null;

while( this.contactCursor.moveToNext() )

{

long id = this.contactCursor.getLong(this.contactCursor.getColumnIndex(ContactsContract.Data.CONTACT_ID));

if(hmContacts.containsKey(id))  {

contactTo = (ContactTo) hmContacts.get(id);

else  {

contactTo = new ContactTo();

}

// 주소록 아이디(Field ID) 번호획득

if(contactTo.getId() == null ) {

contactTo.setId(String.valueOf(id));

}


// 주소록 이름 획득

if(contactTo.getName() == null) {

contactTo.setName(this.contactCursor.getString(this.contactCursor.getColumnIndex(ContactsContract.Data.DISPLAY_NAME)));

}

String mimeType = this.contactCursor.getString(this.contactCursor.getColumnIndex(ContactsContract.Data.MIMETYPE));

String type = null;

String value = null;

Log.e("MIMETYPE",mimeType);

// 휴대전화번호 획득

if(contactTo.getPhoneNumber() == null)

{

if(mimeType.equals(ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)) 

{

type = this.contactCursor.getString(this.contactCursor.getColumnIndex(ContactsContract.Data.DATA2));

value = this.contactCursor.getString(this.contactCursor.getColumnIndex(ContactsContract.Data.DATA1));

if((type != null) && (Integer.parseInt(type) ==  CommonDataKinds.Phone.TYPE_MOBILE)) {

contactTo.setPhoneNumber(value);

}

}

}

// E-Mail 획득

if(contactTo.getEmail() == null

{

if(mimeType.equals(ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE)) 

{

value = this.contactCursor.getString(this.contactCursor.getColumnIndex(ContactsContract.Data.DATA1));

if(value != null) {

contactTo.setEmail(value);

}

}

}

// 주소 획득

if(contactTo.getAddress() == null

{

if(mimeType.equals(ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE)) 

{

value = this.contactCursor.getString(this.contactCursor.getColumnIndex(ContactsContract.Data.DATA1));

if(value != null) {

contactTo.setAddress(value);

}

}

}

// 소속 및 직책 획득

if(contactTo.getOrganization() == null )

{

if(mimeType.equals(ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE)) 

{

type = this.contactCursor.getString(this.contactCursor.getColumnIndex(ContactsContract.Data.DATA2));

value = this.contactCursor.getString(this.contactCursor.getColumnIndex(ContactsContract.Data.DATA1));

if((type != null) && (Integer.parseInt(type) ==  CommonDataKinds.Organization.TYPE_WORK)) {

contactTo.setOrganization(value);

}

}

}


hmContacts.put(id, contactTo);

}// end while

}// end if

this.contactCursor.close();

Log.e("ContactData", "getContactDatas() get data size = "+hmContacts.size());

return new ArrayList<ContactTo>(hmContacts.values());

}

----------------------------------------------------------------------------------