标签:contentprovider 通信录 联系人添加 联系人读取 android
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.WRITE_CONTACTS"/>/*
* 查询联系人
*/
private void selectContact(){
/**
* 使用ContentResolver 实现 这个和 ContentProvider 的参数 一模一样
*
* 联系人的 URI 提供: ContactsContract.Contacts.CONTENT_URI
*/
// 查询联系人
ContentResolver resolver = getContentResolver();
Cursor cursor = resolver.query(Contacts.CONTENT_URI, new String[] {Contacts._ID,Contacts.DISPLAY_NAME}, null, null, null);
String str = "联系人:\n";
if (cursor != null) {
while (cursor.moveToNext()) {
String id=cursor.getString(cursor.getColumnIndex(Contacts._ID));
String name=cursor.getString(cursor.getColumnIndex(Contacts.DISPLAY_NAME));
str+=" id="+id+" name="+name;
//通过id 查询 电话
Cursor c=resolver.query(Phone.CONTENT_URI,new String[]{Phone.NUMBER,Phone.TYPE},Phone.CONTACT_ID+"=?",new String[]{id},null);
if(c!=null){
while(c.moveToNext()){
String num=c.getString(c.getColumnIndex(Phone.NUMBER));
String type=c.getString(c.getColumnIndex(Phone.TYPE));
str+=" num="+num+" type="+type;
}
c.close();
}
str+="\n";
}
cursor.close();
}
tv_show.setText(str);
} /**
* 首先向RawContacts.CONTENT_URI执行一个空值插入,目的是获取系统返回的rawContactId
*
* 这是后面插入data表的数据,只有执行空值插入,才能使插入的联系人在通讯录里可见
*/
public void testInsert(){
ContentValues values = new ContentValues();
//首先向RawContacts.CONTENT_URI执行一个空值插入,目的是获取系统返回的rawContactId
Uri rawContactUri = this.getContentResolver().insert(RawContacts.CONTENT_URI, values);
long rawContactId = ContentUris.parseId(rawContactUri);
//往data表入姓名数据
values.clear();
values.put(Data.RAW_CONTACT_ID, rawContactId);
values.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);
values.put(StructuredName.GIVEN_NAME, "我是测试联系人");
this.getContentResolver().insert(
android.provider.ContactsContract.Data.CONTENT_URI, values);
//往data表入电话数据
values.clear();
values.put(android.provider.ContactsContract.Contacts.Data.RAW_CONTACT_ID, rawContactId);
values.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
values.put(Phone.NUMBER, "10000000010001");
values.put(Phone.TYPE, Phone.TYPE_MOBILE);
this.getContentResolver().insert(
android.provider.ContactsContract.Data.CONTENT_URI, values);
//往data表入Email数据
values.clear();
values.put(android.provider.ContactsContract.Contacts.Data.RAW_CONTACT_ID, rawContactId);
values.put(Data.MIMETYPE, Email.CONTENT_ITEM_TYPE);
values.put(Email.DATA, "labelnet@outlook.com");
values.put(Email.TYPE, Email.TYPE_WORK);
this.getContentResolver().insert(
android.provider.ContactsContract.Data.CONTENT_URI, values);
}版权声明:本文为博主原创文章,未经博主允许不得转载。
Android-数据存储(Content Provider ,调用系统 联系人 ContentProvider实现查询和增加联系人)
标签:contentprovider 通信录 联系人添加 联系人读取 android
原文地址:http://blog.csdn.net/lablenet/article/details/48030993