Добавить контакты в Android 4.2 не уведомляя приложение

Я работаю над добавлением функции выбора контактов в приложение, а также над возможностью добавления контакта из приложения в собственный менеджер контактов. Для вставки запускаю менеджер контактов вот так:

Intent intent = new Intent(ContactsContract.Intents.Insert.ACTION);

intent.setType(ContactsContract.RawContacts.CONTENT_TYPE);
intent.putExtra(ContactsContract.Intents.Insert.PHONE, mCurrentNumber);
intent.putExtra(ContactsContract.Intents.Insert.PHONE_TYPE, "MyType");

mActivity.startActivityForResult(intent, ADD_CONTACT);

Это успешно открывает диспетчер контактов и заполняет его указанным номером телефона. Однако на моем планшете Nexus 7, когда менеджер контактов возвращается, он возвращается к главному экрану и не отправляет никакого ответа моему приложению. Это работает нормально и возвращается, как и ожидалось, на моем устройстве ICS, но я не знаю, так ли это, потому что устройство ICS использует собственный менеджер контактов от производителя, в то время как Nexus 7 принадлежит Google.

Кто-нибудь может пролить свет на этот вопрос? Есть ли проблема с тем, как я запускаю менеджер контактов?

РЕДАКТИРОВАТЬ: я также должен добавить, что если я выберу "Отменить" в меню параметров Contact Manager на Nexus 7, он вернется к моему приложению, как и ожидалось. Проблема возникает только при нажатии кнопки "Готово". Выбор "Готово" позволяет перейти к главному меню диспетчера контактов, после чего любые попытки выйти из диспетчера контактов приведут пользователя к начальному экрану.

1 ответ

Решение

Оказывается, исправить это было добавить

intent.putExtra("finishActivityOnSaveCompleted", true);

к цели контакта. Это обошло представление подробностей диспетчера контактов и вернуло управление моему приложению с надлежащим вызовом onActivityResult.

Другие вопросы по тегам