我試圖查詢ContactContract
的ContentProvider並獲得以下算法將獲取的數據:安卓:ContactsContract查詢,需要更先進的選擇字符串
given a phone number (input), return record...:
if(recordNumber has 7 digits) {
if('%recordNumber' LIKE 'inputNumber') {
return recordDisplayName;
}
} else if(recordNumber has 10 digits) {
if('recordNumber' LIKE '%inputNumber') {
return recordDisplayName;
}
} else if(recordNumber == inputNumber) {
return recordDisplayName;
}
這部作品在查詢電話:
ContactsContract.CommonDataKinds.Phone.NUMBER+" LIKE ?"
,但我需要更多的東西是這樣的:
"('%" + ContactsContract.CommonDataKinds.Phone.NUMBER+"' LIKE '?' AND LENGTH("+ContactsContract.CommonDataKinds.Phone.NUMBER+")=7) OR ('" + ContactsContract.CommonDataKinds.Phone.NUMBER+"' LIKE '%?' AND LENGTH("+ContactsContract.CommonDataKinds.Phone.NUMBER+")=10)"
但我每次使用帶單引號的查詢都會收到運行時錯誤。例如,改變:
ContactsContract.CommonDataKinds.Phone.NUMBER+" LIKE ?"
到:
ContactsContract.CommonDataKinds.Phone.NUMBER+" LIKE '?'"
導致運行時錯誤 「結合或列索引超出範圍...」。所以這必須是一些語法錯誤...對嗎? ContentProvider
查詢的正確語法是什麼和/或我如何從ContactsContract
得到結果集?
我有這個(種)查詢一個問題,直到我注意到Data.CONTENT_URI的使用,而不是CONTENT_FILTER_URI。我剛剛意識到我的語義誤解。謝謝你的提示。 – Shoham 2014-08-21 12:20:46