Android 讀取聯繫人2.0以上


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 String m_name;

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

private byte[] m_avatar = null;

private Bitmap m_avatarBitmap = null;

private int m_id;

private String m_sortKey = null;


public AndroidContactDB(int id) {

m_id = id;

}


public int getId() {

return m_id;

}


public void addPhone(String phone) {

m_phones.add(phone);

}


public Set<String> getPhones() {

return m_phones;

}


public void addOriginalPhone(String phone, String originalPhone) {

mOriginalPhonesMap.put(phone, originalPhone);

}


public Map<String, String> getOriginalPhoneMap() {

return mOriginalPhonesMap;

}


public String getFirstPhone() {

for (String phone : m_phones) {

return phone;

}

return null;

}


public String getFirstEmail() {

for (String email : m_emails) {

return email;

}

return null;

}


public void addEmail(String email) {

m_emails.add(email);

}


public Set<String> getEmails() {

return m_emails;

}


public void setAvatar(byte[] data) {

m_avatar = data;

}


public void setName(String name) {

m_name = name;

}


public String getName() {

return m_name;

}


public String getSortKey() {

if (m_sortKey == null)

return m_name;

return m_sortKey;

}


public void setSortKey(String key) {

m_sortKey = key;

}


public Bitmap getAvatar() {

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

return null;

if (m_avatarBitmap != null)

return m_avatarBitmap;

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

return m_avatarBitmap;

}


方法:

public static void 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();


}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章