Android入门之增删改查通讯录Word文件下载.docx

上传人:b****6 文档编号:20823329 上传时间:2023-01-25 格式:DOCX 页数:22 大小:163.94KB
下载 相关 举报
Android入门之增删改查通讯录Word文件下载.docx_第1页
第1页 / 共22页
Android入门之增删改查通讯录Word文件下载.docx_第2页
第2页 / 共22页
Android入门之增删改查通讯录Word文件下载.docx_第3页
第3页 / 共22页
Android入门之增删改查通讯录Word文件下载.docx_第4页
第4页 / 共22页
Android入门之增删改查通讯录Word文件下载.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

Android入门之增删改查通讯录Word文件下载.docx

《Android入门之增删改查通讯录Word文件下载.docx》由会员分享,可在线阅读,更多相关《Android入门之增删改查通讯录Word文件下载.docx(22页珍藏版)》请在冰豆网上搜索。

Android入门之增删改查通讯录Word文件下载.docx

表结构如下:

通讯录是存放在/data/data/com.android.providers.contacts/databases/contacts2.db,里面主要的表有:

(1)raw_contacts:

存放联系人的ID,

_id属性为主键,声明为autoincrement,即不需要手动设置,其他属性也不需要手动设置就有默认值;

display_name属性为姓名;

(2)mimetypes:

存放数据的类型,比如"

vnd.android.cursor.item/name"

表示“姓名”类型的数据,"

vnd.android.cursor.item/phone_v2"

表示“电话”类型的数据;

(3)data:

存放具体的数据;

raw_contact_id属性用来连接raw_contacts表,每条记录表示一个具体数据;

我们主要的数据(email、phone等)都存放在data表;

【成都android培训】

data1属性存放总数据;

data2属性:

-如果此记录存放姓名,则data2存放名;

-如果此记录存放电话,则data2存放类型,比如手机、家电;

-如果此记录存放组织,则data2存放类型,比如公司、其他;

-如果此记录存放地址,则data2存放类型,比如住宅,单位等;

四、对通信录做增删改查

简单的说:

对通讯录操作就是对一个普通的ContentProvider操作;

1.Query

(1)根据电话号码查询姓名

[java] 

1.//根据电话号码查询姓名(在一个电话打过来时,如果此电话在通讯录中,则显示姓名)

2.public 

void 

testReadNameByPhone(){

3.Stringphone= 

"

12345678"

;

4.//uri=content:

//com.android.contacts/data/phones/filter/#

5.Uriuri=Uri.parse("

content:

//com.android.contacts/data/phones/filter/"

+phone);

6.ContentResolverresolver= 

this.getContext().getContentResolver();

7.Cursorcursor=resolver.query(uri, 

new 

String[]{Data.DISPLAY_NAME}, 

null, 

null);

//从raw_contact表中返回display_name

8.if(cursor.moveToFirst()){

9.Log.i("

Contacts"

 

+cursor.getString(0));

10.}

11.}

(2)查询所有的联系人

1.//读取通讯录的全部的联系人

2.//需要先在raw_contact表中遍历id,并根据id到data表中获取数据

3.public 

testReadAll(){

4.//uri=content:

//com.android.contacts/contacts

//com.android.contacts/contacts"

);

//访问raw_contacts表

String[]{Data._ID}, 

//获得_id属性

