Android Contacts的使用(二)
API For 1.6 and Before 1.6之前的版本
Granting Access 授予权限
<uses-permission android:name="android.permission.READ_CONTACTS" />
Querying the contact database 联系人数据库查询
Retrieving Contact Details 获取联系方式
本的联系人信息存储在联系人表中,而详细信息存储在个人表中。在 Android1.x 中查询的联系人记录数据库的URI是People.CONTENT_URI。
package com.test;import android.app.Activity;import android.content.ContentResolver;import android.database.Cursor;import android.os.Bundle;import android.provider.Contacts.People;public class TestContacts extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ContentResolver cr = getContentResolver(); Cursor cur = cr.query(People.CONTENT_URI, null, null, null, null); if(cur.getCount()>0){ while (cur.moveToNext()) { String id = cur.getString(cur.getColumnIndex(People._ID)); String name = cur.getString(cur.getColumnIndex(People.DISPLAY_NAME)); } } }}if (cur.getInt(cur.getColumnIndex(People.PRIMARY_PHONE_ID)) > 0) { Cursor pCur = cr.query(Contacts.Phones.CONTENT_URI,null, Contacts.Phones.PERSON_ID +" = ?",new String[]{id}, null); int i=0; int pCount = pCur.getCount(); String[] phoneNum = new String[pCount]; String[] phoneType = new String[pCount]; while (pCur.moveToNext()) { phoneNum[i] = pCur.getString(pCur.getColumnIndex(Contacts.Phones.NUMBER)); phoneType[i] = pCur.getString(pCur.getColumnIndex(Contacts.Phones.TYPE)); i++; } } Cursor emailCur = cr.query(Contacts.ContactMethods.CONTENT_EMAIL_URI,null, Contacts.ContactMethods.PERSON_ID + " = ?",new String[]{id}, null); while (emailCur.moveToNext()) { // This would allow you get several email addresses } emailCur.close(); String addrWhere = Contacts.ContactMethods.PERSON_ID + " = ? AND " + Contacts.ContactMethods.KIND + " = ?"; String[] addrWhereParams = new String[]{id, Contacts.ContactMethods.CONTENT_POSTAL_ITEM_TYPE}; Cursor addrCur = cr.query(Contacts.ContactMethods.CONTENT_URI, null, addrWhere, addrWhereParams, null); while(addrCur.moveToNext()) { String addr = addrCur.getString( addrCur.getColumnIndex(Contacts.ContactMethodsColumns.DATA)); String type = addrCur.getString( addrCur.getColumnIndex(Contacts.ContactMethodsColumns.TYPE)); } addrCur.close();