您的位置:首页 > 移动开发 > Android开发

android--(联系人提供者实践)

2015-10-27 23:12 531 查看










/**
* 添加联系人
*/
public class ContactsActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_contacts);
}

/**
* 添加联系人
* @param view
*/
public void addClick(View view) {
ContentResolver cr = this.getContentResolver();
//执行一个空值插入,目的是获取系统返回的rawContactId
ContentValues values = new ContentValues();
Uri uri = cr.insert(ContactsContract.RawContacts.CONTENT_URI, values);//在contacts表中插入一行空列
long _id = ContentUris.parseId(uri);//获取插入的id

//插入姓名数据
values.clear();
values.put(ContactsContract.Data.RAW_CONTACT_ID, _id);//在 data 表中插入id
values.put(ContactsContract.Data.MIMETYPE,
ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE);
values.put(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, "jack");
cr.insert(ContactsContract.Data.CONTENT_URI, values);

//插入电话数据
values.clear();
values.put(ContactsContract.Data.RAW_CONTACT_ID, _id);
values.put(ContactsContract.Data.MIMETYPE,
ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE);

values.put(ContactsContract.CommonDataKinds.Phone.NUMBER, "00900");
values.put(ContactsContract.CommonDataKinds.Phone.TYPE,
ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE);

cr.insert(ContactsContract.Data.CONTENT_URI, values);

Toast.makeText(this, "记录已添加", Toast.LENGTH_LONG).show();
}

/**
* 删除联系人
* @param view
*/
public void deleteClick(View view) {
ContentResolver cr = this.getContentResolver();
System.out.print(ContactsContract.Contacts.CONTENT_URI.toString() + "/3");
Uri uri = Uri.parse("content://com.android.contacts/contacts/3");

cr.delete(uri, null, null);
Toast.makeText(this, "记录已删除", Toast.LENGTH_SHORT).show();
}

/**
* 更新联系人
* @param vied
*/
public void updateClick(View vied) {
ContentResolver cr = this.getContentResolver();
ContentValues values = new ContentValues();

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

values.put(ContactsContract.CommonDataKinds.Phone.NUMBER, "4445");
values.put(ContactsContract.CommonDataKinds.Phone.TYPE,
ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE);

cr.update(ContactsContract.Data.CONTENT_URI, values, "_id=1", null);
Toast.makeText(this, "_id=1的记录已更新", Toast.LENGTH_SHORT).show();
}

//查询联系人
public void queryClick(View view) {
//获取接口
ContentResolver contentResolver = this.getContentResolver();
String id = null;
String mimeType = null;

//只需要从Contacts中获取Id,其他的都可以不要,通过查看上面编译的SQL语句,可以看出将第二个参数
//设置为Null ,默认返回的列非常多,是一种资源浪费
//查询 contacts表 查询出 id号
Cursor cursor = contentResolver.query(ContactsContract.Contacts.CONTENT_URI, new String[]{ContactsContract.Contacts._ID}, null, null, null);

while (cursor.moveToNext()) {
id = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
//从一个cursor获取所有的信息
//查询 data表 查询 id,
Cursor contactInfoCursor = contentResolver.query(
ContactsContract.Data.CONTENT_URI,

new String[]{ContactsContract.Data.CONTACT_ID,//查询联系人的id
ContactsContract.Data.MIMETYPE,//类型
ContactsContract.Data.DATA1,//名字等信息
ContactsContract.Data.DATA15},//图片

ContactsContract.Data.CONTACT_ID + "=" + id,
null, null);

while (contactInfoCursor.moveToNext()) {
mimeType = contactInfoCursor.getString(
contactInfoCursor.getColumnIndex(ContactsContract.Data.MIMETYPE));

String value = contactInfoCursor.getString(
contactInfoCursor.getColumnIndex(ContactsContract.Data.DATA1));
byte[] photo = contactInfoCursor.getBlob(
contactInfoCursor.getColumnIndex(ContactsContract.Data.DATA15));

if (mimeType.contains("/name")) {
System.out.print("姓名=" + value);
} else if (mimeType.contains("/email")) {
System.out.print("邮箱=" + value);
} else if (mimeType.contains("/im")) {
System.out.print("聊天QQ账号=" + value);
} else if (mimeType.contains("/phone")) {
System.out.print("电话=" + value);
} else if (mimeType.contains("/postal")) {
System.out.print("邮编=" + value);
} else if (mimeType.contains("/photo")) {
System.out.print("照片=" + photo);//图片使用ImageView来显示
} else if (mimeType.contains("/group")) {
System.out.print("组=" + value);
} else if (mimeType.contains("/postal-address_v2")) {
System.out.print("地址=" + value);
}
}
contactInfoCursor.close();
}
cursor.close();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: