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();
}
- Android 读取联系人2.0以上
- Android联系人数据库全解析-2.0以上
- android联系人读取
- Android 读取联系人(详细)
- android 读取联系人
- Android-读取联系人练习
- Android中读取联系人
- android 读取手机联系人
- Android读取、加入联系人
- android 读取联系人实例
- Android读取通讯录联系人
- Android读取通讯录联系人
- android 联系人读取优化
- Android 读取联系人数据库
- android读取手机联系人
- Android联系人数据库读取
- Android 读取系统联系人
- 88.android读取联系人
- 创建hash表的注意事项
- 用OpenSceneGraph实现的NeHe OpenGL教程 - 第三十五课_附录1
- 程序压力测试
- 15个顶级Java多线程面试题及回答
- Flash AS3 性能优化注意点
- Android 读取联系人2.0以上
- x264 - FENC_SRIDE、FDEC_STRIDE相关以及fenc、fdec的buf存储结构
- 单例模式
- 记WinCE下调试SIM900 GSM module
- Android Handler
- 关于setTimeout()用法的两种情形:
- CCDirector导演类
- 关于OE7.0中通过登录uid获取其部门的方法
- 一些常用的时间函数