Намерение добавления контакта не возвращает данные обActivityResult под ICS - PullRequest
15 голосов
/ 22 декабря 2011

Я хочу, чтобы мое приложение предложило пользователю создать новый контакт через стандартный интерфейс контактов в 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 Ответ

15 голосов
/ 27 марта 2012

Для Android 4.0.3 или более поздней версии вам необходимо указать новое намерение:

публичная статическая конечная строка INTENT_KEY_FINISH_ACTIVITY_ON_SAVE_COMPLETED = "finishActivityOnSaveCompleted";

intent.putExtra (INTENT_KEY_FINISH_ACTIVITY_ON_SAVE_COMPLETED, true);

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

Любой

...