8.while(cursor.moveToNext()){

9.StringBuilderbuf= 

StringBuilder();

10.int 

id=cursor.getInt(0);

//获得id并且在data中寻找数据

11.buf.append("

id="

+id);

12.uri=Uri.parse("

//com.android.contacts/contacts/"

+id+"

/data"

//如果要获得data表中某个id对应的数据,则URI为content:

//com.android.contacts/contacts/#/data

13.Cursorcursor2=resolver.query(uri, 

String[]{Data.DATA1,Data.MIMETYPE}, 

null,null, 

//data1存储各个记录的总数据,mimetype存放记录的类型,如电话、email等

14.while(cursor2.moveToNext()){

15.Stringdata=cursor2.getString(cursor2.getColumnIndex("

data1"

));

16.if(cursor2.getString(cursor2.getColumnIndex("

mimetype"

)).equals("

)){ 

//如果是名字

17.buf.append("

name="

+data);

18.}

19.else 

if(cursor2.getString(cursor2.getColumnIndex("

//如果是电话

20.buf.append("

phone="

21.}

22.else 

vnd.android.cursor.item/email_v2"

//如果是email

23.buf.append("

email="

24.}

25.else 

vnd.android.cursor.item/postal-address_v2"

)){//如果是地址

26.buf.append("

address="

27.}

28.else 

vnd.android.cursor.item/organization"

//如果是组织

29.buf.append("

organization="

30.}

31.}

32.Stringstr=buf.toString();

33.Log.i("

str);

34.}

35.} 

2.Insert

(1)一步一步添加数据

1.//一步一步添加数据

testAddContacts(){

3.//插入raw_contacts表,并获取_id属性

4.Uriuri=Uri.parse("

//com.android.contacts/raw_contacts"

5.ContentResolverresolver= 

6.ContentValuesvalues= 

ContentValues();

7.long 

contact_id=ContentUris.parseId(resolver.insert(uri,values));

8.//插入data表

9.uri=Uri.parse("

//com.android.contacts/data"

10.//addName

11.values.put("

raw_contact_id"

contact_id);

12.values.put(Data.MIMETYPE,"

13.values.put("

data2"

zdong"

14.values.put("

xzdong"

15.resolver.insert(uri,values);

16.values.clear();

17.//addPhone

18.values.put("

19.values.put(Data.MIMETYPE,"

20.values.put("

2"

//手机

21.values.put("

87654321"

22.resolver.insert(uri,values);

23.values.clear();

24.//addemail

25.values.put("

26.values.put(Data.MIMETYPE,"

27.values.put("

//单位

28.values.put("

xzdong@"

29.resolver.insert(uri,values);

(2)批量添加数据

核心代码:

(1)ContentProviderOperationoperation=ContentProviderOperation.newInsert(uri).withValue("

key"

"

value"

).build();

(2)resolver.applyBatch("

authorities"

operations);

//批量提交

spanstyle="

font-size:

18px;

>

public 

testAddContactsInTransaction() 

throws 

Exception{

2.Uriuri=Uri.parse("

3.ContentResolverresolver= 

4.ArrayList<

ContentProviderOperation>

operations= 

ArrayList<

();

5.//向raw_contact表添加一条记录

6.//此处.withValue("

account_name"

null)一定要加,不然会抛NullPointerException

7.ContentProviderOperationoperation1=ContentProviderOperation

8..newInsert(uri).withValue("

null).build();

9.operations.add(operation1);

10.//向data添加数据

11.uri=Uri.parse("

12.//添加姓名

13.ContentProviderOperationoperation2=ContentProviderOperation

14..newInsert(uri).withValueBackReference("

0)

15.//withValueBackReference的第二个参数表示引用operations[0]的操作的返回id作为此值

16..withValue("

17..withValue("

18.operations.add(operation2);

19.//添加手机数据

20.ContentProviderOperationoperation3=ContentProviderOperation

21..newInsert(uri).withValueBackReference("

22..withValue("

23..withValue("

).withValue("

0000000"

24.operations.add(operation3);

25.resolver.applyBatch("

com.android.contacts"

operations);

26.}<

/span>

3.Delete

核心思想:

(1)先在raw_contacts表根据姓名查出id;

(2)在data表中只要raw_contact_id匹配的都删除;

1.public 

testDelete()throws 

Exception{

2.Stringname= 

3.//根据姓名求id

6.Cursorcursor=resolver.query(uri, 

String[]{Data._ID},"

display_name=?

String[]{name}, 

7.if(cursor.moveToFirst()){

8.int 

9.//根据id删除data中的相应数据

10.resolver.delete(uri, 

String[]{name});

12.resolver.delete(uri, 

raw_contact_id=?

String[]{id+"

});

13.}

14.}

4.Update

(1)不需要更新raw_contacts,只需要更新data表;

(2)uri=content:

//com.android.contacts/data表示对data表进行操作;

testUpdate()throws 

2.int 

id= 

1;

999999"

//对data表的所有数据操作

7.values.put("

phone);

8.resolver.update(uri,values, 

mimetype=?

andraw_contact_id=?

String[]{"

id+"

})

9.}

 

viewplaincopy

span 

style="

font-family:

KaiTi;

16px;

<

2. 

主要的通讯录程序为ContactsProvider2.java

authorities=contacts或com.android.contacts;

四、编程提示

URI

对raw_contacts表添加、删除、更新操作:

URI= 

//com.android.contacts/raw_contacts;

对data表添加、删除、更新操作:

//com.android.contacts/data;

根据email对data表查询

URI= 

conte

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1