Как правильно установить намерение андроида с действием SHOW_OR_CREATE_CONTACT? - PullRequest
1 голос
/ 11 августа 2010

Я хотел бы использовать внутреннюю активность Контакта для создания нового Контакта. Вот код:

        Intent i = new Intent();
    i.setAction(ContactsContract.Intents.SHOW_OR_CREATE_CONTACT);
    i.addCategory(Intent.CATEGORY_DEFAULT);
    i.setData(Uri.fromParts("tel", "12345678", null));
    i.putExtra(ContactsContract.Intents.EXTRA_FORCE_CREATE, true);
    i.putExtra(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_WORK); 
    i.putExtra(ContactsContract.Intents.Insert.EMAIL, "naoknaoknaok@gmail.com");
    i.putExtra(ContactsContract.CommonDataKinds.Email.TYPE, ContactsContract.CommonDataKinds.Email.TYPE_WORK);
    i.putExtra(ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME, "Ide");
    i.putExtra(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME, "Vele");
    i.putExtra(ContactsContract.CommonDataKinds.Organization.COMPANY, "Company name");
    i.putExtra(ContactsContract.CommonDataKinds.Organization.TYPE, ContactsContract.CommonDataKinds.Organization.TYPE_WORK);
    i.putExtra(ContactsContract.CommonDataKinds.Organization.LABEL, "label");
    i.putExtra(ContactsContract.CommonDataKinds.Organization.TITLE, "job title");
    i.putExtra(ContactsContract.CommonDataKinds.Organization.DEPARTMENT, "department");
    i.putExtra(ContactsContract.CommonDataKinds.Organization.JOB_DESCRIPTION, "job description");
    i.putExtra(ContactsContract.CommonDataKinds.Organization.SYMBOL, "symbol");
    i.putExtra(ContactsContract.CommonDataKinds.Organization.OFFICE_LOCATION, "office location");

Но этот код работает только частично. В действии видны только номер телефона и адрес электронной почты, остальные поля не установлены.

Вот скриншот с эмулятора: edit_contact1

Извините, что не включил его, но у меня недостаточно репутации, чтобы добавлять изображения.

Любая помощь будет принята с благодарностью!

Некоторое обновление: следующий код устанавливает поле «Имя»:

i.putExtra(ContactsContract.Intents.Insert.NAME, "simple name");

1 Ответ

1 голос
/ 05 января 2011

Я думаю, что только постоянные ключи в ContactsContract.Intents.Insert. * Понимаются получателем намерений. это имело бы смысл.

...