使用ContentProvider添加获取通讯录信息
2015-01-13 18:06
393 查看
1、实现代码
2、添加权限
下载源码
import android.annotation.SuppressLint; import android.app.Activity; import android.content.ContentResolver; import android.content.ContentUris; import android.content.ContentValues; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.provider.ContactsContract; import android.provider.ContactsContract.CommonDataKinds.Email; import android.provider.ContactsContract.CommonDataKinds.Phone; import android.provider.ContactsContract.CommonDataKinds.StructuredName; import android.provider.ContactsContract.Contacts; import android.provider.ContactsContract.Data; import android.provider.ContactsContract.RawContacts; import android.util.Log; public class MainActivity extends Activity { @SuppressLint("SdCardPath") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ContentResolver cr = getContentResolver(); //向联系人中插入一条数据 ContentValues values = new ContentValues(); Uri uri = cr.insert(RawContacts.CONTENT_URI, values); //解析uri Long raw_contacts_id = ContentUris.parseId(uri); values.clear(); //插入人名,指定联系人和插入行 values.put(StructuredName.RAW_CONTACT_ID, raw_contacts_id); //追加插入联系人信息 values.put(StructuredName.DISPLAY_NAME, "张三"); values.put(StructuredName.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE); uri = cr.insert(Data.CONTENT_URI, values); //插入电话信息 values.clear(); values.put(Phone.RAW_CONTACT_ID, raw_contacts_id); values.put(Phone.NUMBER, "123434556456"); values.put(Phone.MIMETYPE, Phone.CONTENT_ITEM_TYPE); uri = cr.insert(Data.CONTENT_URI, values); //查询通讯录数据 Cursor c = cr.query(ContactsContract.Contacts.CONTENT_URI, new String[]{Contacts._ID, Contacts.DISPLAY_NAME}, null, null, null); if(c != null){ while (c.moveToNext()) { //如果不知道对应字段名称可以写成Contacts._ID和Contacts.DISPLAY_NAME int id = c.getInt(c.getColumnIndex("_id")); Log.e(">>>>>>>>>>>>", "_id" + id); Log.e(">>>>>>>>>>>>", "name" + c.getString(c.getColumnIndex("display_name"))); //查询联系人电话号码,必须使用ID获取。通过ID查询号码和类型 Cursor c1 = cr.query(Phone.CONTENT_URI, new String[]{Phone.NUMBER, Phone.TYPE}, Phone.CONTACT_ID + "=" + id, null, null); if(c1 != null){ while (c1.moveToNext()) { int type = c1.getInt(c1.getColumnIndex(Phone.TYPE)); if(type == Phone.TYPE_HOME){ Log.e(">>>>>>>>>>>>", "家庭电话:" + c1.getString(c1.getColumnIndex(Phone.NUMBER))); }else if (type == Phone.TYPE_MOBILE){ Log.e(">>>>>>>>>>>>", "手机:" + c1.getString(c1.getColumnIndex(Phone.NUMBER))); } } c1.close(); } //根据联系人id查询出联系人的邮箱地址 Cursor c2 = cr.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, new String[]{Email.DATA, Email.TYPE}, Email.CONTACT_ID + "=" + id, null, null); if(c2 != null){ while (c2.moveToNext()) { int type = c2.getInt(c2.getColumnIndex(Email.TYPE)); if(type == Email.TYPE_WORK){ Log.e(">>>>>>>>>>>>", "工作邮箱:" + c2.getString(c2.getColumnIndex(Email.DATA))); } } c2.close(); } } } c.close(); } }
2、添加权限
<!-- 查询联系人 --> <uses-permission android:name="android.permission.READ_CONTACTS" /> <!-- 添加联系人 --> <uses-permission android:name="android.permission.WRITE_CONTACTS" />
下载源码
相关文章推荐
- Android深入探究笔记之十 -- 使用 ContentProvider 共享数据(二),访问与添加通讯录
- ContentProvider往通讯录添加联系人和获取联系人
- ContentProvider获取系统的电话号码绑定到ListView以及跳转通讯录获区联系人信息绑定到前台。
- WCF使用OperationContext添加和获取头信息
- ios中获取当前手机通讯录信息一、在工程中添加AddressBook.framework和AddressBookUI.framework
- ContentProvider与隐式Intent获取手机联系人通讯录信息或电话的方法
- 十四、ContentProvider往通讯录添加联系人和获取联系人
- 使用 ContentProvider 共享数据 访问与添加通讯录
- ContentProvider往通讯录添加联系人和获取联系人
- 十四、ContentProvider往通讯录添加联系人和获取联系人
- ContentProvider与隐式Intent获取手机联系人通讯录信息或电话的方法
- ContentProvider往通讯录添加联系人和获取联系人
- 演示ContentProvider使用--获取通讯录所有联系人号码、email的例子
- ContentProvider往通讯录添加联系人和获取联系人
- 十四、ContentProvider往通讯录添加联系人和获取联系人
- ContentProvider往通讯录添加联系人和获取联系人
- 十四、ContentProvider往通讯录添加联系人和获取联系人
- android 联系人操作: ContentProvider往通讯录添加联系人和获取联系人
- 十四、ContentProvider往通讯录添加联系人和获取联系人
- Project——使用内容提供者从通讯录中获取联系人或添加联系人