caw*_*caw 11 java android contacts date-of-birth
在我的Android应用程序中,我使用以下代码读出所有联系人:
ContentResolver cr = getContentResolver();
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
if (cur.getCount() > 0) {
while (cur.moveToNext()) {
String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
ContentResolver bd = getContentResolver();
String where = Data.RAW_CONTACT_ID+" = "+id+" and "+Data.MIMETYPE+" = "+CommonDataKinds.Event.CONTENT_ITEM_TYPE;
Cursor bdc = bd.query(ContactsContract.Data.CONTENT_URI, null, where, null, null);
if (bdc.getCount() > 0) {
while (bdc.moveToNext()) {
String birthday = bdc.getString(0);
Toast.makeText(getApplicationContext(), id+name+birthday, Toast.LENGTH_SHORT);
}
}
}
}
cur.close();
Run Code Online (Sandbox Code Playgroud)
这就是我试图读出每个联系人的生日事件的方式.但显然它还没有奏效.那么如何才能正确读出联系人的出生日期?
dst*_*cks 24
提醒:一些OEM提供他们自己的联系提供商(不是标准的Android提供商),可能不遵循标准的Android做法.例如,com.android.providers.contacts.HtcContactsProvider2响应我的HTC Desire HD上的查询
这是一种方式:
// method to get name, contact id, and birthday
private Cursor getContactsBirthdays() {
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;
return managedQuery(uri, projection, where, selectionArgs, sortOrder);
}
// iterate through all Contact's Birthdays and print in log
Cursor cursor = getContactsBirthdays();
int bDayColumn = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Event.START_DATE);
while (cursor.moveToNext()) {
String bDay = cursor.getString(bDayColumn);
Log.d(TAG, "Birthday: " + bDay);
}
Run Code Online (Sandbox Code Playgroud)
如果这不起作用,您可能有OEM修改的联系人提供程序.
| 归档时间: |
|
| 查看次数: |
12211 次 |
| 最近记录: |