查询短信数据库的相关常量及案例
2016-02-01 08:50
309 查看
public class HuihuaUtil {//在一个Utill类中写查询操作及相关排序方法
//这个类起的名字比较差劲叫会话Util
//在此之前准备个实体类来放取出来的数据,会话类
public static List<Huihua> getAllHuihua(Context context) {
List<Huihua> list=new ArrayList<Huihua>();
ContentResolver cr=
context.getContentResolver();
Uri uri=Uri.parse("content://mms-sms/conversations");//这是查询短息的Util常量字符串
String[] projection = new String[]{
Sms._ID,Sms.BODY,Sms.DATE,Sms.PERSON,Sms.READ,Sms.TYPE,Sms.ADDRESS
};//以上依次为信息的Id,不是通讯录里的id;短信内容;日期;是我和陌生人为null;读和未读;短息是收和发的判断;对方电话号
String sortOrder=Sms.DATE+" desc";//排序条件
Cursor c = cr.query(uri, projection, null, null, sortOrder);
while (c.moveToNext()) {
Huihua huihua=new Huihua();
huihua.set_id(c.getInt(0));
huihua.setBody(c.getString(1));
huihua.setThreadDate(getCalllogTime(c.getLong(2)));
huihua.setPerson(c.getString(3));
huihua.setRead(c.getString(4));
huihua.setType(c.getString(5));
huihua.setPhone(c.getString(6));
huihua.setPhoto_id(getphotoidBynumber(context, huihua.getPhone()));
String name=getNameBynumber(context, huihua.getPhone());
huihua.setName(name);//根据电话号查联系人姓名
list.add(huihua);
}
c.close();
return list;
}
//一种时间格式化方法
public static String getCalllogTime(Long stample) {
String result="";
Long now=System.currentTimeMillis();
long gap=now-stample;
if(gap<=24*60*60*1000){
result=new SimpleDateFormat("HH:mm").format(new Date(stample));
}else if(gap<=24*60*60*1000*2){
result="昨天";
}else if(gap<=7*24*60*60*1000){
Calendar calendar=Calendar.getInstance();
calendar.setTimeInMillis(stample);
int weekDay=
calendar.get(Calendar.DAY_OF_WEEK);
switch (weekDay) {
case 1:
result="星期日";
break;
case 2:
result="星期一";
break;
case 3:
result="星期二";
break;
case 4:
result="星期三";
break;
case 5:
result="星期四";
break;
case 6:
result="星期五";
break;
case 7:
result="星期六";
break;
default:
break;
}
}else{
result=new SimpleDateFormat("yyyy-MM-dd").format(new Date(stample));
}
return result;
}
//根据电话号码拿到照片id;有利于更新
public static int getphotoidBynumber(Context context,String number) {
int photo_id=0;
ContentResolver cr=
context.getContentResolver();
Uri uri=Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI,
number);
Cursor cursor=
cr.query(uri,
new String[]{PhoneLookup.PHOTO_ID}, null, null, null);
if(cursor
4000
.moveToNext()){
photo_id=cursor.getInt(0);
}
cursor.close();
return photo_id;
}
//根据电话号查询名字
public static String getNameBynumber(Context context,String number) {
String name="";
List<Contact> list=
ContactUtil.getAllContacts(context);
for(int i=0;i<list.size();i++){
if(list.get(i).getPhone().equals(number)){
name=list.get(i).getName();
}
}
return name;
}
}
//这个类起的名字比较差劲叫会话Util
//在此之前准备个实体类来放取出来的数据,会话类
public static List<Huihua> getAllHuihua(Context context) {
List<Huihua> list=new ArrayList<Huihua>();
ContentResolver cr=
context.getContentResolver();
Uri uri=Uri.parse("content://mms-sms/conversations");//这是查询短息的Util常量字符串
String[] projection = new String[]{
Sms._ID,Sms.BODY,Sms.DATE,Sms.PERSON,Sms.READ,Sms.TYPE,Sms.ADDRESS
};//以上依次为信息的Id,不是通讯录里的id;短信内容;日期;是我和陌生人为null;读和未读;短息是收和发的判断;对方电话号
String sortOrder=Sms.DATE+" desc";//排序条件
Cursor c = cr.query(uri, projection, null, null, sortOrder);
while (c.moveToNext()) {
Huihua huihua=new Huihua();
huihua.set_id(c.getInt(0));
huihua.setBody(c.getString(1));
huihua.setThreadDate(getCalllogTime(c.getLong(2)));
huihua.setPerson(c.getString(3));
huihua.setRead(c.getString(4));
huihua.setType(c.getString(5));
huihua.setPhone(c.getString(6));
huihua.setPhoto_id(getphotoidBynumber(context, huihua.getPhone()));
String name=getNameBynumber(context, huihua.getPhone());
huihua.setName(name);//根据电话号查联系人姓名
list.add(huihua);
}
c.close();
return list;
}
//一种时间格式化方法
public static String getCalllogTime(Long stample) {
String result="";
Long now=System.currentTimeMillis();
long gap=now-stample;
if(gap<=24*60*60*1000){
result=new SimpleDateFormat("HH:mm").format(new Date(stample));
}else if(gap<=24*60*60*1000*2){
result="昨天";
}else if(gap<=7*24*60*60*1000){
Calendar calendar=Calendar.getInstance();
calendar.setTimeInMillis(stample);
int weekDay=
calendar.get(Calendar.DAY_OF_WEEK);
switch (weekDay) {
case 1:
result="星期日";
break;
case 2:
result="星期一";
break;
case 3:
result="星期二";
break;
case 4:
result="星期三";
break;
case 5:
result="星期四";
break;
case 6:
result="星期五";
break;
case 7:
result="星期六";
break;
default:
break;
}
}else{
result=new SimpleDateFormat("yyyy-MM-dd").format(new Date(stample));
}
return result;
}
//根据电话号码拿到照片id;有利于更新
public static int getphotoidBynumber(Context context,String number) {
int photo_id=0;
ContentResolver cr=
context.getContentResolver();
Uri uri=Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI,
number);
Cursor cursor=
cr.query(uri,
new String[]{PhoneLookup.PHOTO_ID}, null, null, null);
if(cursor
4000
.moveToNext()){
photo_id=cursor.getInt(0);
}
cursor.close();
return photo_id;
}
//根据电话号查询名字
public static String getNameBynumber(Context context,String number) {
String name="";
List<Contact> list=
ContactUtil.getAllContacts(context);
for(int i=0;i<list.size();i++){
if(list.get(i).getPhone().equals(number)){
name=list.get(i).getName();
}
}
return name;
}
}
相关文章推荐
- MySQL的安装
- MySQL教程及经常使用命令1.1
- SQLite数据库的分页查询
- postgresql 创建 用户,数据库,表
- postgresql 查看数据库,表,索引,表空间以及大小
- postgresql 修改表结构,添加索引
- postgresql 删除 数据库,表,索引
- 在MYSQL里使用哪种格式存储图片?之解惑总结
- 开源分布式数据库中间件MyCat
- SQL*PLUS的输出格式化
- sql 基础操作
- PHP ORM框架与简单代码实现—让OOP与关系数据库更融洽
- MySQL中锁的类型
- MySQL C API by Example
- mysql datetime 时间比较
- mysql中datetime到time_t转换
- mysql ERROR------FULLTEXT
- mysql 并发 行锁 inoodb
- mysqldump只导出数据或者只导出表结构
- MySql中文乱码问题解决