Редактор ContactsContract игнорирует электронную почту, данные о телефонных разговорах

(сегмент кода изменен - ​​теперь работает)

Согласно ссылкам на Android http://developer.android.com/reference/android/provider/ContactsContract.Intents.Insert.html должна быть возможность передать массив адресов электронной почты и телефонных номеров в редактор контактов. У кого-нибудь есть успехи в этом?

После долгих исследований и экспериментов ничего не работает - он просто игнорирует параметры, о чем свидетельствует открытие редактора с заполненным только полем имени. Это на Nexus 7 под управлением Android 4.2.1. Приложение «Контакты» версии 4.2.1-533553.

Вот мой код ("форма" объявлена ​​и заполнена в другом месте):

Intent intent = new Intent();
intent.setAction (Intent.ACTION_INSERT);
intent.setData (ContactsContract.Contacts.CONTENT_URI);
intent.putExtra (ContactsContract.Intents.Insert.NAME, form.name);

ArrayList<ContentValues> parcels = new ArrayList<ContentValues>();

for (int i = 0;  i < form.phones.length;  i++)
{
  ContentValues row = new ContentValues();
  row.put (Data.MIMETYPE, CommonDataKinds.Phone.CONTENT_ITEM_TYPE);
  row.put (CommonDataKinds.Phone.NUMBER, form.phones[i]);
  row.put (CommonDataKinds.Phone.TYPE, form.phoneIds[i]);
  parcels.add (row);
}

for (int i = 0;  i < form.emails.length;  i++)
{
  ContentValues row = new ContentValues();
  row.put (Data.MIMETYPE, CommonDataKinds.Email.CONTENT_ITEM_TYPE);
  row.put (CommonDataKinds.Email.ADDRESS, form.emails[i]);
  row.put (CommonDataKinds.Email.TYPE, form.emailIds[i]);
  parcels.add (row);
}

intent.putParcelableArrayListExtra (ContactsContract.Intents.Insert.DATA, parcels);
startActivityForResult (intent, ACTIVITY_REQUEST_FULL_EDIT);

person Peri Hartman    schedule 25.02.2013    source источник


Ответы (1)


Вы пытались добавлять phone.add(row) и emails.add(row) каждый раз, когда заполняли строку?

person p4u144    schedule 25.02.2013
comment
Спасибо - не могу поверить, что пропустил это. Была и другая проблема. Оказывается, вы можете вызвать putParcelableArrayListExtra только один раз; решение состоит в том, чтобы поместить и телефоны, и электронные письма в одну посылку. - person Peri Hartman; 25.02.2013