2012-05-22 48 views
4

我正在開發一個android應用程序,我需要將每個聯繫人的生日與當前日期進行匹配,如果積極,則處理一些業務邏輯,需要完整的聯繫人詳細信息。Android應用程序 - 如何獲取聯繫人的生日

我已經找到了分別讀取聯繫人或聯繫人的生日的方法,但是對於如何將兩者結合起來感到困惑。有人可以提供一些方向。

謝謝

回答

8

找到了一些在網絡上看後的答案。這需要做的方式是:接觸

  • 獲取列表
  • 對於每個聯繫人,得到的ContactID
  • 獲取生日使用的ContactID

以下是代碼片段:

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(); 
相關問題