调用联系人选择器活动时出现奇怪的行为

发布于 2024-12-20 21:15:44 字数 1036 浏览 2 评论 0原文

尝试选择联系人并将其返回到我的活动时遇到一些奇怪的行为。 一切正常,除了我看到一些不应该显示的联系人。例如,我在 Twitter 上关注但没有其他互动的人。我明白为什么这些记录存在于数据库中,但当我单击“人员”并在手机上运行默认联系人管理器应用程序时,它们不会显示,因此当我要求我的应用程序显示人员列表时,它们不应该显示从中挑选?

最奇怪的是,如果我输入一个字母来过滤列表(例如,按“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 设计的?

Experiencing some strange behaviour when trying to pick a contact and return it to my activity.
Everything works except I'm seeing some contacts which should not be displayed. e.g. people I'm following on twitter but have no other interaction with. I understand why these records exist in the database, but they don't show when I click on 'People' and run the default contact manager app on the phone so they shouldn't show when I ask my app to display a list of people to pick from?

The strangest thing of all is that if I type a letter to filter the list (e.g. hit 'A' to show all contacts containing 'A') and then hit backspace (so I'm now showing all entries again) the phantom contacts disappear!

Any ideas anyone? I really don't want have to be bothered writing my own 'Select a Contact' activity.
Code (pretty basic) shown below:

    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();
        }
    } 

I have also tried requesting a filtered list of contacts (thought maybe using this and wildcarding might do the trick) but haven't managed to get that working at all. Seems the ACTION_PICK intent isn't designed to work with this sort of Uir?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文