안녕하세요 ^^
주소록을 가져와서 사용하려는데 주소부분이 불러와지지않아 고전하고있습니다. ㅠ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());
}
----------------------------------------------------------------------------------




페이지내에서 코드를 탭으로 정렬하려는데 재멋대로 정렬되어 포기하였습니다 ㅠ0ㅠ
양해부탁드립니다.