我使用以下代码简单地添加联系人:
Intent intent = new Intent(ContactsContract.Intents.Insert.ACTION);
intent.setType(ContactsContract.RawContacts.CONTENT_TYPE);
intent.putExtra(ContactsContract.Intents.Insert.NAME, edNome.getText().toString() + ' ' + edCognome.getText().toString())
.putExtra(ContactsContract.Intents.Insert.PHONE, edCellulare.getText().toString())
.putExtra(ContactsContract.Intents.Insert.PHONE_TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE);
startActivity(intent);
我还需要插入生日日期。我看到有“ ContactsContract.CommonDataKinds.Event”选项,但是如何将其添加到意图中?
答案 0 :(得分:0)
您可以像以下代码一样添加生日:
这里1是生日的calendarId
值。
private void addEvent(){
ContentResolver cr = ((Activity)Forms.Context).ContentResolver;
ContentValues values = new ContentValues();
String eventUriString = "content://com.android.calendar/events";
//Insert Events in the calendar...
values.Put(CalendarContract.Events.InterfaceConsts.CalendarId, 1);
values.Put(CalendarContract.Events.InterfaceConsts.Title, title);
values.Put(CalendarContract.Events.InterfaceConsts.Status, 1);
values.Put(CalendarContract.Events.InterfaceConsts.Description, description);
values.Put(CalendarContract.Events.InterfaceConsts.Dtstart, GetDateTimeMS(year, month, day, hour, minute));
values.Put(CalendarContract.Events.InterfaceConsts.Dtend, GetDateTimeMS(year, month, day, hour, minute));
values.Put(CalendarContract.Events.InterfaceConsts.AllDay, allday ? "1" : "0");
values.Put(CalendarContract.Events.InterfaceConsts.HasAlarm, hasalarm ? "1" : "0");
values.Put(CalendarContract.Events.InterfaceConsts.EventColor, Android.Graphics.Color.Green);
values.Put(CalendarContract.Events.InterfaceConsts.EventTimezone, "GMT+" + zone + ":00");
values.Put(CalendarContract.Events.InterfaceConsts.EventEndTimezone, "GMT+" + zone + ":00");
cr.Insert(Android.Net.Uri.Parse(eventUriString), values);
}
答案 1 :(得分:0)
您无法通过意图修改联系人的生日,必须使用ContactsContract
API来修改联系人。
根据位于https://developer.android.com/training/contacts-provider/modify-data#EditContact的文档 您只能通过intent编辑以下属性列表: https://developer.android.com/reference/android/provider/ContactsContract.Intents.Insert 其中包含诸如电子邮件和电话之类的数据项,但是生日或事件不在列表中。
最接近的方法是打开联系人的编辑屏幕,并让用户自己添加生日:
Intent editIntent = new Intent(Intent.ACTION_EDIT);
editIntent.setDataAndType(theContactUri, Contacts.CONTENT_ITEM_TYPE);
startIntent(editIntent);