勤能补拙,熟能生巧,宁静致远

记录工作中的点滴积累,总结成长的步伐里程。

博客园 首页 新随笔 联系 订阅 管理

自定义中将“电话”下的“所有联系人”不勾选,但是Contacts列表还是显示PHONE联系人。

 

SELECT _id, display_name, agg_presence.mode AS contact_presence, contacts_status_updates.status AS contact_status, photo_id, photo_thumb_uri, lookup, is_user_profile, account_type, account_name 
FROM view_contacts LEFT OUTER JOIN agg_presence ON (_id = agg_presence.presence_contact_id) LEFT OUTER JOIN status_updates contacts_status_updates ON (status_update_id=contacts_status_updates.status_update_data_id) 
WHERE ((1)) AND (in_visible_group=1) ORDER BY phonebook_bucket, sort_key
---------------------------------------
“要显示的联系人” 选择 “自定义” 后,根据 in_visible_group=1 来查询判断。in_visible_group又是查询visible_contacts表而来
***************************************
CAST(EXISTS (SELECT _id FROM visible_contacts WHERE contacts._id=visible_contacts._id) AS INTEGER) AS in_visible_group, 
**************************************
所以关键是看visible_contacts是怎么更新的。选择 “自定义” 后,代码中看到的是settings表更新,可能是settings表触发visible_contacts更新,有待进一步研究
------------------------------------------
CREATE VIEW view_contacts 
				AS SELECT contacts._id AS _id,contacts.custom_ringtone AS custom_ringtone, 
									name_raw_contact.display_name_source AS display_name_source, 
									name_raw_contact.display_name AS display_name, name_raw_contact.display_name_alt AS display_name_alt, 
									name_raw_contact.phonetic_name AS phonetic_name, name_raw_contact.phonetic_name_style AS phonetic_name_style, 
									name_raw_contact.sort_key AS sort_key, name_raw_contact.phonebook_label AS phonebook_label, 
									name_raw_contact.phonebook_bucket AS phonebook_bucket, name_raw_contact.sort_key_alt AS sort_key_alt, 
									name_raw_contact.phonebook_label_alt AS phonebook_label_alt, 
									name_raw_contact.phonebook_bucket_alt AS phonebook_bucket_alt, 
									has_phone_number, name_raw_contact_id, lookup, photo_id, photo_file_id, 
									------------------------------------------------------------------------------
									CAST(EXISTS (SELECT _id FROM visible_contacts WHERE contacts._id=visible_contacts._id) AS INTEGER) AS in_visible_group, 
									------------------------------------------------------------------------------
									status_update_id, contacts.contact_last_updated_timestamp, 
									contacts.last_time_contacted AS last_time_contacted, contacts.send_to_voicemail AS send_to_voicemail, 
									contacts.starred AS starred, contacts.pinned AS pinned, contacts.times_contacted AS times_contacted, 
									account_name, account_type, 
									(CASE WHEN photo_file_id IS NULL 
										THEN (CASE WHEN photo_id IS NULL OR photo_id=0 
														THEN NULL ELSE 'content://com.android.contacts/contacts/'||contacts._id|| '/photo' END)
										ELSE 'content://com.android.contacts/display_photo/'||photo_file_id END) AS photo_uri, 
									(CASE WHEN photo_id IS NULL OR photo_id=0 
										THEN NULL 
										ELSE 'content://com.android.contacts/contacts/'||contacts._id|| '/photo' END) AS photo_thumb_uri, 
										0 AS is_user_profile 
				FROM contacts JOIN raw_contacts AS name_raw_contact ON(name_raw_contact_id=name_raw_contact._id) 
											JOIN accounts AS name_accounts ON(name_raw_contact.account_id=name_accounts._id);

  

 

posted on 2015-03-25 15:58  ^-^antoon^-^  阅读(370)  评论(0编辑  收藏  举报