我在以下代码中努力工作,但不幸的是,该条目被分配给错误的联系人。我不知道为什么。测试
小时
天但无法找到该错误。你可以帮我吗?将联系人的事件添加到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