【问题标题】:Android Applicaiton - How to get birthday of a contactAndroid 应用程序 - 如何获取联系人的生日
【发布时间】:2012-05-28 15:55:31
【问题描述】:

我正在开发一个 android 应用程序,我需要将每个联系人的生日与当前日期进行匹配,如果是肯定的,则处理一些需要完整联系人详细信息的业务逻辑。

我找到了分别读取联系人生日或联系人本身的方法,但对如何将两者结合起来感到困惑。有人可以提供一些方向吗?

谢谢

【问题讨论】:

    标签: android android-contacts


    【解决方案1】:

    在网上看了一些之后找到了答案。必须这样做的方式是:

    • 获取联系人列表
    • 对于每个联系人,获取contactId
    • 使用联系人 ID 获取生日

    下面是sn-p的代码:

    ContentResolver cr = getContentResolver(); //getContnetResolver()
    String[] projection = new String[] { ContactsContract.Contacts._ID, ContactsContract.Contacts.DISPLAY_NAME };
    
    Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, projection, null, null,
                ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC");
    
    while (cur.moveToNext()) {
    
       Map<String, String> contactInfoMap = new HashMap<String, String>();
       String contactId = cur.getString(cur.getColumnIndex(ContactsContract.Data._ID));
       String displayName =  cur.getString(cur.getColumnIndex(ContactsContract.Data.DISPLAY_NAME));     
    
        String columns[] = {
             ContactsContract.CommonDataKinds.Event.START_DATE,
             ContactsContract.CommonDataKinds.Event.TYPE,
             ContactsContract.CommonDataKinds.Event.MIMETYPE,
        };
    
        String where = Event.TYPE + "=" + Event.TYPE_BIRTHDAY + 
                        " and " + Event.MIMETYPE + " = '" + Event.CONTENT_ITEM_TYPE + "' and "                  + ContactsContract.Data.CONTACT_ID + " = " + contactId;
    
        String[] selectionArgs = null;
        String sortOrder = ContactsContract.Contacts.DISPLAY_NAME;
    
        Cursor birthdayCur = cr.query(ContactsContract.Data.CONTENT_URI, columns, where, selectionArgs, sortOrder); 
        if (birthdayCur.getCount() > 0) {
            while (birthdayCur.moveToNext()) {
                 String birthday = birthdayCur.getString(birthdayCur.getColumnIndex(ContactsContract.CommonDataKinds.Event.START_DATE));
            }
        }
        birthdayCur.close();
    
       }    
    
        cur.close();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-12
      • 2012-02-05
      • 1970-01-01
      • 2015-11-17
      • 1970-01-01
      • 2021-03-09
      • 2018-06-20
      相关资源
      最近更新 更多