我在以下代碼中努力工作,但不幸的是,該條目被分配給錯誤的聯繫人。我不知道爲什麼。測試
小時
天但無法找到該錯誤。你可以幫我嗎?將聯繫人的事件添加到Android的聯繫人表
我想要使用代碼來從聯繫人列表中選擇一個人(使用聯繫人選擇器),然後將此人的事件條目(出生日期)添加到聯繫人表中。
步驟1:
我已經設置權限在清單文件:
<uses-permission android:name="android.permission.WRITE_CONTACTS"></uses-permission>
步驟2:
接觸拾取器的ID定義爲:
private static final int CONTACT_PICKER_ID = 123;
步驟3:
接觸拾取器被稱爲:
Intent contactPickerIntent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(contactPickerIntent, CONTACT_PICKER_ID);
步驟4:
另一種方法偵聽聯繫人選擇器的結果並嘗試添加一個事件爲所選擇的用戶:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
switch (requestCode) {
case CONTACT_PICKER_ID:
Uri selectedPerson = data.getData();
String contactId = selectedPerson.getLastPathSegment();
// ADD A NEW EVENT FOR THE SELECTED CONTACT --- BEGIN
ContentValues values = new ContentValues();
values.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Event.CONTENT_ITEM_TYPE);
values.put(ContactsContract.Data.RAW_CONTACT_ID, contactId);
values.put(ContactsContract.CommonDataKinds.Event.TYPE, ContactsContract.CommonDataKinds.Event.TYPE_BIRTHDAY);
values.put(ContactsContract.CommonDataKinds.Event.RAW_CONTACT_ID, contactId);
values.put(ContactsContract.CommonDataKinds.Event.LABEL, "");
values.put(ContactsContract.CommonDataKinds.Event.START_DATE, "2010-01-28"); // hard-coded date of birth
Uri created = null;
try {
created = getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values);
}
catch (Exception e) {
}
if (created == null) {
Toast.makeText(this.getApplicationContext(), "Failed inserting the event!", Toast.LENGTH_SHORT).show();
}
else {
Toast.makeText(this.getApplicationContext(), "Successfully inserted the event!", Toast.LENGTH_SHORT).show();
}
// ADD A NEW EVENT FOR THE SELECTED CONTACT --- END
break;
}
}
}
事件已成功插入到數據庫並顯示在Google聯繫人中 - 但不幸的是,它被分配給錯誤的聯繫人。這是爲什麼?我的contactId錯誤,我從聯繫人選取器中獲得?
我不是一個Android專家,但是您是否需要能夠讀取聯繫人以選擇一個以及寫入功能? – Jared
每個http://developer.android.com/reference/android/Manifest.permission.html WRITE_CONTACTS沒有能力讀取它們。我再也不知道答案,這只是我看不起的東西。 – Jared
對不起,權限READ_CONTACTS也被設置。但是閱讀過程不是問題,無論如何。這是寫作不起作用。 – caw