Android中访问通讯录,数据的增删改查

1.权限

<uses-permission android:name="android.permission.READ_CONTACTS" />

<uses-permission android:name="android.permission.WRITE_CONTACTS" />

2.通过提供的内容供应商访问通信录(uri)

content://com.android.contacts/contacts 操作的数据是联系人信息Uri

content://com.android.contacts/data/phones 联系人电话Uri

content://com.android.contacts/data/emails 联系人Email Uri

android.provider.ContactsContract.RawContacts

android.provider.ContactsContract.Data

android.provider.ContactsContract.CommonDataKinds.StructuredName

android.provider.ContactsContract.CommonDataKinds.Phone

android.provider.ContactsContract.CommonDataKinds.Email

android.provider.ContactsContract.CommonDataKinds.StructuredPostal

android.provider.ContactsContract.CommonDataKinds.Website

android.provider.ContactsContract.CommonDataKinds.Organization

android.provider.ContactsContract.CommonDataKinds.Im

android.provider.ContactsContract.CommonDataKinds.Nickname

android.provider.ContactsContract.CommonDataKinds.Note

蓝色字体均为android提供的常量.

//android.provider.ContactsContract.RawContacts

//android.provider.ContactsContract.CommonDataKinds.StructuredName;

//android.provider.ContactsContract.Data

ContentValues values = new ContentValues();

values.put(RawContacts.DISPLAY_NAME_PRIMARY, "pccc xu");

values.put(RawContacts.DISPLAY_NAME_ALTERNATIVE, "xu,pccc");

Uri uri =getContentResolver().insert(RawContacts.CONTENT_URI, values);

long rawContactId = ContentUris.parseId(rawContactUri);

//插入name电话号码values.clear();

values.put(Data.RAW_CONTACT_ID, rawContactId);

values.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);

values.put(StructuredName.DISPLAY_NAME, "显示名");

values.put(StructuredName.FAMILY_NAME, "");

getContentResolver().insert(Data.CONTENT_URI, values);

//插入电话信息

values.clear();

values.put(Data.RAW_CONTACT_ID, rawContactId);

values.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);

values.put(Phone.NUMBER, "1345678");

values.put(Phone.TYPE, Phone.TYPE_HOME);

getContentResolver().insert(Data.CONTENT_URI, values);

//3.插入data表数据(Im.QQ)

values.clear();

values.put(Data.RAW_CONTACT_ID, rawid);//外键值

values.put(Data.MIMETYPE, Im.CONTENT_ITEM_TYPE);

values.put(Im.PROTOCOL, Im.PROTOCOL_QQ);

values.put(Im.DATA, "3456789");

r.insert(Data.CONTENT_URI, values);

Android访问通讯录(查询)

Android访问和操作用户通讯录通常涉及到ContentProvider。ContentProvider是一个统一的数据存储和检索API,允许应用读取、写入系统级别的数据,比如联系人信息。以下是基本的增删改查操作: **添加联系人(Insert)**: ```java Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI; ContentValues contentValues = new ContentValues(); contentValues.put(ContactsContract.CommonDataKinds.Phone.NUMBER, "1234567890"); contentValues.put(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE); Uri newContact = getContentResolver().insert(uri, contentValues); ``` **删除联系人(Delete)**: ```java Uri contactUri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, contactId); getContentResolver().delete(contactUri, null, null); ``` **修改联系人(Update)**: ```java Uri contactUri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, contactId); ContentValues updatedValues = new ContentValues(); updatedValues.put(ContactsContract.CommonDataKinds.Phone.NUMBER, "新的电话号码"); getContentResolver().update(contactUri, updatedValues, null, null); ``` **查询联系人(Read)**: ```java Cursor cursor = getContentResolver().query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI, projection, // 查询字段 selection, // 查询条件 selectionArgs, // 条件参数 sortOrder // 排序方式 ); // 遍历cursor获取联系人信息... cursor.close(); ``` 注意:实际操作时需要处理权限请求、异常以及适当地释放资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

涂作权的博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值