我试图查询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