您的位置:首页 > 数据库

查询短信数据库的相关常量及案例

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;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: