마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

contact DB 에서 email 주소 받아오기 질문 드립니다.

0 추천
public class PhoneBookAgent
{
    public void addMember(MemberVO memberVO, Context context)
    {
        Print.log("");

        ContentValues contentValues = new ContentValues();

        contentValues.put(ContactsContract.RawContacts.CONTACT_ID, 0);
        contentValues.put(ContactsContract.RawContacts.AGGREGATION_MODE, ContactsContract.RawContacts.AGGREGATION_MODE_DISABLED);
        Uri rawContactUri = context.getContentResolver().insert(ContactsContract.RawContacts.CONTENT_URI, contentValues);
        long rawContactId = ContentUris.parseId(rawContactUri);

        // name
        contentValues.clear();
        contentValues.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactId);
        contentValues.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE);
        contentValues.put(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, memberVO.getNameString());
        Uri dataUri = context.getContentResolver().insert(ContactsContract.Data.CONTENT_URI, contentValues);

        // phone
        contentValues.clear();
        contentValues.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactId);
        contentValues.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE);
        contentValues.put(ContactsContract.CommonDataKinds.Phone.TYPE, Phone.TYPE_MOBILE);
        contentValues.put(ContactsContract.CommonDataKinds.Phone.NUMBER, memberVO.getPhoneNumberString());
        dataUri = context.getContentResolver().insert(ContactsContract.Data.CONTENT_URI, contentValues);

        // mail
        contentValues.clear();
        contentValues.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactId);
        contentValues.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE);
        contentValues.put(ContactsContract.CommonDataKinds.Email.TYPE, ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE);
        contentValues.put(ContactsContract.CommonDataKinds.Email.DATA1, memberVO.getEmailString());
        dataUri = context.getContentResolver().insert(ContactsContract.Data.CONTENT_URI, contentValues);
    }

이렇게 추가를 하고

 
 
 
 
    
public ArrayList<MemberVO> getPhoneBookList(Context context)
    {
        Uri ContactsUri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
        String id = ContactsContract.CommonDataKinds.Phone.RAW_CONTACT_ID;
        String disName = ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME;
        String number = ContactsContract.CommonDataKinds.Phone.NUMBER;
        String email = ContactsContract.CommonDataKinds.Email.DATA1;
        
        Print.log("disName = "+disName+", number = "+number+", email = "+email);
        
        ArrayList<MemberVO> memberVOs = new ArrayList<MemberVO>();

        Cursor cursor = context.getContentResolver().query(ContactsUri, new String[] {
                id, disName, number, email}, null, null, null);
        if (cursor != null)
        {
            cursor.moveToFirst();
            while (!cursor.isAfterLast())
            {
                int _id = cursor.getInt(0);
                String name = cursor.getString(1);
                String phone = cursor.getString(2);
                String mail = cursor.getString(3);
                Print.log("mail = " + mail);

                memberVOs.add(new MemberVO(_id, name, phone, mail));
                cursor.moveToNext();
            }
            cursor.close();
        }
        return memberVOs;
    }

이렇게 불러오는데요..

 

계속 이메일 부분에 전화번호가 찍혀서 나오네요 ㅠㅠ 뭐가 문제일까요..

 

꿀빠는개미 (1,020 포인트) 님이 2014년 2월 6일 질문

1개의 답변

0 추천
 
채택된 답변

cursor.getString(1)을 바로 쓰시면 안되고 아래와 같이 사용하셔야 합니다.

 

cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));

 

여기를 참고하세요.

 

http://stackoverflow.com/questions/10117049/get-only-email-address-from-contact-list-android

 

 

방귀과장 (18,940 포인트) 님이 2014년 2월 6일 답변
꿀빠는개미님이 2014년 7월 10일 채택됨
...