在尝试选择联系人并将其返回到我的活动时遇到一些奇怪的行为。 一切正常,除了我看到一些不应该显示的联系人。例如我正在推特上关注但没有其他互动的人。我理解为什么这些记录存在于数据库中,但是当我点击“人物”并在手机上运行默认的联系人管理器应用程序时它们不显示,因此当我要求我的应用程序显示人员列表时,它们不应显示选择?
最奇怪的是,如果我输入一个字母来过滤列表(例如点击“A”以显示包含“A”的所有联系人)然后点击退格(所以我现在再次显示所有条目)幽灵联系消失了!
任何想法?我真的不想要写自己的“选择联系人”活动。 代码(非常基本)如下所示:
public void launchContactPicker() {
// Uri uri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_FILTER_URI, Uri.encode("steve"));
Uri uri = ContactsContract.Contacts.CONTENT_URI;
Toast.makeText(this, "Contacts uri = [" + uri +"]", Toast.LENGTH_SHORT).show();
try {
Intent contactPickerIntent = new Intent(Intent.ACTION_PICK, uri);
startActivityForResult(contactPickerIntent, CONTACT_PICKER_RESULT);
}
catch (Exception e) {
Toast.makeText(this, "Exception: " + e.getMessage(), Toast.LENGTH_LONG).show();
}
}
我也尝试过请求一个已过滤的联系人列表(想想可能使用这个和通配符可能会做到这一点)但是还没有设法让它完全正常工作。似乎ACTION_PICK意图不适用于这种Uir?