Намерение добавления контакта не возвращает данные об ActivityResult под 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";
intent.putExtra (INTENT_KEY_FINISH_ACTIVITY_ON_SAVE_COMPLETED, true);
У меня нет решения для Android 4.0 до 4.0.2.
Кто-нибудь?