Добавление намерения контакта не возвращает данные 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?

15
задан Juan Gomez 20 March 2012 в 18:50
поделиться