2013-08-30 65 views
0

我使用ContactsQuery來搜索設備上的聯繫人姓名。 我的代碼是非常類似於此sampleContactsActivity on github搜索聯繫人時拋出SQLiteException

但是,應用程序將引發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設備。

回答

0

我在格式化SQL查詢搜索之前,通過將數字轉換爲字符串解決了該問題。我懷疑在該特定設備上,聯繫人提供程序實現不會自動將該數字轉換爲字符串,並最終出現SQL語法錯誤。

我還注意到特殊字符鍵也是有問題的。所以我簡單地將''添加到所有非字符輸入

0

這是格式化SQL查詢的代碼中的錯誤,該錯誤位於設備固件的聯繫人提供程序實現中。

如果可能的話,更新該設備上的Android版本,或避免號碼搜索。

+0

感謝您的答覆,我會將設備的固件與其他工作設備進行比較。是的,這聽起來像是Android操作系統的一個bug。 –