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

get*_*kha 15 android android-intent android-4.0-ice-cream-sandwich

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

我的代码基于网站的"添加新联系人" .

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

然后

@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();
}
Run Code Online (Sandbox Code Playgroud)

此代码在Android 2.2和2.3上运行良好.它启动联系人应用程序,让用户输入名称和电子邮件地址之类的东西,当它们完成后点击"确定"或"保存"或"无论什么"它返回到我的应用程序,我可以阅读他们输入的内容.在Android 4.0(ICS)上,当用户完成创建联系人时,它不会返回到我的应用程序.当我退出联系人视图(通过后退按钮)时,它不包含任何具有联系信息的意图.

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

Ofe*_*erR 15

对于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的解决方案.

任何人?

  • 省了我很多麻烦,谢谢!事实证明这是记录在案的,尽管在 Android 文档中查找位置当然是它自己的头痛。http://developer.android.com/training/contacts-provider/modify-data.html 在“添加导航标志”中 (2认同)