Как вставить дату рождения контакта по намерению - PullRequest
0 голосов
/ 01 февраля 2019

Я использую этот код, чтобы просто добавить контакт:

    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 голосов
/ 03 февраля 2019

вы не можете изменить день рождения контакта через намерение, вы должны использовать ContactsContract API для изменения контактов.

В соответствии с документацией по адресу: https://developer.android.com/training/contacts-provider/modify-data#EditContact Вы можете редактировать только через намерениесписок атрибутов по адресу: 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);
0 голосов
/ 01 февраля 2019

Вы можете добавить день рождения, как показано ниже:

Здесь 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);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...