2012-07-30 74 views
0

我能夠獲取聯繫人的其他信息(顯示名稱,組織,電話號碼和email_id),但無法獲取該聯繫人的生日和週年紀念。無法從聯繫人獲取正確的生日和週年紀念數據

這是我用於生日的代碼。它取數據,但給我錯誤的數據,即重複所有聯繫人的相同數據。

private String getBDate(String id) { 
    String bday = null; 
    ContentResolver cr = getContentResolver(); 
    Uri uri = ContactsContract.Data.CONTENT_URI; 
    String[] projection = new String[] { 
      ContactsContract.Contacts.DISPLAY_NAME, 
      ContactsContract.CommonDataKinds.Event.CONTACT_ID, 
      ContactsContract.CommonDataKinds.Event.START_DATE }; 
    String where = ContactsContract.Data.MIMETYPE + "= ? AND " 
      + ContactsContract.CommonDataKinds.Event.TYPE + "=" 
      + ContactsContract.CommonDataKinds.Event.TYPE_BIRTHDAY; 
    String[] selectionArgs = new String[] { ContactsContract.CommonDataKinds.Event.CONTENT_ITEM_TYPE }; 
    String sortOrder = null; 
    Cursor cur = cr.query(uri, projection, where, selectionArgs, sortOrder); 
    while (cur.moveToNext()) { 
     bday = cur 
       .getString(cur 
         .getColumnIndex(ContactsContract.CommonDataKinds.Event.START_DATE)); 
     Log.v("Birthday", bday); 
    } 
    cur.close(); 
    return bday; 
} 

週年紀念日的情況也是如此,這裏是它的代碼。在某些情況下,不會添加週年紀念,但它仍會顯示來自其他聯繫人的數據。

private String getAnnv(String id) { 
    String annv = null; 
    ContentResolver cr = getContentResolver(); 
    Uri uri = ContactsContract.Data.CONTENT_URI; 
    String[] projection = new String[] { 
      ContactsContract.Contacts.DISPLAY_NAME, 
      ContactsContract.CommonDataKinds.Event.CONTACT_ID, 
      ContactsContract.CommonDataKinds.Event.START_DATE }; 
    String where = ContactsContract.Data.MIMETYPE + "= ? AND " 
      + ContactsContract.CommonDataKinds.Event.TYPE + "=" 
      + ContactsContract.CommonDataKinds.Event.TYPE_ANNIVERSARY; 
    String[] selectionArgs = new String[] { ContactsContract.CommonDataKinds.Event.CONTENT_ITEM_TYPE }; 
    // String sortOrder = null; 
    Cursor cur = cr.query(uri, projection, where, selectionArgs, null); 
    while (cur.moveToNext()) { 
     annv = cur 
       .getString(cur 
         .getColumnIndex(ContactsContract.CommonDataKinds.Event.START_DATE)); 
     Log.v("Anniversary", annv); 
    } 
    cur.close(); 
    return annv; 
} 
+0

我認爲這將是對你非常有用 http://stackoverflow.com/questions/2482631/how-to-get-contacts-in-order-of-their-即將到來的生日 – Ramkumar 2012-07-30 13:23:14

+0

其實在一些問題中,我沒有找到解決方案,所以沒有接受答案。 – Beenal 2012-08-01 09:35:20

+0

我需要和你談談@Beenal。我需要聯繫人列表中的相同出生日期和週年日期。你有這個解決方案?請儘可能儘快回覆。如果你有解決方案,那麼請儘快給我代碼。它的緊急請幫助我。 – 2016-07-23 11:51:24

回答

0

你沒有使用字符串ID參數在哪裏條件,所以請再次檢查。

E,g private String getAnnv(String id)函數爲ID輸入,但似乎沒有使用withing函數,所以請把這個ID在條件檢查,這應該工作。

ContactsContract.CommonDataKinds.Event.CONTACT_ID + "= " + ID 
AND ContactsContract.Data.MIMETYPE + "= ? AND " 
+0

我不明白,請你解釋一下。 – Beenal 2012-08-01 05:21:54

+0

回答更新請看現在... – 2012-08-01 07:58:44

相關問題