gpt4 book ai didi

android - 从 ContactsContract.Contacts 获取数据

转载 作者:太空狗 更新时间:2023-10-29 14:31:19 25 4
gpt4 key购买 nike

我在模拟器中有一个地址簿,里面有一个实体。

我为我的联系人创建了一个联系人选择器:

Intent intent = new Intent(Intent.ACTION_PICK);
intent.setData(ContactsContract.CONTENT_URI);
startActivityForResult(intent, MY_CODE);

我在我的地址簿中选择了一个条目,然后我得到了一个具有如下数据 uri 的 Intent :

content://com.android.contacts/contacts/lookup/0n354B31353539292D4553313F3F39/1/

很酷,它是 ContactsContract.Contacts 的 CONTENT_LOOKUP_URI。我可以立即使用它来获取在 ContactsContract.Contacts 中可直接访问的内容,例如显示名称。棒极了。好的,现在假设我想从该用户的 ContactsContract.Contacts.Data 或 ContactsContract.Contacts.Photo 获取数据。阅读 ContactsContract.Contacts.Photo/Data 中两个 CONTENT_DIRECTORY 条目的文档:

This directory can be used either with a CONTENT_URI or CONTENT_LOOKUP_URI.

所以我尝试了合乎逻辑的方法:

uri = Uri.withAppendedPath(uri, ContactsContract.Contacts.Photo.CONTENT_DIRECTORY);
Cursor c = myContentResolver.query(uri, null, null, null); // simplified
...

现在我收到一个烦人的错误:

java.lang.IllegalArgumentException: Unknown URL content://com.android.contacts/contacts/lookup/0n354B31353539292D4553313F3F39/1/photo

什么鬼?联系人有显示名称,是的,它有照片。为什么这被认为是不正确的?到目前为止,我已经在 2.1 和 2.2 上试过了。

Documentation for ContactsContract.Contacts.Photo

最佳答案

回答晚了,但我希望有人能觉得它有用。

对于 android < 3.0 它不起作用。请改用 _ID:

Uri contactUri;
//if at least HC uses lookupUri which is more efficient; for previous versions does not work
if (AT_LEAST_HONEYCOMB) {
contactUri = getLookupUri(contactId, contactLookupKey);
} else {
contactUri = Uri.withAppendedPath(Contacts.CONTENT_URI, "" + contactId);
}
Uri contactDetailsUri = Uri.withAppendedPath(contactUri, Contacts.Data.CONTENT_DIRECTORY);

// contactDetailsUri android<3.0: com.android.contacts/contacts/1/data
//contactDetailsUri android>=3.0: com.android.contacts/contacts/lookup/0n354B31353539292D4553313F3F39/1/data



Cursor detailsCursor = getActivity().getContentResolver().query(
contactDetailsUri,
PROJECTION,
null,
null,
SORT_ORDER);

PS:对不起丑陋的代码

关于android - 从 ContactsContract.Contacts 获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6481516/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com