Android 读取联系人2.0以上

来源:互联网 发布:淘宝直通车排名规则 编辑:程序博客网 时间:2024/05/17 06:05


Android contact中应用中存储的联系人,都是在必定基于某个Account的,默认的是

account type:vnd.sec.contact.phone     account name:vnd.sec.contact.phone

所以你也可以手动添加账号,然后基于这个账号添加联系人,前面转载的三篇就是账号的认证和创建定义新联系人显示结构等的说明

同时 单纯的在contact中操纵联系人并不能彻底清除contacts2.db中的数据,

而基于账户的清除动作可以彻底删除db中的数据


读取联系人:

public class AndroidContactDB {

private Set<String>m_phones = new HashSet<String>();

private Map<String, String>mOriginalPhonesMap = new HashMap<String, String>();

private Stringm_name;

private Set<String>m_emails = new HashSet<String>();

privatebyte[] m_avatar =null;

private Bitmapm_avatarBitmap = null;

privateint m_id;

private Stringm_sortKey = null;


public AndroidContactDB(int id) {

m_id = id;

}


public int getId() {

returnm_id;

}


public void addPhone(String phone) {

m_phones.add(phone);

}


public Set<String> getPhones() {

returnm_phones;

}


public void addOriginalPhone(String phone, String originalPhone) {

mOriginalPhonesMap.put(phone, originalPhone);

}


public Map<String, String> getOriginalPhoneMap() {

returnmOriginalPhonesMap;

}


public String getFirstPhone() {

for (String phone :m_phones) {

return phone;

}

returnnull;

}


public String getFirstEmail() {

for (String email :m_emails) {

return email;

}

returnnull;

}


public void addEmail(String email) {

m_emails.add(email);

}


public Set<String> getEmails() {

returnm_emails;

}


public void setAvatar(byte[] data) {

m_avatar = data;

}


public void setName(String name) {

m_name = name;

}


public String getName() {

returnm_name;

}


public String getSortKey() {

if (m_sortKey ==null)

returnm_name;

returnm_sortKey;

}


public void setSortKey(String key) {

m_sortKey = key;

}


public Bitmap getAvatar() {

if (m_avatar ==null || m_avatar.length < 5)

returnnull;

if (m_avatarBitmap !=null)

returnm_avatarBitmap;

// m_avatarBitmap = HelperFunc.getScaleImage(m_avatar, 480, 480);

returnm_avatarBitmap;

}


方法:

public staticvoid getAllContacts2(Context context,

Map<Integer, AndroidContactDB> contacts) {


Cursor cur = context.getContentResolver().query(

ContactsContract.Data.CONTENT_URI,

// TODO

// Phone.NUMBER,Email.DATA,CommonDataKinds.StructuredName.DISPLAY_NAME

// 这几个字段都是 data1, contact_id ,displayname ,sort_key 唯一确定

new String[] { Data.CONTACT_ID, Data.MIMETYPE, Phone.NUMBER,

Email.DATA,

CommonDataKinds.StructuredName.DISPLAY_NAME,

CommonDataKinds.Photo.PHOTO },null, null,null);

if (cur ==null)

return;


int personColumn = cur.getColumnIndex(Data.CONTACT_ID);

int mimeColumn = cur.getColumnIndex(Data.MIMETYPE);

int numberColumn = cur.getColumnIndex(Phone.NUMBER);

int emailColumn = cur.getColumnIndex(Email.DATA);

int nameColumn = cur

.getColumnIndex(CommonDataKinds.StructuredName.DISPLAY_NAME);

int photoColumn = cur.getColumnIndex(CommonDataKinds.Photo.PHOTO);


Logs.d(TAG,"personColumn:" + personColumn + "--mimeColumn:"

+ mimeColumn + "--numberColumn:" + numberColumn

+ "--emailColumn:" + emailColumn +"--nameColumn:" + nameColumn

+ "--photoColumn:" + photoColumn);


while (cur.moveToNext()) {

String mime = cur.getString(mimeColumn);

int personId = cur.getInt(personColumn);

AndroidContactDB contact = contacts.get(personId);

if (contact ==null) {

contact = new AndroidContactDB(personId);

contacts.put(personId, contact);

}


if (mime.equals(CommonDataKinds.Phone.CONTENT_ITEM_TYPE)) {

String number = cur.getString(numberColumn);

String phone = HelperFunc.getNumberOfString(number);

contact.addPhone(phone);

contact.addOriginalPhone(phone, number);

} else if (mime.equals(CommonDataKinds.Email.CONTENT_ITEM_TYPE)) {

contact.addEmail(cur.getString(emailColumn));

} else if (mime

.equals(CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)) {

contact.setName(cur.getString(nameColumn));

} else if (mime.equals(CommonDataKinds.Photo.CONTENT_ITEM_TYPE)) {

contact.setAvatar(cur.getBlob(photoColumn));

}

Logs.d(TAG,"=================");

Logs.d(TAG,

"" + "\n personId:" + cur.getInt(personColumn)

+ "\n mimeType:" + cur.getString(mimeColumn)

+ "\n number:" + cur.getString(numberColumn)

+ "\n email:" + cur.getString(emailColumn)

+ "\n name:" + cur.getString(nameColumn)

+ "\n avatar:" + cur.getBlob(photoColumn));

}

cur.close();


}



0 0
原创粉丝点击