添加联系人意图不会在ICS下返回onActivityResult数据

我希望我的应用程序通过Android上的标准Contacts(联系人)界面提示用户创build新联系人。 然后,我希望能够从新创build的联系人中读取信息。

我的代码基于本网站的“添加新联系人”。

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上运行良好。 它启动联系人应用程序,并让用户input像姓名和电子邮件地址的东西,当他们完成后,点击“确定”或“保存”或“无论”返回到我的应用程序,我可以阅读他们input的东西。 在Android 4.0(ICS)上,当用户创build联系人时,它不会返回到我的应用程序。 而当我退出联系人视图(通过后退button)它不包含任何意图与联系信息。

我应该用什么意图在ICS上获得相同的行为?

Solutions Collecting From Web of "添加联系人意图不会在ICS下返回onActivityResult数据"

对于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的解决scheme。

任何人?