Как добавить контакт программно?

Я использую следующий код для добавления контакта:

        Intent intent = new Intent(Intent.ACTION_INSERT,  ContactsContract.Contacts.CONTENT_URI);

        activity.startActivityForResult(intent, ATTACH_VCARD_REQUEST_CODE);

Но на моем Google Nexus приложение Android Contact Manager по умолчанию не возвращает результат моей активности.

У меня следующее поведение: 1. Я звоню диспетчеру контактов 2. Добавляю имя поля и нажимаю "Готово"

После этого открывается другое действие диспетчера контактов Android по умолчанию, и я могу выйти из этого действия, только если нажму кнопку «Назад» или «Вверх». После этого я не могу вернуться к своей активности приложения, используя задний стек (кнопка «Назад»). Я могу открыть свое приложение с помощью диспетчера недавних задач, но тогда я получаю resulCode == 0 и намерение == null.


person Roman Savin    schedule 27.03.2013    source источник


Ответы (1)


Я просмотрел исходный код стандартного приложения «Контакты» и нашел Activity, которое отвечает за создание нового контакта. Есть флаг INTENT_KEY_FINISH_ACTIVITY_ON_SAVE_COMPLETED = "finishActivityOnSaveCompleted"; Если этот флаг установлен, то вызывается setResult(RESULT_OK);

Итак, решение этой проблемы

    Intent intent = new Intent(ContactsContract.Intents.Insert.ACTION);
    intent.setType(ContactsContract.Contacts.CONTENT_TYPE);
    intent.putExtra("finishActivityOnSaveCompleted", true);
    activity.startActivityForResult(intent, ATTACH_VCARD_REQUEST_CODE);
person Roman Savin    schedule 28.03.2013
comment
Это не работает на устройствах Android 4.4.2. Кто-нибудь знает решение? Поделись, пожалуйста... - person Sandra; 16.09.2014