2011-12-21 68 views
15

我希望我的应用程序通过Android上的标准Contacts界面提示用户创建新联系人。然后,我希望能够从新创建的联系人中读取信息。添加联系人intent不会返回数据onActivityResult在ICS下

我的代码基于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

我有同样的问题:( – 2012-03-20 18:27:26

+0

http://stackoverflow.com/questions/9551821/android-4-0-3-and-finish-activity 我有类似的问题。 – user1247617 2012-03-25 03:40:10

+0

我问题是,如果我打开另一个活动,并返回到onActivityResult()上的父活动,但当我尝试捕获图像使用intent onActivityResult()之前调用捕获或取消相机事件之前调用它的工作原理和这个问题发生在Android 4.03 htc me) – 2012-09-25 09:51:21

回答

15

如果是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的解决方案。

有人吗?

+1

这真是太棒了!非常感谢你,我刚刚在Galaxy Nexus上运行4.0.4,它的功能就像一个魅力!愚蠢的Verizon Galaxy Nexus仍然停留在4.0.2,所以这个修复仍然没有'但希望Verizon会尽快更新它,再次感谢! – 2012-04-25 21:01:12

+1

为我节省了很多头痛,谢谢!事实证明这是有记录的,尽管找到Android文档的位置当然是它自己的头痛。 http://developer.android.com/training/contacts-provider/modify-data.html在“添加导航标志” – Groxx 2013-04-06 04:18:14

+0

这不适用于Android 4.4.2。请分享,如果你有任何解决方案或知道改变了什么。 Thx – Sandra 2014-09-16 14:42:51

相关问题