我检查了 contacts2.db,但联系人表没有 display_name 列
Posted
技术标签:
【中文标题】我检查了 contacts2.db,但联系人表没有 display_name 列【英文标题】:I've checked contacts2.db, but contacts table doesn't have display_name column 【发布时间】:2017-12-14 22:55:48 【问题描述】:我从模拟器(API 19)中提取了 contacts2.db 并检查了联系人表。 contacts table
它没有 display_name 列。
但是,执行以下代码后,
Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(intent, REQUEST_CONTACT);
public void onActivityResult(int requestCode, int resultCode, Intent data)
if (resultCode != Activity.RESULT_OK)
return;
if (requestCode == REQUEST_DATE)
...
else if (requestCode == REQUEST_CONTACT && data != null)
Uri contactUri = data.getData();
// Perform your query - the contactUri is like a "where" clause here
Cursor c = getActivity().getContentResolver().query(contactUri
, null
, null
, null
, null);
//cursor null check
try
// Double-check that you actually got results
if (c.getCount() == 0)
return;
c.moveToFirst();
String[] names = c.getColumnNames();
finally
c.close();
当我检查名称时,列列表是
sort_key
photo_uri
send_to_voicemail
contact_status
contact_status_label
pinned
display_name
phonebook_label_alt
phonebook_bucket
contact_status_res_package
photo_id
in_default_directory
custom_ringtone
_id
times_contacted
phonebook_label
lookup
display_name_alt
phonetic_name
last_time_contacted
contact_last_updated_timestamp
has_phone_number
in_visible_group
is_user_profile
display_name_source
photo_file_id
contact_status_ts
phonebook_bucket_alt
sort_key_alt
contact_presence
starred
photo_thumb_uri
contact_status_icon
contact_chat_capability
phonetic_name_style
name_raw_contact_id
它包括 display_name 列。怎么可能?
【问题讨论】:
【参考方案1】:你知道ContactsContract吗?
来自docs 关于Contract 类
该类通过确保即使 URI 的实际值、列名等发生更改也可以正确访问提供程序,从而在提供程序和其他应用程序之间建立了契约。
因此,display_name
列被提供商翻译为 实际 display_name 并发出请求。然后根据ContactsContract.
中的定义翻译光标
【讨论】:
我知道 ContactsContract... 你查看我上传的图片了吗?当您单击第一行中的“联系人表”时,您可以看到它。我使用 SQLite 工具读取了 contacts2.db,该工具向我显示了列列表。 你是说没有这样的列可以映射到display_name
吗?
是的。我可以在以下站点的“列”表中看到联系人表的列:developer.android.com/reference/android/provider/…。没有显示名称!
display_name 在 raw_contacts 表中。
this 呢?以上是关于我检查了 contacts2.db,但联系人表没有 display_name 列的主要内容,如果未能解决你的问题,请参考以下文章