我正在嘗試將聯繫人的生日信息添加到聯繫人中。我使用lookupkey來識別我的聯繫人(因爲它比只依賴contactId更安全)。爲了能夠插入到的事件,我需要一個raw_contact_id數據庫...所以我試圖讓這個ID:Android:以編程方式將生日事件添加到Android聯繫人
String where = ContactsContract.Data.LOOKUP_KEY + " = ? AND "
+ ContactsContract.Data.MIMETYPE + " = ?";
String[] params = new String[] { lookupKey,
ContactsContract.CommonDataKinds.Event.CONTENT_ITEM_TYPE };
Cursor cursor = contentResolver.query(
ContactsContract.Data.CONTENT_URI, null, where, params, null);
if (cursor.moveToFirst()) {
birthdayRow = cursor.getInt(idIdx);
long rawContactId = cursor.getLong(cursor
.getColumnIndex(ContactsContract.Data.RAW_CONTACT_ID));
}
的問題是,如果沒有生日事件聯繫人設置那麼我收到的這個遊標是空的......而且我不知道如何在沒有raw_contact_id的情況下插入這個事件。爲了插入我做如下因素的事件:
values.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactId);
values.put(ContactsContract.Data.MIMETYPE, Event.CONTENT_ITEM_TYPE);
values.put(ContactsContract.CommonDataKinds.Event.START_DATE,
birthdayStartDate);
values.put(ContactsContract.CommonDataKinds.Event.TYPE,
ContactsContract.CommonDataKinds.Event.TYPE_BIRTHDAY);
values.put(ContactsContract.CommonDataKinds.Event.START_DATE,
context.getString(R.string.birthday_label));
if (birthdayRow >= 0) {
int result = contentResolver.update(
ContactsContract.Data.CONTENT_URI, values,
ContactsContract.Data._ID + " = " + birthdayRow, null);
Log.i("ContactList", "update result: " + result);
} else {
Uri result = contentResolver.insert(
ContactsContract.Data.CONTENT_URI, values);
Log.i("ContactList", "update result: " + result);
}
所以,請指教我該怎麼辦,有沒有什麼辦法,以這個事件添加到聯絡人資料whitout一個raw_contact ID?我也發現奇怪的事實,對於其他ContactData像暱稱我做同樣的事情,我沒有得到一個空的遊標的參數 String [] params = new String [] {String.valueOf(lookupKey), ContactsContract.CommonDataKinds .Nickname.CONTENT_ITEM_TYPE};即使聯繫人沒有暱稱,也可以使用 。