我希望我的应用程序通过Android上的标准联系人界面提示用户创建新联系人。然后我希望能够从新创建的联系人中读取信息。
我的代码基于this网站的“添加新联系人”。
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上获得相同的行为?
答案 0 :(得分: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的解决方案。
任何?