Android/Contacts API 2

Android Contacts API 2 example

Soul-Learner 2012. 6. 29. 14:01

Get Name, Phone Number, Email from Android Contacts

http://stackoverflow.com/questions/1721279/how-to-read-contacts-on-android-2-0

안드로이드 전화번호부에 저장된 모든 연락처(전화, Email, 설명)를 ListView에 출력하는 예

package my.android.test; import java.util.*; import android.app.*; import android.content.*; import android.database.*; import android.os.*; import android.provider.*; import android.util.*; import android.view.*; import android.widget.*; public class GetAllDatas extends Activity { ListView lvItem; String Ptype, Etype; int contactPhoneType; String displayName="", emailAddress="", phoneNumber=""; ArrayList<String> contactlist=new ArrayList<String>(); ArrayAdapter<String> itemAdapter; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); lvItem = (ListView)this.findViewById(R.id.lvitems); readContacts3(); itemAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,contactlist); lvItem.setAdapter(itemAdapter); } void readContacts3(){ ContentResolver cr = getContentResolver(); Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null); if (cur.getCount() > 0) { while (cur.moveToNext()) { StringBuilder sb = new StringBuilder(); String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID)); String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); if (Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) { sb.append(id+"."+name); // get the phone number Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?", new String[]{id}, null); int typeIndex = pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE); int numIndex = pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER); while (pCur.moveToNext()) { String phone = null; String num = pCur.getString(numIndex); switch (pCur.getInt(typeIndex)) { case ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE: sb.append(", Mobile:" + num); break; case ContactsContract.CommonDataKinds.Phone.TYPE_HOME: sb.append(", Home:" + num); break; case ContactsContract.CommonDataKinds.Phone.TYPE_WORK: sb.append(", Work:" + num); break; } } pCur.close(); // get email and type Cursor emailCur = cr.query( ContactsContract.CommonDataKinds.Email.CONTENT_URI, null, ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?", new String[]{id}, null); while (emailCur.moveToNext()) { // This would allow you get several email addresses // if the email addresses were stored in an array String email = emailCur.getString( emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA)); int emailType = emailCur.getInt( emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE)); switch (emailType) { case ContactsContract.CommonDataKinds.Email.TYPE_HOME: sb.append(", Home:"+email); break; case ContactsContract.CommonDataKinds.Email.TYPE_WORK: sb.append(", Work:"+email); break; case ContactsContract.CommonDataKinds.Email.TYPE_MOBILE: sb.append(", Mobile:"+email); break; case ContactsContract.CommonDataKinds.Email.TYPE_OTHER: sb.append(", Other:"+email); break; } } emailCur.close(); // Get note....... String noteWhere = ContactsContract.Data.CONTACT_ID + " = ? AND " + ContactsContract.Data.MIMETYPE + " = ?"; String[] noteWhereParams = new String[]{id, ContactsContract.CommonDataKinds.Note.CONTENT_ITEM_TYPE}; Cursor noteCur = cr.query(ContactsContract.Data.CONTENT_URI, null, noteWhere, noteWhereParams, null); if (noteCur.moveToFirst()) { String note = noteCur.getString(noteCur.getColumnIndex(ContactsContract.CommonDataKinds.Note.NOTE)); //sb.append(note); } noteCur.close(); } contactlist.add(sb.toString()); } } } }