在Android 4.2中添加联系人而不通知应用程序

时间:2013-01-22 16:39:01

标签: android contactscontract android-4.2-jelly-bean

我正在努力为应用添加联系人选择功能,以及将应用中的联系人添加到本机联系人管理器的功能。对于插入,我正在启动联系人管理器:

Intent intent = new Intent(ContactsContract.Intents.Insert.ACTION);

intent.setType(ContactsContract.RawContacts.CONTENT_TYPE);
intent.putExtra(ContactsContract.Intents.Insert.PHONE, mCurrentNumber);
intent.putExtra(ContactsContract.Intents.Insert.PHONE_TYPE, "MyType");

mActivity.startActivityForResult(intent, ADD_CONTACT);

这会成功打开联系人管理器,并使用指定的电话号码填充它。但是,在我的Nexus 7平板电脑上,当联系人管理器返回时,它会返回到主屏幕,并且不会向我的应用程序发送任何类型的响应。这可以正常工作,并在我的ICS设备上按预期返回,但我不知道是否因为ICS设备正在使用制造商的自定义联系人管理器,而Nexus 7是Google的。

有人能解释一下这个问题吗?我启动联系人管理器的方式有问题吗?

编辑: 我还应该补充一点,如果我从Nexus 7上的Contact Manager选项菜单中选择“Discard”,它会按预期返回我的应用程序。只有当我选择“完成”按钮才会出现问题。选择“完成”导航到联系人管理器的主菜单,此时任何退出联系人管理器的尝试都会将用户带到主屏幕。

1 个答案:

答案 0 :(得分:1)

原来解决这个问题的方法是添加

intent.putExtra("finishActivityOnSaveCompleted", true);

联系意图。这绕过了联系人管理器的详细信息视图,并通过正确调用onActivityResult将控件返回到我的应用程序。