Android 应用程序 - 如何获取联系人的生日

Posted

技术标签:

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

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

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

谢谢

【问题讨论】:

【参考方案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();

【讨论】:

以上是关于Android 应用程序 - 如何获取联系人的生日的主要内容,如果未能解决你的问题,请参考以下文章

在 xmpp for android 中获取生日、性别、手机

从 ContactProvider 读取生日,无效列

带有日期选择器的 Android 微调器,例如 Google 日历应用

从联系 Swift 获取街道地址

查询联系人的组织,但获取地址类型和值

如何获取在whatsapp或android中其他应用程序中使用的联系人