android 常用的数据库表以及操作说明

 

Android  常用数据表操作总结

 

1:通话记录表

表名:calls

表的主要字段说明:

字段名

字段类型

备注

_id 

INTEGER 

记录标识

number 

TEXT

电话号码

date 

INTEGER

通话时间( 注意是一个整形 )

duration 

INTEGER

电话时长

new 

INTEGER

 

name 

TEXT

联系人

type

INTEGER

电话状态(1 :打进来的电话, 2 :打出的电话, 3 :未接电话 )

 

主要操作的涉及的代码:

查询系统通话记录

 

private  Cursor  queryAllCallsInfo (){

Uri uri=CallLog.Calls. CONTENT_URI ;

String sortOrder=CallLog.Calls. DEFAULT_SORT_ORDER ;

return   context .getContentResolver().query(uri,  null null null , sortOrder);

}

 

根据电话删除系统通话记录

 

public   int  deleteSysCallInfoSByNum(String number){

Uri uri=CallLog.Calls. CONTENT_URI ;

String where=CallLog.Calls. NUMBER + "='" +number+ "'" ;

Return   context .getContentResolver().delete(uri, where,  null );

}

 

 

 

 

2:短信记录表

表名:sms

主要字段说明:

字段名

字段类型

备注

_id 

INTEGER 

记录标识

thread_id

INTEGER

对话的序号(conversation

address

TEXT

发件人地址,手机号

person

INTEGER

发件人,返回一个数字就是联系人列表里的序号,陌生人为null (但是我查看系统存在联系人一下表该字段为 null

date 

INTEGER

发送短信的时间

read 

INTEGER 

是否阅读

status

INTEGER

状态(估计与网关的状态)

type

INTEGER

类型 1 是接收到的, 2 是发出的

body

TEXT

消息体内容

service_center

TEXT

短信中心号码

主要操作涉及的代码

查询系统短信记录

 

/**

 * 查询系统所有收件箱短信记录

 *  @return

 */

private  Cursor queryAllInboxSmsInfo(){

System. out .println( "---query in box message----" );

Uri uri=Uri. parse ( "content://content://sms/inbox" ); //收件箱

String sortOrder= "date desc" ;

return   context .getContentResolver().query(uri,  null null null , sortOrder);

}

/**

 * 查询所有发件箱短信的内容

 *  @return

 */

private  Cursor queryAllSentSmsInfo(){

System. out .println( "---query send box message----" );

Uri uri=Uri. parse ( "content://sms/sent" ); //发件箱

String sortOrder= "date desc" ;

return   context .getContentResolver().query(uri,  null null null , sortOrder);

}

删除系统短信的方法

/**

 * 删除短信记录

 *  @param  threadId 短信的会话记录

 *  @return

 */

public   int  deleteSysMessageByThreadId( long  threadId){

System. out .println( "---------deleteSysMessageByThreadId-------" );

 Uri mUri=Uri. parse ( "content://sms/conversations/"  + threadId);  

  return   context .getContentResolver().delete(mUri,  null null );  

}

3:联系人表

表名:contacts

主要字段的说明:

字段名

字段类型

备注

_id 

INTEGER 

记录标识,通过该字段找到响应其他表里面联系人详细信息

display_name

TEXT

联系人姓名

has_phone_number

INTEGER 

是否有电话号码,没有为0 ,有几个就返回几个

具体创建的SQL数据

CREATE TABLE contacts 

(_id INTEGER PRIMARY KEY AUTOINCREMENT,display_name TEXT,

photo_id INTEGER REFERENCES data(_id),

custom_ringtone TEXT,

send_to_voicemail INTEGER NOT NULL DEFAULT 0,

times_contacted INTEGER NOT NULL DEFAULT 0,last_time_contacted INTEGER,

starred INTEGER NOT NULL DEFAULT 0,in_visible_group INTEGER NOT NULL DEFAULT 1,

has_phone_number INTEGER NOT NULL DEFAULT 0,

lookup TEXT,status_update_id INTEGER REFERENCES data(_id),

single_is_restricted INTEGER NOT NULL DEFAULT 0)

 

主要涉及的操作代码:

查询所有的联系信息

public   void  getContact() {

Uri uri = ContactsContract.Contacts. CONTENT_URI ;

Cursor cursor = getContentResolver().query(uri,  null null null null );

if  (cursor.moveToFirst()) {

 

int  idColumnIndex = cursor

.getColumnIndex(ContactsContract.Contacts. _ID );

System. out .println( "-------idColumnIndex----------:"

+ idColumnIndex);

 

int  displayNameColumnIndex = cursor

.getColumnIndex(ContactsContract.Contacts. DISPLAY_NAME );

System. out .println( "--------------displayNameColumnIndex------"

+ displayNameColumnIndex);

 

do  {

// 获取联系人的ID号

String contactId = cursor.getString(idColumnIndex);

System. out .println( "---------contactId-------"  + contactId);

// 获取联系人姓名

String displayName = cursor.getString(displayNameColumnIndex);

System. out .println( "--------------displayName-----"

+ displayName);

 

// 查看该联系人有多少个电话号码。如果没有这返回值为0

int  phoneCount = cursor

.getInt(cursor

.getColumnIndex(ContactsContract.Contacts. HAS_PHONE_NUMBER ));

if  (phoneCount > 0) {

 

//如果只想查询手机号码的话就只执行下面的代码

//

// Cursor phones = mContext.getContentResolver().query(

//  ContactsContract.CommonDataKinds.Phone.CONTENT_URI,

//  null,

//

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值