本文主要是介绍weiyi通讯录(二)获取联系人信息包括头像 增删改查功能,,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
看了下第一期的访问量,100都没有可能很多人不需要吧,之前跟过一个大神学做项目,他都不吧核心代码告诉我,感觉没有一点分享精神,所以我就自己做。没跟他一起做
这里把上次的代码分享一下 我这里分享的跟我博客里面可能不一样因为我已经做完第一个模块了,代码就没有分开了
第一期的代码地址:http://download.csdn.net/detail/u010982856/8232855
分享的是类似的代码 基本跟我的是一样。如果需要的联系人我把 或者加入我的交流群吧
-----------欢迎加入交流群 386451316 有问题一起讨论吧
还废话一下 这期的代码需要在下一期公布地址
开始代码了 布局文件就不写了 这期说得是联系人的问题 在源代码中有相应代码 我也参考了一些
源代码地址:sdk\sources\android-16\com\android\internal\telephony\ 里面是通讯录的所有操作
写一个bean来存放联系人信息(这就一废话是把)
package com.zw.weiyi.enety;
import android.graphics.Bitmap;
public class Person {private Long id;//联系人idpublic String name;//联系人名字public String phoneNumber;//联系人号码private Long iconId;//头像idprivate Bitmap icon;//头像private String sortLetters; //显示数据拼音的首字母public String getSortLetters() {return sortLetters;}public void setSortLetters(String sortLetters) {this.sortLetters = sortLetters;}public Long getId() {return id;}public void setId(Long id) {this.id = id;}public Long getIconId() {return iconId;}public void setIconId(Long iconId) {this.iconId = iconId;}public Bitmap getIcon() {return icon;}public void setIcon(Bitmap icon) {this.icon = icon;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPhoneNumber() {return phoneNumber;}public void setPhoneNumber(String phoneNumber) {this.phoneNumber = phoneNumber;}
}
这里获取联系人方式有多种 一般很多人会使用AsyncQueryHandler asyncQueryHandler; // 异步查询数据库类对象
这种比较好一点 但我没有用这种 我使用的内容提供者 ContentResolver 来获取 这种更新能力不好
上代码吧 只传了核心代码 我觉得有这些就够了
// 查询条件public final static String[] PHONES_PROJECTION = new String[] {Phone.DISPLAY_NAME, Phone.NUMBER, Photo.PHOTO_ID, Phone.CONTACT_ID };
<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span>//得到联系人的数据
<span style="white-space:pre"> </span>public List<Person> initContacts() {
<span style="white-space:pre"> </span>resolver = context.getContentResolver();
<span style="white-space:pre"> </span>cursor = context.getContentResolver().query(Phone.CONTENT_URI,
<span style="white-space:pre"> </span>PHONES_PROJECTION, null, null, null);
<span style="white-space:pre"> </span>personSize = cursor.getCount();
<span style="white-space:pre"> </span>pAdapter = new personAdapter(context,personsList);
<span style="white-space:pre"> </span>Person person = null;
<span style="white-space:pre"> </span>if (cursor != null) {
<span style="white-space:pre"> </span>for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor
<span style="white-space:pre"> </span>.moveToNext()) {
<span style="white-space:pre"> </span>person = new Person();
<span style="white-space:pre"> </span>person.setName(cursor.getString(0));
<span style="white-space:pre"> </span>person.setPhoneNumber(cursor.getString(1));
<span style="white-space:pre"> </span>// 头像id
<span style="white-space:pre"> </span>person.setIconId(cursor.getLong(2));
<span style="white-space:pre"> </span>// 联系人id
<span style="white-space:pre"> </span>person.setId(cursor.getLong(3));
<span style="white-space:pre"> </span>if (cursor.getLong(2) > 0) { // 头像默认为0
<span style="white-space:pre"> </span>Uri uri = ContentUris.withAppendedId(
<span style="white-space:pre"> </span>ContactsContract.Contacts.CONTENT_URI,
<span style="white-space:pre"> </span>person.getId());
<span style="white-space:pre"> </span>InputStream input = ContactsContract.Contacts
<span style="white-space:pre"> </span>.openContactPhotoInputStream(resolver, uri);
<span style="white-space:pre"> </span>person.setIcon(BitmapFactory.decodeStream(input));
<span style="white-space:pre"> </span>} else {// 没有则默认
<span style="white-space:pre"> </span>person.setIcon(BitmapFactory.decodeResource(getResources(),
<span style="white-space:pre"> </span>R.drawable.ic_launcher));
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>personsList.add(person);
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>cursor.close();
<span style="white-space:pre"> </span>return personsList;
<span style="white-space:pre"> </span>}
这里再说一下操作的问题吧
插入联系人 这里插入的是手机里面的
public void inster(String addnames, String addnames2, String addpnone,String addohter) throws Exception {uri = Uri.parse("content://com.android.contacts/raw_contacts");ContentResolver resolver = this.getContentResolver();ArrayList<ContentProviderOperation> operations = new ArrayList<ContentProviderOperation>();ContentProviderOperation op1 = ContentProviderOperation.newInsert(uri).withValue("account_name", null).build();operations.add(op1);if (!TextUtils.isEmpty(addnames)) {// 为空uri = Uri.parse("content://com.android.contacts/data");ContentProviderOperation op2 = ContentProviderOperation.newInsert(uri).withValueBackReference("raw_contact_id", 0).withValue("mimetype", "vnd.android.cursor.item/name").withValue("data1", addnames+addnames2).build();operations.add(op2);}if (!TextUtils.isEmpty(addpnone)) {ContentProviderOperation op3 = ContentProviderOperation.newInsert(uri).withValueBackReference("raw_contact_id", 0).withValue("mimetype","vnd.android.cursor.item/phone_v2").withValue("data1", addpnone).build();operations.add(op3);}// 邮箱if (!TextUtils.isEmpty(addohter)) {ContentProviderOperation op4 = ContentProviderOperation.newInsert(uri).withValueBackReference("raw_contact_id", 0).withValue("mimetype","vnd.android.cursor.item/email_v2").withValue("data1", addohter).build();operations.add(op4);}resolver.applyBatch("com.android.contacts", operations);Toast.makeText(this, "添加成功", 1000).show(); }
删除 更新啊什么就一起说了
// 删除联系人public void deleteContact(long rawContactId) {getContentResolver().delete(ContentUris.withAppendedId(RawContacts.CONTENT_URI,rawContactId), null, null);}// 更新联系人public void updataCotact(long rawContactId) {ContentValues values = new ContentValues();values.put(Phone.NUMBER, "13800138000");values.put(Phone.TYPE, Phone.TYPE_MOBILE);String where = ContactsContract.Data.RAW_CONTACT_ID + "=? AND "+ ContactsContract.Data.MIMETYPE + "=?";String[] selectionArgs = new String[] { String.valueOf(rawContactId),Phone.CONTENT_ITEM_TYPE };getContentResolver().update(ContactsContract.Data.CONTENT_URI, values,where, selectionArgs);}
基本都有了,代码就不上传了把 下次一起上传把
这篇关于weiyi通讯录(二)获取联系人信息包括头像 增删改查功能,的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!