我使用 ContactsQuery 在设备上搜索联系人姓名。我的代码与github 上的 sampleContactsActivity非常相似:
但是,当我在联系人搜索栏上输入数字键时,应用程序会引发 SQLiteException。
我使用的选择查询是:
final static String SELECTION =
(Helper.hasHoneycomb() ? Contacts.DISPLAY_NAME_PRIMARY : Contacts.DISPLAY_NAME) +
"<>''" + " AND " + Contacts.IN_VISIBLE_GROUP + "=1";
当我输入数字键“6”时,日志中显示的错误消息是:
android.database.sqlite.SQLiteException: near ":6": syntax error (code 1): , while compiling: SELECT _id, lookup, display_name, photo_thumb_uri, sort_key FROM view_contacts_restricted JOIN (SELECT contact_id AS snippet_contact_id FROM search_index WHERE search_index MATCH content:6* OR name:1E* UNION SELECT contact_id AS snippet_contact_id FROM phone_lookup JOIN raw_contacts ON ( raw_contacts._id=raw_contact_id) WHERE normalized_number LIKE '%6%') ON (_id=snippet_contact_id) WHERE ((display_name<>'' AND in_visible_group=1)) ORDER BY sort_key
此问题仅发生在其中一款三星 Galaxy III 设备上。