我正在努力为应用添加联系人选择功能,以及将应用中的联系人添加到本机联系人管理器的功能。对于插入,我正在启动联系人管理器:
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”,它会按预期返回我的应用程序。只有当我选择“完成”按钮才会出现问题。选择“完成”导航到联系人管理器的主菜单,此时任何退出联系人管理器的尝试都会将用户带到主屏幕。
答案 0 :(得分:1)
原来解决这个问题的方法是添加
intent.putExtra("finishActivityOnSaveCompleted", true);
联系意图。这绕过了联系人管理器的详细信息视图,并通过正确调用onActivityResult将控件返回到我的应用程序。