/**
     * 根据id获取联系人姓名
     * @param id
     * @return
     */
    private String getContactNameById(String id) {
        if(TextUtils.isEmpty(id)) {
            return null;
        }
        String name = null;
        String[] projection = {Phone.DISPLAY_NAME};
        Cursor cur = null;
        try {
            cur = mContext.getContentResolver().query(Phone.CONTENT_URI,
                    projection, Phone.RAW_CONTACT_ID + "=?",
                    new String[]{id}, null);
            if (cur != null) {
                cur.moveToFirst();
                name = cur.getString(cur.getColumnIndex(Phone.DISPLAY_NAME));
            }
        } catch(Exception e) {
            System.out.println(e.toString());
            e.printStackTrace();
        } finally {
            if(cur != null) {
                cur.close();
                cur = null;
            }
        }
        return name;
    }
    
    /**
     * 读取联系人纪念日
     */
    public ArrayList<SCEvent> loadBirth(Context context) {
        ArrayList<SCEvent> list = new ArrayList<SCEvent>();
        Cursor cur = null;
        try {
            String[] projection = new String[]{ContactsContract.Data.RAW_CONTACT_ID,
                    ContactsContract.Data.DATA1, Event.TYPE};
            String selection = Event.MIMETYPE + "='" 
                    + Event.CONTENT_ITEM_TYPE + "' AND (" 
                    + Event.TYPE + "='" + Event.TYPE_BIRTHDAY + "'"
                    + " or " + Event.TYPE + "='" + Event.TYPE_ANNIVERSARY + "')";
            cur = context.getContentResolver()
                    .query(ContactsContract.Data.CONTENT_URI, projection, selection, null, null);
            LogUtils.d("loadBirth", "begin loadBirth...");
            if (cur != null) {
                SimpleDateFormat bartDateFormat =  
                        new SimpleDateFormat("yyyy-MM-dd");
                while (cur.moveToNext()) {
                    if (cur.getString(cur.getColumnIndex(ContactsContract.Data.DATA1)) != null) {
                        String birthday = cur.getString(cur.getColumnIndex(
                                ContactsContract.Data.DATA1));
                        if(!TextUtils.isEmpty(birthday)) {
                            String[] births = birthday.split("T");
                            birthday = births[0];
                            long time = bartDateFormat.parse(birthday).getTime();
                            String id = cur.getString(cur.getColumnIndex(
                                    ContactsContract.Data.RAW_CONTACT_ID));
                            int type = cur.getInt(cur.getColumnIndex(Event.TYPE));
                            String name = getContactNameById(id);
                            
                            if(!TextUtils.isEmpty(name)) {
                                SCEvent e = new SCEvent();
                                e.setmName(name);
                                Calendar c = Calendar.getInstance();
                                c.setTimeInMillis(time);
                                c.set(Calendar.HOUR_OF_DAY, 9);
                                c.set(Calendar.MINUTE, 0);
                                c.set(Calendar.SECOND, 0);
                                c.set(Calendar.MILLISECOND, 0);
                                e.setmNormalAlertTime(c.getTimeInMillis());
                                int year = c.get(Calendar.YEAR);
                                e.setmBirthdayYear(year);
                                e.setmBirthdayMonth(c.get(Calendar.MONTH) + 1);
                                e.setmBirthdayDay(c.get(Calendar.DAY_OF_MONTH));
                                e.setmBirthdayAdvanceTime(86400000);
                                e.setmIsBirthday(type == Event.TYPE_BIRTHDAY ? 1 : 0);
                                e.setmAlarmType(SCEvent.TYPE_BIRTHDAY_CONTACT);
                                e.setmId(SCEvent.ID_BIRTHDAY_CONTACT);
                                e.setmBackGroundType(SCEvent.EVENT_BIRTHDAY);
                                e.setmType(SCEvent.EVENT_BIRTHDAY);
                                list.add(e);
                                LogUtils.d("loadBirth", " birth=" + birthday + " name=" + name);
                            }
                        }
                    }
                }
            }
            cur.close();
        } catch (Exception e) {
            System.out.println(e.toString());
            e.printStackTrace();
        } finally {
            if(cur != null) {
                cur.close();
                cur = null;
            }
        }
        return list;
    }

 

posted on 2014-09-23 15:09  冰幻孤影  阅读(440)  评论(0编辑  收藏  举报