Добавить намерение контакта не возвращает данные onActivityResult в ICS

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

Мой код основан на "Добавление нового контакта" на этом сайте.

Intent intent = new Intent(Intent.ACTION_INSERT);
intent.setType(Contacts.CONTENT_TYPE);
intent.putExtra(ContactsContract.Intents.Insert.PHONE, number);
startActivityForResult(intent, PICK_CONTACT);

а затем

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    Intent intent = new Intent(this, Foo.class);
    Uri uri = data.getData(); //I get nullpointer here on ICS
    intent.putExtra("contact", ContactAccessor.getInstance().loadContact(this, uri));
    startActivity(intent);
    finish();
}

Этот код отлично работает на Android 2.2 и 2.3. Он запускает приложение для контактов и позволяет пользователю вводить такие данные, как имя и адрес электронной почты, и когда они будут сделаны, и нажмите "ОК" или "сохранить" или "что угодно", он вернется в мое приложение, и я могу прочитать материал, который они ввели. На Android 4.0 (ICS), однако, он не возвращается в мое приложение, когда пользователь закончил создание контакта. И когда я выхожу из вида контакта (через кнопку "Назад" ), он не содержит никаких намерений с контактной информацией.

Какое намерение следует использовать для получения такого же поведения в ICS?

Ответы

Ответ 1

Для Android 4.0.3 и выше вам необходимо предоставить дополнительные дополнительные возможности:

public static final String INTENT_KEY_FINISH_ACTIVITY_ON_SAVE_COMPLETED = "finishActivityOnSaveCompleted";

target.putExtra(INTENT_KEY_FINISH_ACTIVITY_ON_SAVE_COMPLETED, true);

У меня нет решения для Android 4.0 до 4.0.2.

Кто-нибудь?