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,
//font-size: 10.5pt; font-family: