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

Използвам следния код, за да добавя контакт:

        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 Contact Manager по подразбиране и мога да напусна тази дейност само ако натисна бутона за връщане или нагоре. След това не мога да се върна към дейността си в приложението с помощта на стека назад (бутон за връщане назад). Мога да отворя приложението си с Recent Tasks Manager, но след това получавам resulCode == 0 и intent == null.


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


Отговори (1)


Прегледах изходния код на стандартното приложение Контакти и открих Дейност, която отговаря за създаването на нов контакт. Има флаг 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