package com.SmalTown.day15_contentresovercontacts;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
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.Data;
import android.provider.ContactsContract.RawContacts;
import android.view.View;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
public class MainActivity extends Activity {
/**
* 演示通过conentresolver访问系统的联系人
*
* ContactsContract.Contacts.CONTENT_URI 管理联系人的Uri
* content://com.android.contacts/raw_contacts
*
* ContactsContract.CommonDataKinds.Phone.CONTENT_URI 管理联系人的电话的Uri
* content://com.android.contacts/data/phones
*
* ContactsContract.CommonDataKinds.Email.CONTENT_URI 管理联系人的Email的Uri
* content://com.android.contacts/data/emails
*
* android.provider.ContactsContract.Data.CONTENT_URI 插入联系人
* content://com.android.contacts/data
*/
private ListView lv;
private ContentResolver resolver;
private List<Map<String, Object>> list;
private Uri contactsUri = ContactsContract.Contacts.CONTENT_URI;//联系人Uri对象
private Uri phoneUri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;//管理联系人电话的Uri
private Uri emailUri = ContactsContract.CommonDataKinds.Email.CONTENT_URI;//管理联系人邮箱的Uri
private Uri doUri = android.provider.ContactsContract.Data.CONTENT_URI;//插入联系人
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv = (ListView) findViewById(R.id.lv);
list = new ArrayList<Map<String,Object>>();
resolver = getContentResolver();
Cursor cursor = resolver.query(contactsUri, null, null, null, null);
list = getData(cursor);
SimpleAdapter adapter = new SimpleAdapter(MainActivity.this, list,
R.layout.item,
new String[]{ContactsContract.Contacts.DISPLAY_NAME,
"phone",ContactsContract.CommonDataKinds.Email.DATA},
new int[]{R.id.tv_name,R.id.tv_phone,R.id.tv_email});
lv.setAdapter(adapter);
}
public void onclickBtn(View v){
switch (v.getId()) {
case R.id.btn_add://添加数据
InsertData();
break;
case R.id.btn_update://修改数据
UpdateData();
break;
case R.id.btn_delete://删除数据
DeleteData();
break;
default:
break;
}
}
//删除数据
public void DeleteData(){
int flag = resolver.delete(RawContacts.CONTENT_URI, "display_name = ?", new String[]{"zhangsan"});
if(flag>0){
Toast.makeText(MainActivity.this, "删除成功", 0).show();
}else{
Toast.makeText(MainActivity.this, "删除失败", 0).show();
}
}
//修改数据
public void UpdateData(){
ContentValues values = new ContentValues();
values.put(ContactsContract.CommonDataKinds.Phone.NUMBER, "119911");
//更改的操作
int flag = resolver.update(doUri, values,
ContactsContract.CommonDataKinds.Phone.RAW_CONTACT_ID + "=?and mimetype_id=?",
new String[]{"1","5"});
// int flag = resolver.update(doUri, values, Data.RAW_CONTACT_ID+"=?", new String[]{1+""});
//int flag = resolver.update(RawContacts.CONTENT_URI, values, Data.RAW_CONTACT_ID+"=?", new String[]{1+""});
if(flag>0){
Toast.makeText(MainActivity.this, "修改成功", 0).show();
}else{
Toast.makeText(MainActivity.this, "修改失败", 0).show();
}
}
//添加数据
public void InsertData(){
//插入一条空的数据 为了得到id
ContentValues values = new ContentValues();
Uri newUri = resolver.insert(RawContacts.CONTENT_URI, values);
long contactsId = ContentUris.parseId(newUri);
//插入联系人名称
values = new ContentValues();
values.put(Data.RAW_CONTACT_ID, contactsId);
//存储的数据类型 联系人类型
values.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);
//插入名称
values.put(StructuredName.DISPLAY_NAME, "zhangsan");
resolver.insert(doUri, values);
//插入电话号
values = new ContentValues();
values.put(Data.RAW_CONTACT_ID, contactsId);
//插入电话号的数据类型
values.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
values.put(Phone.NUMBER, "123456");
resolver.insert(doUri, values);
//插入邮储
values = new ContentValues();
values.put(Data.RAW_CONTACT_ID, contactsId);
//插入邮箱的数据类型
values.put(Data.MIMETYPE,Email.CONTENT_ITEM_TYPE);
values.put(Email.DATA, "123456@qq.com");
resolver.insert(doUri, values);
}
/**
* 得到联系人数据
* @param cursor
* @return
*/
public List<Map<String, Object>> getData(Cursor cursor){
List<Map<String, Object>> list = new ArrayList<Map<String,Object>>();
while(cursor.moveToNext()){
Map<String, Object> map = new HashMap<String, Object>();
//获取联系人数的id 和名称
int contactsId = cursor.getInt(
cursor.getColumnIndex(ContactsContract.Contacts._ID));
String contactsName = cursor.getString(
cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
map.put(ContactsContract.Contacts._ID, contactsId);
map.put(ContactsContract.Contacts.DISPLAY_NAME, contactsName);
//查询电话号
Cursor phoneCursor = resolver.query(phoneUri, null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID+"=?",
new String[]{contactsId+""}, null);
while(phoneCursor.moveToNext()){
String phone = phoneCursor.getString(
phoneCursor.getColumnIndex(
ContactsContract.CommonDataKinds.Phone.NUMBER));
map.put("phone", phone);
}
phoneCursor.close();
//查询邮箱
Cursor emailCursor = resolver.query(emailUri, null,
ContactsContract.CommonDataKinds.Email.CONTACT_ID+"=?",
new String[]{contactsId+""}, null);
while(emailCursor.moveToNext()){
String email = emailCursor.getString(
emailCursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
map.put(ContactsContract.CommonDataKinds.Email.DATA, email);
}
emailCursor.close();
list.add(map);
}
cursor.close();
return list;
}
}
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
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.Data;
import android.provider.ContactsContract.RawContacts;
import android.view.View;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
public class MainActivity extends Activity {
/**
* 演示通过conentresolver访问系统的联系人
*
* ContactsContract.Contacts.CONTENT_URI 管理联系人的Uri
* content://com.android.contacts/raw_contacts
*
* ContactsContract.CommonDataKinds.Phone.CONTENT_URI 管理联系人的电话的Uri
* content://com.android.contacts/data/phones
*
* ContactsContract.CommonDataKinds.Email.CONTENT_URI 管理联系人的Email的Uri
* content://com.android.contacts/data/emails
*
* android.provider.ContactsContract.Data.CONTENT_URI 插入联系人
* content://com.android.contacts/data
*/
private ListView lv;
private ContentResolver resolver;
private List<Map<String, Object>> list;
private Uri contactsUri = ContactsContract.Contacts.CONTENT_URI;//联系人Uri对象
private Uri phoneUri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;//管理联系人电话的Uri
private Uri emailUri = ContactsContract.CommonDataKinds.Email.CONTENT_URI;//管理联系人邮箱的Uri
private Uri doUri = android.provider.ContactsContract.Data.CONTENT_URI;//插入联系人
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv = (ListView) findViewById(R.id.lv);
list = new ArrayList<Map<String,Object>>();
resolver = getContentResolver();
Cursor cursor = resolver.query(contactsUri, null, null, null, null);
list = getData(cursor);
SimpleAdapter adapter = new SimpleAdapter(MainActivity.this, list,
R.layout.item,
new String[]{ContactsContract.Contacts.DISPLAY_NAME,
"phone",ContactsContract.CommonDataKinds.Email.DATA},
new int[]{R.id.tv_name,R.id.tv_phone,R.id.tv_email});
lv.setAdapter(adapter);
}
public void onclickBtn(View v){
switch (v.getId()) {
case R.id.btn_add://添加数据
InsertData();
break;
case R.id.btn_update://修改数据
UpdateData();
break;
case R.id.btn_delete://删除数据
DeleteData();
break;
default:
break;
}
}
//删除数据
public void DeleteData(){
int flag = resolver.delete(RawContacts.CONTENT_URI, "display_name = ?", new String[]{"zhangsan"});
if(flag>0){
Toast.makeText(MainActivity.this, "删除成功", 0).show();
}else{
Toast.makeText(MainActivity.this, "删除失败", 0).show();
}
}
//修改数据
public void UpdateData(){
ContentValues values = new ContentValues();
values.put(ContactsContract.CommonDataKinds.Phone.NUMBER, "119911");
//更改的操作
int flag = resolver.update(doUri, values,
ContactsContract.CommonDataKinds.Phone.RAW_CONTACT_ID + "=?and mimetype_id=?",
new String[]{"1","5"});
// int flag = resolver.update(doUri, values, Data.RAW_CONTACT_ID+"=?", new String[]{1+""});
//int flag = resolver.update(RawContacts.CONTENT_URI, values, Data.RAW_CONTACT_ID+"=?", new String[]{1+""});
if(flag>0){
Toast.makeText(MainActivity.this, "修改成功", 0).show();
}else{
Toast.makeText(MainActivity.this, "修改失败", 0).show();
}
}
//添加数据
public void InsertData(){
//插入一条空的数据 为了得到id
ContentValues values = new ContentValues();
Uri newUri = resolver.insert(RawContacts.CONTENT_URI, values);
long contactsId = ContentUris.parseId(newUri);
//插入联系人名称
values = new ContentValues();
values.put(Data.RAW_CONTACT_ID, contactsId);
//存储的数据类型 联系人类型
values.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);
//插入名称
values.put(StructuredName.DISPLAY_NAME, "zhangsan");
resolver.insert(doUri, values);
//插入电话号
values = new ContentValues();
values.put(Data.RAW_CONTACT_ID, contactsId);
//插入电话号的数据类型
values.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
values.put(Phone.NUMBER, "123456");
resolver.insert(doUri, values);
//插入邮储
values = new ContentValues();
values.put(Data.RAW_CONTACT_ID, contactsId);
//插入邮箱的数据类型
values.put(Data.MIMETYPE,Email.CONTENT_ITEM_TYPE);
values.put(Email.DATA, "123456@qq.com");
resolver.insert(doUri, values);
}
/**
* 得到联系人数据
* @param cursor
* @return
*/
public List<Map<String, Object>> getData(Cursor cursor){
List<Map<String, Object>> list = new ArrayList<Map<String,Object>>();
while(cursor.moveToNext()){
Map<String, Object> map = new HashMap<String, Object>();
//获取联系人数的id 和名称
int contactsId = cursor.getInt(
cursor.getColumnIndex(ContactsContract.Contacts._ID));
String contactsName = cursor.getString(
cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
map.put(ContactsContract.Contacts._ID, contactsId);
map.put(ContactsContract.Contacts.DISPLAY_NAME, contactsName);
//查询电话号
Cursor phoneCursor = resolver.query(phoneUri, null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID+"=?",
new String[]{contactsId+""}, null);
while(phoneCursor.moveToNext()){
String phone = phoneCursor.getString(
phoneCursor.getColumnIndex(
ContactsContract.CommonDataKinds.Phone.NUMBER));
map.put("phone", phone);
}
phoneCursor.close();
//查询邮箱
Cursor emailCursor = resolver.query(emailUri, null,
ContactsContract.CommonDataKinds.Email.CONTACT_ID+"=?",
new String[]{contactsId+""}, null);
while(emailCursor.moveToNext()){
String email = emailCursor.getString(
emailCursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
map.put(ContactsContract.CommonDataKinds.Email.DATA, email);
}
emailCursor.close();
list.add(map);
}
cursor.close();
return list;
}
}