如何通过意图插入联系人生日日期

时间:2019-02-01 08:33:50

标签: java android android-studio

我使用以下代码简单地添加联系人:

    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”选项,但是如何将其添加到意图中?

2 个答案:

答案 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);