0

我正在向应用程序添加联系人选择器功能,以及将应用程序中的联系人添加到本机联系人管理器的功能。对于插入,我正在启动联系人管理器,如下所示:

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 上的联系人管理器选项菜单中选择“放弃”,它确实会按预期返回到我的应用程序。只有当我选择“完成”按钮时才会出现问题。选择“完成”导航到联系人管理器的主菜单,此时任何退出联系人管理器的尝试都会将用户带到主屏幕。

4

1 回答 1

1

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

intent.putExtra("finishActivityOnSaveCompleted", true);

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

于 2013-02-14T16:49:46.017 回答