package com.itheima.getcontacts;
import
com.itheima.getcontacts.domain.Contact;
import
android.net.Uri;
import
android.os.Bundle;
import
android.app.Activity;
import
android.content.ContentResolver;
import
android.database.Cursor;
import
android.view.Menu;
import
android.view.View;
public
class MainActivity
extends
Activity {
/*
#联系人数据库 * raw\_contacts表: * contact_id:联系人id * data表:联系人的具体信息,一个信息占一行 * data1:信息的具体内容 * raw\_contact_id:联系人id,描述信息属于哪个联系人 * mimetype_id:描述信息是属于什么类型 * mimetypes表:通过mimetype_id到该表查看具体类型
*/
@Override
protected
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState); setContentView(R.layout.activity_main); }
//
查询联系人
public
void
click(View v){
//
通过内容提供者访问联系人数据库 ContentResolver cr =
getContentResolver();
//
先查询raw\_contacts表拿到联系人id,com.android.contacts是联系人的内容提供者主机名,new String[]{"contact_id"}是查询的字段id, Cursor cursorContactId = cr.query(Uri.parse("content://com.android.contacts/raw_contacts"),
new String[]{"contact_id"},
null,
null,
null
);
while
(cursorContactId.moveToNext()){
//
获取联系人id String contactId = cursorContactId.getString(0
);
//
* 然后拿着联系人id去data表查询属于该联系人的信息,new String[]{"data1", "mimetype"}是查询的字段,new String[]{contactId}是查询条件 Cursor cursorData = cr.query(Uri.parse("content://com.android.contacts/data"),
new String[]{"data1", "mimetype"
}, "raw_contact_id = ?",
new String[]{contactId},
null
);
//
获取所有字段的名字 String[] names =
cursorData.getColumnNames();
for
(String string : names) { System.out.println(string); } Contact con =
new Contact();
//
Contact自定义的联系人javabean
//
* 得到data1字段的值,就是联系人的信息,通过mimetype判断是什么类型的信息
while
(cursorData.moveToNext()){ String data1 = cursorData.getString(0
); String mimetype = cursorData.getString(1
);
//
通过mimetype的判断,把data1存入对应的属性
if("vnd.android.cursor.item/email_v2"
.equals(mimetype)){ con.setEmail(data1); }
else
if("vnd.android.cursor.item/phone_v2"
.equals(mimetype)){ con.setPhone(data1); }
else
if("vnd.android.cursor.item/name"
.equals(mimetype)){ con.setName(data1); } } System.out.println(con.toString()); } } }
//
<uses-permission android:name="android.permission.READ_CONTACTS"/>
package com.itheima.insertcontact;
import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.database.Cursor;
import android.view.Menu;
import android.view.View;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
//插入联系人
public void click(View v){
ContentResolver cr = getContentResolver();
//先查询raw_contacts表,获取最新联系人的主键,然后主键+1,就是要插入的联系人的id
Cursor cursorContactId = cr.query(Uri.parse("content://com.android.contacts/raw_contacts"), new String[]{"_id"}, null, null, null);
//默认联系人id就是1
int contact_id = 1;
if(cursorContactId.moveToLast()){
//拿到主键
int _id = cursorContactId.getInt(0);
//主键+1,就是要插入的联系人id
contact_id = ++_id;
}
ContentValues values = new ContentValues();
values.put("contact_id", contact_id);
//把联系人id插入raw_contacts数据库
cr.insert(Uri.parse("content://com.android.contacts/raw_contacts"), values);
values.clear();
values.put("data1", "二bi");
values.put("mimetype", "vnd.android.cursor.item/name");
values.put("raw_contact_id", contact_id);
cr.insert(Uri.parse("content://com.android.contacts/data"), values);
values.clear();
values.put("data1", "1344567");
values.put("mimetype", "vnd.android.cursor.item/phone_v2");
values.put("raw_contact_id", contact_id);
cr.insert(Uri.parse("content://com.android.contacts/data"), values);
}
}
//<uses-permission android:name="android.permission.WRITE_CONTACTS"/>
//<uses-permission android:name="android.permission.READ_CONTACTS"/>
本文转自农夫山泉别墅博客园博客,原文链接:http://www.cnblogs.com/yaowen/p/4972885.html,如需转载请自行联系原作者